1
1
import Utils
2
2
from worlds .Files import APDeltaPatch
3
3
from .Aesthetics import generate_shuffled_header_data
4
- from .Levels import level_info_dict
4
+ from .Levels import level_info_dict , full_bowser_rooms , standard_bowser_rooms
5
5
from .Names .TextBox import generate_goal_text , title_text_mapping , generate_text_box
6
6
7
7
USHASH = 'cdd3c8c37322978ca8669b34bc89c804'
@@ -728,6 +728,60 @@ def handle_swap_donut_gh_exits(rom):
728
728
rom .write_bytes (0x26371 , bytes ([0x32 ]))
729
729
730
730
731
+ def handle_bowser_rooms (rom , world , player ):
732
+ if world .bowser_castle_rooms [player ] == "random_two_room" :
733
+ chosen_rooms = world .random .sample (standard_bowser_rooms , 2 )
734
+
735
+ rom .write_byte (0x3A680 , chosen_rooms [0 ].roomID )
736
+ rom .write_byte (0x3A684 , chosen_rooms [0 ].roomID )
737
+ rom .write_byte (0x3A688 , chosen_rooms [0 ].roomID )
738
+ rom .write_byte (0x3A68C , chosen_rooms [0 ].roomID )
739
+
740
+ for i in range (1 , len (chosen_rooms )):
741
+ rom .write_byte (chosen_rooms [i - 1 ].exitAddress , chosen_rooms [i ].roomID )
742
+
743
+ rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
744
+
745
+ elif world .bowser_castle_rooms [player ] == "random_five_room" :
746
+ chosen_rooms = world .random .sample (standard_bowser_rooms )
747
+
748
+ rom .write_byte (0x3A680 , chosen_rooms [0 ].roomID )
749
+ rom .write_byte (0x3A684 , chosen_rooms [0 ].roomID )
750
+ rom .write_byte (0x3A688 , chosen_rooms [0 ].roomID )
751
+ rom .write_byte (0x3A68C , chosen_rooms [0 ].roomID )
752
+
753
+ for i in range (1 , len (chosen_rooms )):
754
+ rom .write_byte (chosen_rooms [i - 1 ].exitAddress , chosen_rooms [i ].roomID )
755
+
756
+ rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
757
+
758
+ elif world .bowser_castle_rooms [player ] == "gauntlet" :
759
+ chosen_rooms = standard_bowser_rooms .copy ()
760
+ world .random .shuffle (chosen_rooms )
761
+
762
+ rom .write_byte (0x3A680 , chosen_rooms [0 ].roomID )
763
+ rom .write_byte (0x3A684 , chosen_rooms [0 ].roomID )
764
+ rom .write_byte (0x3A688 , chosen_rooms [0 ].roomID )
765
+ rom .write_byte (0x3A68C , chosen_rooms [0 ].roomID )
766
+
767
+ for i in range (1 , len (chosen_rooms )):
768
+ rom .write_byte (chosen_rooms [i - 1 ].exitAddress , chosen_rooms [i ].roomID )
769
+
770
+ rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
771
+ elif world .bowser_castle_rooms [player ] == "labyrinth" :
772
+ bowser_rooms_copy = full_bowser_rooms .copy ()
773
+
774
+ entrance_point = bowser_rooms_copy .pop (0 )
775
+
776
+ world .random .shuffle (bowser_rooms_copy )
777
+
778
+ rom .write_byte (entrance_point .exitAddress , bowser_rooms_copy [0 ].roomID )
779
+ for i in range (0 , len (bowser_rooms_copy ) - 1 ):
780
+ rom .write_byte (bowser_rooms_copy [i ].exitAddress , bowser_rooms_copy [i + 1 ].roomID )
781
+
782
+ rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
783
+
784
+
731
785
def patch_rom (world , rom , player , active_level_dict ):
732
786
local_random = world .slot_seeds [player ]
733
787
@@ -739,18 +793,7 @@ def patch_rom(world, rom, player, active_level_dict):
739
793
intro_text = generate_text_box ("Bowser has stolen all of Mario's abilities. Can you help Mario travel across Dinosaur land to get them back and save the Princess from him?" )
740
794
rom .write_bytes (0x2A5D9 , intro_text )
741
795
742
- # Force all 8 Bowser's Castle Rooms
743
- rom .write_byte (0x3A680 , 0xD4 )
744
- rom .write_byte (0x3A684 , 0xD4 )
745
- rom .write_byte (0x3A688 , 0xD4 )
746
- rom .write_byte (0x3A68C , 0xD4 )
747
- rom .write_byte (0x3A705 , 0xD3 )
748
- rom .write_byte (0x3A763 , 0xD2 )
749
- rom .write_byte (0x3A800 , 0xD1 )
750
- rom .write_byte (0x3A83D , 0xCF )
751
- rom .write_byte (0x3A932 , 0xCE )
752
- rom .write_byte (0x3A9E1 , 0xCD )
753
- rom .write_byte (0x3AA75 , 0xCC )
796
+ handle_bowser_rooms (rom , world , player )
754
797
755
798
# Prevent Title Screen Deaths
756
799
rom .write_byte (0x1C6A , 0x80 )
0 commit comments