裏CHUNSOFT > ROMイメージ改造・解析 > 特殊地形の出現率
特殊地形の出現率
Windows版風来のシレンのゴミ壺ダンジョンでも特殊地形の出現率を設定できましたが、SFC版では一体どうなっているのかと思って調べてみました。
035561 20 5D 57 JSR $575D ; 03575D A2 01 LDX #$01 ; "X" = 01 03575F 22 E6 27 C6 JSL $0627E6 ; $00 = 01(こばみ谷),02(食神のほこら),03(掛軸裏の洞窟),04(フェイの最終問題) 035763 A4 00 LDY $00 ; "Y" = $00 035765 C0 01 CPY #$01 ; 035767 D0 12 BNE #$12 ; "Y" != 01(こばみ谷) のとき03577Bへ 035769 22 71 27 C6 JSL $062771 ; $00 = (フロア) 03576D A5 00 LDA $00 ; "A" = $00 03576F C9 15 CMP #$15 ; 035771 B0 03 BCS #$03 ; "A" >= 15(21F) のとき035776へ 035773 CA DEX ; "X" -- 035774 80 05 BRA #$05 ; 03577Bへ 035776 C9 1A CMP #$1A ; 035778 90 01 BCC #$01 ; "A" < 1A(26F) のとき03577Bへ 03577A CA DEX ; "X" -- 03577B 86 06 STX $06 ; $06 = "X"
いきなりよく分からないことをしています。 $06は、こばみ谷で21〜25Fではないときのみ00hで、それ以外は01hになるようです。
03577D A2 01 LDX #$01 ; "X" = 01 03577F C0 02 CPY #$02 ; 035781 F0 0B BEQ #$0B ; "Y" = 02(食神のほこら) のとき03578Eへ 035783 C0 03 CPY #$03 ; 035785 F0 07 BEQ #$07 ; "Y" = 03(掛軸裏の洞窟) のとき03578Eへ 035787 C0 04 CPY #$04 ; 035789 F0 03 BEQ #$03 ; "Y" = 04(フェイの最終問題) のとき03578Eへ 03578B 86 04 STX $04 ; $04 = "X" 03578D 60 RTS ; 035564へ 03578E 22 71 27 C6 JSL $062771 ; $00 = (フロア) 035792 A5 00 LDA $00 ; "A" = $00 035794 C9 04 CMP #$04 ; 035796 B0 F3 BCS #$F3 ; "A" >= 04(4F) のとき03578Bへ 035798 CA DEX ; "X" -- 035799 80 F0 BRA #$F0 ; 03578Bへ
$04は、クリア後のダンジョンで1〜3Fのときのみ00hで、それ以外は01hになるようです。
035564 98 TYA ; "A" = "Y" 035565 0A ASL ; "A" *= 02 035566 AA TAX ; "X" = "A" 035567 BF BD 55 C3 LDA $0355BD+"X" ; "A" = $0355BD+"X" 03556B 85 A9 STA $A9 ; $A9 = "A" 03556D BF BE 55 C3 LDA $0355BE+"X" ; "A" = $0355BE+"X" 035571 85 AA STA $AA ; $AA = "A" 035573 4B PHK ; 035574 AB PLB ;
ここは詳しく説明すると面倒なので結果だけ言いますが、特殊地形の出現率の表には3種類あって、どれが使われるかはダンジョンによって決まります。
表の中身は以下の通りです。
表1 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 07 07 03 03 03 03 03 03 03 03 03 03 03 03 03 03 09 09 03 03 03 03 03 03 0A 0A 03 03 03 03 03 03 0B 0B 03 03 03 03 03 03 0C 0C 03 03 03 03 03 03 0D 0D 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 表2 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 04 04 03 03 03 03 03 03 05 05 03 03 03 03 03 03 03 03 03 03 03 03 03 03 07 07 03 03 03 03 03 03 03 03 03 03 03 03 03 03 09 09 03 03 03 03 03 03 0A 0A 03 03 03 03 03 03 0B 0B 0B 03 03 03 03 03 0C 0C 0C 03 03 03 03 03 0C 0D 0D 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 表3 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 04 04 03 03 03 03 03 03 05 05 03 03 03 03 03 03 03 03 03 03 03 03 03 03 07 07 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 0B 0B 0B 03 03 03 03 03 0C 0C 0C 03 03 03 03 03 0D 0D 0D 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
そして、数値の意味は以下の通りです。
大迷路は、SFC版風来のシレンでは没地形となっていますが、表を変更して出現するようにしてやれば問題なくフロアが形成されます。
035575 22 DB 27 C6 JSL $0627DB ; $00 = 01(こばみ谷ランダム),02(食神のほこら),03(掛軸裏の洞窟),04(フェイの最終問題),08(フェイの問題),0A(こばみ谷シャッフル) 035579 A5 00 LDA $00 ; "A" = $00 03557B C9 0A CMP #$0A ; 03557D 90 04 BCC #$04 ; "A" < 0A のとき035583へ 03557F A0 80 LDY #$80 ; "Y" = 80 (シャッフルダンジョンのときの例外処理) 035581 80 11 BRA #$11 ; 035594へ 035583 C9 08 CMP #$08 ; 035585 D0 04 BNE #$04 ; "A" != 08(フェイの問題) のとき03558Bへ 035587 A0 81 LDY #$81 ; "Y" = 81 (フェイの問題のときの例外処理) 035589 80 09 BRA #$09 ; 035594へ 03558B 22 5F F6 C3 JSL $03F65F ; $00 = (乱数) 03558F A5 00 LDA $00 ; "A" = $00 035591 29 7F AND #$7F ; "A" = 00〜7F 035593 A8 TAY ; "Y" = "A" 035594 B1 A9 LDA ($A9)+"Y" ; "A" = ($A9)+"Y" (表の"Y"番目の数値を取得) 035596 A6 06 LDX $06 ; "X" = $06 035598 E0 01 CPX #$01 ; 03559A F0 0A BEQ #$0A ; "X" = 01 のとき0355A6へ 03559C C9 09 CMP #$09 ; 03559E F0 EB BEQ #$EB ; "A" = 09(飛び地) のとき乱数生成からやり直し 0355A0 C9 0A CMP #$0A ; 0355A2 F0 E7 BEQ #$E7 ; "A" = 0A(2分裂) のとき乱数生成からやり直し 0355A4 80 12 BRA #$12 ; 0355B8へ 0355A6 A6 04 LDX $04 ; "X" = $04 0355A8 E0 01 CPX #$01 ; 0355AA F0 0C BEQ #$0C ; "X" = 01 のとき0355B8へ 0355AC C9 04 CMP #$04 ; 0355AE F0 DB BEQ #$DB ; "A" = 04(4分割) のとき乱数生成からやり直し 0355B0 C9 05 CMP #$05 ; 0355B2 F0 D7 BEQ #$D7 ; "A" = 05(2分割) のとき乱数生成からやり直し 0355B4 C9 07 CMP #$07 ; 0355B6 F0 D3 BEQ #$D3 ; "A" = 07(大部屋) のとき乱数生成からやり直し 0355B8 8F 79 C1 7E STA $7EC179 ; $7EC179 = "A" (これが最終的に決まる地形) 0355BC 60 RTS ;
$06と$04はここで使われます。 こばみ谷で21〜25Fではないときに飛び地と2分裂は選ばれなくなり、クリア後のダンジョンで1〜3Fのときに必ずモンスターハウスがある地形は選ばれなくなります。 後者は、1〜3Fにはモンスターハウスは出ないということなので分かりますが、前者については、私はこばみ谷21〜25Fで飛び地や2分裂を見た覚えはありません。 誰か確認して下さい。
以上をまとめると、各ダンジョンにおける特殊地形の出現率は以下の通りです。
ダンジョン | 普通 | 4分割 | 2分割 | 大部屋 | 飛び地 | 2分裂 | 格子 | 外周 | 1本道 | 再選択 |
---|---|---|---|---|---|---|---|---|---|---|
こばみ谷 | 116/128 | 0/128 | 0/128 | 2/128 | 2/128 | 2/128 | 2/128 | 2/128 | 2/128 | 21〜25F以外で飛び地、2分裂が選ばれたとき |
食神のほこら | 109/128 | 2/128 | 2/128 | 2/128 | 2/128 | 2/128 | 3/128 | 4/128 | 2/128 | 1〜3Fで4分割、2分割、大部屋が選ばれたとき |
掛軸裏の洞窟 | 113/128 | 2/128 | 2/128 | 2/128 | 0/128 | 0/128 | 3/128 | 3/128 | 3/128 | 1〜3Fで4分割、2分割、大部屋が選ばれたとき |
フェイの最終問題 | 109/128 | 2/128 | 2/128 | 2/128 | 2/128 | 2/128 | 3/128 | 4/128 | 2/128 | 1〜3Fで4分割、2分割、大部屋が選ばれたとき |
2009年2月25日更新
裏CHUNSOFT > ROMイメージ改造・解析 > 特殊地形の出現率