長々とやってきましたが今回で最後です。?マークで止まったときに「次の戦闘で獲得コイン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ずつ追加イベントに差し替えてみました。
コメント