Add hooks to store door frame overlay information based on entrance used, not cave entered, for simple cave entrances. Also use entrance info, not destination cave, to determine if link should walk up or down after triggering screen transition.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
44
doorframefixes.asm
Normal file
44
doorframefixes.asm
Normal file
@@ -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
|
||||
;--------------------------------------------------------------------------------
|
||||
21
hooks.asm
21
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
|
||||
;================================================================================
|
||||
15
tables.asm
15
tables.asm
@@ -1105,6 +1105,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
|
||||
@@ -1132,4 +1133,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
|
||||
;================================================================================
|
||||
;================================================================================
|
||||
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
|
||||
;===============================================================================
|
||||
Reference in New Issue
Block a user