DQ3 ひとさらいのアジトイベント解析

今回も改造無しで解析のみ行います。

前回の解析でキャラクターの動かし方は大体わかりましたが、「はじめはいなかったキャラクターが後からマップに登場する」やり方がまだわかりません。そういう条件に該当するイベントがないか調べてみると、「ひとさらいのアジトB2F」のイベントが思い当たりました。このイベントは、最初はマップにはいなかったカンダタ(2回目)と子分二人がグプタとタニアを牢から出した後マップに現れます。というわけでこの部分を真似ればよさそうです。

  • SR: $0CCDE9 ひとさらいのアジトB2FNPC情報設定
0CCE37 LDA #$04FC A=#$04FC グラフィック=カンダタ
0CCE3A JSL $C75828 SR: $075828 NPC1設定
0CCE3E LDA #$04FD A=#$04FD グラフィック=子分
0CCE41 JSL $C75828 SR: $075828 NPC1設定
0CCE45 LDA #$04FE A=#$04FE グラフィック=子分
0CCE48 JSL $C75828 SR: $075828 NPC1設定
0CCE4C RTL return

この3人の初期座標をNPC1($1A08DA-)で見てみると、#$FFになっています。さらにキャラクターグラフィックも合致しています。どうやら、最初は画面隅(右下)に配置しておいて必要になったら所定の位置に出現させるということのようです。早速これらのキャラクターのMoveSRを見てみます。

  • SR: $0D486F NPC1_MoveSR_04FC
0D4877 COP goto $00FFE4
0D4878 LDA $3555 A=$3555
0D487B AND #$0010 A&=#$0010
0D487E BEQ #$03 if(z==on) goto $0D4883
0D4880 JMP $4887 ($0D4887) goto $0D4887
0D4883 COP goto $00FFE4
0D4884 JMP $4878 ($0D4878) goto $0D4878
0D4887 JSL $CDAFA1 SR: $0DAFA1 カウンタが15000になるまで待機
0D488B LDA #$002D A=#$002D
0D488E LDX #$004B X=#$004B
0D4891 JSL $C75305 SR: $075305 出現座標を指定
0D4895 JSL $CCD847 SR: $0CD847 下を向く

というわけでSR: $075305でAレジスタをX座標、XレジスタをY座標とした位置に出現する座標を指定し、SR: $0CD847で下を向いた状態で出現させる、という仕組みになっているようです。とりあえずこれでいろいろネタが揃ったので次回から実装に移ります。