すっかり更新の間隔が空いてしまっていますが、実は裏でちんたらまだ作業を続けていたりします。いい加減そろそろ次くらいでDQ3 K.Mixはすることもなくなって更新終わりとしたいところです。
さて、今回のお題は
DQ3でちいさなメダルの景品の種類を12から18に増やしたい
です。実際何を追加の景品として設定するべきかは別としてやるべきことは以下のとおりです。
- 既存の景品データを空いている場所に移動しデータサイズを12から18に拡張し、増やした分の景品情報を設定する
- 景品データ、景品数を参照しているプログラム部分を変える
- 景品一覧のウィンドウ描画部分を変える
まずデータの移動ですが、適当に空いている場所に移動すればOKです。今回は18レコードに増やすので連続して36バイト空いている場所ならどこでも構いません。今回は$03F800に移動します。テストとして移動後1レコード目に6枚で薬草、3レコード目に11枚で毒消し草、5レコード目に21枚で聖水、7レコード目に31枚でキメラの翼、9レコード目に36枚で世界樹の葉、14レコード目に81枚で死のオルゴールを追加景品として設定します(超適当)。今回作業のベースとしてDQ3 Extended ver1.444を使用していますが、オリジナルROMでもやることは同じはずです(未確認)。
次にプログラム部分の変更です。景品データのアドレスとレコード数を変えるだけで追加SRなどを作成する必要はありません。
- SR: $03F076 ちいさなメダル受け取り処理
略 | |||
---|---|---|---|
03F092 | LDX #$0012 | X=#$0012 | 景品数を12から18に増やす |
略 | |||
03F147 | CPX #$0012 | X>=#$0012? | 景品数を12から18に増やす |
略 |
(2013-08-19追記)
$03F092の部分の処理が抜けてました。ご指摘ありがとうございます。
- SR: $03F199 全ての褒美を与えているかチェック
略 | |||
---|---|---|---|
03F1AB | CPX #$0012 | X>=#$0012? | 景品数を12から18に増やす |
略 |
- SR: $03F21E 小さなメダルの次の賞品アイテムIDを取得する
略 | |||
---|---|---|---|
03F230 | LDA $C3F800,X | A=$03F800+X | 開始アドレス変更 |
略 |
- SR: $03F239 次の賞品獲得までのメダルの総枚数を取得する
略 | |||
---|---|---|---|
03F24B | LDA $C3F800,X | A=$03F800+X | 開始アドレス変更 |
略 |
最後に景品リストを表示した時のウィンドウ部分の変更です。景品の表示はウィンドウID #$BFで行なっています。
- SR: $035450 景品ウィンドウ項目数セット
035450 | LDA #$0012 | A=#$0012 | 景品数を12から18に増やす |
---|---|---|---|
略 |
- SR: $034439 景品ウィンドウページ数計算
03443B | LDA #$0012 | A=#$0012 | 景品数を12から18に増やす |
---|---|---|---|
略 |
ざっとテストしたところこれらの変更で十分そうです。変更後の景品一覧は以下のようになります。
コメント
詳しい解説ありがとうございます。
解説通りにやってみたらできました!あとは私もプレイして動作を確認してみますね^^
K.Mixも楽しくプレイさせてもらっています
次で完成ですか、これからも応援しております。