トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

関数 の変更点


#author("2017-07-17T21:20:24+09:00","","")
#author("2017-07-17T21:22:50+09:00","","")
FE改造で使えそうな関数があったら追記してください。~

*0x080B9DEC  売り値を求める関数 [#n8b64c38]
***引数 [#rb8b8a4f]
引数 r0 に、個数 << 8 + アイテムID、として渡す。~
例:レイピア60個  0x3c09 3c=60 09=レイピアのアイテムID~
***戻り値 [#q7b1e432]
売値が r0 で返ってくる。
***sample [#jd6e9848]
 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  イベント命令を動作させる関数 [#n152134e]
***引数 [#rb8b8a4f]
引数 r0 に、呼び出したいイベント命令のポインタを設定する。~
引数 r1 に、謎の引数を設定する1-3まであるらしい。とりあえず1推奨。~
~
注意: ポインタは mov ではなく、ldr でセットしないと値が消えて null になるよ。~
~
***戻り値 [#q7b1e432]
不明~
***sample [#jd6e9848]
 ;093AA9B0 においてあるイベントを呼び出す場合
 ldr r0, =$093AA9B0	;呼びだしたいイベント命令
 mov r1,#0x1			;とりあえず1
 ldr		r2,=$0800d340	;イベント呼び出し
 mov		lr, r2
 @dcw	$F800

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


*0x080860A8 フラグを立てる関数 [#q7ef4467]
***引数 [#rb8b8a4f]
引数 r0 に、立てたいフラグを番号を書く。~
~
***戻り値 [#q7b1e432]
不明~
***sample [#jd6e9848]
 ;フラグ1番を立てる場合
 mov r0,#0x1   ; 立てたいフラグ番号
 ldr	r1, =$080860A8
 mov	r14, r1
 @dcw	$F800


*0x080860D0 フラグ状態確認関数 [#ef208a4c]
***引数 [#y88240aa]
引数 r0 にチェックしたいフラグIDを入れる~
~
***戻り値 [#za4b1335]
r0=0 フラグがオフの状態~
r0=1 フラグがオンの状態~
***sample [#k6c4f2d7]
 ;フラグ1番の状態を確認する場合
 mov	r0,#0x1   ; チェックしたいフラグ番号
 ldr	r1, =$080860D0
 mov	r14, r1
 @dcw	$F800


*0x0800D548 文字列番号の会話を表示する関数 [#t3f3fc88]
***引数 [#rb8b8a4f]
引数 r0 に、文字列番号を入れる~
~
***戻り値 [#q7b1e432]
不明~
***sample [#jd6e9848]
 ;オニールの死亡台詞 8D7 を出す
 mov     r0,#0x8D7 ;多分これでいい。ダメならldrで。
 ldr	r1, =$0800D548
 mov	r14, r1
 @dcw	$F800
***注意 [#mae71df4]
この関数はくせがあるらしく、あとの処理でwaitがかからないと、@0003が複数あるとおかしくなることがある?~


*0x080d4ef4 効果音を鳴らす関数 [#dd7127b4]
***引数 [#rb8b8a4f]
引数 r0 に、文字列番号を入れる~
~
***戻り値 [#q7b1e432]
不明~
***sample [#jd6e9848]
 ;効果音 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する関数 [#k0b49e69]
***引数 [#f692da1e]
引数 r0 に、経験値をあげたいキャラクタへのポインタが入る(多分)~
~
***戻り値 [#q7b1e432]
不明~
***sample [#jd6e9848]
 ldr	r0, [経験値をあげたいキャラクタへのポインタ]
 ldr	r2, =$0802cb70 ;;+10 経験値取得関数へ
 mov	r14, r2
 @dcw	$F800

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



*0x08034520 マップ番号から、マップ設定のポインタを返す関数 [#j6d0823d]
***引数 [#wf732be4]
引数 r0 に、マップIDを入れる~
~
***戻り値 [#q7b1e432]
r0に、マップ設定のポインタが返ってくる~
***sample [#jd6e9848]
 mov	r0, #0x01 #1章のマップ設定が見たい
 ldr	r2, =$08034520 ;;
 mov	r14, r2
 @dcw	$F800

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

*080a8d94 クリアターンを書き込む関数 [#rc795200]
***引数 [#nb00d9c8]
引数 r0 に、202bcecを入れる(固定?)~
~
***戻り値 [#qc0365a1]
なし
***sample [#cf0109ee]
 ;引数 r0
 ldr		r0,=$202bcec
 ;ターン数書込関数呼び出し
 ldr		r1,=$080a8d94
 mov		lr, r1
 @dcw	$F800

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


*08002c30 6C Structスクリプトロード [#o77d8750]
***引数 [#v157944b]
引数 r0 に、スクリプトアドレス~
引数 r1 は不明~
~
~
***戻り値 [#b858b4d0]
不明

*08000d68 パレット読込 [#jf9bee02]
***引数 [#v17c2782]
引数 r0 に、パレットアドレス~
引数 r1 は不明~
引数 r2 は不明~
~
~
***戻り値 [#y06026b6]
不明

*08013008 圧縮されているデータの解凍 [#j29cd76f]
***引数 [#v295aa72]
引数 r0 に、読み込む lz77圧縮されている画像やデータ
引数 r1 に、解凍後に配置するBGアドレスorメモリアドレス~
~
***戻り値 [#s87ce5d1]
不明


*080dc0dc 無圧縮TSA読込? [#vaf6a2c3]
***引数 [#ibfcb5aa]
引数 r0 は不明~
引数 r1 は無圧縮TSAアドレス~
引数 r2 は不明~
引数 r3 は不明~

*08008914 会話@0080@0005で参照できるところに数字を書く [#v4c18d90]
引数 r0 に表示したい数字~

***sample [#i632cefb]
 ldr		r0,=$00123456 ;表示したい数字
 ldr		r1,=$08008914
 mov		lr, r1
 @dcw	$F800
~
注意点:@0080@0005は吹きだしの会話でしか取れない。システムメッセージでは読めない。~
~

*08002424 BGMを切り替える [#rb56a64c]
BGM入りかえの最上位関数?~
***引数 [#cce0b091]
引数 r0 がBGM番号~
引数 r1 は謎、下位の080023C8のr2として渡される.~

*080023C8 BGMを切り替える [#i629de07]
現在のBGMなどを加味して、必要なら曲切り替え命令を発行する。~
***引数 [#pdd83c77]
引数 r0 がBGM番号~
引数 r1 は謎~
引数 r2 は謎~

*08002398 BGMを切り替える [#r1546e8f]
メモリにBGM番号を書き込みをして、BGMを切り替える。~
***引数 [#wbb3d9a1]
引数 r0 がBGM番号~

*0808941c ステータス画面1のレイアウト処理 [#pb60507e]

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

***抜粋 [#tc322f80]
 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 エイリーク編(ヴェルニ出現後)に切り替え [#p2df1d67]
主人公がエイリーク($01)になる~
~
本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない~
 400d0000 31880808
上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない~

*0808884c エフラム編に切り替え [#o8139e7e]
主人公がエフラム($0F)になる~
~
本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない~
 400d0000 4d880808
上記のようにすれば、イベント命令として章イベント中に実行できるが、本来は章分岐の関数を無理矢理呼んでいるだけなので、副作用があるかもしれない~