久しぶりの質問コーナーです。お題は
DQ3で復活した敵の経験値を入手できるようにしたい
です。あまり気にしたことのない場所なのでまじめに解析したことはないのですが、戦闘中に倒したモンスターの経験値を加算する部分を見れば事足ります。
- SR: $02B1B4 獲得経験値・ゴールド加算
02B1B4 | LDX $2428 | X=$2428 | |
---|---|---|---|
02B1B7 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2052 引数:2#$0010 | |
02B1BF | BNE #$1A | if(z==off) goto $02B1DB | 復活済み(=一度経験値を加算済み)? |
02B1C1 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203C 引数:2#$00FF | |
02B1C9 | CMP #$0004 | A>=#$0004? | グループ番号取得 |
02B1CC | BCS #$0D | if(c==on) goto $02B1DB | 格闘場で賭けた敵orPC側なら加算処理スキップ |
02B1CE | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2051 引数:2#$0001 | |
02B1D6 | BNE #$03 | if(z==off) goto $02B1DB | ? |
02B1D8 | JSR $B1DC | SR: $02B1DC | 獲得経験値・ゴールド加算 |
02B1DB | RTS | return |
ぱっと見て怪しいのは$02B1B7-C0で、戦闘中のキャラクター用のメモリの$22バイト目の5ビット目です(バイナリwikiでも「不明」扱いになっています)。恐らくこのフラグは「一度復活したことがある」なのでは、と思います。というわけで、一番簡単なのは$02B1BF-C0をNOPで潰してしまうことです。潰してテストをしたところ、一応期待通りの動作をしているようです。
コメント