DQ3 きんのかんむり装備時に外見を王様にする

質問回答3連発の最後です。

DQ3できんのかんむり装備時に外見を王様にしたい

です。まずはオリジナルの実装のお勉強です。普段あまりいじる場所ではありませんが、DQ3SFC K.Mixで5人目のキャラクターの着脱をする際にざっと解析していたので変更場所は分かっています。

  • SR: $063084 PCグラフィック決定
063084PHXPush X
063085PHYPush Y
063086STA $1C$00001C=A
063088JSL $046951SR: $046951 引数:1#$06 引数:2#$FF 引数:3#$FD職業ID取得
06308FSTY $18$000018=Y
063091JSL $042E19SR: $042E19 引数:1#$06 引数:2#$FF 引数:3#$FD性別取得
063098STY $1A$00001A=Y
06309AJSL $043F87SR: $043F87 引数:1#$06 引数:2#$FF 引数:3#$FFステータス取得
0630A1AND #$0010A&=#$0010死んでいるかどうか
0630A4BEQ #$06if(z==on) goto $0630AC
0630A6LDA #$0020A=#$0020死んでいたら棺桶のグラフィック
0630A9JMP $3142goto $063142
0630ACLDA $7E354FA=$7E354F
0630B0AND #$0002A&=#$0002勇者がロマリア即位中か
0630B3BEQ #$03if(z==on) goto $0630B8
0630B5JMP $312Agoto $06312A
0630B8LDA $7E353EA=$7E353E
0630BCAND #$0010A&=#$0010夢の中の最終イベント中(モンスター)
0630BFBEQ #$03if(z==on) goto $0630C4
0630C1JMP $313Cgoto $06313C
0630C4LDY $18Y=$000018
0630C6LDA #$0001A=#$0001種別:鎧をセット
0630C9JSL $044A03SR: $044A03 引数:1#$06 引数:2#$1C 引数:3#$FF 引数:4#$FF装備アイテムID取得
0630D1BCS #$14if(c==on) goto $0630E7装備していなければ飛ばす
0630D3CMP #$004EA==#$004E?あぶない水着装備
0630D6BEQ #$3Aif(z==on) goto $063112
0630D8CMP #$0063A==#$0063?神秘の水着装備
0630DBBEQ #$35if(z==on) goto $063112
0630DDCMP #$004FA==#$004F?魔法のビキニ装備
0630E0BEQ #$30if(z==on) goto $063112
0630E2CMP #$0047A==#$0047?ぬいぐるみ装備
0630E5BEQ #$3Dif(z==on) goto $063124
0630E7LDA $1AA=$00001A
0630E9CMP #$0000A==#$0000?性別が男か
0630ECBEQ #$12if(z==on) goto $063100
0630EEJSL $090566SR: $090566 引数:1#$01 引数:2#$0173 引数:3#$C424A9 引数:4#$0003 引数:5#$0000FF固定長データ「職業」の女CG(キャラクターグラフィック)ID取得
0630FDJMP $3142goto $063142
063100JSL $090566SR: $090566 引数:1#$01 引数:2#$0173 引数:3#$C424A9 引数:4#$0002 引数:5#$0000FF固定長データ「職業」の男CG(キャラクターグラフィック)ID取得
06310FJMP $3142goto $063142
063112JSL $090566SR: $090566 引数:1#$01 引数:2#$0173 引数:3#$C424A9 引数:4#$0004 引数:5#$0000FF固定長データ「職業」の水着着用時女CG(キャラクターグラフィック)ID取得
063121JMP $3142goto $063142
063124LDA #$001CA=#$001C着ぐるみの格好
063127JMP $3142goto $063142
06312ALDA $1AA=$00001A
06312CCMP #$0000A==#$0000?性別が男か
06312FBEQ #$05if(z==on) goto $063136
063131LDA #$001EA=#$001E勇者のロマリア王の格好(女)
063134BRA #$03goto $063139
063136LDA #$001DA=#$001D勇者のロマリア王の格好(男)
063139JMP $3142goto $063142
06313CLDA #$005DA=#$005Dモンスター
06313FJMP $3142goto $063142
063142PHAPush A
063143TAXX=A
063144LDA $7E353BA=$7E353B
063148AND #$0010A&=#$0010透明中?
06314BBNE #$09if(z==off) goto $063156
06314DLDA $7E353BA=$7E353B
063151AND #$0020A&=#$0020透明中?
063154BEQ #$16if(z==on) goto $06316C
063156JSL $090572SR: $090572 引数:1#$00 引数:2#$0009 引数:3#$C893D4 引数:4#$0002 引数:5#$0000FF構造体アクセス
063165CMP #$0000A==#$0000?
063168BEQ #$02if(z==on) goto $06316C
06316ASTA $01,SStack($01)=A
06316CPLAPull A
06316DPHAPush A
06316ELDA $7E353BA=$7E353B
063172AND #$0040A&=#$0040変化の杖で変化中?
063175BEQ #$14if(z==on) goto $06318B
063177LDX $3530X=$7E3530変化中のキャラクターID?
06317AJSL $090572SR: $090572 引数:1#$00 引数:2#$0002 引数:3#$C89839 引数:4#$0000 引数:5#$0000FF構造体アクセス
063189STA $01,SStack($01)=A
06318BPLAPull A
06318CPLYPull Y
06318DPLXPull X
06318ERTLreturn

