more DarkLink formatting
This commit is contained in:
@@ -38,47 +38,44 @@ Sprite_DarkLink_Long:
|
|||||||
|
|
||||||
; ADD GANON CODE if subtype == 05
|
; ADD GANON CODE if subtype == 05
|
||||||
LDA.w SprSubtype, X : CMP #$05 : BNE .NotGanon
|
LDA.w SprSubtype, X : CMP #$05 : BNE .NotGanon
|
||||||
JSR Sprite_Ganon_Draw
|
JSR Sprite_Ganon_Draw
|
||||||
JSL Sprite_CheckActive ; Check if game is not paused (Prevent timers from running if game is paused)
|
JSL Sprite_CheckActive ; Check if game is not paused (Prevent timers from running if game is paused)
|
||||||
BCC .SpriteIsNotActive2 ; Skip Main code is sprite is innactive
|
BCC .SpriteIsNotActive2 ; Skip Main code is sprite is innactive
|
||||||
JSR Sprite_Ganon_Main ; do ganon instead
|
JSR Sprite_Ganon_Main ; do ganon instead
|
||||||
.SpriteIsNotActive2
|
.SpriteIsNotActive2
|
||||||
PLB ; Get back the databank we stored previously
|
PLB ; Get back the databank we stored previously
|
||||||
RTL ; Go back to original code
|
RTL ; Go back to original code
|
||||||
|
|
||||||
.NotGanon
|
.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
|
; JSR Sprite_DarkLink_Draw ; Call the draw code
|
||||||
.sworddraw
|
.sword_draw
|
||||||
JSR Sprite_DarkLink_Draw_Sprite_SwordAttack_Draw
|
JSR Sprite_DarkLink_Draw_Sprite_SwordAttack_Draw
|
||||||
BRA .skipnormaldraw
|
BRA .skipnormal_draw
|
||||||
.normaldraw
|
.normal_draw
|
||||||
CMP.b #$09 : BEQ .sworddraw
|
CMP.b #$09 : BEQ .sword_draw
|
||||||
LDA.w SprSubtype, X : BNE .skipnormaldraw
|
LDA.w SprSubtype, X : BNE .skipnormal_draw
|
||||||
JSR Sprite_DarkLink_Draw
|
JSR Sprite_DarkLink_Draw
|
||||||
.skipnormaldraw
|
.skipnormal_draw
|
||||||
|
|
||||||
LDA.w SprAction, X : CMP.b #11 : BCS .notdying
|
LDA.w SprAction, X : CMP.b #11 : BCS .notdying
|
||||||
LDA.w SprHealth, X : CMP.b #$10 : 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
|
||||||
|
%GotoAction(15) ; enraging instead
|
||||||
|
BRA .SpriteIsNotActive
|
||||||
|
+
|
||||||
|
|
||||||
LDA.w SprMiscC, X : BNE +
|
LDA #$30 : STA.w SprTimerA, X
|
||||||
; check if action is 00 otherwise wait
|
LDA #$08 : STA.w SprTimerB, X
|
||||||
LDA.w SprAction, X : BNE .notdying
|
STZ.w SprFrame, X
|
||||||
; enraging instead
|
STZ.w SprMiscF, X
|
||||||
%GotoAction(15)
|
STZ.w SprMiscD, X
|
||||||
BRA .SpriteIsNotActive
|
%GotoAction(11)
|
||||||
+
|
BRA .SpriteIsNotActive
|
||||||
|
|
||||||
LDA #$30 : STA.w SprTimerA, X
|
|
||||||
LDA #$08 : STA.w SprTimerB, X
|
|
||||||
STZ.w SprFrame, X
|
|
||||||
STZ.w SprMiscF, X
|
|
||||||
STZ.w SprMiscD, X
|
|
||||||
%GotoAction(11)
|
|
||||||
BRA .SpriteIsNotActive
|
|
||||||
.notdying
|
.notdying
|
||||||
|
|
||||||
|
|
||||||
JSL Sprite_CheckActive ; Check if game is not paused
|
JSL Sprite_CheckActive ; Check if game is not paused
|
||||||
BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive
|
BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive
|
||||||
|
|
||||||
@@ -96,12 +93,11 @@ Sprite_DarkLink_Prep:
|
|||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
|
|
||||||
REP #$20 ; P is still on stack, so we don't even need to fix this
|
REP #$20 ; P is still on stack, so we don't even need to fix this
|
||||||
LDX #$20
|
LDX #$20
|
||||||
--
|
--
|
||||||
LDA dlinkPal, X : STA $7EC600, X
|
LDA DarkLink_Palette, X : STA $7EC600, X
|
||||||
DEX : DEX : BNE --
|
DEX : DEX : BNE --
|
||||||
INC $15 ;Refresh Palettes
|
INC $15 ; Refresh Palettes
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
PLB
|
PLB
|
||||||
@@ -111,27 +107,26 @@ Sprite_DarkLink_Prep:
|
|||||||
LDA #$CF : STA.w SprTimerA, X ; wait timer before falling
|
LDA #$CF : STA.w SprTimerA, X ; wait timer before falling
|
||||||
LDA #$7F : STA.w SprHeight, X
|
LDA #$7F : STA.w SprHeight, X
|
||||||
|
|
||||||
%GotoAction(4)
|
|
||||||
LDA #$78 : STA.w SprX, X
|
LDA #$78 : STA.w SprX, X
|
||||||
LDA #$58 : STA.w SprY, X
|
LDA #$58 : STA.w SprY, X
|
||||||
|
|
||||||
LDA #$00 : STA.w SprMiscE, X
|
LDA #$00 : STA.w SprMiscE, X
|
||||||
LDA #$00 : STA.w SprMiscC, X ; Enraging
|
LDA #$00 : STA.w SprMiscC, X ; Enraging
|
||||||
LDA #$50 : STA.w SprHealth, X
|
LDA #$50 : STA.w SprHealth, X
|
||||||
|
%GotoAction(4)
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
dlinkPal:
|
DarkLink_Palette:
|
||||||
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$3DEF, #$6FF4
|
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$3DEF, #$6FF4
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
|
||||||
Sprite_DarkLink_Main:
|
Sprite_DarkLink_Main:
|
||||||
{
|
{
|
||||||
LDA.w SprAction, X; Load the SprAction
|
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
|
||||||
JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in
|
|
||||||
dw Handler
|
dw Handler
|
||||||
dw SwordSlash
|
dw SwordSlash
|
||||||
dw JumpBack
|
dw JumpBack
|
||||||
@@ -152,30 +147,29 @@ Sprite_DarkLink_Main:
|
|||||||
Handler:
|
Handler:
|
||||||
{
|
{
|
||||||
LDA.w SprSubtype, X : CMP #$01 : BNE +
|
LDA.w SprSubtype, X : CMP #$01 : BNE +
|
||||||
%SetTimerA(16)
|
%SetTimerA(16)
|
||||||
%GotoAction(10)
|
%GotoAction(10)
|
||||||
RTS
|
RTS
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.w SprMiscF, X : BNE .nodamage
|
LDA.w SprMiscF, X : BNE .no_damage
|
||||||
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
|
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||||
LDA.w SprTimerA, X : BNE .alreadytakingdamage
|
LDA.w SprTimerA, X : BNE .already_taking_damage
|
||||||
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
|
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
|
||||||
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
||||||
.notmoredamage
|
.not_more_damage
|
||||||
.alreadytakingdamage
|
.already_taking_damage
|
||||||
|
|
||||||
|
LDA #$20
|
||||||
LDA #$20
|
JSL Sprite_ApplySpeedTowardsPlayer
|
||||||
JSL Sprite_ApplySpeedTowardsPlayer
|
LDA.w SprXSpeed, X : EOR #$FF : STA.w SprXSpeed, X
|
||||||
LDA.w SprXSpeed, X : EOR #$FF : STA.w SprXSpeed, X
|
LDA.w SprYSpeed, X : EOR #$FF : STA.w SprYSpeed, X
|
||||||
LDA.w SprYSpeed, X : EOR #$FF : STA.w SprYSpeed, X
|
LDA.b #$10 : STA.w $0F80,X
|
||||||
LDA.b #$10 : STA.w $0F80,X
|
LDA.b #$20 : STA.w SprTimerA, X
|
||||||
LDA.b #$20 : STA.w SprTimerA, X
|
LDA #$26 : STA.w $012E
|
||||||
LDA #$26 : STA.w $012E
|
%GotoAction(8)
|
||||||
%GotoAction(8)
|
RTS
|
||||||
RTS
|
.no_damage
|
||||||
.nodamage
|
|
||||||
JSL Sprite_CheckDamageToPlayer
|
JSL Sprite_CheckDamageToPlayer
|
||||||
|
|
||||||
|
|
||||||
@@ -203,29 +197,27 @@ Sprite_DarkLink_Main:
|
|||||||
.dosword
|
.dosword
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.w SprTimerC, X : BNE ++
|
LDA.w SprTimerC, X : BNE ++
|
||||||
; attempt a slash if we can
|
; attempt a slash if we can
|
||||||
|
|
||||||
LDA.w SprMiscD, X : BNE +
|
LDA.w SprMiscD, X : BNE +
|
||||||
STZ.w SprFrame, X
|
STZ.w SprFrame, X
|
||||||
BRA .skipdirections
|
BRA .skipdirections
|
||||||
+
|
+
|
||||||
LDA.w SprMiscD, X : CMP #$01 : BNE +
|
LDA.w SprMiscD, X : CMP #$01 : BNE +
|
||||||
LDA.b #06 : STA.w SprFrame, X
|
LDA.b #06 : STA.w SprFrame, X
|
||||||
BRA .skipdirections
|
BRA .skipdirections
|
||||||
+
|
+
|
||||||
LDA.w SprMiscD, X : CMP #$02 : BNE +
|
LDA.w SprMiscD, X : CMP #$02 : BNE +
|
||||||
LDA.b #12 : STA.w SprFrame, X
|
LDA.b #12 : STA.w SprFrame, X
|
||||||
BRA .skipdirections
|
BRA .skipdirections
|
||||||
+
|
+
|
||||||
LDA.b #18 : STA.w SprFrame, X
|
LDA.b #18 : STA.w SprFrame, X
|
||||||
+
|
+
|
||||||
|
|
||||||
.skipdirections
|
.skipdirections
|
||||||
|
|
||||||
|
JSR SpawnSwordDamage
|
||||||
JSR SpawnSwordDamage
|
%GotoAction(1)
|
||||||
|
|
||||||
%GotoAction(1)
|
|
||||||
++
|
++
|
||||||
REP #$20
|
REP #$20
|
||||||
.toofarsword
|
.toofarsword
|
||||||
@@ -431,114 +423,120 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
|
|
||||||
Bomb:
|
Bomb:
|
||||||
TYX ; get back sprite index
|
{
|
||||||
|
TYX ; get back sprite index
|
||||||
|
|
||||||
;second guess itself because it can spawn too many bombs
|
;second guess itself because it can spawn too many bombs
|
||||||
LDA $1A : AND #$01 : BNE .spawn_failed ; 50/50 chances
|
LDA $1A : AND #$01 : BNE .spawn_failed ; 50/50 chances
|
||||||
|
|
||||||
LDA.b #$4A
|
LDA.b #$4A
|
||||||
LDY.b #$0B
|
LDY.b #$0B
|
||||||
JSL $1DF65F : BMI .spawn_failed
|
JSL $1DF65F : BMI .spawn_failed
|
||||||
|
|
||||||
JSL $09AE64
|
JSL $09AE64
|
||||||
|
|
||||||
; ... but once spawned, transmute it to an enemy bomb.
|
; ... but once spawned, transmute it to an enemy bomb.
|
||||||
JSL $06AD50
|
JSL $06AD50
|
||||||
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
|
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
|
||||||
STA $0E00, Y
|
STA $0E00, Y
|
||||||
.spawn_failed
|
.spawn_failed
|
||||||
RTS
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
BombThrow:
|
BombThrow:
|
||||||
TYX ; get back sprite index
|
{
|
||||||
|
TYX ; get back sprite index
|
||||||
|
|
||||||
;second guess itself because it can spawn too many bombs
|
;second guess itself because it can spawn too many bombs
|
||||||
LDA $1A : AND #$01 : BNE .spawn_failed ; 50/50 chances
|
LDA $1A : AND #$01 : BNE .spawn_failed ; 50/50 chances
|
||||||
|
|
||||||
LDA.b #$4A
|
LDA.b #$4A
|
||||||
LDY.b #$0B
|
LDY.b #$0B
|
||||||
JSL $1DF65F : BMI .spawn_failed
|
JSL $1DF65F : BMI .spawn_failed
|
||||||
JSL $09AE64
|
JSL $09AE64
|
||||||
; ... but once spawned, transmute it to an enemy bomb.
|
; ... but once spawned, transmute it to an enemy bomb.
|
||||||
JSL $06AD50
|
JSL $06AD50
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
TYX
|
TYX
|
||||||
LDA.b #$28 : JSL Sprite_ApplySpeedTowardsPlayer
|
LDA.b #$28 : JSL Sprite_ApplySpeedTowardsPlayer
|
||||||
LDA.b #$01 : STA $0DB0, X
|
LDA.b #$01 : STA $0DB0, X
|
||||||
LDA.b #$16 : STA $0F80, X
|
LDA.b #$16 : STA $0F80, X
|
||||||
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
|
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
|
||||||
STA $0E00, X
|
STA $0E00, X
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
.spawn_failed
|
.spawn_failed
|
||||||
RTS
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Cape:
|
Cape:
|
||||||
TYX ; get back sprite index
|
{
|
||||||
LDA.w SprMiscF, X : BNE +
|
TYX ; get back sprite index
|
||||||
LDA $1A : AND #$01 : BNE .nocape ; 50/50 chances
|
LDA.w SprMiscF, X : BNE +
|
||||||
+
|
LDA $1A : AND #$01 : BNE .nocape ; 50/50 chances
|
||||||
JSL $05AB9C
|
+
|
||||||
LDA.w SprMiscF, X : EOR #$01 : STA.w SprMiscF, X
|
JSL $05AB9C
|
||||||
.nocape
|
LDA.w SprMiscF, X : EOR #$01 : STA.w SprMiscF, X
|
||||||
RTS
|
.nocape
|
||||||
|
RTS
|
||||||
|
|
||||||
Walk:
|
Walk:
|
||||||
TYX ; get back sprite index
|
TYX ; get back sprite index
|
||||||
%GotoAction(7)
|
%GotoAction(7)
|
||||||
JSL GetRandomInt : AND #$1F : CLC : ADC #$18
|
JSL GetRandomInt : AND #$1F : CLC : ADC #$18
|
||||||
STA.w SprTimerA, X
|
STA.w SprTimerA, X
|
||||||
JSL GetRandomInt
|
JSL GetRandomInt
|
||||||
AND #$03
|
AND #$03
|
||||||
TAY
|
TAY
|
||||||
LDA speedTableX, Y : STA SprXSpeed, X
|
LDA speedTableX, Y : STA SprXSpeed, X
|
||||||
LDA speedTableY, Y : STA SprYSpeed, X
|
LDA speedTableY, Y : STA SprYSpeed, X
|
||||||
|
|
||||||
|
RTS
|
||||||
RTS
|
}
|
||||||
|
|
||||||
|
|
||||||
JumpAttack:
|
JumpAttack:
|
||||||
TYX ; get back sprite index
|
{
|
||||||
LDA #$20
|
TYX ; get back sprite index
|
||||||
JSL Sprite_ApplySpeedTowardsPlayer
|
LDA #$20
|
||||||
LDA.b #$28 : STA.w $0F80,X
|
JSL Sprite_ApplySpeedTowardsPlayer
|
||||||
LDA.b #$10 : STA.w SprTimerA, X
|
LDA.b #$28 : STA.w $0F80,X
|
||||||
%GotoAction(5)
|
LDA.b #$10 : STA.w SprTimerA, X
|
||||||
JSL GetRandomInt : AND #$3F : CLC : ADC #$50
|
%GotoAction(5)
|
||||||
STA.w SprTimerD, X
|
JSL GetRandomInt : AND #$3F : CLC : ADC #$50
|
||||||
; that one is popping the RTS to end sprite entirely
|
STA.w SprTimerD, X
|
||||||
;PLA : PLA
|
; that one is popping the RTS to end sprite entirely
|
||||||
RTS
|
;PLA : PLA
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SpawnSwordDamage:
|
SpawnSwordDamage:
|
||||||
|
{
|
||||||
LDA #24 : STA.w SprTimerC, X
|
LDA #24 : STA.w SprTimerC, X
|
||||||
LDA.w SprMiscC, X : BEQ +
|
LDA.w SprMiscC, X : BEQ +
|
||||||
LDA #15 : STA.w SprTimerC, X ;faster if enraged
|
LDA #15 : STA.w SprTimerC, X ;faster if enraged
|
||||||
+
|
+
|
||||||
LDA #$06 : STA.w SprTimerB, X
|
LDA #$06 : STA.w SprTimerB, X
|
||||||
LDA #$03 : STA.w $012E
|
LDA #$03 : STA.w $012E
|
||||||
|
|
||||||
|
|
||||||
LDA #$C1 ; SET THE RIGHT SPRITE ID!! ======================CHANGE========================
|
LDA #$C1 ; SPRID
|
||||||
JSL Sprite_SpawnDynamically
|
JSL Sprite_SpawnDynamically
|
||||||
JSL Sprite_SetSpawnedCoords
|
JSL Sprite_SetSpawnedCoords
|
||||||
PHX
|
PHX
|
||||||
LDA #$01 : STA.w SprSubtype, Y
|
LDA #$01 : STA.w SprSubtype, Y
|
||||||
LDA.w SprMiscD, X
|
LDA.w SprMiscD, X
|
||||||
TYX
|
TYX
|
||||||
TAY
|
TAY
|
||||||
LDA.w SprX, X : CLC : ADC.w DirOffsetX, Y : STA.w SprX, X
|
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
|
LDA.w SprY, X : CLC : ADC.w DirOffsetY, Y : STA.w SprY, X
|
||||||
|
|
||||||
|
PLX
|
||||||
PLX
|
RTS
|
||||||
RTS
|
}
|
||||||
|
|
||||||
DirOffsetX:
|
DirOffsetX:
|
||||||
db $00, $00, $0E, $F2
|
db $00, $00, $0E, $F2
|
||||||
@@ -548,12 +546,12 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
SwordSlash:
|
SwordSlash:
|
||||||
{
|
{
|
||||||
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
|
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||||
LDA.w SprTimerA, X : BNE .alreadytakingdamage
|
LDA.w SprTimerA, X : BNE .already_taking_damage
|
||||||
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
|
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
|
||||||
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
||||||
.notmoredamage
|
.not_more_damage
|
||||||
.alreadytakingdamage
|
.already_taking_damage
|
||||||
|
|
||||||
LDA #$05 : STA.w $012E ; clinking sound
|
LDA #$05 : STA.w $012E ; clinking sound
|
||||||
LDA #$20
|
LDA #$20
|
||||||
@@ -576,7 +574,7 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.nodamage
|
.no_damage
|
||||||
|
|
||||||
;LDA.w SprTimerD, X : BEQ +
|
;LDA.w SprTimerD, X : BEQ +
|
||||||
|
|
||||||
@@ -770,8 +768,6 @@ Sprite_DarkLink_Main:
|
|||||||
LDA.b #$1F : STA $012C
|
LDA.b #$1F : STA $012C
|
||||||
.nomessage
|
.nomessage
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; IF health is a certain level spawn crumbling tiles
|
; IF health is a certain level spawn crumbling tiles
|
||||||
;2, 3, 4, 5
|
;2, 3, 4, 5
|
||||||
LDA.w SprMiscC, X : BEQ .tilesAreFallingAlready
|
LDA.w SprMiscC, X : BEQ .tilesAreFallingAlready
|
||||||
@@ -807,12 +803,12 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
WalkAction:
|
WalkAction:
|
||||||
{
|
{
|
||||||
JSL Sprite_CheckDamageFromPlayer : BCC .nodamage
|
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||||
LDA.w SprTimerA, X : BNE .alreadytakingdamage
|
LDA.w SprTimerA, X : BNE .already_taking_damage
|
||||||
LDA.w $02B2 : CMP #$03 : BNE .notmoredamage
|
LDA.w $02B2 : CMP #$03 : BNE .not_more_damage
|
||||||
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
LDA.w SprHealth, X : SEC : SBC #$04 : STA.w SprHealth, X
|
||||||
.notmoredamage
|
.not_more_damage
|
||||||
.alreadytakingdamage
|
.already_taking_damage
|
||||||
|
|
||||||
LDA #$20
|
LDA #$20
|
||||||
JSL Sprite_ApplySpeedTowardsPlayer
|
JSL Sprite_ApplySpeedTowardsPlayer
|
||||||
@@ -823,10 +819,9 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
%GotoAction(8)
|
%GotoAction(8)
|
||||||
RTS
|
RTS
|
||||||
.nodamage
|
.no_damage
|
||||||
JSL Sprite_CheckDamageToPlayer
|
JSL Sprite_CheckDamageToPlayer
|
||||||
|
|
||||||
|
|
||||||
LDA.w SprTimerA, X : BNE +
|
LDA.w SprTimerA, X : BNE +
|
||||||
|
|
||||||
JSL GetRandomInt : AND #$3F : CLC : ADC #$50
|
JSL GetRandomInt : AND #$3F : CLC : ADC #$50
|
||||||
@@ -835,7 +830,6 @@ Sprite_DarkLink_Main:
|
|||||||
|
|
||||||
+
|
+
|
||||||
|
|
||||||
|
|
||||||
STZ $02 ; x direction if non zero = negative
|
STZ $02 ; x direction if non zero = negative
|
||||||
STZ $03 ; y direction
|
STZ $03 ; y direction
|
||||||
|
|
||||||
@@ -873,10 +867,8 @@ Sprite_DarkLink_Main:
|
|||||||
+
|
+
|
||||||
DEC.w SprYSpeed, X
|
DEC.w SprYSpeed, X
|
||||||
|
|
||||||
|
|
||||||
.next
|
.next
|
||||||
|
|
||||||
|
|
||||||
LDA.w SprXSpeed, X : BPL +
|
LDA.w SprXSpeed, X : BPL +
|
||||||
INC.w SprXSpeed, X
|
INC.w SprXSpeed, X
|
||||||
BRA .done
|
BRA .done
|
||||||
@@ -929,8 +921,6 @@ Sprite_DarkLink_Main:
|
|||||||
CMP #$10 : BCS + ; only check for damage if sword has reached halfway
|
CMP #$10 : BCS + ; only check for damage if sword has reached halfway
|
||||||
JSL Sprite_CheckDamageToPlayer
|
JSL Sprite_CheckDamageToPlayer
|
||||||
+
|
+
|
||||||
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -962,62 +952,66 @@ Sprite_DarkLink_Main:
|
|||||||
db $00, $02, $01, $03
|
db $00, $02, $01, $03
|
||||||
|
|
||||||
DeadDespawn:
|
DeadDespawn:
|
||||||
LDA.w SprTimerB, X : BNE +
|
{
|
||||||
LDA.b #45 : STA.w SprFrame, X
|
LDA.w SprTimerB, X : BNE +
|
||||||
|
LDA.b #45 : STA.w SprFrame, X
|
||||||
|
|
||||||
+
|
+
|
||||||
|
|
||||||
|
|
||||||
LDA.w SprTimerA, X : CMP #$28 : BCS +
|
LDA.w SprTimerA, X : CMP #$28 : BCS +
|
||||||
AND #$04
|
AND #$04
|
||||||
STA.w SprMiscF, X
|
STA.w SprMiscF, X
|
||||||
+
|
+
|
||||||
|
|
||||||
|
|
||||||
LDA.w SprTimerA, X : BNE +
|
LDA.w SprTimerA, X : BNE +
|
||||||
%GotoAction(13)
|
%GotoAction(13)
|
||||||
+
|
+
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
OpenDoor:
|
OpenDoor:
|
||||||
INC.w SprMiscF, X
|
{
|
||||||
;LDA #$1A : STA.b $11 ; ganon open door routine
|
INC.w SprMiscF, X
|
||||||
; handled by the room tag?
|
;LDA #$1A : STA.b $11 ; ganon open door routine
|
||||||
STZ.w $0DD0, X
|
; handled by the room tag?
|
||||||
|
STZ.w $0DD0, X
|
||||||
|
|
||||||
%GotoAction(14)
|
%GotoAction(14)
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
Dead:
|
Dead:
|
||||||
|
{
|
||||||
|
RTS
|
||||||
RTS
|
}
|
||||||
|
|
||||||
Enraging:
|
Enraging:
|
||||||
|
{
|
||||||
|
PHX
|
||||||
|
REP #$20 ; P is still on stack, so we don't even need to fix this
|
||||||
|
LDX #$20
|
||||||
|
--
|
||||||
|
LDA dlinkPalRed, X : STA $7EC600, X
|
||||||
|
DEX : DEX : BNE --
|
||||||
|
INC $15 ;Refresh Palettes
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
PLX
|
||||||
|
|
||||||
PHX
|
INC.w SprMiscC, X ; Enraging
|
||||||
REP #$20 ; P is still on stack, so we don't even need to fix this
|
|
||||||
LDX #$20
|
|
||||||
--
|
|
||||||
LDA dlinkPalRed, X : STA $7EC600, X
|
|
||||||
DEX : DEX : BNE --
|
|
||||||
INC $15 ;Refresh Palettes
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
PLX
|
|
||||||
|
|
||||||
INC.w SprMiscC, X ; Enraging
|
LDA #$50 : STA.w SprHealth, X
|
||||||
|
|
||||||
LDA #$50 : STA.w SprHealth, X
|
%ShowUnconditionalMessage($170)
|
||||||
|
|
||||||
%ShowUnconditionalMessage($170)
|
%GotoAction(00)
|
||||||
|
|
||||||
%GotoAction(00)
|
|
||||||
|
|
||||||
RTS
|
|
||||||
|
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
dlinkPalRed:
|
dlinkPalRed:
|
||||||
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$001D, #$6FF4
|
dw #$7FFF, #$14A5, #$2108, #$294A, #$1CF5, #$7E4E, #$001D, #$6FF4
|
||||||
@@ -1546,59 +1540,61 @@ GanonInit:
|
|||||||
|
|
||||||
Sprite_Ganon_Main:
|
Sprite_Ganon_Main:
|
||||||
{
|
{
|
||||||
LDA.w SprAction, X; Load the SprAction
|
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
|
||||||
JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in
|
|
||||||
dw Wait
|
dw Wait
|
||||||
dw ShowMessage
|
dw ShowMessage
|
||||||
dw Fall
|
dw Fall
|
||||||
dw FellWait
|
dw FellWait
|
||||||
dw FadingAwait
|
dw FadingAwait
|
||||||
|
|
||||||
|
|
||||||
Wait:
|
Wait:
|
||||||
LDA.w SprTimerA, X : BNE .wait
|
{
|
||||||
LDA.b #$30 : STA.w SprTimerA, X
|
JSR ApplyDarkLinkGraphics
|
||||||
%ShowUnconditionalMessage($46)
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
%GotoAction(1)
|
LDA.b #$30 : STA.w SprTimerA, X
|
||||||
.wait
|
%ShowUnconditionalMessage($46)
|
||||||
|
%GotoAction(1)
|
||||||
RTS
|
.wait
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
ShowMessage:
|
ShowMessage:
|
||||||
LDA.w SprTimerA, X : BNE .wait
|
{
|
||||||
LDA.b #$90 : STA.w SprTimerA, X
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
%GotoAction(2)
|
LDA.b #$90 : STA.w SprTimerA, X
|
||||||
.wait
|
%GotoAction(2)
|
||||||
|
.wait
|
||||||
RTS
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
Fall:
|
Fall:
|
||||||
LDA.w SprTimerA, X : BNE .wait
|
{
|
||||||
LDA.b #$50 : STA.w SprTimerA, X
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
LDA #$01 : STA.w SprFrame, X
|
LDA.b #$50 : STA.w SprTimerA, X
|
||||||
INC.w SprMiscA, X
|
LDA #$01 : STA.w SprFrame, X
|
||||||
%GotoAction(3)
|
INC.w SprMiscA, X
|
||||||
.wait
|
%GotoAction(3)
|
||||||
|
.wait
|
||||||
|
RTS
|
||||||
RTS
|
}
|
||||||
|
|
||||||
FellWait:
|
FellWait:
|
||||||
LDA.w SprTimerA, X : BNE .wait
|
{
|
||||||
LDA.b #$30 : STA.w SprTimerA, X
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
%GotoAction(4)
|
LDA.b #$30 : STA.w SprTimerA, X
|
||||||
.wait
|
%GotoAction(4)
|
||||||
|
.wait
|
||||||
|
RTS
|
||||||
RTS
|
}
|
||||||
|
|
||||||
FadingAwait:
|
FadingAwait:
|
||||||
LDA.w SprTimerA, X : BNE .wait
|
{
|
||||||
STZ.w SprState, X
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
.wait
|
STZ.w SprState, X
|
||||||
|
.wait
|
||||||
|
RTS
|
||||||
RTS
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user