add Sprite_Octorok_Move based on vanilla logic
This commit is contained in:
@@ -29,6 +29,7 @@
|
|||||||
!ImperviousArrow = 00 ; 01 = Impervious to arrows
|
!ImperviousArrow = 00 ; 01 = Impervious to arrows
|
||||||
!ImpervSwordHammer = 00 ; 01 = Impervious to sword and hammer attacks
|
!ImpervSwordHammer = 00 ; 01 = Impervious to sword and hammer attacks
|
||||||
!Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss
|
!Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss
|
||||||
|
|
||||||
%Set_Sprite_Properties(Sprite_Octorok_Prep, Sprite_Octorok_Long)
|
%Set_Sprite_Properties(Sprite_Octorok_Prep, Sprite_Octorok_Long)
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
@@ -63,6 +64,8 @@ Sprite_Octorok_Prep:
|
|||||||
|
|
||||||
Sprite_Octorok_Main:
|
Sprite_Octorok_Main:
|
||||||
{
|
{
|
||||||
|
JSR Sprite_Octorok_Move
|
||||||
|
|
||||||
LDA.w SprAction, X
|
LDA.w SprAction, X
|
||||||
JSL UseImplicitRegIndexedLocalJumpTable
|
JSL UseImplicitRegIndexedLocalJumpTable
|
||||||
|
|
||||||
@@ -70,13 +73,11 @@ Sprite_Octorok_Main:
|
|||||||
dw Octorok_MoveUp
|
dw Octorok_MoveUp
|
||||||
dw Octorok_MoveLeft
|
dw Octorok_MoveLeft
|
||||||
dw Octorok_MoveRight
|
dw Octorok_MoveRight
|
||||||
dw Octorok_Stone
|
|
||||||
|
|
||||||
Octorok_MoveDown:
|
Octorok_MoveDown:
|
||||||
{
|
{
|
||||||
%PlayAnimation(0,1,10)
|
%PlayAnimation(0,1,10)
|
||||||
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,6 +101,92 @@ Sprite_Octorok_Main:
|
|||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Sprite_Octorok_Move:
|
||||||
|
{
|
||||||
|
|
||||||
|
JSL Sprite_CheckIfRecoiling
|
||||||
|
JSL Sprite_Move
|
||||||
|
JSL Sprite_CheckDamageFromPlayer
|
||||||
|
JSL Sprite_CheckDamageToPlayer
|
||||||
|
|
||||||
|
LDA.w SprAction, X : AND.b #$01 : BNE .octorok_used_barrage
|
||||||
|
LDA.w SprMiscC, X : AND.b #$02 : ASL A : STA.b $00
|
||||||
|
INC.w SprDelay, X
|
||||||
|
LDA.w SprDelay, X
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
LSR A
|
||||||
|
AND.b #$03
|
||||||
|
ORA.b $00
|
||||||
|
STA.w SprGfx, X
|
||||||
|
|
||||||
|
LDA.w SprTimerA, X : BNE .wait
|
||||||
|
INC.w SprAction,X
|
||||||
|
|
||||||
|
LDY.w SprType,X
|
||||||
|
LDA.w .timer-8,Y : STA.w SprTimerA,X
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.wait
|
||||||
|
LDY.w SprMiscC, X
|
||||||
|
|
||||||
|
LDA.w .speed_x, Y : STA.w $0D50,X
|
||||||
|
|
||||||
|
LDA.w .speed_y, Y : STA.w $0D40,X
|
||||||
|
|
||||||
|
JSL Sprite_CheckTileCollision
|
||||||
|
LDA.w $0E70, X : BEQ .no_collision
|
||||||
|
LDA.w SprMiscC,X : EOR.b #$01 : STA.w SprMiscC,X
|
||||||
|
BRA .exit
|
||||||
|
.no_collision
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; ---------------------------------------------------------
|
||||||
|
|
||||||
|
.octorok_used_barrage
|
||||||
|
#_06CF5D: STZ.w $0D50,X
|
||||||
|
#_06CF60: STZ.w $0D40,X
|
||||||
|
|
||||||
|
LDA.w SprTimerA, X : BNE Octorock_ShootEmUp
|
||||||
|
|
||||||
|
INC.w SprAction,X
|
||||||
|
|
||||||
|
LDA.w SprMiscC,X
|
||||||
|
PHA
|
||||||
|
|
||||||
|
JSL GetRandomInt : AND.b #$3F : ADC.b #$30 : STA.w SprTimerA,X
|
||||||
|
|
||||||
|
AND.b #$03 : STA.w SprMiscC,X
|
||||||
|
|
||||||
|
PLA
|
||||||
|
CMP.w SprMiscC,X : BEQ .exit
|
||||||
|
|
||||||
|
EOR.w SprMiscC,X : BNE .exit
|
||||||
|
|
||||||
|
LDA.b #$08 : STA.w SprTimerB,X
|
||||||
|
|
||||||
|
.exit
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.direction
|
||||||
|
db 3, 2, 0, 1
|
||||||
|
|
||||||
|
.speed_x
|
||||||
|
db 24, -24, 0, 0
|
||||||
|
|
||||||
|
.speed_y
|
||||||
|
db 0, 0, 24, -24
|
||||||
|
|
||||||
|
.unused
|
||||||
|
db $01, $02, $04, $08
|
||||||
|
|
||||||
|
.timer
|
||||||
|
db 60, 128, 160, 128
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
; TODO: Make this randomized behavior to free up Sprite 0A
|
; TODO: Make this randomized behavior to free up Sprite 0A
|
||||||
Octorock_ShootEmUp:
|
Octorock_ShootEmUp:
|
||||||
|
|||||||
Reference in New Issue
Block a user