From a23315f78398be136e4d4ea696c57e6b8b63721d Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 5 Oct 2021 14:13:24 -0600 Subject: [PATCH] Disarm EG glitch on mirror in most modes Added a check flag for the disarm on most transitions so if can be armed when wanted --- DoorShuffle.py | 2 +- RELEASENOTES.md | 1 + Rom.py | 4 +++- asm/drhooks.asm | 5 +++++ asm/normal.asm | 5 +++-- asm/overrides.asm | 6 ++++++ 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 917f78bd..61da6443 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -2044,7 +2044,7 @@ class DROptions(Flag): Town_Portal = 0x02 # If on, Players will start with mirror scroll Map_Info = 0x04 Debug = 0x08 - # Rails = 0x10 # Unused bit now + Fix_EG = 0x10 # used to be Rails = 0x10 # Unused bit now OriginalPalettes = 0x20 # Open_PoD_Wall = 0x40 # No longer pre-opening pod wall - unused # Open_Desert_Wall = 0x80 # No longer pre-opening desert wall - unused diff --git a/RELEASENOTES.md b/RELEASENOTES.md index dbfa2879..9b9857fc 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,6 +17,7 @@ CLI: ```--bombbag``` * 0.5.1.3 * Certain lobbies forbidden in standard when rupee bow is enabled + * PoD EG disarmed when mirroring (except in nologic) * Fixed issue with key logic * 0.5.1.2 * Allowed Blind's Cell to be shuffled anywhere if Blind is not the boss of Thieves Town diff --git a/Rom.py b/Rom.py index 22f017e3..ae29e127 100644 --- a/Rom.py +++ b/Rom.py @@ -32,7 +32,7 @@ from source.classes.SFX import randomize_sfx JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '11f4f494e999a919aafd7d2624e67679' +RANDOMIZERBASEHASH = '1b937c39f026f9a687391488b7386542' class JsonRom(object): @@ -688,6 +688,8 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): dr_flags |= DROptions.OriginalPalettes if world.experimental[player]: dr_flags |= DROptions.DarkWorld_Spawns + if world.logic[player] != 'nologic': + dr_flags |= DROptions.Fix_EG # fix hc big key problems (map and compass too) diff --git a/asm/drhooks.asm b/asm/drhooks.asm index 86ae1ff1..1d3b485b 100644 --- a/asm/drhooks.asm +++ b/asm/drhooks.asm @@ -125,6 +125,11 @@ org $07a955 ; <- Bank07.asm : around 6564 (JP is a bit different) (STZ $05FC : S jsl BlockEraseFix nop #2 +org $02A0A8 +Mirror_SaveRoomData: +org $07A95B ; < bank_07.asm ; #_07A95B: JSL Mirror_SaveRoomData +jsl EGFixOnMirror + org $02b82a jsl FixShopCode diff --git a/asm/normal.asm b/asm/normal.asm index aabb24de..3bdf9622 100644 --- a/asm/normal.asm +++ b/asm/normal.asm @@ -73,8 +73,9 @@ TrapDoorFixer: rts Cleanup: - stz $047a - inc $11 + lda.l DRFlags : and #$10 : beq + + stz $047a + + inc $11 lda $ef rts diff --git a/asm/overrides.asm b/asm/overrides.asm index a041ae30..91029a8a 100644 --- a/asm/overrides.asm +++ b/asm/overrides.asm @@ -47,6 +47,12 @@ MirrorCheckOverride: rtl + lda.l DRScroll : rtl +EGFixOnMirror: + lda.l DRFlags : and #$10 : beq + + stz $047a + + jsl Mirror_SaveRoomData + rtl + BlockEraseFix: lda $7ef353 : and #$02 : beq + stz $05fc : stz $05fd