DQ3 すごろくシステム変更7

長々とやってきましたが今回で最後です。?マークで止まったときに「次の戦闘で獲得コイン2倍、同5倍、経験値とコインが逆」が候補に含まれるようにします。?マークに止まった時に実行される各処理のSRアドレスリスト($08F188-)を余裕のある場所に移動してレコードを3つ追加します。追加処理自体はこれといって難しいことはなく、それっぽいメッセージを表示してフラグを立てるだけです。

  • SR: $05FADF すごろく?マークパネルイベントアドレスSR_0024(経験値コイン入れ替え)(新SR)
05FADF JSL $C737BE SR: $0737BE 引数:1#$106A メッセージ表示
05FAE5 JSL $C737BE SR: $0737BE 引数:1#$0150 メッセージ表示
05FAEB JSL $C737BE SR: $0737BE 引数:1#$106B メッセージ表示
05FAF1 JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
05FAF5 JSL $C58ECD SR: $058ECD すごろくイベントエフェクト処理?
05FAF9 JSL $C90789 SR: $090789 引数:1#$35B5 引数:2#$7E 引数:3#$08 引数:4#$00 引数:5#$00 RAM上情報変更(ON)
05FB03 RTL return

他の2つについては表示するメッセージ、立てるフラグが違うだけなので省略します。次にこれら追加イベントを?マークパネルに止まったときに選ばれるようにします。

  • SR: $01C9BA すごろく?マークパネル処理決定?
01C9E5 JSL $C90566 SR: $090566 引数:1#$00 引数:2#$0036 引数:3#$C8F323 引数:4#$0020 引数:5#$00000F 構造体アクセス
01C9F4 TAY Y=A
01C9F5 JSL $C90501 SR: $090501 引数:1#$00 引数:2#$0030 引数:3#$C8F1F4 引数:4#$00 構造体アクセス Y番目の先頭アドレスを$00,第4引数にセット
01CA00 LDA $C1EF A=$C1EF
01CA03 BEQ #$03 if(z==on) goto $01CA08
01CA05 DEC A–
01CA06 BRA #$26 goto $01CA2E
01CA08 LDA #$FFFF A=#$FFFF
01CA0B STA $18 DP($18)=A
01CA0D LDA #$FFFF A=#$FFFF
01CA10 STA $1A DP($1A)=A
01CA12 LDA #$FFFF A=#$FFFF
01CA15 STA $1C DP($1C)=A
01CA17 STZ $1E DP($1E)=#$00
01CA19 JSR $CA3C SR: $01CA3C すごろくプレイヤー入れ替え用フラグOFF?
01CA1C JSR $CA49 SR: $01CA49 宿屋に飛ばされるフラグOFF?
01CA1F NOP
01CA20 NOP
01CA21 NOP
01CA22 LDX #$0018 X=#$0018
01CA25 JSL $C01396 SR: $001396 乱数発生 $0000000000000000-FFFFFFFFFFFFFFFF dp,Xの1になっているビットをランダムで0にする?
01CA29 BCS #$03 if(c==on) goto $01CA2E
01CA2B LDA #$0000 A=#$0000
01CA2E CLC c=off
01CA2F ADC #$0000 A+=(#$0000+c)
01CA32 TAY Y=A
01CA33 LDA $00 A=$(DP[$00])+Y
01CA35 AND #$00FF A&=#$00FF
01CA38 STA $C1F5 $C1F5=A
01CA3B RTL return

やってる事自体は基本パルプンテの効果リストから1つ選ぶというのとほとんど同じです。少し違うのは、ONになったビットの参照先が直接結果リストになるのではなく、各すごろく場ごとに決められた結果リストテーブル($08F1F4-)の値になっているというだけです。また、状況に応じて実行しても意味がない(パーティがひとりだけ、残りが全員死んでるなどにより入れ替えできないなど)フラグは事前にOFFにするようになっています。というわけで、追加イベントを発生させるには結果リストテーブル($08F1F4-)のいらなそうなものと取り替えてしまえばいいわけです。単純に1つ入れ替えれば1/48(約2%)の確率で選ばれることになるので、だいたいどのすごろく場も1-2ずつ追加イベントに差し替えてみました。