cleanup mask routines
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; Macros
|
; Macros
|
||||||
|
|
||||||
@@ -22,18 +21,10 @@ macro CheckNewR_ButtonPress()
|
|||||||
LDA.b $F6 : BIT.b #$10
|
LDA.b $F6 : BIT.b #$10
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
; GameOver_DelayBeforeIris
|
|
||||||
org $09F347
|
|
||||||
JSL ForceResetMask_GameOver
|
|
||||||
|
|
||||||
; Module17_SaveAndQuit
|
|
||||||
org $09F7B5
|
|
||||||
JSL ForceResetMask_SaveAndQuit
|
|
||||||
|
|
||||||
; =========================================================
|
|
||||||
; Change Link's sprite by setting $BC to the bank containing a spritesheet.
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
; Change Link's sprite by setting $BC to the bank with the gfx
|
||||||
|
|
||||||
|
; InitializeMemoryAndSRAM
|
||||||
org $008827
|
org $008827
|
||||||
JSL StartupMasks
|
JSL StartupMasks
|
||||||
|
|
||||||
@@ -43,7 +34,6 @@ org $008A01
|
|||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; Change Link's palette based on $02B2 (mask value)
|
; Change Link's palette based on $02B2 (mask value)
|
||||||
; =========================================================
|
|
||||||
|
|
||||||
org $1BEDF9
|
org $1BEDF9
|
||||||
JSL Palette_ArmorAndGloves ; 4bytes
|
JSL Palette_ArmorAndGloves ; 4bytes
|
||||||
@@ -55,8 +45,17 @@ org $1BEE1B
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; EXPANDED SPACE
|
|
||||||
|
; GameOver_DelayBeforeIris
|
||||||
|
org $09F347
|
||||||
|
JSL ForceResetMask_GameOver
|
||||||
|
|
||||||
|
; Module17_SaveAndQuit
|
||||||
|
org $09F7B5
|
||||||
|
JSL ForceResetMask_SaveAndQuits
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
; EXPANDED SPACE
|
||||||
|
|
||||||
org $3A8000
|
org $3A8000
|
||||||
StartupMasks:
|
StartupMasks:
|
||||||
@@ -73,18 +72,18 @@ StartupMasks:
|
|||||||
|
|
||||||
ForceResetMask_GameOver:
|
ForceResetMask_GameOver:
|
||||||
{
|
{
|
||||||
LDA $02B2 : BEQ .still_link
|
LDA $02B2 : BEQ .still_link
|
||||||
CMP.b #$06 : BEQ .gbc_link
|
CMP.b #$06 : BEQ .gbc_link
|
||||||
%ResetToLinkGraphics()
|
%ResetToLinkGraphics()
|
||||||
JMP .still_link
|
JMP .still_link
|
||||||
.gbc_link
|
.gbc_link
|
||||||
JSL UpdateGbcPalette
|
JSL UpdateGbcPalette
|
||||||
LDA #$3B : STA $BC ; change link's sprite
|
LDA #$3B : STA $BC ; change link's sprite
|
||||||
|
|
||||||
.still_link
|
.still_link
|
||||||
LDA.b #$30
|
LDA.b #$30
|
||||||
STA.b $98
|
STA.b $98
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
ForceResetMask_SaveAndQuit:
|
ForceResetMask_SaveAndQuit:
|
||||||
@@ -206,8 +205,7 @@ Overworld_CgramAuxToMain_Override:
|
|||||||
|
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
|
|
||||||
.loop
|
.loop
|
||||||
|
|
||||||
LDA $7EC300, X : STA $7EC500, X
|
LDA $7EC300, X : STA $7EC500, X
|
||||||
LDA $7EC340, X : STA $7EC540, X
|
LDA $7EC340, X : STA $7EC540, X
|
||||||
LDA $7EC380, X : STA $7EC580, X
|
LDA $7EC380, X : STA $7EC580, X
|
||||||
@@ -216,9 +214,8 @@ Overworld_CgramAuxToMain_Override:
|
|||||||
LDA $7EC440, X : STA $7EC640, X
|
LDA $7EC440, X : STA $7EC640, X
|
||||||
LDA $7EC480, X : STA $7EC680, X
|
LDA $7EC480, X : STA $7EC680, X
|
||||||
LDA $02B2 : BNE .has_mask_palette
|
LDA $02B2 : BNE .has_mask_palette
|
||||||
LDA $7EC4C0, X : STA $7EC6C0, X
|
LDA $7EC4C0, X : STA $7EC6C0, X
|
||||||
.has_mask_palette
|
.has_mask_palette
|
||||||
|
|
||||||
INX #2 : CPX.b #$40 : BNE .loop
|
INX #2 : CPX.b #$40 : BNE .loop
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
@@ -234,10 +231,8 @@ pushpc
|
|||||||
|
|
||||||
org $02C769
|
org $02C769
|
||||||
Overworld_CgramAuxToMain:
|
Overworld_CgramAuxToMain:
|
||||||
{
|
|
||||||
JSL Overworld_CgramAuxToMain_Override
|
JSL Overworld_CgramAuxToMain_Override
|
||||||
RTS
|
RTS
|
||||||
}
|
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; Change which mask forms have access to the sword.
|
; Change which mask forms have access to the sword.
|
||||||
@@ -251,13 +246,12 @@ pullpc
|
|||||||
LinkItem_CheckForSwordSwing_Masks:
|
LinkItem_CheckForSwordSwing_Masks:
|
||||||
{
|
{
|
||||||
LDA $02B2 : BEQ .return
|
LDA $02B2 : BEQ .return
|
||||||
CMP.b #$02 : BEQ .return ; zora mask can use sword
|
CMP.b #$02 : BEQ .return ; zora mask can use sword
|
||||||
CMP.b #$06 : BEQ .return
|
CMP.b #$06 : BEQ .return ; gbc link can use sword
|
||||||
|
LDA #$01
|
||||||
|
RTL
|
||||||
|
|
||||||
LDA #$01
|
.return
|
||||||
RTL
|
|
||||||
|
|
||||||
.return
|
|
||||||
LDA $3B : AND.b #$10 ; Restore Link_CheckForSwordSwing
|
LDA $3B : AND.b #$10 ; Restore Link_CheckForSwordSwing
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
@@ -279,20 +273,15 @@ Link_TransformMask:
|
|||||||
PLA ; restore mask ID
|
PLA ; restore mask ID
|
||||||
TAY
|
TAY
|
||||||
; LDA $02B2
|
; LDA $02B2
|
||||||
CPY !CurrentMask : BEQ .unequip ; is the deku mask on?
|
CPY !CurrentMask : BEQ .unequip ; check if mask is on
|
||||||
|
|
||||||
STA $02B2 ; set the mask ID
|
STA $02B2 : TAX
|
||||||
TAX ; save mask ID in X
|
LDA .mask_gfx, X : STA $BC ; set the mask gfx
|
||||||
LDA .mask_gfx, X : STA $BC ; put the mask on
|
|
||||||
JSL Palette_ArmorAndGloves ; set the palette
|
JSL Palette_ArmorAndGloves ; set the palette
|
||||||
|
STA $02F5 ; Somaria platform flag, no dash
|
||||||
|
PLB : CLC : RTL
|
||||||
|
|
||||||
STA $02F5 ; Somaria platform flag, no dash.
|
.unequip
|
||||||
|
|
||||||
PLB
|
|
||||||
SEC
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.unequip
|
|
||||||
STZ $5D
|
STZ $5D
|
||||||
STZ $02F5
|
STZ $02F5
|
||||||
|
|
||||||
@@ -300,10 +289,10 @@ Link_TransformMask:
|
|||||||
PLB : CLC : RTL
|
PLB : CLC : RTL
|
||||||
|
|
||||||
.return
|
.return
|
||||||
PLA : PLB : CLC : RTL
|
PLA : PLB : CLC : RTL
|
||||||
|
|
||||||
.mask_gfx
|
.mask_gfx
|
||||||
db $00, $35, $36, $38, $37, $39, $3A, $3B
|
db $00, $35, $36, $38, $37, $39, $3A, $3B
|
||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
@@ -315,26 +304,24 @@ DekuLink_SpinOrRecoil:
|
|||||||
{
|
{
|
||||||
TAY
|
TAY
|
||||||
LDA $70 : BEQ .spin
|
LDA $70 : BEQ .spin
|
||||||
TYA
|
TYA
|
||||||
LDY.b #$05 ; Recoil
|
LDY.b #$05 ; Recoil
|
||||||
JML $0DA435 ;JML $0DA40B
|
JML $0DA435 ; JML $0DA40B
|
||||||
.spin
|
.spin
|
||||||
TYA
|
TYA
|
||||||
LDY.b #$1B ; Spin and die
|
LDY.b #$1B ; Spin and die
|
||||||
JML $0DA40B
|
JML $0DA40B
|
||||||
}
|
}
|
||||||
|
|
||||||
pushpc
|
pushpc
|
||||||
|
|
||||||
; Spin and die, LinkOAM_AnimationStepDataOffsets
|
; Spin and die, LinkOAM_AnimationStepDataOffsets
|
||||||
org $0DA3FD
|
org $0DA3FD
|
||||||
JML DekuLink_SpinOrRecoil
|
JML DekuLink_SpinOrRecoil
|
||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
|
|
||||||
CheckDekuFlowerPresence:
|
CheckDekuFlowerPresence:
|
||||||
{
|
{
|
||||||
|
REP #$20
|
||||||
PHX
|
PHX
|
||||||
CLC ; Assume sprite ID $B0 is not present
|
CLC ; Assume sprite ID $B0 is not present
|
||||||
LDX.b #$10
|
LDX.b #$10
|
||||||
@@ -344,7 +331,7 @@ CheckDekuFlowerPresence:
|
|||||||
LDY.b #$04
|
LDY.b #$04
|
||||||
.y_loop
|
.y_loop
|
||||||
DEY
|
DEY
|
||||||
LDA $0E20, X : CMP.b #$C0 : BEQ .set_flag
|
LDA.w $0E20, X : AND.w #$00FF : CMP.w #$00C0 : BEQ .set_flag
|
||||||
BRA .not_b0
|
BRA .not_b0
|
||||||
|
|
||||||
.set_flag
|
.set_flag
|
||||||
@@ -357,14 +344,13 @@ CheckDekuFlowerPresence:
|
|||||||
CPX.b #$00 : BNE .x_loop
|
CPX.b #$00 : BNE .x_loop
|
||||||
.done
|
.done
|
||||||
PLX
|
PLX
|
||||||
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
; Based on LinkItem_Quake.allow_quake
|
; Based on LinkItem_Quake.allow_quake
|
||||||
PrepareQuakeSpell:
|
PrepareQuakeSpell:
|
||||||
{
|
{
|
||||||
; TODO: Set a check for the Deku Flower sprite before activating this ability.
|
|
||||||
; Find out if the sprite $C0 is in the room
|
; Find out if the sprite $C0 is in the room
|
||||||
JSR CheckDekuFlowerPresence : BCC .no_c0
|
JSR CheckDekuFlowerPresence : BCC .no_c0
|
||||||
|
|
||||||
@@ -461,49 +447,42 @@ HandleMovement:
|
|||||||
|
|
||||||
DekuLink_HoverBasedOnInput:
|
DekuLink_HoverBasedOnInput:
|
||||||
{
|
{
|
||||||
JSR HandleCamera
|
JSR HandleCamera
|
||||||
|
|
||||||
LDA $5C : AND #$1F : BNE .continue_me
|
LDA $5C : AND #$1F : BNE .continue_me
|
||||||
DEC $24
|
DEC $24
|
||||||
.continue_me
|
.continue_me
|
||||||
|
|
||||||
LDA $5C : BEQ .auto_cancel
|
LDA $5C : BEQ .auto_cancel
|
||||||
|
|
||||||
JSR HandleMovement
|
JSR HandleMovement
|
||||||
|
|
||||||
LDA $70 : BEQ .no_bomb_drop
|
LDA $70 : BEQ .no_bomb_drop
|
||||||
LDA $F0 : AND #%01000000 : BEQ .no_bomb_drop
|
LDA $F0 : AND #%01000000 : BEQ .no_bomb_drop
|
||||||
LDY.b #$01 : LDA.b #$07 ; ANCILLA 07
|
LDY.b #$01 : LDA.b #$07 ; ANCILLA 07
|
||||||
JSL $09811F ; AncillaAdd_Bomb
|
JSL $09811F ; AncillaAdd_Bomb
|
||||||
.no_bomb_drop
|
.no_bomb_drop
|
||||||
|
|
||||||
LDA $F0 : AND #%10000000 : BEQ .no_cancel
|
LDA $F0 : AND #%10000000 : BEQ .no_cancel
|
||||||
|
.auto_cancel
|
||||||
.auto_cancel
|
|
||||||
|
|
||||||
; Reset LinkState to Default
|
; Reset LinkState to Default
|
||||||
STZ $5D
|
STZ $5D
|
||||||
|
|
||||||
LDA.b #$01 : STA.w $0AAA
|
LDA.b #$01 : STA.w $0AAA
|
||||||
|
|
||||||
STZ.w $0324 : STZ.w $031C : STZ.w $031D
|
STZ.w $0324 : STZ.w $031C : STZ.w $031D
|
||||||
|
|
||||||
STZ.b $50 : STZ.b $3D
|
STZ.b $50 : STZ.b $3D
|
||||||
|
|
||||||
STZ.w $0FC1
|
STZ.w $0FC1
|
||||||
|
|
||||||
STZ.w $011A : STZ.w $011B : STZ.w $011C : STZ.w $011D
|
STZ.w $011A : STZ.w $011B : STZ.w $011C : STZ.w $011D
|
||||||
|
|
||||||
.no_turtle_rock_trigger
|
.no_turtle_rock_trigger
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
|
|
||||||
LDA.b $3C : BEQ .no_sword_charge
|
LDA.b $3C : BEQ .no_sword_charge
|
||||||
|
LDA.b $F0 : AND.b #$80 : TAY
|
||||||
|
.no_sword_charge
|
||||||
|
|
||||||
LDA.b $F0 : AND.b #$80 : TAY
|
|
||||||
|
|
||||||
.no_sword_charge
|
|
||||||
STY.b $3A
|
STY.b $3A
|
||||||
|
|
||||||
STZ.b $5E : STZ.w $0325
|
STZ.b $5E : STZ.w $0325
|
||||||
; Set height at end of hover
|
; Set height at end of hover
|
||||||
; This makes it so the landing animation timer looks correct
|
; This makes it so the landing animation timer looks correct
|
||||||
@@ -511,7 +490,7 @@ DekuLink_HoverBasedOnInput:
|
|||||||
LDA.b #$12 : STA $24
|
LDA.b #$12 : STA $24
|
||||||
.no_cancel
|
.no_cancel
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
print "End of mask_routines.asm ", pc
|
print "End of mask_routines.asm ", pc
|
||||||
|
|||||||
Reference in New Issue
Block a user