Keysanity menu bugfix

Inverted ER + intensity 3 fix
Swamp Trench 1 locking flippers fix
Fix for lobbies overwriting logic in TR Hub (and elsewhere)
Repaired exits that were wrongly affected by entrance fixes
This commit is contained in:
aerinon
2020-11-20 14:00:40 -07:00
parent f5327bc0e6
commit 22f749e767
10 changed files with 205 additions and 171 deletions

22
Rom.py
View File

@@ -11,7 +11,7 @@ import subprocess
import bps.apply
import bps.io
from BaseClasses import CollectionState, ShopType, Region, Location, DoorType, RegionType
from BaseClasses import CollectionState, ShopType, Region, Location, Door, DoorType, RegionType
from DoorShuffle import compass_data, DROptions, boss_indicator
from Dungeons import dungeon_music_addresses
from KeyDoorShuffle import count_locations_exclude_logic
@@ -26,7 +26,7 @@ from EntranceShuffle import door_addresses, exit_ids
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '87fb1ec80d48487a84eac3a0a9bf9e04'
RANDOMIZERBASEHASH = '55b2f851e5d643e1e72befc631ea3c6d'
class JsonRom(object):
@@ -670,8 +670,9 @@ def patch_rom(world, rom, player, team, enemized):
if world.doorShuffle[player] == 'basic':
rom.write_byte(0x138002, 1)
for door in world.doors:
if door.dest is not None and door.player == player and door.type in [DoorType.Normal, DoorType.SpiralStairs,
DoorType.Open, DoorType.StraightStairs]:
if door.dest is not None and isinstance(door.dest, Door) and\
door.player == player and door.type in [DoorType.Normal, DoorType.SpiralStairs,
DoorType.Open, DoorType.StraightStairs]:
rom.write_bytes(door.getAddress(), door.dest.getTarget(door))
for paired_door in world.paired_doors[player]:
rom.write_bytes(paired_door.address_a(world, player), paired_door.rom_data_a(world, player))
@@ -715,14 +716,16 @@ def patch_rom(world, rom, player, team, enemized):
world.force_fix[player]['sw'] |= world.fix_skullwoods_exit[player] and world.shuffle[player] == 'vanilla'
# fix exits, if not fixed during exit patching
if world.force_fix[player]['sw']:
if world.fix_skullwoods_exit[player] and world.shuffle[player] == 'vanilla':
write_int16(rom, 0x15DB5 + 2 * exit_ids['Skull Woods Final Section Exit'][1], 0x00F8)
elif world.force_fix[player]['sw']:
write_int16(rom, 0x15DB5 + world.force_fix[player]['sw'].exit_offset, 0x00F8)
if world.force_fix[player]['pod']:
write_int16(rom, 0x15DB5 + 2 * exit_ids['Palace of Darkness Exit'][1], 0x0640)
write_int16(rom, 0x15DB5 + world.force_fix[player]['pod'].exit_offset, 0x0640)
if world.force_fix[player]['tr']:
write_int16(rom, 0x15DB5 + 2 * exit_ids['Turtle Rock Exit (Front)'][1], 0x0134)
write_int16(rom, 0x15DB5 + world.force_fix[player]['tr'].exit_offset, 0x0134)
if world.force_fix[player]['gt']:
write_int16(rom, 0x15DB5 + 2 * exit_ids['Ganons Tower Exit'][1], 0x00A4)
write_int16(rom, 0x15DB5 + world.force_fix[player]['gt'].exit_offset, 0x00A4)
write_custom_shops(rom, world, player)
@@ -1294,8 +1297,7 @@ def patch_rom(world, rom, player, team, enemized):
x = idx*2
room_idx = portal.door.roomIndex
room = world.get_room(room_idx, player)
rom.write_byte(0x13f0f0+x, room_idx & 0xff)
rom.write_byte(0x13f0f1+x, (room_idx >> 8) & 0xff)
write_int16(rom, 0x13f0f0+x, room_idx)
rom.write_byte(0x13f0f6+x, room.position(portal.door).value)
rom.write_byte(0x13f0f7+x, room.kind(portal.door).value)