今回から実装を開始することにします。
まず、幽霊船の中でのルーラの使用を禁止します。
- SR: $0A79DC 幽霊船1F進入時初期化処理
略 | |||
---|---|---|---|
0A79EF | JSL $CCF68C | SR: $0CF68C | |
0A79F3-5 | NOP | ||
略 |
- SR: $0CF68C 幽霊船1F移動・宝箱・ドア・NPC、ルーラ設定(新SR)
0CF68C | JSL $C77843 | SR: $077843 引数:1#$CAC5A0 | 移動・宝箱・ドア・NPC配置 |
---|---|---|---|
0CF693 | JSL $CADE4F | SR: $0ADE4F | ルーラ使用禁止 |
0CF697 | RTL | return |
- SR: $0A7A0F 幽霊船B1F進入時初期化処理
略 | |||
---|---|---|---|
0A7A28 | JSL $CCF680 | SR: $0CF680 | |
0A7A2C-E | NOP | ||
略 |
- SR: $0CF680 幽霊船B1F移動・宝箱・ドア・NPC、ルーラ設定(新SR)
0CF680 | JSL $C77843 | SR: $077843 引数:1#$CAC5D6 | 移動・宝箱・ドア・NPC配置 |
---|---|---|---|
0CF687 | JSL $CADE4F | SR: $0ADE4F | ルーラ使用禁止 |
0CF68B | RTL | return |
次に、イベント発生時の甲板でのエンカウントを多少変えます(後から考えるといらなかったかも)。エンカウント率が高くなって移動をうざくするのが主目的ですww。エンカウントのデータが追加できなかったので場所を移動します。
- エンカウント:データ移動($08ADD1→$08AC7D)+レコード数変更(105→120)
- SR中で参照しているアドレスの変更
- SR: $0A79DC 幽霊船1F進入時初期化処理
略 | |||
---|---|---|---|
0A79F6 | JSL $CAF750 | SR: $0AF750 | |
略 |
- SR: $0AF750 幽霊船1Fエンカウント・戦闘背景・イベント設定(新SR)
0AF750 | LDA #$0051 | A=#$0051 | エンカウントID(通常) |
---|---|---|---|
0AF753 | JSL $CCF15A | SR: $0CF15A | 追加イベント中か? |
0AF757 | BCC #$03 | if(c==off) goto $0AF75C | |
0AF759 | LDA #$0069 | A=#$0069 | エンカウントID(イベント中) |
0AF75C | LDX #$0026 | X=#$0026 | |
0AF75F | JSL $C777F9 | SR: $0777F9 | エンカウント、戦闘背景設定 |
0AF763 | JSL $CCF15A | SR: $0CF15A | 追加イベント中か? |
0AF767 | BCC #$07 | if(c==off) goto $0AF770 | |
0AF769 | JSL $C7785F | SR: $07785F 引数:1#$CCF997 | イベント設定 |
0AF770 | RTL | return |
- SR: $0CF15A 幽霊船追加イベント発生条件かしらべる(該当c=on)(新SR)
0CF15A | LDA $35B1 | A=$35B1 | |
---|---|---|---|
0CF15D | AND #$0002 | A&=#$0002 | 幽霊船追加ボスを倒している |
0CF160 | BNE #$0A | if(z==off) goto $0CF16C | |
0CF162 | LDA $3542 | A=$3542 | |
0CF165 | AND #$0080 | A&=#$0080 | 愛の思い出を入手している |
0CF168 | BEQ #$02 | if(z==on) goto $0CF16C | |
0CF16A | SEC | c=on | |
0CF16B | RTL | return | |
0CF16C | CLC | c=off | |
0CF16D | RTL | return |
最後に、イベント中に全滅した時に愛の思い出を剥奪するようにします。ついでに、アリアハンの追加イベントで入手した「ゆうきのあかし」も全滅したら剥奪するようにしてデスルーラでショートカットできるのを防ぎます。
- SR: $067A85 全滅時復活処理
略 | |||
---|---|---|---|
067AF8 | JSR $F421 | SR: $06F421 | |
略 |
- SR: $06F421 全滅時アイテム剥奪処理(新SR)
06F421 | JSR $7B0E | SR: $067B0E | 全滅時黄金の爪剥奪処理 |
---|---|---|---|
06F424 | JSR $F4ED | SR: $06F4ED | 全滅時ゆうきのあかし剥奪処理 |
06F427 | JSR $F43A | SR: $06F43A | 全滅時愛の思い出剥奪処理 |
06F42A | RTS | return |
- SR: $06F4ED 全滅時ゆうきのあかし剥奪処理(新SR)
06F4ED | LDA $354E | A=$354E | |
---|---|---|---|
06F4F0 | AND #$0001 | A&=#$0001 | 勇者に転身済みなら剥奪処理をしない |
06F4F3 | BNE #$03 | if(z==off) goto $06F4F8 | |
06F4F5 | JSR $F42B | SR: $06F42B | |
06F4F8 | RTS | return |
- SR: $06F42B 全滅時ゆうきのあかし剥奪処理(新SR)
06F42B | JSL $CCF119 | SR: $0CF119 | ゆうきのあかし削除 |
---|---|---|---|
06F42F | JSL $C907CC | SR: $0907CC 引数:1#$35B0 引数:2#$7E 引数:3#$01 引数:4#$00 引数:5#$00 | ゆうきのあかし入手フラグOFF |
06F439 | RTS | return |
- SR: $06F43A 全滅時愛の思い出剥奪処理(新SR)
06F43A | LDA $35B1 | A=$35B1 | |
---|---|---|---|
06F43D | AND #$0002 | A&=#$0002 | 幽霊船追加ボスを倒している |
06F440 | BNE #$20 | if(z==off) goto $06F462 | |
06F442 | LDA $3542 | A=$3542 | |
06F445 | AND #$0080 | A&=#$0080 | 愛の思い出を入手している |
06F448 | BEQ #$18 | if(z==on) goto $06F462 | |
06F44A | JSL $CC9E86 | SR: $0C9E86 | 愛の思い出削除 |
06F44E | JSL $C907CC | SR: $0907CC 引数:1#$3542 引数:2#$7E 引数:3#$80 引数:4#$00 引数:5#$00 | 愛の思い出入手フラグOFF |
06F458 | JSL $C907CC | SR: $0907CC 引数:1#$353E 引数:2#$7E 引数:3#$40 引数:4#$00 引数:5#$00 | 愛の思い出宝箱空けたフラグOFF |
06F462 | RTS | return |
DQはFFと違って全滅したら前回のセーブポイントから再開ではないのでデスルーラ対策を特別処理として実装しないといけないのが面倒です。とりえあず準備が終わったので次回からはNPC配置、イベントの実装を行います。
あと、蛇足ですが、DQ3SFCEditorのデータ(SR)移動と要素数の変更のあたりがバグっているようで、潰しちゃいけない領域を0で潰すケースがあるようです。再現パターンが確定できていないのでまだデバッグできてません。念のため注意喚起しておきます。
コメント