今回から実装を開始することにします。
まず、幽霊船の中でのルーラの使用を禁止します。
- 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 |
|
最後に、イベント中に全滅した時に愛の思い出を剥奪するようにします。ついでに、アリアハンの追加イベントで入手した「ゆうきのあかし」も全滅したら剥奪するようにしてデスルーラでショートカットできるのを防ぎます。
| 略 |
|
|
|
| 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で潰すケースがあるようです。再現パターンが確定できていないのでまだデバッグできてません。念のため注意喚起しておきます。
コメント