130 lines
3.4 KiB
Python
130 lines
3.4 KiB
Python
from ..roomEditor import RoomEditor, Object, ObjectHorizontal
|
|
|
|
|
|
KEY_DOORS = {
|
|
0xEC: 0xF4,
|
|
0xED: 0xF5,
|
|
0xEE: 0xF6,
|
|
0xEF: 0xF7,
|
|
0xF8: 0xF4,
|
|
}
|
|
|
|
def removeKeyDoors(rom):
|
|
for n in range(0x100, 0x316):
|
|
if n == 0x2FF:
|
|
continue
|
|
update = False
|
|
re = RoomEditor(rom, n)
|
|
for obj in re.objects:
|
|
if obj.type_id in KEY_DOORS:
|
|
obj.type_id = KEY_DOORS[obj.type_id]
|
|
update = True
|
|
if obj.type_id == 0xDE: # Keyblocks
|
|
obj.type_id = re.floor_object & 0x0F
|
|
update = True
|
|
if update:
|
|
re.store(rom)
|
|
|
|
|
|
def patchNoDungeons(rom):
|
|
def setMinimap(dungeon_nr, x, y, room):
|
|
for n in range(64):
|
|
if rom.banks[0x14][0x0220 + 64 * dungeon_nr + n] == room:
|
|
rom.banks[0x14][0x0220 + 64 * dungeon_nr + n] = 0xFF
|
|
rom.banks[0x14][0x0220 + 64 * dungeon_nr + x + y * 8] = room
|
|
#D1
|
|
setMinimap(0, 3, 6, 0x06)
|
|
setMinimap(0, 3, 5, 0x02)
|
|
re = RoomEditor(rom, 0x117)
|
|
for n in range(1, 7):
|
|
re.removeObject(n, 0)
|
|
re.removeObject(0, n)
|
|
re.removeObject(9, n)
|
|
re.objects += [Object(4, 0, 0xf0)]
|
|
re.store(rom)
|
|
re = RoomEditor(rom, 0x11A)
|
|
re.getWarps()[0].room = 0x117
|
|
re.store(rom)
|
|
re = RoomEditor(rom, 0x11B)
|
|
re.getWarps()[0].room = 0x117
|
|
re.store(rom)
|
|
|
|
#D2
|
|
setMinimap(1, 2, 6, 0x2B)
|
|
setMinimap(1, 1, 6, 0x2A)
|
|
re = RoomEditor(rom, 0x136)
|
|
for n in range(1, 7):
|
|
re.removeObject(n, 0)
|
|
re.objects += [Object(4, 0, 0xf0)]
|
|
re.store(rom)
|
|
|
|
#D3
|
|
setMinimap(2, 1, 6, 0x5A)
|
|
setMinimap(2, 1, 5, 0x59)
|
|
re = RoomEditor(rom, 0x152)
|
|
for n in range(2, 7):
|
|
re.removeObject(9, n)
|
|
re.store(rom)
|
|
|
|
#D4
|
|
setMinimap(3, 3, 6, 0x66)
|
|
setMinimap(3, 3, 5, 0x62)
|
|
re = RoomEditor(rom, 0x17A)
|
|
for n in range(3, 7):
|
|
re.removeObject(n, 0)
|
|
re.objects += [Object(4, 0, 0xf0)]
|
|
re.store(rom)
|
|
|
|
#D5
|
|
setMinimap(4, 7, 6, 0x85)
|
|
setMinimap(4, 7, 5, 0x82)
|
|
re = RoomEditor(rom, 0x1A1)
|
|
for n in range(3, 8):
|
|
re.removeObject(n, 0)
|
|
re.removeObject(0, n)
|
|
for n in range(4, 6):
|
|
re.removeObject(n, 1)
|
|
re.removeObject(n, 2)
|
|
re.objects += [Object(4, 0, 0xf0)]
|
|
re.store(rom)
|
|
|
|
#D6
|
|
setMinimap(5, 3, 6, 0xBC)
|
|
setMinimap(5, 3, 5, 0xB5)
|
|
re = RoomEditor(rom, 0x1D4)
|
|
for n in range(2, 8):
|
|
re.removeObject(0, n)
|
|
re.removeObject(9, n)
|
|
re.objects += [Object(4, 0, 0xf0)]
|
|
re.store(rom)
|
|
|
|
#D7
|
|
setMinimap(6, 1, 6, 0x2E)
|
|
setMinimap(6, 1, 5, 0x2C)
|
|
re = RoomEditor(rom, 0x20E)
|
|
for n in range(1, 8):
|
|
re.removeObject(0, n)
|
|
re.removeObject(9, n)
|
|
re.objects += [Object(3, 0, 0x29), ObjectHorizontal(4, 0, 0x0D, 2), Object(6, 0, 0x2A)]
|
|
re.store(rom)
|
|
re = RoomEditor(rom, 0x22E)
|
|
re.objects = [Object(4, 0, 0xf0), Object(3, 7, 0x2B), ObjectHorizontal(4, 7, 0x0D, 2), Object(6, 7, 0x2C), Object(1, 0, 0xA8)] + re.getWarps()
|
|
re.floor_object = 13
|
|
re.store(rom)
|
|
re = RoomEditor(rom, 0x22C)
|
|
re.removeObject(0, 7)
|
|
re.removeObject(2, 7)
|
|
re.objects.append(ObjectHorizontal(0, 7, 0x03, 3))
|
|
re.store(rom)
|
|
|
|
#D8
|
|
setMinimap(7, 3, 6, 0x34)
|
|
setMinimap(7, 3, 5, 0x30)
|
|
re = RoomEditor(rom, 0x25D)
|
|
re.objects += [Object(3, 0, 0x25), Object(4, 0, 0xf0), Object(6, 0, 0x26)]
|
|
re.store(rom)
|
|
|
|
#D0
|
|
setMinimap(11, 2, 6, 0x00)
|
|
setMinimap(11, 3, 6, 0x01)
|