Several fixes for problems with staircases in Hera/AgaTower
This commit is contained in:
24
Doors.py
24
Doors.py
@@ -180,16 +180,16 @@ def create_doors(world, player):
|
|||||||
trap(blocked(create_dir_door(player, 'Desert Boss SW', DoorType.Normal, Direction.South, 0x33, Left, High)), 0x2),
|
trap(blocked(create_dir_door(player, 'Desert Boss SW', DoorType.Normal, Direction.South, 0x33, Left, High)), 0x2),
|
||||||
|
|
||||||
# Hera
|
# Hera
|
||||||
create_spiral_stairs(player, 'Hera Lobby Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x77, 0, HTL, Z, 0x21, 0x90),
|
create_spiral_stairs(player, 'Hera Lobby Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x77, 3, HTL, Z, 0x21, 0x90, False, True),
|
||||||
small_key(create_spiral_stairs(player, 'Hera Lobby Key Stairs', DoorType.SpiralStairs, Direction.Down, 0x77, 0, HTL, A, 0x12, 0x80)),
|
small_key(create_spiral_stairs(player, 'Hera Lobby Key Stairs', DoorType.SpiralStairs, Direction.Down, 0x77, 1, HTL, A, 0x12, 0x80)),
|
||||||
create_spiral_stairs(player, 'Hera Lobby Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x77, 0, HTL, X, 0x2b, 0x5c),
|
create_spiral_stairs(player, 'Hera Lobby Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x77, 2, HTL, X, 0x2b, 0x5c, False, True),
|
||||||
create_spiral_stairs(player, 'Hera Basement Cage Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x87, 0, LTH, Z, 0x42, 0x7c),
|
create_spiral_stairs(player, 'Hera Basement Cage Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x87, 3, LTH, Z, 0x42, 0x7c, True, True),
|
||||||
create_spiral_stairs(player, 'Hera Tile Room Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x87, 0, LTH, A, 0x32, 0x6c),
|
create_spiral_stairs(player, 'Hera Tile Room Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x87, 1, LTH, A, 0x32, 0x6c, True, True),
|
||||||
create_dir_door(player, 'Hera Tile Room EN', DoorType.Interior, Direction.East, 0x87, Top, High),
|
create_dir_door(player, 'Hera Tile Room EN', DoorType.Interior, Direction.East, 0x87, Top, High),
|
||||||
create_dir_door(player, 'Hera Tridorm WN', DoorType.Interior, Direction.West, 0x87, Top, High),
|
create_dir_door(player, 'Hera Tridorm WN', DoorType.Interior, Direction.West, 0x87, Top, High),
|
||||||
create_dir_door(player, 'Hera Tridorm SE', DoorType.Interior, Direction.South, 0x87, Right, High),
|
create_dir_door(player, 'Hera Tridorm SE', DoorType.Interior, Direction.South, 0x87, Right, High),
|
||||||
create_dir_door(player, 'Hera Torches NE', DoorType.Interior, Direction.North, 0x87, Right, High),
|
create_dir_door(player, 'Hera Torches NE', DoorType.Interior, Direction.North, 0x87, Right, High),
|
||||||
create_spiral_stairs(player, 'Hera Beetles Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x31, 0, LTH, X, 0x3a, 0x70),
|
create_spiral_stairs(player, 'Hera Beetles Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x31, 2, LTH, X, 0x3a, 0x70, True, True),
|
||||||
create_dir_door(player, 'Hera Beetles WS', DoorType.Interior, Direction.West, 0x31, Bot, High),
|
create_dir_door(player, 'Hera Beetles WS', DoorType.Interior, Direction.West, 0x31, Bot, High),
|
||||||
create_door(player, 'Hera Beetles Holes', DoorType.Hole),
|
create_door(player, 'Hera Beetles Holes', DoorType.Hole),
|
||||||
create_dir_door(player, 'Hera Startile Corner ES', DoorType.Interior, Direction.East, 0x31, Bot, High),
|
create_dir_door(player, 'Hera Startile Corner ES', DoorType.Interior, Direction.East, 0x31, Bot, High),
|
||||||
@@ -197,14 +197,14 @@ def create_doors(world, player):
|
|||||||
create_door(player, 'Hera Startile Corner Holes', DoorType.Hole),
|
create_door(player, 'Hera Startile Corner Holes', DoorType.Hole),
|
||||||
# technically ugly but causes lots of failures in basic
|
# technically ugly but causes lots of failures in basic
|
||||||
create_dir_door(player, 'Hera Startile Wide SW', DoorType.Interior, Direction.South, 0x31, Left, High),
|
create_dir_door(player, 'Hera Startile Wide SW', DoorType.Interior, Direction.South, 0x31, Left, High),
|
||||||
create_spiral_stairs(player, 'Hera Startile Wide Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x31, 0, HTH, S, 0x6b, 0xac),
|
create_spiral_stairs(player, 'Hera Startile Wide Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x31, 0, HTH, S, 0x6b, 0xac, False, True),
|
||||||
create_door(player, 'Hera Startile Wide Holes', DoorType.Hole),
|
create_door(player, 'Hera Startile Wide Holes', DoorType.Hole),
|
||||||
create_spiral_stairs(player, 'Hera 4F Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x27, 0, HTH, S, 0x62, 0xc0),
|
create_spiral_stairs(player, 'Hera 4F Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x27, 0, HTH, S, 0x62, 0xc0),
|
||||||
create_spiral_stairs(player, 'Hera 4F Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x27, 0, HTH, A, 0x6b, 0x2c),
|
create_spiral_stairs(player, 'Hera 4F Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x27, 1, HTH, A, 0x6b, 0x2c),
|
||||||
create_door(player, 'Hera 4F Holes', DoorType.Hole),
|
create_door(player, 'Hera 4F Holes', DoorType.Hole),
|
||||||
create_door(player, 'Hera Big Chest Landing Exit', DoorType.Logical),
|
create_door(player, 'Hera Big Chest Landing Exit', DoorType.Logical),
|
||||||
create_door(player, 'Hera Big Chest Landing Holes', DoorType.Hole),
|
create_door(player, 'Hera Big Chest Landing Holes', DoorType.Hole),
|
||||||
create_spiral_stairs(player, 'Hera 5F Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x17, 0, HTH, A, 0x62, 0x40),
|
create_spiral_stairs(player, 'Hera 5F Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x17, 1, HTH, A, 0x62, 0x40),
|
||||||
create_spiral_stairs(player, 'Hera 5F Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x17, 0, HTH, S, 0x6a, 0x9c),
|
create_spiral_stairs(player, 'Hera 5F Up Stairs', DoorType.SpiralStairs, Direction.Up, 0x17, 0, HTH, S, 0x6a, 0x9c),
|
||||||
create_door(player, 'Hera 5F Star Hole', DoorType.Hole),
|
create_door(player, 'Hera 5F Star Hole', DoorType.Hole),
|
||||||
create_door(player, 'Hera 5F Pothole Chain', DoorType.Hole),
|
create_door(player, 'Hera 5F Pothole Chain', DoorType.Hole),
|
||||||
@@ -225,8 +225,8 @@ def create_doors(world, player):
|
|||||||
create_dir_door(player, 'Tower Dark Maze EN', DoorType.Interior, Direction.East, 0xd0, Top, High),
|
create_dir_door(player, 'Tower Dark Maze EN', DoorType.Interior, Direction.East, 0xd0, Top, High),
|
||||||
small_key(create_dir_door(player, 'Tower Dark Maze ES', DoorType.Interior, Direction.East, 0xd0, Bot, High)),
|
small_key(create_dir_door(player, 'Tower Dark Maze ES', DoorType.Interior, Direction.East, 0xd0, Bot, High)),
|
||||||
small_key(create_dir_door(player, 'Tower Dark Chargers WS', DoorType.Interior, Direction.West, 0xd0, Bot, High)),
|
small_key(create_dir_door(player, 'Tower Dark Chargers WS', DoorType.Interior, Direction.West, 0xd0, Bot, High)),
|
||||||
create_spiral_stairs(player, 'Tower Dark Chargers Up Stairs', DoorType.SpiralStairs, Direction.Up, 0xd0, 0, HTH, X, 0x1b, 0x8c),
|
create_spiral_stairs(player, 'Tower Dark Chargers Up Stairs', DoorType.SpiralStairs, Direction.Up, 0xd0, 2, HTH, X, 0x1b, 0x8c),
|
||||||
create_spiral_stairs(player, 'Tower Dual Statues Down Stairs', DoorType.SpiralStairs, Direction.Down, 0xc0, 0, HTH, X, 0x12, 0xa0),
|
create_spiral_stairs(player, 'Tower Dual Statues Down Stairs', DoorType.SpiralStairs, Direction.Down, 0xc0, 2, HTH, X, 0x12, 0xa0),
|
||||||
create_dir_door(player, 'Tower Dual Statues WS', DoorType.Interior, Direction.West, 0xc0, Bot, High),
|
create_dir_door(player, 'Tower Dual Statues WS', DoorType.Interior, Direction.West, 0xc0, Bot, High),
|
||||||
create_dir_door(player, 'Tower Dark Pits ES', DoorType.Interior, Direction.East, 0xc0, Bot, High),
|
create_dir_door(player, 'Tower Dark Pits ES', DoorType.Interior, Direction.East, 0xc0, Bot, High),
|
||||||
create_dir_door(player, 'Tower Dark Pits EN', DoorType.Interior, Direction.East, 0xc0, Top, High),
|
create_dir_door(player, 'Tower Dark Pits EN', DoorType.Interior, Direction.East, 0xc0, Top, High),
|
||||||
@@ -239,7 +239,7 @@ def create_doors(world, player):
|
|||||||
create_dir_door(player, 'Tower Circle of Pots NW', DoorType.Interior, Direction.North, 0xb0, Left, High),
|
create_dir_door(player, 'Tower Circle of Pots NW', DoorType.Interior, Direction.North, 0xb0, Left, High),
|
||||||
small_key(create_dir_door(player, 'Tower Circle of Pots WS', DoorType.Interior, Direction.West, 0xb0, Bot, High)),
|
small_key(create_dir_door(player, 'Tower Circle of Pots WS', DoorType.Interior, Direction.West, 0xb0, Bot, High)),
|
||||||
small_key(create_dir_door(player, 'Tower Pacifist Run ES', DoorType.Interior, Direction.East, 0xb0, Bot, High)),
|
small_key(create_dir_door(player, 'Tower Pacifist Run ES', DoorType.Interior, Direction.East, 0xb0, Bot, High)),
|
||||||
create_spiral_stairs(player, 'Tower Pacifist Run Up Stairs', DoorType.SpiralStairs, Direction.Up, 0xb0, 0, LTH, S, 0x33, 0x8c),
|
create_spiral_stairs(player, 'Tower Pacifist Run Up Stairs', DoorType.SpiralStairs, Direction.Up, 0xb0, 2, LTH, X, 0x33, 0x8c),
|
||||||
create_spiral_stairs(player, 'Tower Push Statue Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x40, 0, HTL, X, 0x12, 0xa0),
|
create_spiral_stairs(player, 'Tower Push Statue Down Stairs', DoorType.SpiralStairs, Direction.Down, 0x40, 0, HTL, X, 0x12, 0xa0),
|
||||||
create_dir_door(player, 'Tower Push Statue WS', DoorType.Interior, Direction.West, 0x40, Bot, Low),
|
create_dir_door(player, 'Tower Push Statue WS', DoorType.Interior, Direction.West, 0x40, Bot, Low),
|
||||||
create_dir_door(player, 'Tower Catwalk ES', DoorType.Interior, Direction.East, 0x40, Bot, Low),
|
create_dir_door(player, 'Tower Catwalk ES', DoorType.Interior, Direction.East, 0x40, Bot, Low),
|
||||||
|
|||||||
2
Rom.py
2
Rom.py
@@ -18,7 +18,7 @@ from EntranceShuffle import door_addresses
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = '760a7c62303ab662427661e58ab74a2d'
|
RANDOMIZERBASEHASH = '7227bd73423d4ff43e731ee436d7c596'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
|
|||||||
@@ -171,6 +171,9 @@ Places where sta $e2 happens
|
|||||||
|
|
||||||
Stuff about big key door south
|
Stuff about big key door south
|
||||||
1e -> Y
|
1e -> Y
|
||||||
|
this is at 00ce24 or pc 004e24
|
||||||
|
org 00ce24
|
||||||
|
dw 2ac8
|
||||||
1aab1 ldx ce06,y (where y is 1e = ce24) loads 2a80, but should be 2ac8 for the gfx
|
1aab1 ldx ce06,y (where y is 1e = ce24) loads 2a80, but should be 2ac8 for the gfx
|
||||||
not detected as big key door - need to look into tile attributes
|
not detected as big key door - need to look into tile attributes
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ SpiralWarp: {
|
|||||||
ldy #$00 : jsr ShiftQuadSimple
|
ldy #$00 : jsr ShiftQuadSimple
|
||||||
|
|
||||||
.skipXQuad
|
.skipXQuad
|
||||||
lda $01 : and #$02 : lsr : sta $06 : lda $aa : lsr : !sub $06
|
lda $aa : lsr : sta $06 : lda $01 : and #$02 : lsr : !sub $06
|
||||||
beq .skipYQuad
|
beq .skipYQuad
|
||||||
sta $06 : asl : !add $aa : sta $aa
|
sta $06 : asl : !add $aa : sta $aa
|
||||||
ldy #$01 : jsr ShiftQuadSimple
|
ldy #$01 : jsr ShiftQuadSimple
|
||||||
@@ -82,7 +82,7 @@ LookupSpiralOffset: {
|
|||||||
cmp #$01 : beq .done
|
cmp #$01 : beq .done
|
||||||
|
|
||||||
; look up the quad
|
; look up the quad
|
||||||
lda $a8 : and #$03 : beq .quad0
|
lda $a9 : ora $aa : and #$03 : beq .quad0
|
||||||
cmp #$01 : beq .quad1
|
cmp #$01 : beq .quad1
|
||||||
cmp #$02 : beq .quad2
|
cmp #$02 : beq .quad2
|
||||||
cmp #$03 : beq .quad3
|
cmp #$03 : beq .quad3
|
||||||
@@ -90,7 +90,7 @@ LookupSpiralOffset: {
|
|||||||
inc $01 : lda $22 : cmp #$98 : bcc .done ;gt ent and hc stairwell
|
inc $01 : lda $22 : cmp #$98 : bcc .done ;gt ent and hc stairwell
|
||||||
inc $01 : bra .done
|
inc $01 : bra .done
|
||||||
.quad1
|
.quad1
|
||||||
lda $22 : cmp #$78 : bcc .done ;swamp/pod dual stairs
|
lda $22 : cmp #$98 : bcc .done ;swamp/pod dual stairs
|
||||||
inc $01 : bra .done
|
inc $01 : bra .done
|
||||||
.quad2 ;ice room
|
.quad2 ;ice room
|
||||||
lda #$03 : sta $01
|
lda #$03 : sta $01
|
||||||
@@ -139,6 +139,8 @@ SetCamera: {
|
|||||||
lda CoordIndex,y : tax
|
lda CoordIndex,y : tax
|
||||||
lda $20,x : cmp #$78 : bcs .setQuad
|
lda $20,x : cmp #$78 : bcs .setQuad
|
||||||
!add #$78 : sta $04
|
!add #$78 : sta $04
|
||||||
|
lda CamQuadIndex,y : tax : lda $0603, x : pha
|
||||||
|
lda CameraIndex,y : tax : pla : sta $e3, x
|
||||||
.adj1
|
.adj1
|
||||||
tya : asl : !add #$08 : tax : jsr AdjCamBounds : bra .done
|
tya : asl : !add #$08 : tax : jsr AdjCamBounds : bra .done
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user