プレーンHTML | Wikiマークアップ
data:関数

FE改造で使えそうな関数があったら追記してください。

0x080B9DEC 売り値を求める関数

引数

引数 r0 に、個数 « 8 + アイテムID、として渡す。
例:レイピア60個 0x3c09 3c=60 09=レイピアのアイテムID

戻り値

売値が r0 で返ってくる。

sample

mov r0,0x09 ;レイピア
mov r1,0x3c ;60個
lsl r1,#0x8 ;個数 << 8 + アイテムID
add r0,r1   ;

ldr		r1,=$080B9DEC
mov		lr, r1
@dcw	$F800

;r0に売値が返ってくる.

0x0800d340 イベント命令を動作させる関数

引数

引数 r0 に、呼び出したいイベント命令のポインタを設定する。
引数 r1 に、謎の引数を設定する1-3まであるらしい。とりあえず1推奨。

注意: ポインタは mov ではなく、ldr でセットしないと値が消えて null になるよ。

戻り値

不明

sample

;093AA9B0 においてあるイベントを呼び出す場合
ldr r0, =$093AA9B0	;呼びだしたいイベント命令
mov r1,#0x1			;とりあえず1
ldr		r2,=$0800d340	;イベント呼び出し
mov		lr, r2
@dcw	$F800

注意点

この命令を呼ぶと、イベントキューみたいなものに情報が詰まれ、
メニュー等を閉じた時にイベントが発動するらしい?
この命令を連続して呼ぶと、呼んだ数だけイベントが動作する。
戦闘準備などのwindowsでいうモーダルダイアログのようなものを実行している間はイベントが発動しない。(閉じれば発動する)

0x080860A8 フラグを立てる関数

引数

引数 r0 に、立てたいフラグを番号を書く。

戻り値

不明

sample

;フラグ1番を立てる場合
mov r0,#0x1   ; 立てたいフラグ番号
ldr	r1, =$080860A8
mov	r14, r1
@dcw	$F800

0x080860D0 フラグ状態確認関数

引数

引数 r0 にチェックしたいフラグIDを入れる

戻り値

r0=0 フラグがオフの状態
r0=1 フラグがオンの状態

sample

;フラグ1番の状態を確認する場合
mov	r0,#0x1   ; チェックしたいフラグ番号
ldr	r1, =$080860D0
mov	r14, r1
@dcw	$F800

0x0800D548 文字列番号の会話を表示する関数

引数

引数 r0 に、文字列番号を入れる

戻り値

不明

sample

;オニールの死亡台詞 8D7 を出す
mov     r0,#0x8D7 ;多分これでいい。ダメならldrで。
ldr	r1, =$0800D548
mov	r14, r1
@dcw	$F800

注意

この関数はくせがあるらしく、あとの処理でwaitがかからないと、@0003が複数あるとおかしくなることがある?

0x080d4ef4 効果音を鳴らす関数

引数

引数 r0 に、文字列番号を入れる

戻り値

不明

sample

;効果音 0x6a番を鳴らす
mov r0,#0x6a
ldr r2,=$080d4ef4	;効果音を鳴らす
mov lr, r2
@dcw	$F800

ただし、この関数は、必ず効果音を鳴らしてしまうので、設定の是非を確認する必要がある。

ldr r0,=$0202bcec ;設定で効果音がONかどうか
add r0,#0x41
ldrb r0,[r0]
lsl r0,r0,#0x1e
cmp r0,#0x0
beq sound_skip

mov r0,#0x6a
ldr r2,=$080d4ef4	;効果音を鳴らす
mov lr, r2
@dcw	$F800

sound_skip

0x0802cb70 経験値+10する関数

引数

引数 r0 に、経験値をあげたいキャラクタへのポインタが入る(多分)

戻り値

不明

sample

ldr	r0, [経験値をあげたいキャラクタへのポインタ]
ldr	r2, =$0802cb70 ;;+10 経験値取得関数へ
mov	r14, r2
@dcw	$F800

注意

