最新の10件
ページ | 日付 |
---|---|
en:guid:febuildergba:work_support | 2023/06/08 20:25 |
guide:febuildergba:作品支援 | 2023/06/08 20:24 |
最新の10件
ページ | 日付 |
---|---|
en:guid:febuildergba:work_support | 2023/06/08 20:25 |
guide:febuildergba:作品支援 | 2023/06/08 20:24 |
FE改造で使えそうな関数があったら追記してください。
引数 r0 に、個数 « 8 + アイテムID、として渡す。
例:レイピア60個 0x3c09 3c=60 09=レイピアのアイテムID
売値が r0 で返ってくる。
mov r0,0x09 ;レイピア mov r1,0x3c ;60個 lsl r1,#0x8 ;個数 << 8 + アイテムID add r0,r1 ; ldr r1,=$080B9DEC mov lr, r1 @dcw $F800 ;r0に売値が返ってくる.
引数 r0 に、呼び出したいイベント命令のポインタを設定する。
引数 r1 に、謎の引数を設定する1-3まであるらしい。とりあえず1推奨。
注意: ポインタは mov ではなく、ldr でセットしないと値が消えて null になるよ。
不明
;093AA9B0 においてあるイベントを呼び出す場合 ldr r0, =$093AA9B0 ;呼びだしたいイベント命令 mov r1,#0x1 ;とりあえず1 ldr r2,=$0800d340 ;イベント呼び出し mov lr, r2 @dcw $F800
この命令を呼ぶと、イベントキューみたいなものに情報が詰まれ、
メニュー等を閉じた時にイベントが発動するらしい?
この命令を連続して呼ぶと、呼んだ数だけイベントが動作する。
戦闘準備などのwindowsでいうモーダルダイアログのようなものを実行している間はイベントが発動しない。(閉じれば発動する)
引数 r0 に、立てたいフラグを番号を書く。
不明
;フラグ1番を立てる場合 mov r0,#0x1 ; 立てたいフラグ番号 ldr r1, =$080860A8 mov r14, r1 @dcw $F800
引数 r0 にチェックしたいフラグIDを入れる
r0=0 フラグがオフの状態
r0=1 フラグがオンの状態
;フラグ1番の状態を確認する場合 mov r0,#0x1 ; チェックしたいフラグ番号 ldr r1, =$080860D0 mov r14, r1 @dcw $F800
引数 r0 に、文字列番号を入れる
不明
;オニールの死亡台詞 8D7 を出す mov r0,#0x8D7 ;多分これでいい。ダメならldrで。 ldr r1, =$0800D548 mov r14, r1 @dcw $F800
この関数はくせがあるらしく、あとの処理でwaitがかからないと、@0003が複数あるとおかしくなることがある?
引数 r0 に、文字列番号を入れる
不明
;効果音 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
引数 r0 に、経験値をあげたいキャラクタへのポインタが入る(多分)
不明
ldr r0, [経験値をあげたいキャラクタへのポインタ] ldr r2, =$0802cb70 ;;+10 経験値取得関数へ mov r14, r2 @dcw $F800
もし、任意の経験値をあげたい場合は、怪盗パッチのasmの kaihou_ex.asm を参考にしてください。
引数 r0 に、マップIDを入れる
r0に、マップ設定のポインタが返ってくる
mov r0, #0x01 #1章のマップ設定が見たい ldr r2, =$08034520 ;; mov r14, r2 @dcw $F800
;;r0 にマップ設定のポインタが返ってくる
引数 r0 に、202bcecを入れる(固定?)
なし
;引数 r0 ldr r0,=$202bcec ;ターン数書込関数呼び出し ldr r1,=$080a8d94 mov lr, r1 @dcw $F800
0203ECF0- からの領域に、クリアターンを書き込みます。
これを使ったあとは、 #0x03フラグを降ろさないと、2度書きすることがあるので注意
引数 r0 に、スクリプトアドレス
引数 r1 は不明
不明
引数 r0 に、パレットアドレス
引数 r1 は不明
引数 r2 は不明
不明
引数 r0 に、読み込む lz77圧縮されている画像やデータ
引数 r1 に、解凍後に配置するBGアドレスorメモリアドレス
不明
引数 r0 は不明
引数 r1 は無圧縮TSAアドレス
引数 r2 は不明
引数 r3 は不明
引数 r0 に表示したい数字
ldr r0,=$00123456 ;表示したい数字 ldr r1,=$08008914 mov lr, r1 @dcw $F800
注意点:@0080@0005は吹きだしの会話でしか取れない。システムメッセージでは読めない。
BGM入りかえの最上位関数?
引数 r0 がBGM番号
引数 r1 は謎、下位の080023C8のr2として渡される.
現在のBGMなどを加味して、必要なら曲切り替え命令を発行する。
引数 r0 がBGM番号
引数 r1 は謎
引数 r2 は謎
メモリにBGM番号を書き込みをして、BGMを切り替える。
引数 r0 がBGM番号
文字表示、ゲージ表示、数値表示、属性アイコン表示、勝敗数表示などの処理が含まれている。
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 //ゲージ表示処理
主人公がエイリーク($01)になる
400d0000 31880808
上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない
主人公がエフラム($0F)になる
400d0000 4d880808
上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない