From 468fe5f2afb1934d0bd125d0e2ab2286dfb17e59 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Mon, 30 Jan 2023 10:34:48 -0600 Subject: [PATCH] Improved door landing --- LTTP_RND_GeneralBugfixes.asm | 6 ++++++ doorrando/drhooks.asm | 7 +++++++ doorrando/normal.asm | 24 +++++++++++++++++++++++- doorrando/spiral.asm | 17 +++++++---------- dungeonmap.asm | 2 +- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 33e06e9..4915e54 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -526,6 +526,9 @@ Overworld_ActualScreenID: org $02B861 Dungeon_SaveRoomQuadrantData: +org $02C11D +CalculateTransitionLanding: + org $02C176 Overworld_FinalizeEntryOntoScreen_Data: @@ -694,6 +697,9 @@ OverworldMap_DarkWorldTilemap: org $0ABAB9 OverworldMap_LoadSprGfx: +org $8AE817 +DungeonMapBossRooms: + org $0CD7D1 NameFile_MakeScreenVisible: org $0CDB3E diff --git a/doorrando/drhooks.asm b/doorrando/drhooks.asm index 4bc0d46..2e23324 100644 --- a/doorrando/drhooks.asm +++ b/doorrando/drhooks.asm @@ -54,6 +54,13 @@ org $82941a ; <- Bank02.asm : 3748 module 7.12.11 (LDA $0464 : BNE BRANCH_$11513 jsl StraightStairsTrapDoor : rts org $828b54 ; <- Bank02.asm : 2200 (JSL UseImplicitRegIndexedLocalJumpTable) jsl InroomStairsTrapDoor +org $82c146 +jsl HandleSpecialDoorLanding +org $82c23a +HandleIncomingDoorStateLocal: +jsl HandleIncomingDoorState : rts +org $82c172 +jsr HandleIncomingDoorStateLocal org $8289a0 ; JSL $0091C4 jsl QuadrantLoadOrderBeforeScroll diff --git a/doorrando/normal.asm b/doorrando/normal.asm index 13323d8..836b143 100644 --- a/doorrando/normal.asm +++ b/doorrando/normal.asm @@ -296,6 +296,7 @@ StraightStairsAdj: stz $046d .noScroll jsr GetTileAttribute : tax + jsl HandleIncomingDoorState lda $11 : cmp #$12 : beq .goingNorth lda $a2 : cmp #$51 : bne ++ rep #$20 : lda #$0018 : !add $20 : sta $20 : sep #$20 ; special fix for throne room @@ -324,7 +325,7 @@ GetTileAttribute: { phk : pea.w .jslrtsreturn-1 pea.w $02802c - jml $02c11d ; mucks with x/y sets a to Tile Attribute, I think + jml CalculateTransitionLanding ; mucks with x/y sets a to Tile Attribute, I think .jslrtsreturn rts } @@ -416,4 +417,25 @@ InroomStairsTrapDoor: pla : pla : pla jsl StraightStairsTrapDoor_reset jml $028b15 ; just some RTS in bank 02 +} + +HandleSpecialDoorLanding: { + LDA.l $7F2000,X ; what we wrote over + SEP #$30 + CMP #$34 : bne + ; inroom stairs + PHA : LDA #$26 : STA $045E : PLA + + +} + +; Y = tiletype, also written to $4E +HandleIncomingDoorState: +{ + PHA + LDA.l DRMode : BEQ .noDoor + CPY.b #$01 : !bge .noDoor + LDA.w $0418 : AND.b #$02 : BNE + : INC + + STA.b $6C + .noDoor + STY.b $4E : TYA ; what we wrote over + PLY : RTL } \ No newline at end of file diff --git a/doorrando/spiral.asm b/doorrando/spiral.asm index e73b5e1..4ce37e2 100644 --- a/doorrando/spiral.asm +++ b/doorrando/spiral.asm @@ -207,19 +207,16 @@ InroomStairsWarp: { .normal lda $01 : sta $fe ; trap door lda $07 : sta $03 : beq + - ldy $a0 : cpy #$51 : beq .specialFix ; throne room - cpy #$02 : beq .specialFix ; sewers pull switch - cpy #$71 : beq .specialFix ; castle armory - lda #$e0 - bra ++ + lda $01 : and #$04 : bne .specialFix + lda #$e0 : bra ++ .specialFix - lda #$c8 - bra ++ + lda #$c8 : bra ++ + %StonewallCheck($43) - lda #$1b - ++ - sta $20 + lda $01 : and #$04 : bne + + lda #$1b : bra ++ + + lda #$33 + ++ sta $20 inc $07 : stz $02 : lda #$78 : sta $22 lda $01 : and #$03 : beq ++ cmp #$02 : !bge + diff --git a/dungeonmap.asm b/dungeonmap.asm index 39b4624..5ad5ea0 100644 --- a/dungeonmap.asm +++ b/dungeonmap.asm @@ -21,7 +21,7 @@ DoDungeonMapBossIcon: ; get dungeon boss room ++ REP #$30 - LDA.l $8AE817,X + LDA.l DungeonMapBossRooms, X ASL TAX