From 6e4ab638aa95e1912248ec0e4fc096155a24e88b Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 15 Oct 2019 22:38:25 -0600 Subject: [PATCH] Desert Cannonball/Compass fix Potential PoD stair fix --Going a down stair in Q1 to a 00 x coord is problematic PoD stair coordinates Attempted Swamp layer fix More swamp fixes --Note: Left switch resets --- Doors.py | 24 ++++++++++++------------ asm/spiral.asm | 4 +++- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Doors.py b/Doors.py index bcc98ff6..ffd15d4d 100644 --- a/Doors.py +++ b/Doors.py @@ -147,8 +147,8 @@ def create_doors(world, player): create_door(player, 'Desert East Wing ES', Intr).dir(Direction.East, 0x85, Bot, High).pos(3), create_door(player, 'Desert East Wing Key Door EN', Intr).dir(Direction.East, 0x85, Top, High).small_key().pos(1), create_door(player, 'Desert Compass Key Door WN', Intr).dir(Direction.West, 0x85, Top, High).small_key().pos(1), - create_door(player, 'Desert Compass NW', Nrml).dir(Direction.North, 0x85, Left, High).trap(0x4).pos(0), - create_door(player, 'Desert Cannonball S', Nrml).dir(Direction.South, 0x75, Left, High).pos(1), + create_door(player, 'Desert Compass NW', Nrml).dir(Direction.North, 0x85, Right, High).trap(0x4).pos(0), + create_door(player, 'Desert Cannonball S', Nrml).dir(Direction.South, 0x75, Right, High).pos(1), create_door(player, 'Desert Arrow Pot Corner S Edge', Open).dir(Direction.South, 0x75, None, High), create_door(player, 'Desert Arrow Pot Corner W Edge', Open).dir(Direction.West, 0x75, None, High), create_door(player, 'Desert North Hall SE Edge', Open).dir(Direction.South, 0x74, None, High), @@ -270,8 +270,8 @@ def create_doors(world, player): create_door(player, 'PoD Left Cage Down Stairs', Sprl).dir(Direction.Down, 0x4a, 1, HTH).ss(A, 0x12, 0x80, False, True), create_door(player, 'PoD Middle Cage Down Stairs', Sprl).dir(Direction.Down, 0x4a, 0, HTH).ss(S, 0x12, 0x80, False, True), create_door(player, 'PoD Middle Cage N', Nrml).dir(Direction.North, 0x4a, Mid, High).small_key().pos(2), - create_door(player, 'PoD Shooter Room Up Stairs', Sprl).dir(Direction.Up, 0x09, 1, HTH).ss(A, 0x31, 0x69, True, True), - create_door(player, 'PoD Warp Room Up Stairs', Sprl).dir(Direction.Up, 0x09, 0, HTH).ss(S, 0x30, 0x69, True, True), + create_door(player, 'PoD Shooter Room Up Stairs', Sprl).dir(Direction.Up, 0x09, 1, HTH).ss(A, 0x1b, 0x6c, True, True), + create_door(player, 'PoD Warp Room Up Stairs', Sprl).dir(Direction.Up, 0x09, 0, HTH).ss(S, 0x1a, 0x6c, True, True), create_door(player, 'PoD Warp Room Warp', Warp), create_door(player, 'PoD Pit Room S', Nrml).dir(Direction.South, 0x3a, Mid, High).small_key().pos(0), create_door(player, 'PoD Pit Room NW', Nrml).dir(Direction.North, 0x3a, Left, High).pos(1), @@ -360,18 +360,18 @@ def create_doors(world, player): create_door(player, 'Swamp Hammer Switch SW', Intr).dir(Direction.South, 0x37, Left, High).small_key().pos(2), create_door(player, 'Swamp Hammer Switch WN', Nrml).dir(Direction.West, 0x37, Top, High).pos(0), create_door(player, 'Swamp Hub ES', Nrml).dir(Direction.East, 0x36, Bot, High).pos(4), - create_door(player, 'Swamp Hub S', Nrml).dir(Direction.South, 0x36, Mid, Low).pos(5), + create_door(player, 'Swamp Hub S', Nrml).dir(Direction.South, 0x36, Mid, High).pos(5), create_door(player, 'Swamp Hub WS', Nrml).dir(Direction.West, 0x36, Bot, High).pos(3), create_door(player, 'Swamp Hub WN', Nrml).dir(Direction.West, 0x36, Top, High).small_key().pos(2), create_door(player, 'Swamp Hub Hook Path', Lgcl), create_door(player, 'Swamp Hub Dead Ledge EN', Nrml).dir(Direction.East, 0x36, Top, High).pos(0), create_door(player, 'Swamp Hub North Ledge N', Nrml).dir(Direction.North, 0x36, Mid, High).small_key().pos(1), create_door(player, 'Swamp Hub North Ledge Drop Down', Lgcl), - create_door(player, 'Swamp Donut Top N', Nrml).dir(Direction.North, 0x46, Mid, Low).pos(0), - create_door(player, 'Swamp Donut Top SE', Intr).dir(Direction.South, 0x46, Right, Low).pos(2), - create_door(player, 'Swamp Donut Bottom NE', Intr).dir(Direction.North, 0x46, Right, Low).pos(2), - create_door(player, 'Swamp Donut Bottom NW', Intr).dir(Direction.North, 0x46, Left, Low).pos(1), - create_door(player, 'Swamp Compass Donut SW', Intr).dir(Direction.South, 0x46, Left, Low).pos(1), + create_door(player, 'Swamp Donut Top N', Nrml).dir(Direction.North, 0x46, Mid, High).pos(0), + create_door(player, 'Swamp Donut Top SE', Intr).dir(Direction.South, 0x46, Right, High).pos(2), + create_door(player, 'Swamp Donut Bottom NE', Intr).dir(Direction.North, 0x46, Right, High).pos(2), + create_door(player, 'Swamp Donut Bottom NW', Intr).dir(Direction.North, 0x46, Left, High).pos(1), + create_door(player, 'Swamp Compass Donut SW', Intr).dir(Direction.South, 0x46, Left, High).pos(1), create_door(player, 'Swamp Compass Donut Push Block', Lgcl), create_door(player, 'Swamp Crystal Switch EN', Nrml).dir(Direction.East, 0x35, Top, High).small_key().pos(0), create_door(player, 'Swamp Crystal Switch SE', Intr).dir(Direction.South, 0x35, Right, High).pos(3), @@ -389,7 +389,7 @@ def create_doors(world, player): create_door(player, 'Swamp Big Key Ledge WN', Nrml).dir(Direction.West, 0x35, Top, High).pos(1), create_door(player, 'Swamp West Shallows ES', Nrml).dir(Direction.East, 0x34, Bot, High).pos(1), create_door(player, 'Swamp West Shallows Push Blocks', Lgcl), - create_door(player, 'Swamp West Block Path Up Stairs', Sprl).dir(Direction.Up, 0x34, 0, HTH).ss(Z, 0x1b, 0x6c), + create_door(player, 'Swamp West Block Path Up Stairs', Sprl).dir(Direction.Up, 0x34, 0, HTH).ss(Z, 0x1b, 0x6c, False, True), create_door(player, 'Swamp West Ledge Drop Down', Lgcl), create_door(player, 'Swamp West Ledge Hook Path', Lgcl), create_door(player, 'Swamp Barrier Ledge Drop Down', Lgcl), @@ -436,7 +436,7 @@ def create_doors(world, player): create_door(player, 'Swamp I S', Intr).dir(Direction.South, 0x16, Mid, High).pos(0), create_door(player, 'Swamp T SW', Intr).dir(Direction.South, 0x16, Left, High).small_key().pos(1), create_door(player, 'Swamp T NW', Nrml).dir(Direction.North, 0x16, Left, High).pos(3), - create_door(player, 'Swamp Boss SW', Nrml).dir(Direction.South, 0x06, Left, High).pos(0), + create_door(player, 'Swamp Boss SW', Nrml).dir(Direction.South, 0x06, Left, High).trap(0x4).pos(0), ] create_paired_doors(world, player) diff --git a/asm/spiral.asm b/asm/spiral.asm index 3c3c5371..b3fc6fca 100644 --- a/asm/spiral.asm +++ b/asm/spiral.asm @@ -24,8 +24,10 @@ SpiralWarp: { sep #$30 lda $00 : sta $a0 ; shift quadrant if necessary + stz $07 lda $01 : and #$01 : !sub $a9 bne .xQuad + inc $07 lda $22 : bne .skipXQuad ; this is an edge case dec $23 : bra .skipXQuad ; need to -1 if $22 is 0 .xQuad sta $06 : !add $a9 : sta $a9 @@ -41,7 +43,7 @@ SpiralWarp: { lda $01 : and #$04 : lsr : sta $048a ;fix layer calc 0->0 2->1 lda $01 : and #$08 : lsr #2 : sta $0492 ;fix from layer calc 0->0 2->1 ; shift lower coordinates - lda $02 : sta $22 : bne .adjY : inc $23 + lda $02 : sta $22 : bne .adjY : lda $23 : !add $07 : sta $23 .adjY lda $03 : sta $20 : bne .upDownAdj : inc $21 .upDownAdj ldx #$08 lda $0462 : and #$04 : beq .upStairs