もし、任意の経験値をあげたい場合は、怪盗パッチのasmの kaihou_ex.asm を参考にしてください。

0x08034520 マップ番号から、マップ設定のポインタを返す関数

引数

引数 r0 に、マップIDを入れる

戻り値

r0に、マップ設定のポインタが返ってくる

sample

mov	r0, #0x01 #1章のマップ設定が見たい
ldr	r2, =$08034520 ;;
mov	r14, r2
@dcw	$F800
;;r0 にマップ設定のポインタが返ってくる

080a8d94 クリアターンを書き込む関数

引数

引数 r0 に、202bcecを入れる(固定?)

戻り値

なし

sample

;引数 r0
ldr		r0,=$202bcec
;ターン数書込関数呼び出し
ldr		r1,=$080a8d94
mov		lr, r1
@dcw	$F800

0203ECF0- からの領域に、クリアターンを書き込みます。
これを使ったあとは、 #0x03フラグを降ろさないと、2度書きすることがあるので注意

08002c30 6C Structスクリプトロード

引数

引数 r0 に、スクリプトアドレス
引数 r1 は不明


戻り値

不明

08000d68 パレット読込

引数

引数 r0 に、パレットアドレス
引数 r1 は不明
引数 r2 は不明


戻り値

不明

08013008 圧縮されているデータの解凍

引数

引数 r0 に、読み込む lz77圧縮されている画像やデータ
引数 r1 に、解凍後に配置するBGアドレスorメモリアドレス

戻り値

不明

080dc0dc 無圧縮TSA読込?

引数

引数 r0 は不明
引数 r1 は無圧縮TSAアドレス
引数 r2 は不明
引数 r3 は不明

08008914 会話@0080@0005で参照できるところに数字を書く

引数 r0 に表示したい数字

sample

ldr		r0,=$00123456 ;表示したい数字
ldr		r1,=$08008914
mov		lr, r1
@dcw	$F800


注意点:@0080@0005は吹きだしの会話でしか取れない。システムメッセージでは読めない。

08002424 BGMを切り替える

BGM入りかえの最上位関数?

引数

引数 r0 がBGM番号
引数 r1 は謎、下位の080023C8のr2として渡される.

080023C8 BGMを切り替える

現在のBGMなどを加味して、必要なら曲切り替え命令を発行する。

引数

引数 r0 がBGM番号
引数 r1 は謎
引数 r2 は謎

08002398 BGMを切り替える

メモリにBGM番号を書き込みをして、BGMを切り替える。

引数

引数 r0 がBGM番号

0808941c ステータス画面1のレイアウト処理

文字表示、ゲージ表示、数値表示、属性アイコン表示、勝敗数表示などの処理が含まれている。

抜粋

00089554 68e8     	ldr	r0, [r5, #12]	
00089556 f78f fd05	bl	$00018f64=補正込み守備読み込み
0008955a 68e9     	ldr	r1, [r5, #12]
0008955c 2317     	mov	r3, #23
0008955e 56cb     	ldsb	r3, [r1, r3]	//守備読み込み
00089560 9000     	str	r0, [sp, #0]	//補正込み守備書き込み
00089562 6848     	ldr	r0, [r1, #4]
00089564 7dc0     	ldrb	r0, [r0, #23]	//守備上限読み込み
00089566 0600     	lsl	r0, r0, #24
00089568 1600     	asr	r0, r0, #24
0008956a 9001     	str	r0, [sp, #4]	//守備上限書き込み
0008956c 2004     	mov	r0, #4
0008956e 2105     	mov	r1, #5	//ゲージx座標
00089570 2209     	mov	r2, #9	//ゲージy座標
00089572 f7ff feef	bl	$00089354	//ゲージ表示処理

08088830 エイリーク編(ヴェルニ出現後)に切り替え

主人公がエイリーク($01)になる

400d0000 31880808

上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない

0808884c エフラム編に切り替え

主人公がエフラム($0F)になる

400d0000 4d880808

上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない

data/関数.txt · 最終更新: 2018/09/09 00:14 (外部編集)