diff --git a/OverworldShuffle.py b/OverworldShuffle.py index 33571f16..926128f1 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -141,9 +141,9 @@ def link_overworld(world, player): # flute shuffle def connect_flutes(flute_destinations): for o in range(0, len(flute_destinations)): - owid = flute_destinations[o] - regions = flute_data[owid][0] - if (world.mode[player] == 'inverted') == (owid in world.owswaps[player][0] and world.owSwap[player] == 'mixed'): + owslot = flute_destinations[o] + regions = flute_data[owslot][0] + if (world.mode[player] == 'inverted') == (flute_data[owslot][1] in world.owswaps[player][0] and world.owSwap[player] == 'mixed'): connect_simple(world, 'Flute Spot ' + str(o + 1), regions[0], player) else: connect_simple(world, 'Flute Spot ' + str(o + 1), regions[1], player) @@ -155,12 +155,13 @@ def link_overworld(world, player): new_spots = SortedList() # guarantee desert/mire access - flute_pool.remove(0x30) - new_spots.add(0x30) + flute_pool.remove(0x38) + new_spots.add(0x38) # guarantee mountain access - owid = random.randint(0, 2) * 2 + 3 - flute_pool.remove(owid) - new_spots.add(owid) + mountainIds = [0x0b, 0x0e, 0x07] + owslot = mountainIds[random.randint(0, 2)] + flute_pool.remove(owslot) + new_spots.add(owslot) random.shuffle(flute_pool) f = 0 diff --git a/Rom.py b/Rom.py index 0211a5e3..01f930b3 100644 --- a/Rom.py +++ b/Rom.py @@ -651,28 +651,29 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): flute_spots = world.owflutespots[player] for o in range(0, len(flute_spots)): - owid = flute_spots[o] + owslot = flute_spots[o] offset = 0 - if (world.mode[player] == 'inverted') != (owid in world.owswaps[player][0] and world.owSwap[player] == 'mixed'): + data = flute_data[owslot] + + if (world.mode[player] == 'inverted') != (data[1] in world.owswaps[player][0] and world.owSwap[player] == 'mixed'): offset = 0x40 - data = flute_data[owid] - write_int16(rom, snes_to_pc(0x02E849 + (o * 2)), owid + offset) # owid - write_int16(rom, snes_to_pc(0x02E86B + (o * 2)), data[1]) #vram - write_int16(rom, snes_to_pc(0x02E88D + (o * 2)), data[2]) # BG scroll Y - write_int16(rom, snes_to_pc(0x02E8AF + (o * 2)), data[3]) # BG scroll X - write_int16(rom, snes_to_pc(0x02E8D1 + (o * 2)), data[12] if offset > 0 and len(data) > 12 else data[4]) # link Y - write_int16(rom, snes_to_pc(0x02E8F3 + (o * 2)), data[13] if offset > 0 and len(data) > 12 else data[5]) # link X - write_int16(rom, snes_to_pc(0x02E915 + (o * 2)), data[6]) # cam Y - write_int16(rom, snes_to_pc(0x02E937 + (o * 2)), data[7]) # cam X - write_int16(rom, snes_to_pc(0x02E959 + (o * 2)), data[8]) # unknown 1 - write_int16(rom, snes_to_pc(0x02E97B + (o * 2)), data[9]) # unknown 2 + write_int16(rom, snes_to_pc(0x02E849 + (o * 2)), data[1] + offset) # owid + write_int16(rom, snes_to_pc(0x02E86B + (o * 2)), data[2]) #vram + write_int16(rom, snes_to_pc(0x02E88D + (o * 2)), data[3]) # BG scroll Y + write_int16(rom, snes_to_pc(0x02E8AF + (o * 2)), data[4]) # BG scroll X + write_int16(rom, snes_to_pc(0x02E8D1 + (o * 2)), data[13] if offset > 0 and len(data) > 13 else data[5]) # link Y + write_int16(rom, snes_to_pc(0x02E8F3 + (o * 2)), data[14] if offset > 0 and len(data) > 13 else data[6]) # link X + write_int16(rom, snes_to_pc(0x02E915 + (o * 2)), data[7]) # cam Y + write_int16(rom, snes_to_pc(0x02E937 + (o * 2)), data[8]) # cam X + write_int16(rom, snes_to_pc(0x02E959 + (o * 2)), data[9]) # unknown 1 + write_int16(rom, snes_to_pc(0x02E97B + (o * 2)), data[10]) # unknown 2 # flute menu blips - rom.write_byte(snes_to_pc(0x0AB783 + o), data[11] & 0xff) # X low byte - rom.write_byte(snes_to_pc(0x0AB78B + o), data[11] // 0x100) # X high byte - rom.write_byte(snes_to_pc(0x0AB793 + o), data[10] & 0xff) # Y low byte - rom.write_byte(snes_to_pc(0x0AB79B + o), data[10] // 0x100) # Y high byte + rom.write_byte(snes_to_pc(0x0AB783 + o), data[12] & 0xff) # X low byte + rom.write_byte(snes_to_pc(0x0AB78B + o), data[12] // 0x100) # X high byte + rom.write_byte(snes_to_pc(0x0AB793 + o), data[11] & 0xff) # Y low byte + rom.write_byte(snes_to_pc(0x0AB79B + o), data[11] // 0x100) # Y high byte # patch entrance/exits/holes