Refactored normal doors to use a lookup table. Now the door table is <4k
Fixed graphics between HC/Sewers and cross dungeons. Added base work for spiral staircases in HC/Eastern. (More data needed for other dungeons.) Added new region to deal with push blocks in Sewers Secret Room Refactored asm to be in multiple files.
This commit is contained in:
38
Doors.py
38
Doors.py
@@ -11,6 +11,11 @@ Right = 2
|
||||
# layer numbers
|
||||
High = 0
|
||||
Low = 1
|
||||
#Quadrants - just been using this in my head - no reason to keep them labeled this way
|
||||
A = 0
|
||||
S = 1
|
||||
Z = 2
|
||||
X = 3
|
||||
|
||||
|
||||
def create_doors(world, player):
|
||||
@@ -33,12 +38,12 @@ def create_doors(world, player):
|
||||
create_dir_door(player, 'Hyrule Castle West Hall S', DoorType.Normal, Direction.South, 0x50, Right, Low),
|
||||
create_dir_door(player, 'Hyrule Castle Back Hall W', DoorType.Normal, Direction.West, 0x01, Top, Low),
|
||||
create_dir_door(player, 'Hyrule Castle Back Hall E', DoorType.Normal, Direction.East, 0x01, Top, Low),
|
||||
create_door(player, 'Hyrule Castle Back Hall Down Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Hyrule Castle Back Hall Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x01, 0, Low, A, 0x37, 0xf8),
|
||||
create_dir_door(player, 'Hyrule Castle Throne Room N', DoorType.Normal, Direction.North, 0x51, Mid, High),
|
||||
create_dir_door(player, 'Hyrule Castle Throne Room South Stairs', DoorType.StraightStairs, Direction.South, 0x51, Mid, Low),
|
||||
|
||||
# hyrule dungeon level
|
||||
create_door(player, 'Hyrule Dungeon Map Room Up Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Hyrule Dungeon Map Room Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x72, 0, High, A, 0x4f, 0xf8),
|
||||
create_dir_door(player, 'Hyrule Dungeon North Abyss South Edge', DoorType.Open, Direction.South, 0x72, None, Low),
|
||||
create_dir_door(player, 'Hyrule Dungeon North Abyss Catwalk Edge', DoorType.Open, Direction.South, 0x72, None, High),
|
||||
create_dir_door(player, 'Hyrule Dungeon South Abyss North Edge', DoorType.Open, Direction.North, 0x82, None, Low),
|
||||
@@ -49,15 +54,15 @@ def create_doors(world, player):
|
||||
create_dir_door(player, 'Hyrule Dungeon Guardroom Abyss Edge', DoorType.Open, Direction.West, 0x81, None, High),
|
||||
create_dir_door(player, 'Hyrule Dungeon Guardroom N', DoorType.Normal, Direction.North, 0x81, Left, Low), # todo: is this a toggle door?
|
||||
create_dir_door(player, 'Hyrule Dungeon Armory S', DoorType.Normal, Direction.South, 0x71, Left, Low), # not sure what the layer should be here
|
||||
create_door(player, 'Hyrule Dungeon Armory Down Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Hyrule Dungeon Staircase Up Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Hyrule Dungeon Staircase Down Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Hyrule Dungeon Cellblock Up Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Hyrule Dungeon Armory Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x71, 0, Low, A, 0x1e, 0xa0, True),
|
||||
create_spiral_stairs(player, 'Hyrule Dungeon Staircase Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x70, 2, High, A, 0x36, 0xa0, True),
|
||||
create_spiral_stairs(player, 'Hyrule Dungeon Staircase Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x70, 1, High, A, 0x1f, 0x50),
|
||||
create_spiral_stairs(player, 'Hyrule Dungeon Cellblock Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x80, 0, Low, A, 0x1f, 0x50),
|
||||
|
||||
# sewers
|
||||
create_blocked_door(player, 'Sewers Behind Tapestry S', DoorType.Normal, Direction.South, 0x41, Mid, High),
|
||||
create_door(player, 'Sewers Behind Tapestry Down Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Sewers Rope Room Up Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Sewers Behind Tapestry Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x41, 0, High, S, 0x1f, 0xa8),
|
||||
create_spiral_stairs(player, 'Sewers Rope Room Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x42, 0, High, S, 0x1f, 0xa8),
|
||||
create_dir_door(player, 'Sewers Rope Room North Stairs', DoorType.StraightStairs, Direction.North, 0x42, Mid, High),
|
||||
create_dir_door(player, 'Sewers Dark Cross South Stairs', DoorType.StraightStairs, Direction.South, 0x32, Mid, High),
|
||||
create_dir_door(player, 'Sewers Dark Cross Key Door N', DoorType.Normal, Direction.North, 0x32, Mid, High),
|
||||
@@ -66,8 +71,8 @@ def create_doors(world, player):
|
||||
create_dir_door(player, 'Sewers Key Rat E', DoorType.Normal, Direction.East, 0x21, Bot, High),
|
||||
create_small_key_door(player, 'Sewers Key Rat Key Door N', DoorType.Normal, Direction.North, 0x21, Right, High),
|
||||
create_small_key_door(player, 'Sewers Secret Room Key Door S', DoorType.Normal, Direction.South, 0x11, Right, High),
|
||||
create_door(player, 'Sewers Secret Room Up Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Sewers Pull Switch Down Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Sewers Secret Room Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x11, 0, High, S, 0x37, 0x78),
|
||||
create_spiral_stairs(player, 'Sewers Pull Switch Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x02, 0, High, S, 0x1f, 0x78),
|
||||
create_toggle_door(player, 'Sewers Pull Switch S', DoorType.Normal, Direction.South, 0x02, Mid, Low),
|
||||
# logically one way the sanc, but should be linked - also toggle
|
||||
create_blocked_door(player, 'Sanctuary N', DoorType.Normal, Direction.North, 0x12, Mid, 0, True),
|
||||
@@ -99,8 +104,8 @@ def create_doors(world, player):
|
||||
create_small_key_door(player, 'Eastern Big Key EN', DoorType.Normal, Direction.East, 0xb8, Top, High),
|
||||
create_dir_door(player, 'Eastern Big Key NE', DoorType.Normal, Direction.North, 0xb8, Right, High),
|
||||
create_small_key_door(player, 'Eastern Darkness S', DoorType.Normal, Direction.South, 0x99, Mid, High),
|
||||
create_door(player, 'Eastern Darkness Up Stairs', DoorType.SpiralStairs),
|
||||
create_door(player, 'Eastern Attic Start Down Stairs', DoorType.SpiralStairs),
|
||||
create_spiral_stairs(player, 'Eastern Darkness Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x99, 0, High, Z, 0x1e, 0x78, False, True),
|
||||
create_spiral_stairs(player, 'Eastern Attic Start Down Stairs', DoorType.SpiralStairs, Direction.Down, 0xda, 0, High, Z, 0x1f, 0x78, False, True),
|
||||
create_dir_door(player, 'Eastern Attic Start WS', DoorType.Normal, Direction.West, 0xda, Bot, High),
|
||||
create_dir_door(player, 'Eastern Attic Switches ES', DoorType.Normal, Direction.East, 0xd9, Bot, High),
|
||||
create_dir_door(player, 'Eastern Attic Switches WS', DoorType.Normal, Direction.West, 0xd9, Bot, High),
|
||||
@@ -138,3 +143,12 @@ def create_dir_door(player, name, type, direction, room, doorIndex, layer):
|
||||
|
||||
def create_toggle_door(player, name, type, direction, room, doorIndex, layer):
|
||||
return Door(player, name, type, direction, room, doorIndex, layer, True)
|
||||
|
||||
def create_spiral_stairs(player, name, type, direction, room, doorIndex, layer, quadrant, shiftY, shiftX, zeroHzCam = False, zeroVtCam = False):
|
||||
d = Door(player, name, type, direction, room, doorIndex, layer)
|
||||
d.quadrant = quadrant
|
||||
d.shiftY = shiftY
|
||||
d.shiftX = shiftX
|
||||
d.zeroHzCam = zeroHzCam
|
||||
d.zeroVtCam = zeroVtCam
|
||||
return d
|
||||
|
||||
Reference in New Issue
Block a user