add more explicit length suffices
This commit is contained in:
@@ -82,7 +82,7 @@ Link_FallIntoDungeon:
|
||||
STZ.w $010F
|
||||
|
||||
LDA.b #$20 : STA.b $5C
|
||||
LDA.b #$01 : STA LinkState
|
||||
LDA.b #$01 : STA.b LinkState
|
||||
LDA.b #$11 : STA.b $10
|
||||
STZ.b $11 : STZ.b $B0
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ HouseTag:
|
||||
|
||||
HouseTag_Main:
|
||||
{
|
||||
LDA StoryState
|
||||
LDA.w StoryState
|
||||
|
||||
JSL $008781
|
||||
|
||||
@@ -103,7 +103,7 @@ HouseTag_WakeUpPlayer:
|
||||
HouseTag_End:
|
||||
{
|
||||
LDA $B6 : BNE .hasMetFarore
|
||||
LDA #$00 : STA StoryState
|
||||
LDA #$00 : STA.w StoryState
|
||||
|
||||
.hasMetFarore
|
||||
RTS
|
||||
|
||||
@@ -66,7 +66,7 @@ LinkItem_CatchBottle:
|
||||
|
||||
LDA $2F : LSR A : TAY
|
||||
LDX pose_offset, Y
|
||||
LDA pose_id, X : STA $0300
|
||||
LDA.w pose_id, X : STA $0300
|
||||
LDA.b #$03 : STA $3D
|
||||
|
||||
STZ $030D, X
|
||||
@@ -86,8 +86,8 @@ LinkItem_CatchBottle:
|
||||
LDX $030D : INX : STX $030D
|
||||
LDA.b #$03 : STA $3D
|
||||
LDA $2F : LSR A : TAY
|
||||
LDA pose_offset, Y : CLC : ADC $030D : TAY
|
||||
LDA pose_id, Y : STA $0300
|
||||
LDA.w pose_offset, Y : CLC : ADC $030D : TAY
|
||||
LDA.w pose_id, Y : STA $0300
|
||||
CPX.b #$0A : BNE .bottle_exit
|
||||
|
||||
STZ $030D
|
||||
|
||||
@@ -64,8 +64,8 @@ Sprite_Kydreeok_Prep:
|
||||
LDA.b #$09 : STA.w SprBump, X ; bump damage type
|
||||
|
||||
; Cache the origin position of the sprite.
|
||||
LDA SprX, X : STA.w SprMiscA, X
|
||||
LDA SprY, X : STA.w SprMiscB, X
|
||||
LDA.w SprX, X : STA.w SprMiscA, X
|
||||
LDA.w SprY, X : STA.w SprMiscB, X
|
||||
|
||||
JSR SpawnLeftHead
|
||||
; JSR SpawnCenterHead
|
||||
@@ -86,12 +86,12 @@ Sprite_Kydreeok_Prep:
|
||||
|
||||
Sprite_Kydreeok_CheckIfDead:
|
||||
{
|
||||
LDA Offspring1_Id : TAY
|
||||
LDA.w Offspring1_Id : TAY
|
||||
LDA.w SprState, Y : BEQ .offspring1_dead
|
||||
JMP .not_dead
|
||||
.offspring1_dead
|
||||
|
||||
LDA Offspring2_Id : TAY
|
||||
LDA.w Offspring2_Id : TAY
|
||||
LDA.w SprState, Y : BEQ .offspring2_dead
|
||||
JMP .not_dead
|
||||
.offspring2_dead
|
||||
@@ -149,7 +149,7 @@ Sprite_Kydreeok_Main:
|
||||
%StartOnFrame(0)
|
||||
%PlayAnimation(0, 2, 10)
|
||||
|
||||
LDA SprMiscD, X : BNE .go
|
||||
LDA.w SprMiscD, X : BNE .go
|
||||
LDY #$00
|
||||
JSR ApplyKydreeokGraphics
|
||||
JSR ApplyPalette
|
||||
@@ -158,8 +158,8 @@ Sprite_Kydreeok_Main:
|
||||
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
LDA SprTimerA, X : BNE .continue
|
||||
TXA : STA Kydreeok_Id
|
||||
LDA.w SprTimerA, X : BNE .continue
|
||||
TXA : STA.w Kydreeok_Id
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
%GotoAction(1)
|
||||
.continue
|
||||
@@ -178,7 +178,7 @@ Sprite_Kydreeok_Main:
|
||||
JSL MoveBody
|
||||
JSR StopIfOutOfBounds
|
||||
|
||||
LDA SprTimerA, X : BNE .continue
|
||||
LDA.w SprTimerA, X : BNE .continue
|
||||
%GotoAction(2)
|
||||
.continue
|
||||
|
||||
@@ -241,14 +241,14 @@ Sprite_Kydreeok_Main:
|
||||
REP #$20
|
||||
|
||||
; Use a range of + 0x05 because being exact equal didnt trigger consistently
|
||||
LDA $20 : SBC SprCachedY : CMP.w #$FFFB : BCC .notEqualY
|
||||
LDA $20 : SBC.w SprCachedY : CMP.w #$FFFB : BCC .notEqualY
|
||||
SEP #$20
|
||||
%GotoAction(2) ; Kydreeok_MoveXandY
|
||||
BRA .notEqualX
|
||||
.notEqualY
|
||||
|
||||
; Use a range of + 0x05 because being exact equal didnt trigger consistently
|
||||
LDA $22 : SBC SprCachedX : CMP.w #$FFFB : BCC .notEqualX
|
||||
LDA $22 : SBC.w SprCachedX : CMP.w #$FFFB : BCC .notEqualX
|
||||
SEP #$20
|
||||
%GotoAction(2) ; Kydreeok_MoveXandY
|
||||
.notEqualX
|
||||
@@ -277,7 +277,7 @@ Sprite_Kydreeok_Main:
|
||||
|
||||
LDA $1C : ORA.b #$01 : STA $1C ;turn on BG2 (Body)
|
||||
; Flicker the body every other frame using the timer
|
||||
LDA SprTimerA, X : AND.b #$01 : BEQ .flicker
|
||||
LDA.w SprTimerA, X : AND.b #$01 : BEQ .flicker
|
||||
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
|
||||
.flicker
|
||||
|
||||
@@ -303,7 +303,7 @@ Sprite_Kydreeok_Main:
|
||||
|
||||
.no_space
|
||||
|
||||
LDA SprTimerA, X : BNE .continue
|
||||
LDA.w SprTimerA, X : BNE .continue
|
||||
STZ.w $0422
|
||||
STZ.w $0424
|
||||
LDA $1C : ORA.b #$01 : STA $1C ;turn on BG2 (Body)
|
||||
@@ -369,19 +369,19 @@ SpawnLeftHead:
|
||||
LDA #$CF
|
||||
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring1_Id
|
||||
TYA : STA.w Offspring1_Id
|
||||
;store the sub-type
|
||||
LDA.b #$00 : STA $0E30, Y
|
||||
|
||||
PHX
|
||||
; code that controls where to spawn the offspring.
|
||||
REP #$20
|
||||
LDA SprCachedX : SEC : SBC.w #$0010
|
||||
LDA.w SprCachedX : SEC : SBC.w #$0010
|
||||
SEP #$20
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : SEC : SBC.w #$000F
|
||||
LDA.w SprCachedY : SEC : SBC.w #$000F
|
||||
SEP #$20
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
|
||||
@@ -407,7 +407,7 @@ SpawnLeftHead:
|
||||
; LDA #$CF
|
||||
|
||||
; JSL Sprite_SpawnDynamically : BMI .return
|
||||
; TYA : STA Offspring3_Id
|
||||
; TYA : STA.w Offspring3_Id
|
||||
|
||||
; ;store the sub-type
|
||||
; LDA.b #$02 : STA $0E30, Y
|
||||
@@ -415,12 +415,12 @@ SpawnLeftHead:
|
||||
; PHX
|
||||
; ; code that controls where to spawn the offspring.
|
||||
; REP #$20
|
||||
; LDA SprCachedX : CLC : ADC.w #$0004
|
||||
; LDA.w SprCachedX : CLC : ADC.w #$0004
|
||||
; SEP #$20
|
||||
; STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
; REP #$20
|
||||
; LDA SprCachedY : SEC : SBC.w #$000F
|
||||
; LDA.w SprCachedY : SEC : SBC.w #$000F
|
||||
; SEP #$20
|
||||
; STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
|
||||
@@ -445,19 +445,19 @@ SpawnRightHead:
|
||||
{
|
||||
LDA #$CF
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring2_Id
|
||||
TYA : STA.w Offspring2_Id
|
||||
|
||||
;store the sub-type
|
||||
LDA.b #$01 : STA $0E30, Y
|
||||
PHX
|
||||
; code that controls where to spawn the offspring.
|
||||
REP #$20
|
||||
LDA SprCachedX : CLC : ADC.w #$000D
|
||||
LDA.w SprCachedX : CLC : ADC.w #$000D
|
||||
SEP #$20
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : SEC : SBC.w #$000F
|
||||
LDA.w SprCachedY : SEC : SBC.w #$000F
|
||||
SEP #$20
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
|
||||
@@ -540,7 +540,7 @@ StopIfOutOfBounds:
|
||||
{
|
||||
; Set A to 00 if outside of certain bounds
|
||||
REP #$20
|
||||
LDA SprCachedX : CMP.w #$0118 : BCS .not_out_of_bounds_Left
|
||||
LDA.w SprCachedX : CMP.w #$0118 : BCS .not_out_of_bounds_Left
|
||||
SEP #$20
|
||||
LDA.w SprXSpeed : CMP.b #$7F : BCC .not_out_of_bounds_Left
|
||||
LDA.b #-10 : STA.w SprXSpeed : STA.w SprXRound
|
||||
@@ -556,7 +556,7 @@ StopIfOutOfBounds:
|
||||
SEP #$20
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedX : CMP.w #$01D8 : BCC .not_out_of_bounds_Right
|
||||
LDA.w SprCachedX : CMP.w #$01D8 : BCC .not_out_of_bounds_Right
|
||||
SEP #$20
|
||||
LDA.w SprXSpeed : CMP.b #$80 : BCS .not_out_of_bounds_Right
|
||||
LDA.b #$00 : STA.w SprXSpeed : STA.w SprXRound
|
||||
@@ -573,7 +573,7 @@ StopIfOutOfBounds:
|
||||
|
||||
; Upper bound
|
||||
REP #$20
|
||||
LDA SprCachedY : CMP.w #$0020 : BCS .not_out_of_bounds_Up
|
||||
LDA.w SprCachedY : CMP.w #$0020 : BCS .not_out_of_bounds_Up
|
||||
SEP #$20
|
||||
LDA.w SprYSpeed : CMP.b #$7F : BCC .not_out_of_bounds_Up
|
||||
LDA.b #$00 : STA.w SprYSpeed : STA.w SprYRound
|
||||
@@ -585,7 +585,7 @@ StopIfOutOfBounds:
|
||||
SEP #$20
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : CMP.w #$00D0 : BCC .not_out_of_bounds_Down
|
||||
LDA.w SprCachedY : CMP.w #$00D0 : BCC .not_out_of_bounds_Down
|
||||
SEP #$20
|
||||
LDA.w SprYSpeed : CMP.b #$80 : BCS .not_out_of_bounds_Down
|
||||
LDA.b #-10 : STA.w SprYSpeed : STA.w SprYRound ; Reverse the direction
|
||||
|
||||
@@ -38,7 +38,7 @@ Sprite_KydreeokHead_Long:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA SprAction, X : CMP #$05 : BEQ .no_head
|
||||
LDA.w SprAction, X : CMP #$05 : BEQ .no_head
|
||||
JSR Sprite_KydreeokHead_Draw
|
||||
.no_head
|
||||
|
||||
@@ -168,7 +168,7 @@ Sprite_KydreeokHead_Main:
|
||||
|
||||
JSR KydreeokHead_RotationMove
|
||||
JSR RandomlyAttack
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
%GotoAction(0)
|
||||
.not_done
|
||||
RTS
|
||||
@@ -188,7 +188,7 @@ Sprite_KydreeokHead_Main:
|
||||
|
||||
JSR KydreeokHead_RotationMove
|
||||
JSR RandomlyAttack
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
%GotoAction(0)
|
||||
.not_done
|
||||
RTS
|
||||
@@ -204,7 +204,7 @@ Sprite_KydreeokHead_Main:
|
||||
JSR Sprite_Twinrova_FireAttack
|
||||
JSL Sprite_Move
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
LDA #$00 : STA $0DD0, X
|
||||
.not_done
|
||||
RTS
|
||||
@@ -267,19 +267,19 @@ Sprite_KydreeokHead_Damage_Flash:
|
||||
|
||||
CoordinateBasedRotation:
|
||||
{
|
||||
LDA Neck_Index : TAY
|
||||
LDA.w Neck_Index : TAY
|
||||
; JSL GetRandomInt : AND #$04 : TAY
|
||||
LDA X_Coords, Y : STA Neck1_OffsetX
|
||||
LDA X_Coords, Y : STA Neck2_OffsetX
|
||||
LDA X_Coords, Y : STA Neck3_OffsetX
|
||||
LDA Y_Coords, Y : STA Neck1_OffsetY
|
||||
LDA Y_Coords, Y : STA Neck2_OffsetY
|
||||
LDA Y_Coords, Y : STA Neck3_OffsetY
|
||||
LDA.w X_Coords, Y : STA.w Neck1_OffsetX
|
||||
LDA.w X_Coords, Y : STA.w Neck2_OffsetX
|
||||
LDA.w X_Coords, Y : STA.w Neck3_OffsetX
|
||||
LDA.w Y_Coords, Y : STA.w Neck1_OffsetY
|
||||
LDA.w Y_Coords, Y : STA.w Neck2_OffsetY
|
||||
LDA.w Y_Coords, Y : STA.w Neck3_OffsetY
|
||||
JSL GetRandomInt : AND #$3F : BNE .dont_increment
|
||||
INC.w Neck_Index
|
||||
.dont_increment
|
||||
CPY #15 : BNE .not_full
|
||||
LDA #0 : STA Neck_Index
|
||||
LDA #0 : STA.w Neck_Index
|
||||
.not_full
|
||||
RTS
|
||||
}
|
||||
@@ -357,7 +357,7 @@ RandomlyAttack:
|
||||
|
||||
MoveWithBody:
|
||||
{
|
||||
LDA Kydreeok_Id : TAY
|
||||
LDA.w Kydreeok_Id : TAY
|
||||
CPX.w Offspring2_Id : BEQ .neck2_move
|
||||
|
||||
LDA.w SprX, Y : SEC : SBC #$0F
|
||||
|
||||
@@ -79,7 +79,7 @@ Sprite_Kydrog_Main:
|
||||
Kydrog_StartCutscene:
|
||||
{
|
||||
LDA #$03 : STA $012C ; Play music
|
||||
LDA WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.b #$08 : STA.b $49 ; Auto-movement north
|
||||
|
||||
LDA.b $20 ; Link's Y Position
|
||||
|
||||
@@ -421,7 +421,7 @@ Sprite_KydrogBoss_Main:
|
||||
%RandomStalfosOffspring()
|
||||
|
||||
; Increase the Z for a bit until he is off screen
|
||||
LDA SprHeight, X : CLC : ADC.b #$04
|
||||
LDA.w SprHeight, X : CLC : ADC.b #$04
|
||||
STA.w SprHeight, X : CMP.b #$B0 : BCC .not_off_screen
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
%GotoAction($0B)
|
||||
@@ -437,17 +437,17 @@ Sprite_KydrogBoss_Main:
|
||||
|
||||
%RandomStalfosOffspring()
|
||||
|
||||
LDA SprTimerD, X : BEQ .no_track_player
|
||||
LDA.w SprTimerD, X : BEQ .no_track_player
|
||||
|
||||
LDA $20 : STA.w SprY, X
|
||||
LDA $22 : STA.w SprX, X
|
||||
; PHX : JSL $01F3EC : PLX ; Light Torch
|
||||
|
||||
LDA SprTimerD, X : BNE .wait_a_second
|
||||
LDA.w SprTimerD, X : BNE .wait_a_second
|
||||
.no_track_player
|
||||
|
||||
; Decrease the Z for a bit until he is at level with Link
|
||||
LDA SprHeight, X : SEC : SBC.b #$04 : STA.w SprHeight, X
|
||||
LDA.w SprHeight, X : SEC : SBC.b #$04 : STA.w SprHeight, X
|
||||
CMP.b #$04 : BCS .not_off_screen
|
||||
%GotoAction(1)
|
||||
.not_off_screen
|
||||
@@ -465,13 +465,13 @@ Sprite_KydrogBoss_Main:
|
||||
JSL GetRandomInt : AND.b #$3F : BNE +
|
||||
LDA.b $0D50 : CLC : ADC.b #$08 : STA $0D50
|
||||
LDA.b $0D70 : CLC : ADC.b #$02 : STA $0D70
|
||||
LDA SprTimerD, X : BNE .not_done
|
||||
LDA.w SprTimerD, X : BNE .not_done
|
||||
%GotoAction(1)
|
||||
RTS
|
||||
+
|
||||
LDA.b $0D40 : CLC : ADC.b #$08 : STA $0D40
|
||||
LDA.b $0D60 : CLC : ADC.b #$02 : STA $0D60
|
||||
LDA SprTimerD, X : BNE .not_done
|
||||
LDA.w SprTimerD, X : BNE .not_done
|
||||
%GotoAction(1)
|
||||
|
||||
.not_done
|
||||
@@ -494,29 +494,29 @@ CheckForNextPhase:
|
||||
|
||||
.phase_one
|
||||
; Check for phase two
|
||||
LDA SprHealth,X : CMP.b #$20 : BCC .phase_two
|
||||
LDA.w SprHealth,X : CMP.b #$20 : BCC .phase_two
|
||||
RTS
|
||||
|
||||
.phase_two
|
||||
LDA SprHealth,X : CMP.b #$20 : BCC .phase_three
|
||||
LDA.w SprHealth,X : CMP.b #$20 : BCC .phase_three
|
||||
LDA !KydrogPhase : CMP.b #$01 : BEQ .return
|
||||
LDA #$80 : STA $0E50, X
|
||||
LDA #$01 : STA SprAction, X
|
||||
LDA #$01 : STA.w SprAction, X
|
||||
STA !KydrogPhase
|
||||
INC.w SprFlash, X
|
||||
RTS
|
||||
|
||||
.phase_three
|
||||
LDA SprHealth,X : CMP.b #$20 : BCC .phase_four
|
||||
LDA.w SprHealth,X : CMP.b #$20 : BCC .phase_four
|
||||
LDA !KydrogPhase : CMP.b #$02 : BEQ .return
|
||||
LDA #$80 : STA $0E50, X
|
||||
LDA #$02 : STA SprAction, X
|
||||
LDA #$02 : STA.w SprAction, X
|
||||
STA !KydrogPhase
|
||||
RTS
|
||||
|
||||
.phase_four
|
||||
|
||||
LDA #$03 : STA SprAction, X
|
||||
LDA #$03 : STA.w SprAction, X
|
||||
STA !KydrogPhase
|
||||
.return
|
||||
RTS
|
||||
@@ -635,8 +635,8 @@ Kydrog_ThrowBoneAtPlayer:
|
||||
|
||||
TYX
|
||||
|
||||
LDA SprX, X : CLC : ADC.b #$10 : STA.w SprX, X
|
||||
LDA SprY, X : SEC : SBC.b #$04 : STA.w SprY, X
|
||||
LDA.w SprX, X : CLC : ADC.b #$10 : STA.w SprX, X
|
||||
LDA.w SprY, X : SEC : SBC.b #$04 : STA.w SprY, X
|
||||
|
||||
LDA.b #$20 : JSL Sprite_ApplySpeedTowardsPlayer
|
||||
|
||||
|
||||
@@ -147,11 +147,11 @@ Lanmola_Mound: ;0x01
|
||||
; ALTERNATE ENTRY POINT
|
||||
.Lanmola_SetScatterSandPosition
|
||||
|
||||
LDA SprXH, X : STA $0DC0, X
|
||||
LDA SprYH, X : STA $0EB0, X
|
||||
LDA.w SprXH, X : STA $0DC0, X
|
||||
LDA.w SprYH, X : STA $0EB0, X
|
||||
|
||||
LDA SprX, X : STA $0DE0, X
|
||||
LDA SprY, X : STA $0E70, X
|
||||
LDA.w SprX, X : STA $0DE0, X
|
||||
LDA.w SprY, X : STA $0E70, X
|
||||
|
||||
LDA.b #$4A : STA $0E00, X
|
||||
|
||||
@@ -196,13 +196,13 @@ Lanmola_Fly: ;0x02
|
||||
.dontSwitchDirections
|
||||
|
||||
LDA $0DA0, X : STA $04
|
||||
LDA SprXH, X : STA $05
|
||||
LDA.w SprXH, X : STA $05
|
||||
LDA $0DB0, X : STA $06
|
||||
LDA SprYH, X : STA $07
|
||||
LDA SprX, X : STA $00
|
||||
LDA SprXH, X : STA $01
|
||||
LDA SprY, X : STA $02
|
||||
LDA SprYH, X : STA $03
|
||||
LDA.w SprYH, X : STA $07
|
||||
LDA.w SprX, X : STA $00
|
||||
LDA.w SprXH, X : STA $01
|
||||
LDA.w SprY, X : STA $02
|
||||
LDA.w SprYH, X : STA $03
|
||||
|
||||
REP #$20
|
||||
|
||||
|
||||
@@ -292,10 +292,10 @@ Lanmola_MoveSegment:
|
||||
|
||||
; Store the current position, angle, and hieght of the sprite
|
||||
; so that we can set the other segments to them later.
|
||||
LDA SprXH, X : PHA ;high x
|
||||
LDA SprYH, X : PHA ;high y
|
||||
LDA SprX, X : PHA ;lower x
|
||||
LDA SprY, X : PHA ;lower y
|
||||
LDA.w SprXH, X : PHA ;high x
|
||||
LDA.w SprYH, X : PHA ;high y
|
||||
LDA.w SprX, X : PHA ;lower x
|
||||
LDA.w SprY, X : PHA ;lower y
|
||||
|
||||
LDA $0F70, X : PHA ;height
|
||||
LDA $0F : PHA ;angle
|
||||
|
||||
@@ -86,19 +86,19 @@ Sprite_Manhandla_Prep:
|
||||
Sprite_Manhandla_CheckForNextPhaseOrDeath:
|
||||
{
|
||||
; All three heads need to be dead before we become big chuchu
|
||||
LDA Offspring1_Id : TAY
|
||||
LDA.w Offspring1_Id : TAY
|
||||
LDA.w SprState, Y : BEQ .offspring1_dead
|
||||
JMP .not_dead
|
||||
.offspring1_dead
|
||||
LDA.b #$05 : STA.w $36
|
||||
|
||||
LDA Offspring2_Id : TAY
|
||||
LDA.w Offspring2_Id : TAY
|
||||
LDA.w SprState, Y : BEQ .offspring2_dead
|
||||
JMP .not_dead
|
||||
.offspring2_dead
|
||||
LDA.b #$06 : STA.w $36
|
||||
|
||||
LDA Offspring3_Id : TAY
|
||||
LDA.w Offspring3_Id : TAY
|
||||
LDA.w SprState, Y : BEQ .offspring3_dead
|
||||
JMP .not_dead
|
||||
.offspring3_dead
|
||||
@@ -131,36 +131,36 @@ Sprite_Manhandla_CheckForNextPhaseOrDeath:
|
||||
|
||||
macro SetLeftHeadPos()
|
||||
REP #$20
|
||||
LDA SprCachedX : SEC : SBC.w #$0016
|
||||
LDA.w SprCachedX : SEC : SBC.w #$0016
|
||||
SEP #$20
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : SEC : SBC.w #$000F
|
||||
LDA.w SprCachedY : SEC : SBC.w #$000F
|
||||
SEP #$20
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
endmacro
|
||||
|
||||
macro SetRightHeadPos()
|
||||
REP #$20
|
||||
LDA SprCachedX : CLC : ADC.w #$0016
|
||||
LDA.w SprCachedX : CLC : ADC.w #$0016
|
||||
SEP #$20
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : SEC : SBC.w #$000F
|
||||
LDA.w SprCachedY : SEC : SBC.w #$000F
|
||||
SEP #$20
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
endmacro
|
||||
|
||||
macro SetCenterHeadPos()
|
||||
REP #$20
|
||||
LDA SprCachedX
|
||||
LDA.w SprCachedX
|
||||
SEP #$20
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY
|
||||
LDA.w SprCachedY
|
||||
SEP #$20
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
endmacro
|
||||
@@ -277,11 +277,11 @@ Sprite_Manhandla_Main:
|
||||
%PlayAnimation(11, 12, 10)
|
||||
LDA $1C : ORA.b #$01 : STA $1C ;turn on BG2 (Body)
|
||||
; Flicker the body every other frame using the timer
|
||||
LDA SprTimerA, X : AND.b #$01 : BEQ .flicker
|
||||
LDA.w SprTimerA, X : AND.b #$01 : BEQ .flicker
|
||||
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
|
||||
.flicker
|
||||
|
||||
LDA SprTimerA, X : BNE .continue
|
||||
LDA.w SprTimerA, X : BNE .continue
|
||||
STZ.w $0422
|
||||
STZ.w $0424
|
||||
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
|
||||
@@ -292,7 +292,7 @@ Sprite_Manhandla_Main:
|
||||
|
||||
LDA #$88
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring3_Id
|
||||
TYA : STA.w Offspring3_Id
|
||||
|
||||
PHX
|
||||
%SetCenterHeadPos()
|
||||
@@ -423,7 +423,7 @@ Sprite_Manhandla_Move:
|
||||
STZ.w SprYSpeed : STZ.w SprXSpeed ;set velocitys to 0
|
||||
JSL MoveBody
|
||||
JSR Manhandla_StopIfOutOfBounds
|
||||
LDA SprTimerA, X : BNE .continue
|
||||
LDA.w SprTimerA, X : BNE .continue
|
||||
INC.w SprMiscC, X
|
||||
.continue
|
||||
RTS
|
||||
@@ -457,7 +457,7 @@ Sprite_Manhandla_Move:
|
||||
REP #$20
|
||||
|
||||
; Use a range of + 0x05 because being exact equal didnt trigger consistently
|
||||
LDA $20 : SBC SprCachedY : CMP.w #$FFFB : BCC .notEqualY
|
||||
LDA $20 : SBC.w SprCachedY : CMP.w #$FFFB : BCC .notEqualY
|
||||
SEP #$20
|
||||
LDA.b #$02 : STA.w SprMiscC, X
|
||||
|
||||
@@ -465,7 +465,7 @@ Sprite_Manhandla_Move:
|
||||
.notEqualY
|
||||
|
||||
; Use a range of + 0x05 because being exact equal didnt trigger consistently
|
||||
LDA $22 : SBC SprCachedX : CMP.w #$FFFB : BCC .notEqualX
|
||||
LDA $22 : SBC.w SprCachedX : CMP.w #$FFFB : BCC .notEqualX
|
||||
SEP #$20
|
||||
LDA.b #$02 : STA.w SprMiscC, X
|
||||
.notEqualX
|
||||
@@ -490,7 +490,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
{
|
||||
; Set A to 00 if outside of certain bounds
|
||||
REP #$20
|
||||
LDA SprCachedX : CMP.w #$153A : BCS .not_out_of_bounds_Left
|
||||
LDA.w SprCachedX : CMP.w #$153A : BCS .not_out_of_bounds_Left
|
||||
SEP #$20
|
||||
LDA.w SprXSpeed : CMP.b #$7F : BCC .not_out_of_bounds_Left
|
||||
LDA.b #-08 : STA.w SprXSpeed : STA.w SprXRound
|
||||
@@ -499,7 +499,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
SEP #$20
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedX : CMP.w #$15C8 : BCC .not_out_of_bounds_Right
|
||||
LDA.w SprCachedX : CMP.w #$15C8 : BCC .not_out_of_bounds_Right
|
||||
SEP #$20
|
||||
LDA.w SprXSpeed : CMP.b #$80 : BCS .not_out_of_bounds_Right
|
||||
LDA.b #$08 : STA.w SprXSpeed : STA.w SprXRound
|
||||
@@ -509,7 +509,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
|
||||
; Upper bound
|
||||
REP #$20
|
||||
LDA SprCachedY : CMP.w #$0B3A : BCS .not_out_of_bounds_Up
|
||||
LDA.w SprCachedY : CMP.w #$0B3A : BCS .not_out_of_bounds_Up
|
||||
SEP #$20
|
||||
LDA.w SprYSpeed : CMP.b #$7F : BCC .not_out_of_bounds_Up
|
||||
LDA.b #$08 : STA.w SprYSpeed : STA.w SprYRound
|
||||
@@ -518,7 +518,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
SEP #$20
|
||||
|
||||
REP #$20
|
||||
LDA SprCachedY : CMP.w #$0BA6 : BCC .not_out_of_bounds_Down
|
||||
LDA.w SprCachedY : CMP.w #$0BA6 : BCC .not_out_of_bounds_Down
|
||||
SEP #$20
|
||||
LDA.w SprYSpeed : CMP.b #$80 : BCS .not_out_of_bounds_Down
|
||||
LDA.b #-08 : STA.w SprYSpeed : STA.w SprYRound ; Reverse the direction
|
||||
@@ -854,7 +854,7 @@ SpawnLeftManhandlaHead:
|
||||
{
|
||||
LDA #$88
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring1_Id
|
||||
TYA : STA.w Offspring1_Id
|
||||
|
||||
PHX
|
||||
%SetLeftHeadPos()
|
||||
@@ -878,7 +878,7 @@ SpawnRightManhandlaHead:
|
||||
{
|
||||
LDA #$88
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring2_Id
|
||||
TYA : STA.w Offspring2_Id
|
||||
|
||||
PHX
|
||||
%SetRightHeadPos()
|
||||
@@ -901,7 +901,7 @@ SpawnCenterMandhandlaHead:
|
||||
{
|
||||
LDA #$88
|
||||
JSL Sprite_SpawnDynamically : BMI .return
|
||||
TYA : STA Offspring3_Id
|
||||
TYA : STA.w Offspring3_Id
|
||||
|
||||
PHX
|
||||
%SetCenterHeadPos()
|
||||
|
||||
@@ -58,13 +58,13 @@ Sprite_Twinrova_Long:
|
||||
|
||||
Sprite_Twinrova_CheckIfDead:
|
||||
{
|
||||
LDA SprAction, X : CMP.b #$0A : BEQ .not_dead
|
||||
LDA.w SprAction, X : CMP.b #$0A : BEQ .not_dead
|
||||
; If health is negative, set back to zero
|
||||
LDA SprHealth, X : CMP.b #$C3 : BCC .health_not_negative
|
||||
LDA.w SprHealth, X : CMP.b #$C3 : BCC .health_not_negative
|
||||
LDA.b #$00 : STA.w SprHealth, X
|
||||
|
||||
.health_not_negative
|
||||
LDA SprHealth, X : BNE .not_dead
|
||||
LDA.w SprHealth, X : BNE .not_dead
|
||||
PHX
|
||||
LDA.b #$04 : STA $0DD0, X ; Kill sprite boss style
|
||||
LDA.b #$0A : STA.w SprAction, X ; Go to Twinrova_Dead stage
|
||||
@@ -191,10 +191,10 @@ Sprite_Twinrova_Main:
|
||||
Twinrova_MoveState:
|
||||
{
|
||||
STZ.w $0360
|
||||
LDA SprHealth, X : CMP.b #$20 : BCS .phase_1
|
||||
LDA.w SprHealth, X : CMP.b #$20 : BCS .phase_1
|
||||
; -------------------------------------------
|
||||
; Phase 2
|
||||
LDA SprTimerE, X : BNE .kotake
|
||||
LDA.w SprTimerE, X : BNE .kotake
|
||||
LDA #$70 : STA.w SprTimerD, X
|
||||
%GotoAction(8) ; Koume Mode
|
||||
RTS
|
||||
@@ -293,7 +293,7 @@ Sprite_Twinrova_Main:
|
||||
LDA #$01 : STA $0360
|
||||
|
||||
LDA $0CAA : AND.b #$03 : STA $0CAA
|
||||
LDA SprTimerD, X : BNE +
|
||||
LDA.w SprTimerD, X : BNE +
|
||||
LDA $0CAA : ORA.b #$03 : STA $0CAA
|
||||
LDA.b #$40 : STA.w SprTimerD, X
|
||||
LDA $AC : BEQ .fire
|
||||
@@ -421,7 +421,7 @@ Sprite_Twinrova_Main:
|
||||
|
||||
JSR RageModeMove
|
||||
|
||||
LDA SprTimerD, X : BNE +
|
||||
LDA.w SprTimerD, X : BNE +
|
||||
LDA #$70 : STA.w SprTimerE, X
|
||||
%GotoAction(1)
|
||||
+
|
||||
@@ -455,7 +455,7 @@ Sprite_Twinrova_Main:
|
||||
JSR RestoreFloorTile
|
||||
+++
|
||||
|
||||
LDA SprTimerD, X : BNE +
|
||||
LDA.w SprTimerD, X : BNE +
|
||||
%GotoAction(1)
|
||||
+
|
||||
RTS
|
||||
@@ -479,10 +479,10 @@ Sprite_Twinrova_Main:
|
||||
RageModeMove:
|
||||
{
|
||||
; If timer is zero, determine a new movement mode
|
||||
LDA SprTimerA, X : BEQ .DetermineMovementMode
|
||||
LDA.w SprTimerA, X : BEQ .DetermineMovementMode
|
||||
|
||||
; Execute current movement mode
|
||||
LDA SprMiscA, X
|
||||
LDA.w SprMiscA, X
|
||||
CMP #$01 : BEQ .MoveTowardsPlayer
|
||||
CMP #$02 : BEQ .RandomStrafe
|
||||
CMP #$03 : BEQ .RandomDodge
|
||||
@@ -660,7 +660,7 @@ Sprite_Twinrova_FireAttack:
|
||||
; $1DBDD6 - TrinexxFire_AddFireGarnish
|
||||
AddFireGarnish:
|
||||
{
|
||||
INC.w SprDelay, X : LDA SprDelay, X : AND.b #$07 : BNE .return
|
||||
INC.w SprDelay, X : LDA.w SprDelay, X : AND.b #$07 : BNE .return
|
||||
LDA.b #$2A : JSL Sound_SetSfx2PanLong
|
||||
LDA.b #$1D : PHX : TXY : TAX : STA $00
|
||||
|
||||
@@ -699,7 +699,7 @@ Sprite_Twinrova_IceAttack:
|
||||
; $1DBD65 - TrinexxBreath_ice_add_ice_garnish
|
||||
AddIceGarnishV2:
|
||||
{
|
||||
INC.w SprDelay, X : LDA SprDelay, X : AND.b #$07 : BNE .return
|
||||
INC.w SprDelay, X : LDA.w SprDelay, X : AND.b #$07 : BNE .return
|
||||
LDA.b #$14 : JSL Sound_SetSfx3PanLong
|
||||
LDA.b #$1D : PHX : TXY : TAX : STA $00
|
||||
|
||||
@@ -1397,11 +1397,11 @@ pullpc
|
||||
|
||||
NewMantlePrep:
|
||||
{
|
||||
LDA SprY, X : CLC : ADC.b #$07 : STA.w SprY, X
|
||||
LDA SprX, X : CLC : ADC.b #$08 : STA.w SprX, X
|
||||
LDA.w SprY, X : CLC : ADC.b #$07 : STA.w SprY, X
|
||||
LDA.w SprX, X : CLC : ADC.b #$08 : STA.w SprX, X
|
||||
|
||||
LDA $7EF0DA : AND #$0F : BEQ +
|
||||
LDA SprX, X : CLC : ADC.b #$28 : STA.w SprX, X
|
||||
LDA.w SprX, X : CLC : ADC.b #$28 : STA.w SprX, X
|
||||
+
|
||||
|
||||
RTL
|
||||
|
||||
@@ -102,7 +102,7 @@ endmacro
|
||||
|
||||
Wolfos_DecideAction:
|
||||
{
|
||||
LDA SprTimerA, X : BNE .decide_new_action
|
||||
LDA.w SprTimerA, X : BNE .decide_new_action
|
||||
RTS
|
||||
.decide_new_action
|
||||
|
||||
@@ -112,10 +112,10 @@ Wolfos_DecideAction:
|
||||
LDA $0F ; x distance from player
|
||||
STA.w SprMiscB, X
|
||||
|
||||
LDA SprMiscC, X
|
||||
LDA.w SprMiscC, X
|
||||
CMP #$10 ; Check if y distance is significant
|
||||
BCS .adjust_y
|
||||
LDA SprMiscB, X
|
||||
LDA.w SprMiscB, X
|
||||
CMP #$10 ; Check if x distance is significant
|
||||
BCS .adjust_x
|
||||
|
||||
@@ -242,7 +242,7 @@ Sprite_Wolfos_Main:
|
||||
LDA #!AttackSpeed
|
||||
STA.w SprXSpeed, X
|
||||
|
||||
LDA SprTimerA, X : BNE +
|
||||
LDA.w SprTimerA, X : BNE +
|
||||
%GotoAction(2)
|
||||
+
|
||||
|
||||
@@ -259,7 +259,7 @@ Sprite_Wolfos_Main:
|
||||
LDA #-!AttackSpeed
|
||||
STA.w SprXSpeed, X
|
||||
|
||||
LDA SprTimerA, X : BNE +
|
||||
LDA.w SprTimerA, X : BNE +
|
||||
%GotoAction(3)
|
||||
+
|
||||
|
||||
@@ -273,7 +273,7 @@ Sprite_Wolfos_Main:
|
||||
STZ.w SprYSpeed, X
|
||||
|
||||
; Run the dialogue and wait for a song of healing flag to be set
|
||||
LDA SprMiscD, X : BNE .wait
|
||||
LDA.w SprMiscD, X : BNE .wait
|
||||
%ShowUnconditionalMessage($23)
|
||||
LDA.b #$01 : STA.w SprMiscD, X
|
||||
.wait
|
||||
@@ -295,7 +295,7 @@ Sprite_Wolfos_Main:
|
||||
{
|
||||
LDA.b #16 : STA.w SprFrame, X
|
||||
|
||||
LDA SprTimerD, X : BNE .wait
|
||||
LDA.w SprTimerD, X : BNE .wait
|
||||
LDA.b #$01 : STA.w BRANDISH
|
||||
%ShowUnconditionalMessage($10F)
|
||||
LDA.b #$01 : STA.l $7EF358
|
||||
@@ -309,7 +309,7 @@ Sprite_Wolfos_Main:
|
||||
STZ.w SprXSpeed, X
|
||||
STZ.w SprYSpeed, X
|
||||
|
||||
LDA SprTimerD, X : BNE .dismiss
|
||||
LDA.w SprTimerD, X : BNE .dismiss
|
||||
LDA.b #$00 : STA $0DD0, X ; kill sprite normal style
|
||||
STZ.w SprAction, X
|
||||
STZ.w SprHealth, X
|
||||
|
||||
@@ -108,7 +108,7 @@ Sprite_AntiKirby_Main:
|
||||
AntiKirby_Main:
|
||||
{
|
||||
; Check health
|
||||
LDA SprHealth, X : CMP.b #$01 : BCS .NotDead
|
||||
LDA.w SprHealth, X : CMP.b #$01 : BCS .NotDead
|
||||
%GotoAction(4)
|
||||
RTS
|
||||
.NotDead
|
||||
@@ -141,7 +141,7 @@ Sprite_AntiKirby_Main:
|
||||
{
|
||||
%PlayAnimation(3, 3, 10) ; Hurt
|
||||
|
||||
LDA SprTimerA, X : BNE .NotDone
|
||||
LDA.w SprTimerA, X : BNE .NotDone
|
||||
%GotoAction(0)
|
||||
.NotDone
|
||||
|
||||
@@ -245,7 +245,7 @@ Sprite_AntiKirby_Main:
|
||||
AntiKirby_HattedHurt:
|
||||
{
|
||||
%PlayAnimation(9, 9, 10)
|
||||
LDA SprTimerA, X : BNE .NotDone
|
||||
LDA.w SprTimerA, X : BNE .NotDone
|
||||
%GotoAction(5)
|
||||
.NotDone
|
||||
RTS
|
||||
@@ -333,7 +333,7 @@ Sprite_AntiKirby_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA.w SprGfx, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
|
||||
LDA.w SprFlash, X : STA $08
|
||||
|
||||
@@ -191,7 +191,7 @@ Sprite_Booki_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA.w SprGfx, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
|
||||
LDA.w SprFlash, X : STA $08
|
||||
|
||||
@@ -55,7 +55,7 @@ Sprite_DekuScrubEnemy_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA SprSubtype, X : CMP.b #$01 : BEQ .pea_shot
|
||||
LDA.w SprSubtype, X : CMP.b #$01 : BEQ .pea_shot
|
||||
CMP.b #$02 : BEQ .cutscene_scrub
|
||||
JMP +
|
||||
.pea_shot
|
||||
@@ -109,8 +109,8 @@ Sprite_DekuScrubEnemy_Main:
|
||||
; Check if the player is too close
|
||||
LDA $22 : STA $02
|
||||
LDA $20 : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP.b #$24 : BCC .too_close
|
||||
; The player is below the scrub, so it should pop up
|
||||
LDA #$20 : STA.w SprTimerA, X
|
||||
@@ -129,16 +129,16 @@ Sprite_DekuScrubEnemy_Main:
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
JSR CheckForPeaShotRedirect
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
JSR SpawnPeaShot
|
||||
LDA #$F0 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
|
||||
LDA POSX : STA $02
|
||||
LDA POSY : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w POSX : STA $02
|
||||
LDA.w POSY : STA $03
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP #$18 : BCS .not_too_close
|
||||
%GotoAction(0)
|
||||
.not_too_close
|
||||
@@ -170,7 +170,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
; Play the spinning animation for a bit before proceeding
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
@@ -186,7 +186,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
%SetHarmless(1)
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
@@ -306,7 +306,7 @@ KillPeaShot:
|
||||
{
|
||||
; Kill the pea shot
|
||||
PHX
|
||||
LDA Offspring1_Id : TAX
|
||||
LDA.w Offspring1_Id : TAX
|
||||
STZ.w $0DD0, X
|
||||
PLX
|
||||
RTS
|
||||
|
||||
@@ -57,7 +57,7 @@ Sprite_EonScrub_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub
|
||||
LDA.w SprSubtype, X : CMP #$01 : BNE .normal_scrub
|
||||
LDA.b #$06 : STA.w SprAction, X ; Pea Shot State
|
||||
LDA.b #$20 : STA.b SprPrize, X
|
||||
.normal_scrub
|
||||
@@ -101,8 +101,8 @@ Sprite_EonScrub_Main:
|
||||
; Check if the player is too close
|
||||
LDA $22 : STA $02
|
||||
LDA $20 : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP.b #$24 : BCC .too_close
|
||||
; The player is below the scrub, so it should pop up
|
||||
LDA #$20 : STA.w SprTimerA, X
|
||||
@@ -120,16 +120,16 @@ Sprite_EonScrub_Main:
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
JSR CheckForPeaShotRedirect
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
JSR EonScrub_SpawnPeaShot
|
||||
LDA #$F0 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
|
||||
LDA POSX : STA $02
|
||||
LDA POSY : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w POSX : STA $02
|
||||
LDA.w POSY : STA $03
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP #$18 : BCS .not_too_close
|
||||
%GotoAction(0)
|
||||
.not_too_close
|
||||
@@ -156,7 +156,7 @@ Sprite_EonScrub_Main:
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
; Play the spinning animation for a bit before proceeding
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
@@ -170,7 +170,7 @@ Sprite_EonScrub_Main:
|
||||
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
%SetHarmless(1)
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
|
||||
@@ -387,7 +387,7 @@ Sprite_Boomerang_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA.w SprGfx, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
LDA.w SprFlash, X : STA $08
|
||||
|
||||
|
||||
@@ -279,10 +279,10 @@ Sprite_Chuchu_Move:
|
||||
RecoilFromPlayer:
|
||||
{
|
||||
JSL GetRandomInt : AND.b #$02 : STA $09 ; Speed
|
||||
LDA SprX, X : CLC : ADC $09 : STA $04
|
||||
LDA SprY, X : SEC : SBC $09 : STA $06
|
||||
LDA SprXH, X : ADC #$00 : STA $05
|
||||
LDA SprYH, X : ADC #$00 : STA $07
|
||||
LDA.w SprX, X : CLC : ADC $09 : STA $04
|
||||
LDA.w SprY, X : SEC : SBC $09 : STA $06
|
||||
LDA.w SprXH, X : ADC #$00 : STA $05
|
||||
LDA.w SprYH, X : ADC #$00 : STA $07
|
||||
LDA $09 : STA $00 : STA $01
|
||||
JSL Sprite_ProjectSpeedTowardsEntityLong
|
||||
|
||||
@@ -302,7 +302,7 @@ Sprite_HelmetChuchu_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA.w SprGfx, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
LDA.w SprFlash, X : STA $08
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ Sprite_PolsVoice_Main:
|
||||
|
||||
%DoDamageToPlayerSameLayerOnContact()
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA.w SprTimerA, X : BNE .not_done
|
||||
%GotoAction(0)
|
||||
.not_done
|
||||
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||
|
||||
@@ -54,7 +54,7 @@ Sprite_EonOwl_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA AreaIndex : CMP.b #$50 : BNE .not_intro
|
||||
LDA.w AreaIndex : CMP.b #$50 : BNE .not_intro
|
||||
; If Map 0x50, don't spawn after meeting Maku Tree
|
||||
LDA.l OOSPROG : AND.b #$02 : BEQ .continue
|
||||
STZ.w SprState, X
|
||||
@@ -83,10 +83,10 @@ Sprite_EonOwl_Main:
|
||||
{
|
||||
%PlayAnimation(0,1,16)
|
||||
|
||||
LDA POSX : STA $02
|
||||
LDA POSY : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w POSX : STA $02
|
||||
LDA.w POSY : STA $03
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP #$28 : BCS .not_too_close
|
||||
%GotoAction(1)
|
||||
.not_too_close
|
||||
|
||||
@@ -113,7 +113,7 @@ Sprite_Farore_Main:
|
||||
; 01
|
||||
MoveUpTowardsFarore:
|
||||
{
|
||||
LDA WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.b #$08 : STA.b $49 ; Auto-movement north
|
||||
|
||||
LDA.b $20 ; Link's Y Position
|
||||
@@ -130,7 +130,7 @@ Sprite_Farore_Main:
|
||||
MoveLeftTowardsFarore:
|
||||
{
|
||||
; Move Link Left
|
||||
LDA WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.b #$02 : STA.b $49
|
||||
|
||||
LDA.b $22 ; Link's X position
|
||||
@@ -178,7 +178,7 @@ Sprite_Farore_Main:
|
||||
FaroreFollowPlayer:
|
||||
{
|
||||
LDA #$01 : STA InCutScene
|
||||
LDA WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.w WALKSPEED : STA.b $57 ; Slow Link down for the cutscene
|
||||
LDA.b #$08 : STA.b $49 ; Auto-movement north
|
||||
%PlayAnimation(3, 4, 8)
|
||||
|
||||
|
||||
@@ -825,15 +825,15 @@ DrawMinecartFollower:
|
||||
JSL Sprite_SetSpawnedCoords
|
||||
LDA.w !MinecartDirection : CMP.b #$00 : BEQ .vert_adjust
|
||||
CMP.b #$02 : BEQ .vert_adjust
|
||||
LDA POSY : CLC : ADC #$08 : STA.w SprY, X
|
||||
LDA POSX : STA.w SprX, X
|
||||
LDA.w POSY : CLC : ADC #$08 : STA.w SprY, X
|
||||
LDA.w POSX : STA.w SprX, X
|
||||
JMP .finish_prep
|
||||
.vert_adjust
|
||||
LDA POSY : STA.w SprY, X
|
||||
LDA POSX : CLC : ADC #$02 : STA.w SprX, X
|
||||
LDA.w POSY : STA.w SprY, X
|
||||
LDA.w POSX : CLC : ADC #$02 : STA.w SprX, X
|
||||
.finish_prep
|
||||
LDA POSYH : STA.w SprYH, X
|
||||
LDA POSXH : STA.w SprXH, X
|
||||
LDA.w POSYH : STA.w SprYH, X
|
||||
LDA.w POSXH : STA.w SprXH, X
|
||||
LDA.w !MinecartDirection : CLC : ADC.b #$03 : STA.w SprSubtype, X
|
||||
|
||||
LDA .direction_to_anim, X : STA $0D90, X
|
||||
|
||||
@@ -108,7 +108,7 @@ Sprite_Korok_Main:
|
||||
Sprite_Korok_WalkingDown:
|
||||
{
|
||||
%PlayAnimation(0, 2, 10)
|
||||
LDA.b #KorokWalkSpeed : STA SprYSpeed, X
|
||||
LDA.b #KorokWalkSpeed : STA.w SprYSpeed, X
|
||||
JSL Sprite_Move
|
||||
LDA.w SprTimerB, X : BNE +
|
||||
JSL GetRandomInt : AND.b #$03 : STA.w SprAction, X
|
||||
@@ -119,7 +119,7 @@ Sprite_Korok_Main:
|
||||
Sprite_Korok_WalkingUp:
|
||||
{
|
||||
%PlayAnimation(3, 5, 10)
|
||||
LDA.b #-KorokWalkSpeed : STA SprYSpeed, X
|
||||
LDA.b #-KorokWalkSpeed : STA.w SprYSpeed, X
|
||||
JSL Sprite_Move
|
||||
LDA.w SprTimerB, X : BNE +
|
||||
JSL GetRandomInt : AND.b #$03 : STA.w SprAction, X
|
||||
@@ -130,7 +130,7 @@ Sprite_Korok_Main:
|
||||
Sprite_Korok_WalkingLeft:
|
||||
{
|
||||
%PlayAnimation(6, 8, 10)
|
||||
LDA.b #KorokWalkSpeed : STA SprXSpeed, X
|
||||
LDA.b #KorokWalkSpeed : STA.w SprXSpeed, X
|
||||
JSL Sprite_Move
|
||||
LDA.w SprTimerB, X : BNE +
|
||||
JSL GetRandomInt : AND.b #$03 : STA.w SprAction, X
|
||||
@@ -141,7 +141,7 @@ Sprite_Korok_Main:
|
||||
Sprite_Korok_WalkingRight:
|
||||
{
|
||||
%PlayAnimation(9, 11, 10)
|
||||
LDA.b #-KorokWalkSpeed : STA SprXSpeed, X
|
||||
LDA.b #-KorokWalkSpeed : STA.w SprXSpeed, X
|
||||
JSL Sprite_Move
|
||||
|
||||
LDA.w SprTimerB, X : BNE +
|
||||
|
||||
@@ -96,10 +96,10 @@ Sprite_MakuTree_Main:
|
||||
|
||||
MakuTree_MeetLink:
|
||||
{
|
||||
LDA POSX : STA $02
|
||||
LDA POSY : STA $03
|
||||
LDA SprX, X : STA $04
|
||||
LDA SprY, X : STA $05
|
||||
LDA.w POSX : STA $02
|
||||
LDA.w POSY : STA $03
|
||||
LDA.w SprX, X : STA $04
|
||||
LDA.w SprY, X : STA $05
|
||||
JSL GetDistance8bit_Long : CMP #$28 : BCS .not_too_close
|
||||
%ShowUnconditionalMessage($20)
|
||||
LDA.b #$01 : STA.l $7EF3D4
|
||||
|
||||
@@ -27,7 +27,7 @@ RanchGirl_Message:
|
||||
|
||||
RanchGirl_TeachSong:
|
||||
{
|
||||
LDA SprMiscD, X : CMP.b #$01 : BNE .not_started
|
||||
LDA.w SprMiscD, X : CMP.b #$01 : BNE .not_started
|
||||
LDA $10 : CMP.b #$0E : BEQ .running_dialog
|
||||
LDA $7EF34C : CMP.b #$01 : BCS .has_song
|
||||
|
||||
|
||||
@@ -60,10 +60,10 @@ Sprite_IceBlock_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
; Cache Sprite position
|
||||
LDA SprX, X : STA.w SprMiscD, X
|
||||
LDA SprY, X : STA.w SprMiscE, X
|
||||
LDA SprXH, X : STA.w SprMiscF, X
|
||||
LDA SprYH, X : STA.w SprMiscG, X
|
||||
LDA.w SprX, X : STA.w SprMiscD, X
|
||||
LDA.w SprY, X : STA.w SprMiscE, X
|
||||
LDA.w SprXH, X : STA.w SprMiscF, X
|
||||
LDA.w SprYH, X : STA.w SprMiscG, X
|
||||
|
||||
STZ.w $0CAA, X
|
||||
|
||||
@@ -101,10 +101,10 @@ Sprite_IceBlock_Main:
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayer
|
||||
BCC .no_damage
|
||||
LDA SprMiscD, X : STA.w SprX, X
|
||||
LDA SprMiscE, X : STA.w SprY, X
|
||||
LDA SprMiscF, X : STA.w SprXH, X
|
||||
LDA SprMiscG, X : STA.w SprYH, X
|
||||
LDA.w SprMiscD, X : STA.w SprX, X
|
||||
LDA.w SprMiscE, X : STA.w SprY, X
|
||||
LDA.w SprMiscF, X : STA.w SprXH, X
|
||||
LDA.w SprMiscG, X : STA.w SprYH, X
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
.no_damage
|
||||
|
||||
@@ -135,8 +135,8 @@ Sprite_IceBlock_Main:
|
||||
; STA.w SprYSpeed,X
|
||||
; JSR Statue_HandleGrab
|
||||
|
||||
LDA SprX, X : AND #$F0 : STA.w SprX, X
|
||||
LDA SprY, X : AND #$F0 : STA.w SprY, X
|
||||
LDA.w SprX, X : AND #$F0 : STA.w SprX, X
|
||||
LDA.w SprY, X : AND #$F0 : STA.w SprY, X
|
||||
RTS
|
||||
.not_in_contact
|
||||
%GotoAction(1)
|
||||
@@ -392,7 +392,7 @@ Sprite_IceBlock_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA $0DC0, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA $0DC0, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ Sprite_Minecart_Prep:
|
||||
|
||||
STZ.w !MinecartDirection
|
||||
|
||||
LDA SprSubtype, X : CMP.b #$00 : BEQ .north
|
||||
LDA.w SprSubtype, X : CMP.b #$00 : BEQ .north
|
||||
CMP.b #$01 : BEQ .east
|
||||
CMP.b #$02 : BEQ .south
|
||||
CMP.b #$03 : BEQ .west
|
||||
@@ -226,8 +226,8 @@ HandleTossedCart:
|
||||
.low_enough
|
||||
|
||||
LDA.w SprTimerC, X : BNE .not_tossed
|
||||
LDA SprX, X : AND.b #$F8 : STA.w SprX, X
|
||||
LDA SprY, X : AND.b #$F8 : STA.w SprY, X
|
||||
LDA.w SprX, X : AND.b #$F8 : STA.w SprX, X
|
||||
LDA.w SprY, X : AND.b #$F8 : STA.w SprY, X
|
||||
STZ.w SprMiscG, X
|
||||
STZ.w SprYSpeed, X
|
||||
STZ.w SprXSpeed, X
|
||||
@@ -256,8 +256,8 @@ Sprite_Minecart_Main:
|
||||
Minecart_WaitHoriz:
|
||||
{
|
||||
%PlayAnimation(0,1,8)
|
||||
LDA LinkCarryOrToss : AND #$03 : BNE .lifting
|
||||
LDA SprTimerA, X : BNE .not_ready
|
||||
LDA.w LinkCarryOrToss : AND #$03 : BNE .lifting
|
||||
LDA.w SprTimerA, X : BNE .not_ready
|
||||
JSR CheckIfPlayerIsOn : BCC .not_ready
|
||||
LDA.w SprMiscF, X : BNE .active_cart
|
||||
LDA $F4 : AND.b #$80 : BEQ .not_ready ; Check for B button
|
||||
@@ -268,7 +268,7 @@ Sprite_Minecart_Main:
|
||||
LDA #$01 : STA !LinkInCart ; Set Link in cart flag
|
||||
|
||||
; Check if the cart is facing east or west
|
||||
LDA SprSubtype, X : CMP.b #$03 : BNE .opposite_direction
|
||||
LDA.w SprSubtype, X : CMP.b #$03 : BNE .opposite_direction
|
||||
STA.w !MinecartDirection
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
%GotoAction(5) ; Minecart_MoveWest
|
||||
@@ -292,8 +292,8 @@ Sprite_Minecart_Main:
|
||||
Minecart_WaitVert:
|
||||
{
|
||||
%PlayAnimation(2,3,8)
|
||||
LDA LinkCarryOrToss : AND #$03 : BNE .lifting
|
||||
LDA SprTimerA, X : BNE .not_ready
|
||||
LDA.w LinkCarryOrToss : AND #$03 : BNE .lifting
|
||||
LDA.w SprTimerA, X : BNE .not_ready
|
||||
JSR CheckIfPlayerIsOn : BCC .not_ready
|
||||
LDA.w SprMiscF, X : BNE .active_cart
|
||||
LDA $F4 : AND.b #$80 : BEQ .not_ready ; Check for B button
|
||||
@@ -304,7 +304,7 @@ Sprite_Minecart_Main:
|
||||
LDA #$01 : STA !LinkInCart ; Set Link in cart flag
|
||||
|
||||
; Check if the cart is facing north or south
|
||||
LDA SprSubtype, X : BEQ .opposite_direction
|
||||
LDA.w SprSubtype, X : BEQ .opposite_direction
|
||||
STA.w !MinecartDirection
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
%GotoAction(4) ; Minecart_MoveSouth
|
||||
@@ -430,7 +430,7 @@ Sprite_Minecart_Main:
|
||||
{
|
||||
%StopCart()
|
||||
|
||||
LDA SprTimerD, X : BNE .not_ready
|
||||
LDA.w SprTimerD, X : BNE .not_ready
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
LDA.w !SpriteDirection, X : CMP.b #$00 : BEQ .vert
|
||||
CMP.b #$02 : BEQ .vert
|
||||
@@ -449,7 +449,7 @@ Sprite_Minecart_Main:
|
||||
|
||||
HandleTileDirections:
|
||||
{
|
||||
LDA SprTimerA, X : BEQ +
|
||||
LDA.w SprTimerA, X : BEQ +
|
||||
RTS
|
||||
+
|
||||
|
||||
@@ -533,7 +533,7 @@ HandleTileDirections:
|
||||
|
||||
.horiz
|
||||
; Are we moving left or right?
|
||||
LDA SprSubtype, X : CMP.b #$03 : BEQ .inverse_horiz_velocity
|
||||
LDA.w SprSubtype, X : CMP.b #$03 : BEQ .inverse_horiz_velocity
|
||||
LDA.b #!MinecartSpeed : STA.w SprXSpeed, X
|
||||
LDA.b #East : STA !MinecartDirection
|
||||
JMP .done
|
||||
@@ -543,7 +543,7 @@ HandleTileDirections:
|
||||
JMP .done
|
||||
.vert
|
||||
; Are we moving up or down?
|
||||
LDA SprSubtype, X : CMP.b #$00 : BEQ .inverse_vert_velocity
|
||||
LDA.w SprSubtype, X : CMP.b #$00 : BEQ .inverse_vert_velocity
|
||||
LDA.b #!MinecartSpeed : STA.w SprYSpeed, X
|
||||
JMP .done
|
||||
.inverse_vert_velocity
|
||||
@@ -551,7 +551,7 @@ HandleTileDirections:
|
||||
JMP .done
|
||||
|
||||
.check_direction
|
||||
LDA SprSubtype, X
|
||||
LDA.w SprSubtype, X
|
||||
ASL #2 ; Multiply by 4 (shifting left by 2 bits) to offset rows in the lookup table
|
||||
STA $07 ; Store the action index in $07
|
||||
|
||||
@@ -571,25 +571,25 @@ HandleTileDirections:
|
||||
LDA #$00 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
STA !SpriteDirection, X
|
||||
%GotoAction(2) ; Minecart_MoveNorth
|
||||
LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
|
||||
JMP .done
|
||||
.move_east
|
||||
LDA #$01 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
STA !MinecartDirection
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
|
||||
%GotoAction(3) ; Minecart_MoveEast
|
||||
JMP .done
|
||||
.move_south
|
||||
LDA #$02 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
%GotoAction(4) ; Minecart_MoveSouth
|
||||
LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
|
||||
JMP .done
|
||||
.move_west
|
||||
LDA #$03 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
|
||||
%GotoAction(5) ; Minecart_MoveWest
|
||||
.done
|
||||
LDA #$0F : STA.w SprTimerA, X
|
||||
@@ -634,7 +634,7 @@ HandleDynamicSwitchTileDirections:
|
||||
RTS
|
||||
|
||||
.east_or_west
|
||||
LDA SwitchRam : BNE .go_west
|
||||
LDA.w SwitchRam : BNE .go_west
|
||||
LDA #$01 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
@@ -649,7 +649,7 @@ HandleDynamicSwitchTileDirections:
|
||||
RTS
|
||||
|
||||
.north_or_south
|
||||
LDA SwitchRam : BNE .go_south
|
||||
LDA.w SwitchRam : BNE .go_south
|
||||
LDA #$00 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
STA !SpriteDirection, X
|
||||
@@ -717,7 +717,7 @@ CheckForPlayerInput:
|
||||
LDA $F0 : AND .d_pad_press, Y : STA $00 : AND.b #$08 : BEQ .not_pressing_up
|
||||
LDA.b #$00 : STA !SpriteDirection, X ; Moving Up
|
||||
LDA.b #North : STA !MinecartDirection
|
||||
STA SprSubtype, X
|
||||
STA.w SprSubtype, X
|
||||
%GotoAction(2) ; Minecart_MoveNorth
|
||||
BRA .return
|
||||
|
||||
@@ -741,7 +741,7 @@ CheckForPlayerInput:
|
||||
LDA.b $00 : AND.b #$01 : BEQ .return
|
||||
LDA.b #$03 : STA !SpriteDirection, X
|
||||
LDA.b #East : STA !MinecartDirection
|
||||
STA SprSubtype, X
|
||||
STA.w SprSubtype, X
|
||||
%GotoAction(3) ; Minecart_MoveEast
|
||||
.return
|
||||
.cant_input
|
||||
|
||||
@@ -56,7 +56,7 @@ Sprite_LeverSwitch_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.b #$00 : STA.w SprDefl, X
|
||||
LDA SprSubtype, X : STA.w SprAction, X
|
||||
LDA.w SprSubtype, X : STA.w SprAction, X
|
||||
LDA.b #$00 : STA.w SprTileDie, X
|
||||
STZ.w SprBulletproof, X
|
||||
|
||||
@@ -81,7 +81,7 @@ Sprite_LeverSwitch_Main:
|
||||
SwitchOff:
|
||||
{
|
||||
%PlayAnimation(0,0,4)
|
||||
LDA SprTimerA, X : BNE .NoDamage
|
||||
LDA.w SprTimerA, X : BNE .NoDamage
|
||||
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
||||
LDA #$25 : STA $012F
|
||||
|
||||
@@ -95,7 +95,7 @@ Sprite_LeverSwitch_Main:
|
||||
SwitchOn:
|
||||
{
|
||||
%PlayAnimation(1,1,4)
|
||||
LDA SprTimerA, X : BNE .NoDamage
|
||||
LDA.w SprTimerA, X : BNE .NoDamage
|
||||
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
||||
LDA #$25 : STA $012F
|
||||
LDA #$01 : STA $37
|
||||
|
||||
@@ -61,7 +61,7 @@ Sprite_Portal_Prep:
|
||||
|
||||
; Persist outside of camera
|
||||
LDA #$00 : STA $0CAA, X
|
||||
LDA SprHitbox, X : AND.b #$C0 : STA.w SprHitbox, X
|
||||
LDA.w SprHitbox, X : AND.b #$C0 : STA.w SprHitbox, X
|
||||
STZ.w $0B6B, X
|
||||
LDA.b #$FF : STA.w $0BA0, X
|
||||
|
||||
@@ -112,8 +112,8 @@ Sprite_Portal_Main:
|
||||
LDA $7E0FA6 : BNE .BluePortal
|
||||
LDA #$01 : STA $0307
|
||||
TXA : STA.w OrangeSpriteIndex
|
||||
LDA SprY, X : STA OrangePortal_X
|
||||
LDA SprX, X : STA OrangePortal_Y
|
||||
LDA.w SprY, X : STA.w OrangePortal_X
|
||||
LDA.w SprX, X : STA.w OrangePortal_Y
|
||||
LDA.b #$01 : STA.w SprSubtype, X
|
||||
|
||||
%GotoAction(2)
|
||||
@@ -121,8 +121,8 @@ Sprite_Portal_Main:
|
||||
.BluePortal
|
||||
LDA #$02 : STA $0307
|
||||
TXA : STA.w BlueSpriteIndex
|
||||
LDA SprY, X : STA BluePortal_X
|
||||
LDA SprX, X : STA BluePortal_Y
|
||||
LDA.w SprY, X : STA.w BluePortal_X
|
||||
LDA.w SprX, X : STA.w BluePortal_Y
|
||||
LDA.b #$02 : STA.w SprSubtype, X
|
||||
|
||||
%GotoAction(1)
|
||||
@@ -139,7 +139,7 @@ Sprite_Portal_Main:
|
||||
.not_warped_yet
|
||||
CLC
|
||||
|
||||
LDA SprTimerD, X : BNE .NoOverlap
|
||||
LDA.w SprTimerD, X : BNE .NoOverlap
|
||||
JSL Link_SetupHitBox
|
||||
JSL $0683EA ; Sprite_SetupHitbox_long
|
||||
|
||||
@@ -165,7 +165,7 @@ Sprite_Portal_Main:
|
||||
STZ $11
|
||||
.not_warped_yet
|
||||
CLC
|
||||
LDA SprTimerD, X : BNE .NoOverlap
|
||||
LDA.w SprTimerD, X : BNE .NoOverlap
|
||||
JSL Link_SetupHitBox
|
||||
JSL $0683EA ; Sprite_SetupHitbox_long
|
||||
|
||||
@@ -200,12 +200,12 @@ Sprite_Portal_Main:
|
||||
; LDA $7EC196 : STA $0616
|
||||
|
||||
PHX
|
||||
LDA OrangeSpriteIndex : TAX
|
||||
LDA.w OrangeSpriteIndex : TAX
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
LDA SprY, X : STA $7EC184
|
||||
STA BluePortal_Y
|
||||
LDA SprX, X : STA $7EC186
|
||||
STA BluePortal_X
|
||||
LDA.w SprY, X : STA $7EC184
|
||||
STA.w BluePortal_Y
|
||||
LDA.w SprX, X : STA $7EC186
|
||||
STA.w BluePortal_X
|
||||
PLX
|
||||
|
||||
LDA #$14 : STA $11
|
||||
@@ -229,12 +229,12 @@ Sprite_Portal_Main:
|
||||
; LDA $7EC196 : STA $0616
|
||||
|
||||
PHX
|
||||
LDA BlueSpriteIndex : TAX
|
||||
LDA.w BlueSpriteIndex : TAX
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
LDA SprY, X : STA $7EC184
|
||||
STA OrangePortal_Y
|
||||
LDA SprX, X : STA $7EC186
|
||||
STA OrangePortal_X
|
||||
LDA.w SprY, X : STA $7EC184
|
||||
STA.w OrangePortal_Y
|
||||
LDA.w SprX, X : STA $7EC186
|
||||
STA.w OrangePortal_X
|
||||
PLX
|
||||
|
||||
|
||||
@@ -245,8 +245,8 @@ Sprite_Portal_Main:
|
||||
|
||||
BluePortal_WarpOverworld:
|
||||
{
|
||||
LDA OrangePortal_X : STA $20
|
||||
LDA OrangePortal_Y : STA $22
|
||||
LDA.w OrangePortal_X : STA $20
|
||||
LDA.w OrangePortal_Y : STA $22
|
||||
LDA $7EC190 : STA $0610
|
||||
LDA $7EC192 : STA $0612
|
||||
LDA $7EC194 : STA $0614
|
||||
@@ -255,7 +255,7 @@ Sprite_Portal_Main:
|
||||
JSL ApplyLinksMovementToCamera
|
||||
|
||||
PHX ; Infinite loop prevention protocol
|
||||
LDA OrangeSpriteIndex : TAX
|
||||
LDA.w OrangeSpriteIndex : TAX
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
|
||||
PLX
|
||||
@@ -269,8 +269,8 @@ Sprite_Portal_Main:
|
||||
|
||||
OrangePortal_WarpOverworld:
|
||||
{
|
||||
LDA BluePortal_X : STA $20
|
||||
LDA BluePortal_Y : STA $22
|
||||
LDA.w BluePortal_X : STA $20
|
||||
LDA.w BluePortal_Y : STA $22
|
||||
LDA $7EC190 : STA $0610
|
||||
LDA $7EC192 : STA $0612
|
||||
LDA $7EC194 : STA $0614
|
||||
@@ -279,7 +279,7 @@ Sprite_Portal_Main:
|
||||
JSL ApplyLinksMovementToCamera
|
||||
|
||||
PHX
|
||||
LDA BlueSpriteIndex : TAX
|
||||
LDA.w BlueSpriteIndex : TAX
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
PLX
|
||||
|
||||
@@ -296,13 +296,13 @@ CheckForDismissPortal:
|
||||
LDA $06FE : CMP.b #$02 : BCC .return
|
||||
LDA $7E0FA6 : BEQ .DespawnOrange ; Check what portal is spawning next
|
||||
PHX
|
||||
LDA BlueSpriteIndex : TAX
|
||||
LDA.w BlueSpriteIndex : TAX
|
||||
STZ.w $0DD0, X
|
||||
DEC.w $06FE
|
||||
PLX
|
||||
.DespawnOrange
|
||||
PHX
|
||||
LDA OrangeSpriteIndex : TAX
|
||||
LDA.w OrangeSpriteIndex : TAX
|
||||
STZ.w $0DD0, X
|
||||
DEC.w $06FE
|
||||
PLX
|
||||
|
||||
@@ -56,7 +56,7 @@ Sprite_RotatingTrack_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.b #$80 : STA $0CAA, X
|
||||
LDA SprSubtype, X : STA.w SprAction,X
|
||||
LDA.w SprSubtype, X : STA.w SprAction,X
|
||||
|
||||
PLB
|
||||
RTL
|
||||
@@ -87,7 +87,7 @@ Sprite_RotatingTrack_Main:
|
||||
; 00 = TopLeft -> TopRight
|
||||
TopLeftToTopRight:
|
||||
{
|
||||
LDA SwitchRam : BNE part2
|
||||
LDA.w SwitchRam : BNE part2
|
||||
%PlayAnimation(0,0,4)
|
||||
part2:
|
||||
%PlayAnimation(1,1,4)
|
||||
@@ -98,7 +98,7 @@ Sprite_RotatingTrack_Main:
|
||||
; 01 = TopRight -> BottomRight
|
||||
TopRightToBottomRight:
|
||||
{
|
||||
LDA SwitchRam : BNE part2_a
|
||||
LDA.w SwitchRam : BNE part2_a
|
||||
%PlayAnimation(1,1,4)
|
||||
part2_a:
|
||||
%PlayAnimation(2,2,4)
|
||||
@@ -109,7 +109,7 @@ Sprite_RotatingTrack_Main:
|
||||
; 02 = BottomRight -> BottomLeft
|
||||
BottomRightToBottomLeft:
|
||||
{
|
||||
LDA SwitchRam : BNE part2_b
|
||||
LDA.w SwitchRam : BNE part2_b
|
||||
%PlayAnimation(2,2,4)
|
||||
part2_b:
|
||||
%PlayAnimation(3,3,4)
|
||||
@@ -120,7 +120,7 @@ Sprite_RotatingTrack_Main:
|
||||
; 03 = BottomLeft -> TopLeft
|
||||
BottomLeftToTopLeft:
|
||||
{
|
||||
LDA SwitchRam : BNE part2_c
|
||||
LDA.w SwitchRam : BNE part2_c
|
||||
%PlayAnimation(3,3,4)
|
||||
part2_c:
|
||||
%PlayAnimation(0,0,4)
|
||||
@@ -131,7 +131,7 @@ Sprite_RotatingTrack_Main:
|
||||
; 04 = TopRight -> TopLeft
|
||||
TopRightToTopLeft:
|
||||
{
|
||||
LDA SwitchRam : BNE part2_d
|
||||
LDA.w SwitchRam : BNE part2_d
|
||||
%StartOnFrame(1)
|
||||
%PlayAnimation(1,1,4)
|
||||
part2_d:
|
||||
|
||||
@@ -221,7 +221,7 @@ DragXH = $0B7F
|
||||
DragPlayer:
|
||||
{
|
||||
LDA.w .drag_x_low, Y : CLC : ADC.w DragYL : STA.w DragYL
|
||||
LDA.w .drag_x_high, Y : ADC.w DragYH : STA DragYH
|
||||
LDA.w .drag_x_high, Y : ADC.w DragYH : STA.w DragYH
|
||||
|
||||
LDA.w .drag_y_low, Y : CLC : ADC.w DragXL : STA.w DragXL
|
||||
LDA.w .drag_y_high, Y : ADC.w DragXH : STA.w DragXH
|
||||
@@ -229,7 +229,7 @@ DragPlayer:
|
||||
.SomariaPlatform_DragLink
|
||||
REP #$20
|
||||
|
||||
LDA SprCachedX : SEC : SBC.w #$0002
|
||||
LDA.w SprCachedX : SEC : SBC.w #$0002
|
||||
CMP $22 : BEQ .x_done : BPL .x_too_low
|
||||
DEC.w DragYL
|
||||
BRA .x_done
|
||||
@@ -238,7 +238,7 @@ DragPlayer:
|
||||
|
||||
.x_done
|
||||
; Changing the modifier adjusts links position in the cart
|
||||
LDA SprCachedY : SEC : SBC.w #$0008
|
||||
LDA.w SprCachedY : SEC : SBC.w #$0008
|
||||
CMP $20 : BEQ .y_done : BPL .y_too_low
|
||||
DEC.w DragXL
|
||||
BRA .y_done
|
||||
@@ -597,13 +597,13 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
|
||||
|
||||
REP #$20
|
||||
; if link.y is 6 above sprite.y it is considered below
|
||||
LDA SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y
|
||||
LDA.w SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y
|
||||
SEP #$20
|
||||
|
||||
JSL Sprite_IsToRightOfPlayer : BEQ .player_to_the_Right1
|
||||
;player_to_the_Left
|
||||
REP #$20
|
||||
LDA SprCachedX : SEC : SBC $22 ; delta X
|
||||
LDA.w SprCachedX : SEC : SBC $22 ; delta X
|
||||
|
||||
CMP $01 : BCS .XGreaterThanY1
|
||||
;YGreaterThanX
|
||||
@@ -620,7 +620,7 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
|
||||
|
||||
.player_to_the_Right1
|
||||
REP #$20
|
||||
LDA $22 : SEC : SBC SprCachedX ; delta X
|
||||
LDA $22 : SEC : SBC.w SprCachedX ; delta X
|
||||
|
||||
CMP $01 : BCS .XGreaterThanY2
|
||||
;YGreaterThanX
|
||||
@@ -639,13 +639,13 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
|
||||
.player_below
|
||||
REP #$20
|
||||
; if link.y is 6 above sprite.y it is considered below
|
||||
LDA $20 : SEC : SBC SprCachedY : CLC : ADC.w #$0006 : STA $01 ; delta Y
|
||||
LDA $20 : SEC : SBC.w SprCachedY : CLC : ADC.w #$0006 : STA $01 ; delta Y
|
||||
SEP #$20
|
||||
|
||||
JSL Sprite_IsToRightOfPlayer : BEQ .player_to_the_Right2
|
||||
;player_to_the_Left
|
||||
REP #$20
|
||||
LDA SprCachedX : SEC : SBC $22 ; delta X
|
||||
LDA.w SprCachedX : SEC : SBC $22 ; delta X
|
||||
|
||||
CMP $01 : BCS .XGreaterThanY3
|
||||
;YGreaterThanX
|
||||
@@ -663,7 +663,7 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
|
||||
|
||||
.player_to_the_Right2
|
||||
REP #$20
|
||||
LDA $22 : SEC : SBC SprCachedX ; delta X
|
||||
LDA $22 : SEC : SBC.w SprCachedX ; delta X
|
||||
|
||||
CMP $01 : BCS .XGreaterThanY4
|
||||
;YGreaterThanX
|
||||
|
||||
Reference in New Issue
Block a user