more DarkLink formatting

This commit is contained in:
scawful
2024-06-06 21:22:30 -04:00
parent 38bb68ee72
commit 34d5b704ce

View File

@@ -47,25 +47,23 @@ Sprite_DarkLink_Long:
RTL ; Go back to original code
.NotGanon
LDA.w SprAction, X : CMP.b #$01 : BNE .normaldraw
LDA.w SprAction, X : CMP.b #$01 : BNE .normal_draw
; JSR Sprite_DarkLink_Draw ; Call the draw code
.sworddraw
.sword_draw
JSR Sprite_DarkLink_Draw_Sprite_SwordAttack_Draw
BRA .skipnormaldraw
.normaldraw
CMP.b #$09 : BEQ .sworddraw
LDA.w SprSubtype, X : BNE .skipnormaldraw
BRA .skipnormal_draw
.normal_draw
CMP.b #$09 : BEQ .sword_draw
LDA.w SprSubtype, X : BNE .skipnormal_draw
JSR Sprite_DarkLink_Draw
.skipnormaldraw
.skipnormal_draw
LDA.w SprAction, X : CMP.b #11 : BCS .notdying
LDA.w SprHealth, X : CMP.b #$10 : BCS .notdying
LDA.w SprMiscC, X : BNE +
; check if action is 00 otherwise wait
LDA.w SprAction, X : BNE .notdying
; enraging instead
%GotoAction(15)
%GotoAction(15) ; enraging instead
BRA .SpriteIsNotActive
+
@@ -78,7 +76,6 @@ Sprite_DarkLink_Long:
BRA .SpriteIsNotActive
.notdying
JSL Sprite_CheckActive ; Check if game is not paused
BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive
@@ -98,10 +95,9 @@ Sprite_DarkLink_Prep:
REP #$20 ; P is still on stack, so we don't even need to fix this
LDX #$20
--
LDA dlinkPal, X : STA $7EC600, X
LDA DarkLink_Palette, X : STA $7EC600, X
DEX : DEX : BNE --
INC $15 ; Refresh Palettes
SEP #$20
PLB
@@ -111,27 +107,26 @@ Sprite_DarkLink_Prep:
LDA #$CF : STA.w SprTimerA, X ; wait timer before falling
LDA #$7F : STA.w SprHeight, X
%GotoAction(4)
LDA #$78 : STA.w SprX, X
LDA #$58 : STA.w SprY, X
LDA #$00 : STA.w SprMiscE, X
LDA #$00 : STA.w SprMiscC, X ; Enraging
LDA #$50 : STA.w SprHealth, X
%GotoAction(4)
RTL
}
dlinkPal:
DarkLink_Palette:
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$3DEF, #$6FF4
; =========================================================
Sprite_DarkLink_Main:
{
LDA.w SprAction, X; Load the SprAction
JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
dw Handler
dw SwordSlash
dw JumpBack
@@ -157,14 +152,13 @@ Sprite_DarkLink_Main:
RTS
+
LDA.w SprMiscF, X : BNE .nodamage
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
LDA.w SprTimerA, X : BNE .alreadytakingdamage
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
LDA.w SprMiscF, X : BNE .no_damage
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
LDA.w SprTimerA, X : BNE .already_taking_damage
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
.notmoredamage
.alreadytakingdamage
.not_more_damage
.already_taking_damage
LDA #$20
JSL Sprite_ApplySpeedTowardsPlayer
@@ -175,7 +169,7 @@ Sprite_DarkLink_Main:
LDA #$26 : STA.w $012E
%GotoAction(8)
RTS
.nodamage
.no_damage
JSL Sprite_CheckDamageToPlayer
@@ -222,9 +216,7 @@ Sprite_DarkLink_Main:
.skipdirections
JSR SpawnSwordDamage
%GotoAction(1)
++
REP #$20
@@ -431,6 +423,7 @@ Sprite_DarkLink_Main:
Bomb:
{
TYX ; get back sprite index
;second guess itself because it can spawn too many bombs
@@ -448,8 +441,10 @@ Sprite_DarkLink_Main:
STA $0E00, Y
.spawn_failed
RTS
}
BombThrow:
{
TYX ; get back sprite index
;second guess itself because it can spawn too many bombs
@@ -473,9 +468,11 @@ Sprite_DarkLink_Main:
.spawn_failed
RTS
}
Cape:
{
TYX ; get back sprite index
LDA.w SprMiscF, X : BNE +
LDA $1A : AND #$01 : BNE .nocape ; 50/50 chances
@@ -496,11 +493,12 @@ Sprite_DarkLink_Main:
LDA speedTableX, Y : STA SprXSpeed, X
LDA speedTableY, Y : STA SprYSpeed, X
RTS
}
JumpAttack:
{
TYX ; get back sprite index
LDA #$20
JSL Sprite_ApplySpeedTowardsPlayer
@@ -512,11 +510,11 @@ Sprite_DarkLink_Main:
; that one is popping the RTS to end sprite entirely
;PLA : PLA
RTS
}
SpawnSwordDamage:
{
LDA #24 : STA.w SprTimerC, X
LDA.w SprMiscC, X : BEQ +
LDA #15 : STA.w SprTimerC, X ;faster if enraged
@@ -525,7 +523,7 @@ Sprite_DarkLink_Main:
LDA #$03 : STA.w $012E
LDA #$C1 ; SET THE RIGHT SPRITE ID!! ======================CHANGE========================
LDA #$C1 ; SPRID
JSL Sprite_SpawnDynamically
JSL Sprite_SetSpawnedCoords
PHX
@@ -536,9 +534,9 @@ Sprite_DarkLink_Main:
LDA.w SprX, X : CLC : ADC.w DirOffsetX, Y : STA.w SprX, X
LDA.w SprY, X : CLC : ADC.w DirOffsetY, Y : STA.w SprY, X
PLX
RTS
}
DirOffsetX:
db $00, $00, $0E, $F2
@@ -548,12 +546,12 @@ Sprite_DarkLink_Main:
SwordSlash:
{
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
LDA.w SprTimerA, X : BNE .alreadytakingdamage
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
LDA.w SprTimerA, X : BNE .already_taking_damage
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
.notmoredamage
.alreadytakingdamage
.not_more_damage
.already_taking_damage
LDA #$05 : STA.w $012E ; clinking sound
LDA #$20
@@ -576,7 +574,7 @@ Sprite_DarkLink_Main:
RTS
.nodamage
.no_damage
;LDA.w SprTimerD, X : BEQ +
@@ -770,8 +768,6 @@ Sprite_DarkLink_Main:
LDA.b #$1F : STA $012C
.nomessage
; IF health is a certain level spawn crumbling tiles
;2, 3, 4, 5
LDA.w SprMiscC, X : BEQ .tilesAreFallingAlready
@@ -807,12 +803,12 @@ Sprite_DarkLink_Main:
WalkAction:
{
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
LDA.w SprTimerA, X : BNE .alreadytakingdamage
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
LDA.w SprTimerA, X : BNE .already_taking_damage
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
.notmoredamage
.alreadytakingdamage
.not_more_damage
.already_taking_damage
LDA #$20
JSL Sprite_ApplySpeedTowardsPlayer
@@ -823,10 +819,9 @@ Sprite_DarkLink_Main:
%GotoAction(8)
RTS
.nodamage
.no_damage
JSL Sprite_CheckDamageToPlayer
LDA.w SprTimerA, X : BNE +
JSL GetRandomInt : AND #$3F : CLC : ADC #$50
@@ -835,7 +830,6 @@ Sprite_DarkLink_Main:
+
STZ $02 ; x direction if non zero = negative
STZ $03 ; y direction
@@ -873,10 +867,8 @@ Sprite_DarkLink_Main:
+
DEC.w SprYSpeed, X
.next
LDA.w SprXSpeed, X : BPL +
INC.w SprXSpeed, X
BRA .done
@@ -929,8 +921,6 @@ Sprite_DarkLink_Main:
CMP #$10 : BCS + ; only check for damage if sword has reached halfway
JSL Sprite_CheckDamageToPlayer
+
RTS
}
@@ -962,6 +952,7 @@ Sprite_DarkLink_Main:
db $00, $02, $01, $03
DeadDespawn:
{
LDA.w SprTimerB, X : BNE +
LDA.b #45 : STA.w SprFrame, X
@@ -979,8 +970,10 @@ Sprite_DarkLink_Main:
+
RTS
}
OpenDoor:
{
INC.w SprMiscF, X
;LDA #$1A : STA.b $11 ; ganon open door routine
; handled by the room tag?
@@ -989,14 +982,15 @@ Sprite_DarkLink_Main:
%GotoAction(14)
RTS
}
Dead:
{
RTS
}
Enraging:
{
PHX
REP #$20 ; P is still on stack, so we don't even need to fix this
LDX #$20
@@ -1017,7 +1011,7 @@ Sprite_DarkLink_Main:
%GotoAction(00)
RTS
}
dlinkPalRed:
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$001D, #$6FF4
@@ -1546,60 +1540,62 @@ GanonInit:
Sprite_Ganon_Main:
{
LDA.w SprAction, X; Load the SprAction
JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
dw Wait
dw ShowMessage
dw Fall
dw FellWait
dw FadingAwait
Wait:
{
JSR ApplyDarkLinkGraphics
LDA.w SprTimerA, X : BNE .wait
LDA.b #$30 : STA.w SprTimerA, X
%ShowUnconditionalMessage($46)
%GotoAction(1)
.wait
RTS
}
ShowMessage:
{
LDA.w SprTimerA, X : BNE .wait
LDA.b #$90 : STA.w SprTimerA, X
%GotoAction(2)
.wait
RTS
}
Fall:
{
LDA.w SprTimerA, X : BNE .wait
LDA.b #$50 : STA.w SprTimerA, X
LDA #$01 : STA.w SprFrame, X
INC.w SprMiscA, X
%GotoAction(3)
.wait
RTS
}
FellWait:
{
LDA.w SprTimerA, X : BNE .wait
LDA.b #$30 : STA.w SprTimerA, X
%GotoAction(4)
.wait
RTS
}
FadingAwait:
{
LDA.w SprTimerA, X : BNE .wait
STZ.w SprState, X
.wait
RTS
}
}
; =========================================================