裏CHUNSOFT > ROMイメージ改造・解析 > モンスターハウスの出現率
モンスターハウスの出現率
フロア生成時に実行されるルーチンです。 モンスターハウスの巻物を読んだ場合、内部では予約フラグを立ててこのルーチンを実行することでモンスターハウスを発生させています。
03991D 08 PHP ; 03991E E2 30 SEP #$30 ; 039920 22 58 2B C6 JSL $062B58 ; $00 = 00(予約なし),01(予約あり) 039924 A5 00 LDA $00 ; "A" = $00 039926 F0 2D BEQ #$2D ; 予約なしのとき039955へ 039928 22 68 43 C2 JSL $024368 ; $00 = 00(通常),01(泥棒状態) 03992C A5 00 LDA $00 ; "A" = $00 03992E F0 0A BEQ #$0A ; 泥棒状態でないとき03993Aへ 039930 A2 03 LDX #$03 ; "X" = 03 039932 A9 06 LDA #$06 ; "A" = 06(番犬隊) 039934 8F 76 C1 7E STA $7EC176 ; $7EC176 = "A" (モンスターハウスの種類) 039938 80 17 BRA #$17 ; 039951へ 03993A A2 01 LDX #$01 ; "X" = 01 03993C 22 E6 27 C6 JSL $0627E6 ; $00 = 01(こばみ谷),02(食神のほこら),03(掛軸裏の洞窟),04(フェイの最終問題) 039940 A5 00 LDA $00 ; "A" = $00 039942 C9 01 CMP #$01 ; 039944 F0 0B BEQ #$0B ; "A" = 01(こばみ谷) のとき039951へ 039946 22 5F F6 C3 JSL $03F65F ; $00 = (乱数) 03994A A5 00 LDA $00 ; "A" = $00 03994C 89 01 BIT #$01 ; 03994E F0 01 BEQ #$01 ; 乱数が偶数のとき039951へ 039950 E8 INX ; "X" ++ 039951 86 00 STX $00 ; $00 = "X" 039953 28 PLP ; 039954 60 RTS ; 元のルーチンへ 039955 A2 00 LDX #$00 ; "X" = 00 039957 AF 79 C1 7E LDA $7EC179 ; "A" = $7EC179(地形のタイプ) 03995B C9 04 CMP #$04 ; 03995D F0 24 BEQ #$24 ; 4分割のとき039983へ 03995F C9 05 CMP #$05 ; 039961 F0 20 BEQ #$20 ; 2分割のとき039983へ 039963 C9 07 CMP #$07 ; 039965 F0 1C BEQ #$1C ; 大部屋のとき039983へ 039967 22 C8 27 C6 JSL $0627C8 ; $00 = 00(食神のほこら),FF(それ以外) 03996B A5 00 LDA $00 ; "A" = $00 03996D 10 2A BPL #$2A ; 食神のほこらのとき039999へ 03996F 22 71 27 C6 JSL $062771 ; $00 = (フロア) 039973 A5 00 LDA $00 ; "A" = $00 039975 C9 04 CMP #$04 ; 039977 90 20 BCC #$20 ; 3F以下のとき039999へ 039979 22 5F F6 C3 JSL $03F65F ; $00 = (乱数) 03997D A5 00 LDA $00 ; "A" = $00 03997F 89 0F BIT #$0F ; 039981 D0 16 BNE #$16 ; 乱数の下位1バイトが00でないとき039999へ 039983 E8 INX ; "X" ++ 039984 22 E6 27 C6 JSL $0627E6 ; $00 = 01(こばみ谷),02(食神のほこら),03(掛軸裏の洞窟),04(フェイの最終問題) 039988 A5 00 LDA $00 ; "A" = $00 03998A C9 01 CMP #$01 ; 03998C F0 0B BEQ #$0B ; こばみ谷のとき039999へ 03998E 22 5F F6 C3 JSL $03F65F ; $00 = (乱数) 039992 A5 00 LDA $00 ; "A" = $00 039994 C9 AA CMP #$AA ; 039996 90 01 BCC #$01 ; (乱数) = 00〜A9 のとき039999へ 039998 E8 INX ; "X" ++ 039999 86 00 STX $00 ; $00 = "X" 03999B 28 PLP ; 03999C 60 RTS ; 元のルーチンへ
$00は最終的に、モンスターハウスがないとき00h、通常ハウスのとき01h、特殊ハウスのとき02h、番犬隊のとき03hになります。 必ずモンスターハウスがある地形以外での、モンスターハウスの出現率は1/16であることがお分かり頂けるかと思います。 また、特殊ハウスになる確率は、人工的に発生させたモンスターハウスの場合は1/2、天然のモンスターハウスの場合は約1/3になることも分かります。
後は、モンスターハウスの巻物を読んだ場合はその部屋をモンスターハウスにします。 予約または天然の場合は最も部屋番号の大きい部屋から順に調べていき、初めて以下のいずれにも該当しない部屋をモンスターハウスにします。 全ての部屋がいずれかに該当した場合、仮に予約をしていたとしてもモンスターハウスは出現しません。
モンスターハウスの予約をしていると、必ずモンスターハウスのある地形が出やすくなる、ということはありません。 そうでない地形が出た場合でも、普通の部屋があれば必ずモンスターハウスが出現するようになる、というだけです。
因みに、特殊ハウスになる場合は全ての種類が等確率、1つのモンスターハウスに配置されるモンスターは10〜15体です。
2009年3月5日更新
裏CHUNSOFT > ROMイメージ改造・解析 > モンスターハウスの出現率