add LoadSpecialOverworld
Interrupts the vanilla LoadSpecialOverworld function after LoadOverworldFromUnderworld is called. Adds additional data to the table for more special areas.
This commit is contained in:
@@ -256,13 +256,228 @@ SpecialOverworld_CheckForReturnTrigger:
|
|||||||
dw $0004
|
dw $0004
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadExpandedSpecialArea:
|
pushpc
|
||||||
{
|
|
||||||
LDA.b $A0 : CMP.w #$0191 : BNE .not_minish_woods
|
|
||||||
LDA.w #$0180 : STA.b $A0
|
|
||||||
.not_minish_woods
|
|
||||||
RTL
|
|
||||||
}
|
|
||||||
|
|
||||||
org $02E90E
|
OverworldPalettesLoader = $0ED5A8
|
||||||
JSL LoadExpandedSpecialArea : NOP
|
|
||||||
|
org $02E90C ; LoadSpecialOverworld interrupt
|
||||||
|
JSL LoadSpecialOverworld
|
||||||
|
RTS
|
||||||
|
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
; Interrupts the vanilla LoadSpecialOverworld function
|
||||||
|
; after LoadOverworldFromUnderworld is called.
|
||||||
|
; Adds additional data to the table for more special areas
|
||||||
|
|
||||||
|
; Overworld ID $A0 is set to the special area ID
|
||||||
|
; To support 0x91, the special area ID will need to index to row 5 of the table
|
||||||
|
;
|
||||||
|
|
||||||
|
LoadSpecialOverworld:
|
||||||
|
{
|
||||||
|
REP #$20
|
||||||
|
LDA.b $A0 : CMP.w #$1010 : BNE .not_zora
|
||||||
|
|
||||||
|
LDA.w #$0182 ; OW 82
|
||||||
|
STA.b $A0
|
||||||
|
|
||||||
|
.not_zora
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
PHB : PHK : PLB
|
||||||
|
|
||||||
|
LDA.b $A0
|
||||||
|
PHA
|
||||||
|
|
||||||
|
SEC : SBC.b #$80 : STA.b $A0
|
||||||
|
|
||||||
|
; Check if the special area is 0x91
|
||||||
|
LDA.b $A0 : CMP.b #$11 : BNE .not_tiny_house
|
||||||
|
; Subtract by 5 to index to row 5 of the table
|
||||||
|
SEC : SBC.b #$05 : STA.b $A0
|
||||||
|
.not_tiny_house
|
||||||
|
|
||||||
|
TAX
|
||||||
|
|
||||||
|
LDA.l .direction, X : STA.b $2F
|
||||||
|
STZ.w $0412
|
||||||
|
|
||||||
|
LDA.l .gfx_AA3, X : STA.w $0AA3
|
||||||
|
LDA.l .gfx_AA2, X : STA.w $0AA2
|
||||||
|
|
||||||
|
PHX
|
||||||
|
|
||||||
|
LDA.l .palette_prop_b, X : STA.b $00
|
||||||
|
LDA.l .palette_prop_a, X : JSL OverworldPalettesLoader
|
||||||
|
|
||||||
|
PLX
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
LDA.w #$03F0 : STA.b $00
|
||||||
|
|
||||||
|
LDA.b $A0 : AND.w #$003F : ASL A : TAX
|
||||||
|
|
||||||
|
LDA.l .camera600, X : STA.w $0708
|
||||||
|
|
||||||
|
LDA.l .camera70C, X
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
STA.w $070C
|
||||||
|
|
||||||
|
LDA.b $00 : STA.w $070A
|
||||||
|
|
||||||
|
LDA.b $00
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
STA.w $070E
|
||||||
|
|
||||||
|
; ---------------------------------------------------------
|
||||||
|
|
||||||
|
LDA.b $A0 : ASL A : TAY
|
||||||
|
|
||||||
|
SEP #$10
|
||||||
|
LDA.w .camera600, Y : STA.w $0600
|
||||||
|
LDA.w .camera602, Y : STA.w $0602
|
||||||
|
LDA.w .camera604, Y : STA.w $0604
|
||||||
|
LDA.w .camera606, Y : STA.w $0606
|
||||||
|
LDA.w .camera610, Y : STA.w $0610
|
||||||
|
LDA.w .camera612, Y : STA.w $0612
|
||||||
|
LDA.w .camera614, Y : STA.w $0614
|
||||||
|
LDA.w .camera616, Y : STA.w $0616
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
PLA
|
||||||
|
STA.b $A0
|
||||||
|
|
||||||
|
PLB
|
||||||
|
|
||||||
|
JSL $0ED61D ; Overworld_SetScreenBGColorCacheOnly
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
; row 0 - maku tree, left half of small map 80
|
||||||
|
; row 1 - tree house, top right quarter of small map 80
|
||||||
|
; row 2 - zora falls, large map 81
|
||||||
|
; row 3 - also zora falls?
|
||||||
|
; row 4 - tree house, top right quarter of small map 80 (mirror)
|
||||||
|
; row 5 - tiny house, small map 91 (512x512)
|
||||||
|
|
||||||
|
; Affects $0600 and $0708
|
||||||
|
.camera600 ; Camera Scroll Boundary Small North
|
||||||
|
dw $0000, $0000, $0000, $0000
|
||||||
|
dw $0000, $0000, $0000, $0000
|
||||||
|
dw $0200, $0200, $0000, $0000
|
||||||
|
dw $0000, $0000, $0000, $0000
|
||||||
|
dw $0000, $0000, $0000, $0000
|
||||||
|
dw $0000, $0000, $0000, $0000 ; OW 91
|
||||||
|
|
||||||
|
.camera602 ; Camera Scroll Boundary Large North
|
||||||
|
dw $0120, $0020, $0320, $0020 ; OW 80
|
||||||
|
dw $0000, $0000, $0320, $0320 ; OW 81
|
||||||
|
dw $0320, $0220, $0000, $0000 ; OW 82
|
||||||
|
dw $0000, $0000, $0320, $0320
|
||||||
|
dw $0320, $0220, $0000, $0000 ; OW 81
|
||||||
|
dw $0000, $0000, $0320, $0320 ; OW 91
|
||||||
|
|
||||||
|
.camera604 ; Camera Scroll Boundary South
|
||||||
|
dw $0000, $0100, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0100, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0100, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
|
||||||
|
.camera606 ; Camera Scroll Boundary Large South
|
||||||
|
dw $0000, $0100, $0500, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0100, $0400, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0100, $0500, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
|
||||||
|
.camera610 ; Overworld target position for transition north
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
dw $FF20, $FF20, $0120, $FF20
|
||||||
|
dw $FF20, $FF20, $FF20, $0120
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
|
||||||
|
.camera614 ; Overworld target position for transition west
|
||||||
|
dw $FFFC, $0100, $0300, $0100
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
dw $FFFC, $0100, $0300, $0500
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
dw $FFFC, $0100, $0300, $0100
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
|
||||||
|
.camera612 ; Overworld target position for transition south
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
dw $FF20, $FF20, $0400, $0400
|
||||||
|
dw $FF20, $FF20, $0120, $FF20
|
||||||
|
dw $FF20, $FF20, $0400, $0400
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
dw $FF20, $FF20, $FF20, $FF20
|
||||||
|
|
||||||
|
.camera616 ; Overworld target position for transition east
|
||||||
|
dw $0004, $0104, $0300, $0100
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
dw $0004, $0104, $0300, $0100
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
dw $0004, $0104, $0300, $0100
|
||||||
|
dw $0500, $0900, $0B00, $0B00
|
||||||
|
|
||||||
|
.camera70C ; Overworld X Edge
|
||||||
|
dw $0000, $0000, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0000, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
dw $0000, $0000, $0200, $0600
|
||||||
|
dw $0600, $0A00, $0C00, $0C00
|
||||||
|
|
||||||
|
; ---------------------------------------------------------
|
||||||
|
|
||||||
|
.direction
|
||||||
|
db $00, $04, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
|
||||||
|
.gfx_AA3
|
||||||
|
db $0C, $0C, $0E, $0E
|
||||||
|
db $0E, $10, $10, $10
|
||||||
|
db $0E, $0E, $0E, $0E
|
||||||
|
db $10, $10, $10, $10
|
||||||
|
db $0E, $0E, $0E, $0E
|
||||||
|
db $10, $10, $10, $10
|
||||||
|
|
||||||
|
.gfx_AA2
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
db $2F, $2F, $2F, $2F
|
||||||
|
|
||||||
|
.palette_prop_a
|
||||||
|
db $0A, $0A, $0A, $0A
|
||||||
|
db $02, $02, $02, $0A
|
||||||
|
db $02, $02, $0A, $02
|
||||||
|
db $02, $02, $02, $0A
|
||||||
|
db $02, $02, $02, $0A
|
||||||
|
db $02, $02, $02, $0A
|
||||||
|
|
||||||
|
.palette_prop_b
|
||||||
|
db $01, $08, $08, $08
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $08, $00
|
||||||
|
db $00, $00, $00, $02
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
db $00, $00, $00, $00
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user