diff --git a/worlds/mm2/Options.py b/worlds/mm2/Options.py index f839b3bd3715..e42ef6792430 100644 --- a/worlds/mm2/Options.py +++ b/worlds/mm2/Options.py @@ -179,11 +179,16 @@ class WeaknessPlando(OptionDict): class ReduceFlashing(Choice): """ Reduce flashing seen in gameplay, such as the stage select and when defeating a Wily boss. + Virtual Console: increases length of most flashes, changes some flashes from white to a dark gray. + Minor: VC changes + decreasing the speed of Bubble/Metal Man stage animations. + Full: VC changes + further decreasing the brightness of most flashes and + disables stage animations for Metal/Bubble Man stages. """ display_name = "Reduce Flashing" option_none = 0 option_virtual_console = 1 - option_full = 2 + option_minor = 2 + option_full = 3 default = 1 diff --git a/worlds/mm2/Rom.py b/worlds/mm2/Rom.py index faf125b92773..fc8f95bc5a53 100644 --- a/worlds/mm2/Rom.py +++ b/worlds/mm2/Rom.py @@ -264,8 +264,13 @@ def patch_rom(world: "MM2World", patch: MM2ProcedurePatch) -> None: if world.options.reduce_flashing: if world.options.reduce_flashing.value == world.options.reduce_flashing.option_virtual_console: color = 0x2D # Dark Gray + speed = -1 + elif world.options.reduce_flashing.value == world.options.reduce_flashing.option_minor: + color = 0x2D + speed = 0x08 else: color = 0x0F + speed = 0x00 patch.write_byte(0x2D1B0, color) # Change white to a dark gray, Mecha Dragon patch.write_byte(0x2D397, 0x0F) # Longer flash time, Mecha Dragon kill patch.write_byte(0x2D3A0, color) # Change white to a dark gray, Picopico-kun/Boobeam Trap @@ -289,6 +294,10 @@ def patch_rom(world: "MM2World", patch: MM2ProcedurePatch) -> None: # remove wily castle flash patch.write_byte(0x3596D, 0x0F) + if speed != -1: + patch.write_byte(0xFE01, speed) # Bubble Man Stage + patch.write_byte(0x1BE01, speed) # Metal Man Stage + from Utils import __version__ patch.name = bytearray(f'MM2{__version__.replace(".", "")[0:3]}_{world.player}_{world.multiworld.seed:11}\0', 'utf8')[:21]