というわけで、装備品が特定のものであればいつもと違うCGを使う、というだけで、とりたてて解説するべき部分はない実装になっています。この実装を踏まえて、きんのかんむり装備時に王様のCGになる実装をどう挟むか、ということになります。場所的に水着やぬいぐるみの前後が妥当な感じがするので、その前後を変更します。

  • SR: $063084 PCグラフィック描画
0630D1BCS #$0Aif(c==on) goto $0630DD
0630D3JSR $F400SR: $06F400Aが水着系か(該当c=on)
0630D6BCS #$3Aif(c==on) goto $063112
0630D8CMP #$0047A==#$0047?
0630DBBEQ #$47if(z==on) goto $063124
0630DDJSR $F413SR: $06F413
0630E0BCS #$5Dif(c==on) goto $06313F
0630E2-6NOP
  • SR: $06F400 Aが水着系か(該当c=on)(新SR)
06F400CMP #$004EA==#$004E?あぶない水着
06F403BEQ #$0Cif(z==on) goto $06F411
06F405CMP #$0063A==#$0063?神秘の水着
06F408BEQ #$07if(z==on) goto $06F411
06F40ACMP #$004FA==#$004F?魔法のビキニ
06F40DBEQ #$02if(z==on) goto $06F411
06F40FCLCc=off
06F410RTSreturn
06F411SECc=on
06F412RTSreturn
  • SR: $06F413 きんのかんむり装備か(該当c=on)(新SR)
06F413LDY $18Y=$000018
06F415LDA #$0003A=#$0003アイテム種別に兜をセット
06F418JSL $044A03SR: $044A03 引数:1#$06 引数:2#$1C 引数:3#$FF 引数:4#$FF装備アイテムID取得
06F420BCS #$16if(c==on) goto $06F438
06F422CMP #$0072A==#$0072?金の冠か
06F425BNE #$11if(z==off) goto $06F438
06F427LDA $1AA=$00001A
06F429CMP #$0000A==#$0000?性別が男
06F42CBEQ #$05if(z==on) goto $06F433
06F42ELDA #$001EA=#$001E女王様(元勇者)のCGID
06F431BRA #$03goto $06F436
06F433LDA #$001DA=#$001D男王様(元勇者)のCGID
06F436SECc=on
06F437RTSreturn
06F438CLCc=off
06F439RTSreturn

本当は普通の王様・女王のキャラ(ID:#$37,38)に変えようと思ったのですがPC*1とそれ以外のキャラでデコードルーチンが異なるためか(原因は不明)、グラフィックが崩れるという問題が起きてしまったので、元勇者の王様を代用することでとりあえずの回答とします。

20110422005546.jpg

*1:プレイヤーキャラクター

コメント

タイトルとURLをコピーしました