DQ3 「みのまもり」を導入する4

前回で基本的なSRを一通り実装したので今回はレベルアップ時のステータス変更部分を実装します。レベルアップ時に固定長データ「職業」を参照するため、みのまもり分のレコードサイズを13バイト拡張します。(登録所キャラメイク用性格レコードID(1Byte)、男初期値(1Byte)、女初期値(1Byte)、成長段階1~5のレベル、成長値(それぞれ5Byte)がその内訳です)これにより職業の1レコードのサイズは$180になるため、プログラム中でレコードサイズを指定している部分及び開始アドレスを変更する必要があります(詳細は省略)。

  • SR: $043C83 レベルアップ時のステータスアップ,呪文習得処理?
043D60 JSR $2307 SR: $042307 身の守りレベルアップ時処理
043D64 JSR $2300 SR: $042300 体力取得+メモリセット(レベルアップ時用)
  • SR: $042307 身の守りレベルアップ時処理(新SR)
042307 PHX Push X
042308 JSL $041F21 SR: $041F21 身の守り取得
04230C STA $40CB $7E40CB=A
04230F LDX #$0174 X=#$0174
042312 JSR $3E84 SR: $043E84 ステータス上昇分計算
042315 BCS #$0C if(c==on) goto $042323
042317 LDX #$0176 X=#$0176
04231A JSR $3EE8 SR: $043EE8 ステータス小数点部分計算?
04231D LDX #$0010 X=#$0010
042320 JSR $3F20 SR: $043F20 性格に応じた補正値を取得
042323 PLX Pull X
042324 JSL $041FAE SR: $041FAE レベルアップ時の身の守りステータスアップ処理
042328 JSL $041F21 SR: $041F21 身の守り取得
04232C CMP $40CD A>=$7E40CD?
04232F BCS #$10 if(c==on) goto $042341
042331 LDA $40CD A=$7E40CD
042334 JSL $041F3B SR: $041F3B 身の守り変更
042338 LDA #$0000 A=#$0000
04233B JSL $041F58 SR: $041F58 身の守り小数点部分変更
04233F BRA #$E7 goto $042328
042341 SEC c=on
042342 SBC $40CB A-=$7E40CB
042345 STA $4082 $7E4082=A みのまもり上昇分保持用バッファ
042348 RTS return
  • SR: $042300 体力取得+メモリセット(レベルアップ時用)(新SR)
042300 JSR $354C SR: $04354C 体力取得
042303 STA $40CB $7E40CB=A
042306 RTS return

レベルアップ時のステータスアップ表示も変更する必要があります。ちなみにSFC版ではFC版と異なり、幸せの靴を装備していてもフィールド上でレベルアップ処理が行われることはないので、戦闘終了後のレベルアップ部分を変更するだけで事足ります。ステータスアップのメッセージ($2F-31)も力・素早さ、身の守り・体力、賢さ・運のよさの順になるように変えます。

  • SR: $02A7EC レベルアップ表示処理
02A86D JSR $EC5D SR: $02EC5D レベルアップ時ステータスに変化がないか調べる(変化なしc=off)
02A890 LDA $4082 A=$7E4082 身の守りアップ値セット
02A899 LDA $4071 A=$7E4071 体力アップ値セット
02A8A5-7 NOP
02A8A8 JSR $EC4D SR: $02EC4D レベルアップ時賢さ・運の良さセット
  • SR: $02EC5D レベルアップ時ステータスに変化がないか調べる(変化なしc=off)(新SR)
02EC5D LDA $406D A=$7E406D
02EC60 ORA $406F Aor=$7E406F
02EC63 ORA $4071 Aor=$7E4071
02EC66 ORA $4073 Aor=$7E4073
02EC69 ORA $4075 Aor=$7E4075
02EC6C ORA $4082 Aor=$7E4082
02EC6F BEQ #$02 if(z==on) goto $02EC73
02EC71 SEC c=on
02EC72 RTS return
02EC73 CLC c=off
02EC74 SEC c=on
  • SR: $02EC4D レベルアップ時賢さ・運の良さセット(新SR)
02EC4D LDA $4073 A=$7E4073
02EC50 STA $BE81 $7EBE81=A
02EC53 JSR $A8E3 SR: $02A8E3 レベルアップ時のステータスの桁揃え処理
02EC56 LDA $4075 A=$7E4075
02EC59 STA $BE85 $7EBE85=A
02EC5C RTS return

とりあえず今回はこの辺まで。次回は転職時、すごろく時の変更を行います。