diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 390cf83d..b8715b06 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -109,6 +109,7 @@ def link_entrances(world, player): links_house_doors = [i for i in LW_Single_Cave_Doors if i not in Isolated_LH_Doors_Open] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in bomb_shop_doors: bomb_shop_doors.remove(links_house) if links_house in blacksmith_doors: @@ -173,6 +174,7 @@ def link_entrances(world, player): links_house_doors = [i for i in lw_entrances if i not in Isolated_LH_Doors_Open] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in lw_entrances: lw_entrances.remove(links_house) @@ -337,6 +339,7 @@ def link_entrances(world, player): links_house_doors = [i for i in lw_entrances + lw_must_exits if i not in Isolated_LH_Doors_Open] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in lw_entrances: lw_entrances.remove(links_house) if links_house in lw_must_exits: @@ -467,6 +470,7 @@ def link_entrances(world, player): links_house_doors = [i for i in links_house_doors if i not in exclusions] links_house = random.choice(list(links_house_doors)) connect_two_way(world, links_house, 'Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in entrances: entrances.remove(links_house) elif links_house in must_exits: @@ -937,6 +941,7 @@ def link_entrances(world, player): links_house_doors = [i for i in links_house_doors if i not in exclusions] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house exit_pool.remove(links_house) doors.remove(links_house) @@ -1301,6 +1306,7 @@ def link_inverted_entrances(world, player): links_house_doors = [i for i in DW_Single_Cave_Doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in bomb_shop_doors: bomb_shop_doors.remove(links_house) if links_house in blacksmith_doors: @@ -1381,6 +1387,7 @@ def link_inverted_entrances(world, player): links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in dw_entrances: dw_entrances.remove(links_house) @@ -1510,6 +1517,7 @@ def link_inverted_entrances(world, player): links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in dw_entrances: dw_entrances.remove(links_house) @@ -1647,6 +1655,7 @@ def link_inverted_entrances(world, player): links_house_doors = [i for i in entrances + must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house if links_house in entrances: entrances.remove(links_house) elif links_house in must_exits: @@ -1780,6 +1789,7 @@ def link_inverted_entrances(world, player): links_house_doors = [i for i in doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(links_house_doors) connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house doors.remove(links_house) exit_pool.remove(links_house) @@ -3329,7 +3339,6 @@ inverted_mandatory_connections = [('Links House S&Q', 'Inverted Links House'), ('EDDM Flute', 'The Sky'), ('Dark Grassy Lawn Flute', 'The Sky'), ('Hammer Peg Area Flute', 'The Sky'), - ('Chris Houlihan Room Exit', 'Pyramid Ledge'), ('Bush Covered Lawn Inner Bushes', 'Light World'), ('Bush Covered Lawn Outer Bushes', 'Bush Covered Lawn'), ('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'), diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4590df80..50cf5282 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -16,9 +16,12 @@ CLI: ```--bombbag``` # Bug Fixes and Notes. * 0.5.1.7 + * Baserom update * Fix for Inverted Mode: Dark Lake Hylia shop defaults to selling a blue potion * Fix for Ijwu's enemizer: Boss door in Thieves' Town no longer closes after the maiden hint if Blind is shuffled to Theives' Town in boss shuffle + crossed mode * No logic now sets the AllowAccidentalMajorGlitches flag in the rom appropriately + * Houlihan room now exits wherever Link's House is shuffled to + * Rom fixes from Catobat and Codemann8. Thanks! * 0.5.1.6 * Rules fixes for TT (Boss and Cell) can now have TT Big Key if not otherwise required (boss shuffle + crossed dungeon) * BUg fix for money balancing diff --git a/Rom.py b/Rom.py index 2cf54d6a..72eaa421 100644 --- a/Rom.py +++ b/Rom.py @@ -32,7 +32,7 @@ from source.classes.SFX import randomize_sfx JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '7511c811385f87c6ae0909e7bbe379cb' +RANDOMIZERBASEHASH = '5112ddd931bda3d9979097bc39a5e768' class JsonRom(object): diff --git a/asm/drhooks.asm b/asm/drhooks.asm index 1d3b485b..a5815d98 100644 --- a/asm/drhooks.asm +++ b/asm/drhooks.asm @@ -76,6 +76,9 @@ nop : jsl OverridePaletteHeader org $02817e ; Bank02.asm : 414 (LDA $02811E, X) jsl FixAnimatedTiles +org $0aef43 ; UnderworldMap_RecoverGFX +jsl FixCloseDungeonMap + org $028a06 ; Bank02.asm : 1941 Dungeon_ResetTorchBackgroundAndPlayer JSL FixWallmasterLamp @@ -186,9 +189,9 @@ Main_ShowTextMessage: ; Conditionally disable UW music changes in Door Rando org $028ADB ; <- Bank02.asm:2088-2095 (LDX.b #$14 : LDA $A0 ...) -JSL.l Underworld_DoorDown_Entry : CPX #$10 -db $B0, $21 ; BCS $028B04 -BRA + : NOP #6 : + +JSL.l Underworld_DoorDown_Entry : CPX #$FF +BEQ + : db $80, $1C ; BRA $028B04 +NOP #6 : + org $02C3F2 ; <- Bank02.asm:10521 Unused call Underworld_DoorDown_Call: diff --git a/asm/gfx.asm b/asm/gfx.asm index b22fba62..94cb8848 100644 --- a/asm/gfx.asm +++ b/asm/gfx.asm @@ -45,6 +45,16 @@ FixAnimatedTiles: + LDA $02802E, X ; what we wrote over RTL +FixCloseDungeonMap: + LDA.l DRMode : CMP #$02 : BNE .vanilla + LDA $040C : BMI .vanilla + LSR : TAX + LDA.l DungeonTilesets,x + RTL + .vanilla + LDA $7EC20E + RTL + FixWallmasterLamp: ORA $0458 STY $1C : STA $1D : RTL ; what we wrote over diff --git a/data/base2current.bps b/data/base2current.bps index 12fb7ccd..195cdbab 100644 Binary files a/data/base2current.bps and b/data/base2current.bps differ