diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index a2b6e55..c3e65eb 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -119,6 +119,7 @@ incsrc glitched.asm incsrc hardmode.asm incsrc goalitem.asm incsrc compasses.asm +incsrc doorframefixes.asm incsrc hashalphabet.asm ; <- TAKE OUT THE EXTRA ORGS IN HERE - THIS IS WHY WE COULDN'T ADD MORE FILES EARLIER warnpc $A18000 diff --git a/doorframefixes.asm b/doorframefixes.asm new file mode 100644 index 0000000..fef6d2e --- /dev/null +++ b/doorframefixes.asm @@ -0,0 +1,44 @@ +;================================================================================ +; Door Frame Fixes +;================================================================================ + +;-------------------------------------------------------------------------------- +; StoreLastEntranceID +;-------------------------------------------------------------------------------- +StoreLastEntranceID: + CPX #$003a : BCC .noStore + TXA : SBC #$3a + BRA .done + .noStore + LDA #$00 + .done + STA $7F5099 + LDA $1BBB73, X : STA $010E +RTL +;-------------------------------------------------------------------------------- + +;-------------------------------------------------------------------------------- +; CacheDoorFrameData +;-------------------------------------------------------------------------------- +CacheDoorFrameData: + LDA $7F5099 : BEQ .originalBehaviour + DEC : ASL : TAX + LDA EntranceDoorFrameTable, X : STA $0696 + BRA .done + .originalBehaviour + LDA $D724, X : STA $0696 + .done + STZ $0698 + LDA #$00 + STA $7F5099 +RTL +;-------------------------------------------------------------------------------- + +;-------------------------------------------------------------------------------- +; WalkDownIntoTavern +;-------------------------------------------------------------------------------- +WalkDownIntoTavern: + LDA $7F5099 + CMP #$08 +RTL +;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index 6e6118b..f982b26 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1744,4 +1744,25 @@ JSL.l LampCheck ;-------------------------------------------------------------------------------- org $01F503 ; <- F503 - Bank01.asm:14994 (LDA.b #$01 : STA $1D) JSL.l SetOverlayIfLamp +;================================================================================ + +;================================================================================ +; Overworld Door Frame Overlay Fix +; +; When entering an overworld entrance, if it is an entrance to a simple cave, we +; store the entrance id, then use that (instead of the cave id) to determine the +; overlay to draw when leaving the cave again. We also use this value to +; identify the tavern entrance to determine whether link should walk up or down. +;-------------------------------------------------------------------------------- +org $1BBD5F ; <- Bank1b.asm:296 (LDA $1BBB73, X : STA $010E) +JSL.l StoreLastEntranceID +NOP #3 +;-------------------------------------------------------------------------------- +org $02D754 ; <- Bank02.asm:10847 (LDA $D724, X : STA $0696 : STZ $0698) +JSL.l CacheDoorFrameData +NOP #5 +;-------------------------------------------------------------------------------- +org $0298AD ; <- Bank02.asm:4495 (LDA $010E : CMP.b #$43) +JSL.l WalkDownIntoTavern +NOP #1 ;================================================================================ \ No newline at end of file diff --git a/tables.asm b/tables.asm index 99e5ade..52592cf 100644 --- a/tables.asm +++ b/tables.asm @@ -1135,6 +1135,7 @@ dw #9999 ; Rupee Limit ; $7F5096 - Dialog Offset Pointer Return (Low) ; $7F5097 - Dialog Offset Pointer Return (High) ; $7F5098 - Water Entry Index +; $7F5099 - Last Entered Entrance ; $7F50D0 - $7F50FF - Block Cypher Parameters ; $7F5100 - $7F51FF - Block Cypher Buffer ; $7F5200 - $7F52FF - RNG Pointer Block @@ -1162,4 +1163,16 @@ db $36, $4B, $A8, $01, $65, $3B, $EF, $59, $04, $18, $79, $0D, $DD, $CE, $CC, $A db $83, $21, $EB, $6E, $0A, $71, $B0, $11, $85, $C7, $A1, $FD, $E5, $16, $48, $FB db $F2, $23, $2F, $28, $9B, $AA, $AB, $D0, $6A, $9D, $C6, $2D, $00, $FE, $E1, $3F db $A0, $4A, $B8, $4E, $74, $1F, $8E, $A9, $F5, $CD, $60, $91, $DB, $D8, $52, $E2 -;================================================================================ \ No newline at end of file +;================================================================================ +org $30A100 ; PC 0x182100 +EntranceDoorFrameTable: +dw $0000, $0000, $0DE8, $0B98, $14CE, $0000, $1C50, $FFFF +dw $1466, $0000, $1AB6, $0B98, $1AB6, $040E, $9C0C, $1530 +dw $0A98, $0000, $0000, $0000, $0000, $0000, $0000, $0816 +dw $0DE8, $0000, $0000, $0000, $0000, $09AC, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $041A, $0000, $091E, $09AC, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0AA8, $07AA, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000 +;=============================================================================== \ No newline at end of file