bulk replace SprX/SprY labels to all sprites, .w qualifiers on STAs
This commit is contained in:
@@ -125,10 +125,10 @@ LinkItem_FishingRod:
|
||||
LDA.b #$74
|
||||
JSL $1DF65D ; Sprite_SpawnDynamically because whatever
|
||||
|
||||
LDA.b $22 : STA.w $0D10, Y
|
||||
LDA.b $23 : STA.w $0D30, Y
|
||||
LDA.b $20 : STA.w $0D00, Y
|
||||
LDA.b $21 : STA.w $0D20, Y
|
||||
LDA.b $22 : STA.w SprX, Y
|
||||
LDA.b $23 : STA.w SprXH, Y
|
||||
LDA.b $20 : STA.w SprY, Y
|
||||
LDA.b $21 : STA.w SprYH, Y
|
||||
LDA.b #$01 : STA.w $0E70, Y ; is floater
|
||||
TYA : STA.l $7F5BA3 ; keep the index of the sprite
|
||||
TYX
|
||||
|
||||
@@ -87,14 +87,14 @@ macro SpawnPortal(x_offset, y_offset)
|
||||
REP #$20
|
||||
LDA $22 : CLC : ADC.w #<x_offset>
|
||||
SEP #$20
|
||||
STA $0D10, Y ; SprX
|
||||
XBA : STA $0D30, Y ; SprXH
|
||||
STA.w SprX, Y ; SprX
|
||||
XBA : STA.w SprXH, Y ; SprXH
|
||||
|
||||
REP #$20
|
||||
LDA $20 : CLC : ADC.w #<y_offset>
|
||||
SEP #$20
|
||||
STA $0D00, Y ; SprY
|
||||
XBA : STA $0D20, Y ; SprYH
|
||||
STA.w SprY, Y ; SprY
|
||||
XBA : STA.w SprYH, Y ; SprYH
|
||||
endmacro
|
||||
|
||||
LinkItem_FirePortal:
|
||||
|
||||
@@ -490,8 +490,8 @@ Sprite_DarkLink_Main:
|
||||
JSL GetRandomInt
|
||||
AND #$03
|
||||
TAY
|
||||
LDA speedTableX, Y : STA SprXSpeed, X
|
||||
LDA speedTableY, Y : STA SprYSpeed, X
|
||||
LDA speedTableX, Y : STA.w SprXSpeed, X
|
||||
LDA speedTableY, Y : STA.w SprYSpeed, X
|
||||
|
||||
RTS
|
||||
}
|
||||
@@ -1527,11 +1527,11 @@ GanonInit:
|
||||
LDA #$C1
|
||||
JSL Sprite_SpawnDynamically
|
||||
LDA #$05 : STA.w SprSubtype, Y
|
||||
LDA $00 : STA $0D10, Y
|
||||
LDA $01 : STA.w $0D30, Y
|
||||
LDA $00 : STA.w SprX, Y
|
||||
LDA $01 : STA.w SprXH, Y
|
||||
|
||||
LDA $02 : STA.w $0D00, Y
|
||||
LDA $03 : STA.w $0D20, Y
|
||||
LDA $02 : STA.w SprY, Y
|
||||
LDA $03 : STA.w SprYH, Y
|
||||
|
||||
LDA.b #$30 : STA.w SprTimerA, Y
|
||||
LDA #$1C : STA.w $012C
|
||||
|
||||
@@ -104,7 +104,7 @@ Sprite_Kydreeok_CheckIfDead:
|
||||
RTS
|
||||
.dead
|
||||
LDA.b #$60 : STA.w SprTimerA, X
|
||||
LDA.b #$05 : STA SprAction, X
|
||||
LDA.b #$05 : STA.w SprAction, X
|
||||
LDA.b #$13 : STA $012C
|
||||
.not_dead
|
||||
RTS
|
||||
@@ -153,7 +153,7 @@ Sprite_Kydreeok_Main:
|
||||
LDY #$00
|
||||
JSR ApplyKydreeokGraphics
|
||||
JSR ApplyPalette
|
||||
LDA.b #$01 : STA SprMiscD, X
|
||||
LDA.b #$01 : STA.w SprMiscD, X
|
||||
.go
|
||||
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
@@ -290,10 +290,10 @@ Sprite_Kydreeok_Main:
|
||||
LDA.b #$04 : STA.w $0DD0,Y
|
||||
LDA.b #$03 : STA.w $0E40,Y
|
||||
LDA.b #$0C : STA.w $0F50,Y
|
||||
LDA.w $0FD8 : STA.w $0D10,Y
|
||||
LDA.w $0FD9 : STA.w $0D30,Y
|
||||
LDA.w $0FDA : STA.w $0D00,Y
|
||||
LDA.w $0FDB : STA.w $0D20,Y
|
||||
LDA.w $0FD8 : STA.w SprX,Y
|
||||
LDA.w $0FD9 : STA.w SprXH,Y
|
||||
LDA.w $0FDA : STA.w SprY,Y
|
||||
LDA.w $0FDB : STA.w SprYH,Y
|
||||
|
||||
LDA.b #$1F
|
||||
STA.w $0DF0,Y
|
||||
@@ -543,7 +543,7 @@ StopIfOutOfBounds:
|
||||
LDA 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 SprXRound
|
||||
LDA.b #-10 : STA.w SprXSpeed : STA.w SprXRound
|
||||
LDA $19EA : SEC : SBC #$04 : STA $19EA
|
||||
LDA $19EC : SEC : SBC #$04 : STA $19EC
|
||||
LDA $19EE : SEC : SBC #$04 : STA $19EE
|
||||
@@ -559,7 +559,7 @@ StopIfOutOfBounds:
|
||||
LDA 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 SprXRound
|
||||
LDA.b #$00 : STA.w SprXSpeed : STA.w SprXRound
|
||||
LDA $19EA : CLC : ADC #$04 : STA $19EA
|
||||
LDA $19EC : CLC : ADC #$04 : STA $19EC
|
||||
LDA $19EE : CLC : ADC #$04 : STA $19EE
|
||||
@@ -576,7 +576,7 @@ StopIfOutOfBounds:
|
||||
LDA 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 SprYRound
|
||||
LDA.b #$00 : STA.w SprYSpeed : STA.w SprYRound
|
||||
LDA $19EA : SEC : SBC #$04 : STA $19EA
|
||||
LDA $19EC : SEC : SBC #$04 : STA $19EC
|
||||
LDA $19EE : SEC : SBC #$04 : STA $19EE
|
||||
@@ -588,7 +588,7 @@ StopIfOutOfBounds:
|
||||
LDA 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 SprYRound ; Reverse the direction
|
||||
LDA.b #-10 : STA.w SprYSpeed : STA.w SprYRound ; Reverse the direction
|
||||
|
||||
; Modify the neck position
|
||||
; Makes them move away from each other a bit
|
||||
|
||||
@@ -400,8 +400,8 @@ MoveWithBody:
|
||||
Neck1_Control:
|
||||
{
|
||||
; Set head pos
|
||||
LDA $19EE : STA SprX, X
|
||||
LDA $19EF : STA SprY, X
|
||||
LDA $19EE : STA.w SprX, X
|
||||
LDA $19EF : STA.w SprY, X
|
||||
|
||||
LDA.w SprX, X : STA.w SprMiscC, X
|
||||
LDA.w SprY, X : STA.w SprMiscD, X
|
||||
@@ -503,8 +503,8 @@ Neck1_Control:
|
||||
Neck2_Control:
|
||||
{
|
||||
; Set head pos
|
||||
LDA $19F4 : STA SprX, X
|
||||
LDA $19F5 : STA SprY, X
|
||||
LDA $19F4 : STA.w SprX, X
|
||||
LDA $19F5 : STA.w SprY, X
|
||||
|
||||
LDA.w SprX, X : STA.w SprMiscC, X
|
||||
LDA.w SprY, X : STA.w SprMiscD, X
|
||||
|
||||
@@ -196,7 +196,7 @@ Sprite_Kydrog_Draw:
|
||||
|
||||
TYA : LSR #2 : TAY
|
||||
|
||||
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||
LDA.b #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||
|
||||
PLY : INY
|
||||
|
||||
@@ -220,6 +220,4 @@ Sprite_Kydrog_Draw:
|
||||
db $CC, $CE, $EE, $EC, $E8, $EA
|
||||
.properties
|
||||
db $39, $39, $39, $39, $39, $39
|
||||
.sizes
|
||||
db $02, $02, $02, $02, $02, $02
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ Sprite_KydrogBoss_Prep:
|
||||
LDA.b #$80 : STA $0CAA, X
|
||||
|
||||
LDA.b #$03 : STA $0F60, X ; hitbox settings
|
||||
LDA.b #$07 : STA SprBump, X ; bump damage type
|
||||
LDA.b #$07 : STA.w SprBump, X ; bump damage type
|
||||
LDA $0E60, X : AND.b #$BF : STA $0E60, X ; Not invincible
|
||||
|
||||
JSR KydrogBoss_Set_Damage ; Set the damage table
|
||||
@@ -103,7 +103,7 @@ Sprite_KydrogBoss_Prep:
|
||||
%SetSpriteSpeedX(15)
|
||||
%SetHarmless(00)
|
||||
|
||||
LDA #$80 : STA SprTimerD, X ; intro timer
|
||||
LDA #$80 : STA.w SprTimerD, X ; intro timer
|
||||
|
||||
PLB
|
||||
RTL
|
||||
@@ -423,9 +423,9 @@ Sprite_KydrogBoss_Main:
|
||||
|
||||
; Increase the Z for a bit until he is off screen
|
||||
LDA SprHeight, X : CLC : ADC.b #$04
|
||||
STA SprHeight, X : CMP.b #$B0 : BCC .not_off_screen
|
||||
STA.w SprHeight, X : CMP.b #$B0 : BCC .not_off_screen
|
||||
;
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
%GotoAction($0B)
|
||||
.not_off_screen
|
||||
|
||||
@@ -441,15 +441,15 @@ Sprite_KydrogBoss_Main:
|
||||
|
||||
LDA SprTimerD, X : BEQ .no_track_player
|
||||
|
||||
LDA $20 : STA SprY, X
|
||||
LDA $22 : STA SprX, X
|
||||
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
|
||||
.no_track_player
|
||||
|
||||
; Decrease the Z for a bit until he is at level with Link
|
||||
LDA SprHeight, X : SEC : SBC.b #$04 : STA SprHeight, X
|
||||
LDA SprHeight, X : SEC : SBC.b #$04 : STA.w SprHeight, X
|
||||
CMP.b #$04 : BCS .not_off_screen
|
||||
%GotoAction(1)
|
||||
.not_off_screen
|
||||
@@ -669,8 +669,8 @@ Kydrog_ThrowBoneAtPlayer:
|
||||
|
||||
TYX
|
||||
|
||||
LDA SprX, X : CLC : ADC.b #$10 : STA SprX, X
|
||||
LDA SprY, X : SEC : SBC.b #$04 : STA SprY, X
|
||||
LDA SprX, X : CLC : ADC.b #$10 : STA.w SprX, X
|
||||
LDA SprY, X : SEC : SBC.b #$04 : STA.w SprY, X
|
||||
|
||||
LDA.b #$20 : JSL Sprite_ApplySpeedTowardsPlayer
|
||||
|
||||
@@ -680,13 +680,13 @@ Kydrog_ThrowBoneAtPlayer:
|
||||
|
||||
LDA.b #$48 : STA $0CAA, X
|
||||
|
||||
LDA.b #$10 : STA SprTimerC, X
|
||||
LDA.b #$10 : STA.w SprTimerC, X
|
||||
|
||||
LDA.b #$14 : STA $0F60, X
|
||||
|
||||
LDA.b #$07 : STA $0F50, X
|
||||
|
||||
LDA.b #$20 : STA SprBump, X
|
||||
LDA.b #$20 : STA.w SprBump, X
|
||||
|
||||
PLX
|
||||
|
||||
|
||||
@@ -147,11 +147,11 @@ Lanmola_Mound: ;0x01
|
||||
; ALTERNATE ENTRY POINT
|
||||
.Lanmola_SetScatterSandPosition
|
||||
|
||||
LDA $0D30, X : STA $0DC0, X
|
||||
LDA $0D20, X : STA $0EB0, X
|
||||
LDA SprXH, X : STA $0DC0, X
|
||||
LDA SprYH, X : STA $0EB0, X
|
||||
|
||||
LDA $0D10, X : STA $0DE0, X
|
||||
LDA $0D00, X : STA $0E70, X
|
||||
LDA SprX, X : STA $0DE0, X
|
||||
LDA 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 $0D30, X : STA $05
|
||||
LDA SprXH, X : STA $05
|
||||
LDA $0DB0, X : STA $06
|
||||
LDA $0D20, X : STA $07
|
||||
LDA $0D10, X : STA $00
|
||||
LDA $0D30, X : STA $01
|
||||
LDA $0D00, X : STA $02
|
||||
LDA $0D20, X : STA $03
|
||||
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
|
||||
|
||||
REP #$20
|
||||
|
||||
@@ -272,10 +272,10 @@ Lanmola_Reset: ;0x04
|
||||
|
||||
TXY
|
||||
JSL GetRandomInt : AND.b #$07 : TAX
|
||||
LDA $7EEAA8, X : STA $0D10, Y ; Get random X pos to have the lanmola fly to. ;.randXPos
|
||||
LDA $7EEAA8, X : STA.w SprX, Y ; Get random X pos to have the lanmola fly to. ;.randXPos
|
||||
|
||||
JSL GetRandomInt : AND.b #$07 : TAX
|
||||
LDA $7EEAB0, X : STA $0D00, Y ; Get random Y pos to have the lanmola fly to. ;.randYPos
|
||||
LDA $7EEAB0, X : STA.w SprY, Y ; Get random Y pos to have the lanmola fly to. ;.randYPos
|
||||
TYX
|
||||
|
||||
.wait
|
||||
@@ -348,10 +348,10 @@ Lanmola_Death: ;0x05
|
||||
|
||||
LDA.b #$1F : STA $0DF0, Y : STA $0D90, Y
|
||||
|
||||
LDA $0A : STA $0D10, Y
|
||||
LDA $0B : STA $0D30, Y
|
||||
LDA $0C : STA $0D00, Y
|
||||
LDA $0D : STA $0D20, Y
|
||||
LDA $0A : STA.w SprX, Y
|
||||
LDA $0B : STA.w SprXH, Y
|
||||
LDA $0C : STA.w SprY, Y
|
||||
LDA $0D : STA.w SprYH, Y
|
||||
|
||||
LDA.b #$03 : STA $0E40, Y
|
||||
|
||||
|
||||
@@ -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 $0D30, X : PHA ;high x
|
||||
LDA $0D20, X : PHA ;high y
|
||||
LDA $0D10, X : PHA ;lower x
|
||||
LDA $0D00, X : PHA ;lower y
|
||||
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 $0F70, X : PHA ;height
|
||||
LDA $0F : PHA ;angle
|
||||
|
||||
@@ -493,7 +493,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
LDA 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 SprXRound
|
||||
LDA.b #-08 : STA.w SprXSpeed : STA.w SprXRound
|
||||
|
||||
.not_out_of_bounds_Left
|
||||
SEP #$20
|
||||
@@ -502,7 +502,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
LDA 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 SprXRound
|
||||
LDA.b #$08 : STA.w SprXSpeed : STA.w SprXRound
|
||||
|
||||
.not_out_of_bounds_Right
|
||||
SEP #$20
|
||||
@@ -512,7 +512,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
LDA 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 SprYRound
|
||||
LDA.b #$08 : STA.w SprYSpeed : STA.w SprYRound
|
||||
|
||||
.not_out_of_bounds_Up
|
||||
SEP #$20
|
||||
@@ -521,7 +521,7 @@ Manhandla_StopIfOutOfBounds:
|
||||
LDA 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 SprYRound ; Reverse the direction
|
||||
LDA.b #-08 : STA.w SprYSpeed : STA.w SprYRound ; Reverse the direction
|
||||
|
||||
.not_out_of_bounds_Down
|
||||
SEP #$20
|
||||
@@ -817,7 +817,7 @@ Mothula_SpawnBeams:
|
||||
|
||||
LDA.b $02 : SEC : SBC.b $04
|
||||
|
||||
CLC : ADC.b #$03 : STA.w $0D00,Y
|
||||
CLC : ADC.b #$03 : STA.w SprY,Y
|
||||
|
||||
LDA.b #$10 : STA.w $0DF0,Y : STA.w $0BA0,Y
|
||||
|
||||
@@ -826,7 +826,7 @@ Mothula_SpawnBeams:
|
||||
LDX.w $0FB5
|
||||
|
||||
LDA.b $00 : CLC : ADC.w .speed_and_offset_x,X
|
||||
STA.w $0D10,Y
|
||||
STA.w SprX,Y
|
||||
|
||||
LDA.w .speed_and_offset_x,X : STA.w $0D50,Y
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ Sprite_Octoboss_Main:
|
||||
LDA.b #$49
|
||||
LDY.b #$00
|
||||
JSL Sprite_ShowMessageUnconditional
|
||||
LDA #$16 : STA SprTimerC, X
|
||||
LDA #$16 : STA.w SprTimerC, X
|
||||
INC.w SprAction, X
|
||||
+
|
||||
RTS
|
||||
@@ -919,20 +919,20 @@ SpawnBossPoof:
|
||||
LDA.b $00
|
||||
CLC
|
||||
ADC.b #$10
|
||||
STA.w $0D10,Y
|
||||
STA.w SprX,Y
|
||||
|
||||
LDA.b $01
|
||||
ADC.b #$00
|
||||
STA.w $0D30,Y
|
||||
STA.w SprXH,Y
|
||||
|
||||
LDA.b $02
|
||||
CLC
|
||||
ADC.b #$08
|
||||
STA.w $0D00,Y
|
||||
STA.w SprY,Y
|
||||
|
||||
LDA.b $03
|
||||
ADC.b #$00
|
||||
STA.w $0D20,Y
|
||||
STA.w SprYH,Y
|
||||
|
||||
LDA.b #$0F
|
||||
STA.w $0DC0,Y
|
||||
@@ -978,18 +978,18 @@ HandleMovingSplash:
|
||||
STA.l $7FF800,X
|
||||
STA.w $0FB4
|
||||
|
||||
LDA.w $0D10,Y
|
||||
LDA.w SprX,Y
|
||||
STA.l $7FF83C,X
|
||||
|
||||
LDA.w $0D30,Y
|
||||
LDA.w SprXH,Y
|
||||
STA.l $7FF878,X
|
||||
|
||||
LDA.w $0D00,Y
|
||||
LDA.w SprY,Y
|
||||
CLC
|
||||
ADC.b #$18
|
||||
STA.l $7FF81E,X
|
||||
|
||||
LDA.w $0D20,Y
|
||||
LDA.w SprYH,Y
|
||||
STA.l $7FF85A,X
|
||||
|
||||
LDA.b #$0F
|
||||
|
||||
@@ -61,13 +61,13 @@ Sprite_Twinrova_CheckIfDead:
|
||||
LDA 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.b #$00 : STA SprHealth, X
|
||||
LDA.b #$00 : STA.w SprHealth, X
|
||||
|
||||
.health_not_negative
|
||||
LDA SprHealth, X : BNE .not_dead
|
||||
PHX
|
||||
LDA.b #$04 : STA $0DD0, X ; Kill sprite boss style
|
||||
LDA.b #$0A : STA SprAction, X ; Go to Twinrova_Dead stage
|
||||
LDA.b #$0A : STA.w SprAction, X ; Go to Twinrova_Dead stage
|
||||
LDA.b #$10 : STA.w $0D90, X
|
||||
PLX
|
||||
.not_dead
|
||||
@@ -85,7 +85,7 @@ Sprite_Twinrova_Prep:
|
||||
STZ.w $0DD0, X
|
||||
|
||||
.prep_twinrova
|
||||
LDA.b #$5A : STA SprHealth, X ; Health
|
||||
LDA.b #$5A : STA.w SprHealth, X ; Health
|
||||
LDA.b #$80 : STA $0CAA, X
|
||||
LDA.b #$04 : STA $0CD2, X ; Bump damage type (4 hearts, green tunic)
|
||||
LDA $0E60, X : AND.b #$BF : STA $0E60, X ; Not invincible
|
||||
@@ -192,11 +192,11 @@ Sprite_Twinrova_Main:
|
||||
; -------------------------------------------
|
||||
; Phase 2
|
||||
LDA SprTimerE, X : BNE .kotake
|
||||
LDA #$70 : STA SprTimerD, X
|
||||
LDA #$70 : STA.w SprTimerD, X
|
||||
%GotoAction(8) ; Koume Mode
|
||||
RTS
|
||||
.kotake
|
||||
LDA #$70 : STA SprTimerD, X
|
||||
LDA #$70 : STA.w SprTimerD, X
|
||||
%GotoAction(9) ; Kotake Mode
|
||||
RTS
|
||||
|
||||
@@ -228,11 +228,11 @@ Sprite_Twinrova_Main:
|
||||
RTS
|
||||
.random_strafe
|
||||
JSL GetRandomInt : AND.b #$01 : BEQ .strafe_left
|
||||
LDA #$10 : STA SprXSpeed, X
|
||||
LDA #$10 : STA.w SprXSpeed, X
|
||||
%GotoAction(2) ; Move Forwards with strafe
|
||||
RTS
|
||||
.strafe_left
|
||||
LDA #$F0 : STA SprXSpeed, X
|
||||
LDA #$F0 : STA.w SprXSpeed, X
|
||||
%GotoAction(2) ; Move Forwards with strafe
|
||||
RTS
|
||||
|
||||
@@ -375,7 +375,7 @@ Sprite_Twinrova_Main:
|
||||
.PerformDodge
|
||||
JSR DoRandomStrafe
|
||||
LDA.b #$20 : STA.w SprTimerA, X ; Set timer for dodge duration
|
||||
LDA.b #$02 : STA SprMiscA, X ; Set state to random strafe
|
||||
LDA.b #$02 : STA.w SprMiscA, X ; Set state to random strafe
|
||||
RTS
|
||||
|
||||
.PerformRetaliate
|
||||
@@ -431,7 +431,7 @@ Sprite_Twinrova_Main:
|
||||
JSR RageModeMove
|
||||
|
||||
LDA SprTimerD, X : BNE +
|
||||
LDA #$70 : STA SprTimerE, X
|
||||
LDA #$70 : STA.w SprTimerE, X
|
||||
%GotoAction(1)
|
||||
+
|
||||
RTS
|
||||
@@ -511,24 +511,24 @@ RageModeMove:
|
||||
CMP.b #$0E
|
||||
BCC .SetRandomDodge ; 11-14 -> Random dodge
|
||||
; 15 -> Stay in place
|
||||
LDA.b #$04 : STA SprMiscA, X
|
||||
LDA.b #$30 : STA SprTimerA, X ; Set timer for 48 frames
|
||||
LDA.b #$04 : STA.w SprMiscA, X
|
||||
LDA.b #$30 : STA.w SprTimerA, X ; Set timer for 48 frames
|
||||
RTS
|
||||
BRA .StayInPlace
|
||||
|
||||
.SetMoveTowardsPlayer
|
||||
LDA.b #$01 : STA SprMiscA, X
|
||||
LDA.b #$30 : STA SprTimerA, X ; Set timer for 48 frames
|
||||
LDA.b #$01 : STA.w SprMiscA, X
|
||||
LDA.b #$30 : STA.w SprTimerA, X ; Set timer for 48 frames
|
||||
BRA .MoveTowardsPlayer
|
||||
|
||||
.SetRandomStrafe
|
||||
LDA.b #$02 : STA SprMiscA, X
|
||||
LDA.b #$30 : STA SprTimerA, X ; Set timer for 48 frames
|
||||
LDA.b #$02 : STA.w SprMiscA, X
|
||||
LDA.b #$30 : STA.w SprTimerA, X ; Set timer for 48 frames
|
||||
BRA .RandomStrafe
|
||||
|
||||
.SetRandomDodge
|
||||
LDA.b #$03 : STA SprMiscA, X
|
||||
LDA.b #$30 : STA SprTimerA, X ; Set timer for 48 frames
|
||||
LDA.b #$03 : STA.w SprMiscA, X
|
||||
LDA.b #$30 : STA.w SprTimerA, X ; Set timer for 48 frames
|
||||
BRA .RandomDodge
|
||||
|
||||
.MoveTowardsPlayer
|
||||
@@ -547,9 +547,9 @@ RageModeMove:
|
||||
JSL GetRandomInt
|
||||
AND.b #$03
|
||||
TAY
|
||||
LDA VelocityOffsets+4, Y : STA SprXSpeed, X
|
||||
LDA VelocityOffsets+4, Y : STA.w SprXSpeed, X
|
||||
INY
|
||||
LDA VelocityOffsets, Y : STA SprYSpeed, X
|
||||
LDA VelocityOffsets, Y : STA.w SprYSpeed, X
|
||||
LDA.b #$10 : STA.w SprHeight, X ; Set height
|
||||
BRA .UpdatePosition
|
||||
|
||||
@@ -565,9 +565,9 @@ RageModeMove:
|
||||
JSL GetRandomInt
|
||||
AND.b #$03
|
||||
TAY
|
||||
LDA VelocityOffsets, Y : EOR #$FF : INC : STA SprXSpeed, X
|
||||
LDA VelocityOffsets, Y : EOR #$FF : INC : STA.w SprXSpeed, X
|
||||
INY
|
||||
LDA VelocityOffsets+4, Y : EOR #$FF : INC : STA SprYSpeed, X
|
||||
LDA VelocityOffsets+4, Y : EOR #$FF : INC : STA.w SprYSpeed, X
|
||||
LDA.b #$10 : STA.w SprHeight, X ; Set height
|
||||
BRA .UpdatePosition
|
||||
|
||||
@@ -595,9 +595,9 @@ DoRandomStrafe:
|
||||
JSL GetRandomInt
|
||||
AND.b #$03
|
||||
TAY
|
||||
LDA VelocityOffsets, Y : STA SprXSpeed, X
|
||||
LDA VelocityOffsets, Y : STA.w SprXSpeed, X
|
||||
INY
|
||||
LDA VelocityOffsets+4, Y : STA SprYSpeed, X
|
||||
LDA VelocityOffsets+4, Y : STA.w SprYSpeed, X
|
||||
LDA.b #$10 : STA.w SprHeight, X ; Set height
|
||||
RTS
|
||||
}
|
||||
@@ -1085,23 +1085,23 @@ ReleaseFireballs:
|
||||
LDA.w .speed_y,Y
|
||||
STA.w $0D40,X
|
||||
|
||||
LDA.w $0D10,X
|
||||
LDA.w SprX,X
|
||||
CLC
|
||||
ADC.w .offset_x_low,Y
|
||||
STA.w $0D10,X
|
||||
STA.w SprX,X
|
||||
|
||||
LDA.w $0D30,X
|
||||
LDA.w SprXH,X
|
||||
ADC.w .offset_x_high,Y
|
||||
STA.w $0D30,X
|
||||
STA.w SprXH,X
|
||||
|
||||
LDA.w $0D00,X
|
||||
LDA.w SprY,X
|
||||
CLC
|
||||
ADC.w .offset_y_low,Y
|
||||
STA.w $0D00,X
|
||||
STA.w SprY,X
|
||||
|
||||
LDA.w $0D20,X
|
||||
LDA.w SprYH,X
|
||||
ADC.w .offset_y_high,Y
|
||||
STA.w $0D20,X
|
||||
STA.w SprYH,X
|
||||
|
||||
PLX
|
||||
|
||||
@@ -1243,10 +1243,10 @@ Blind_SpawnFromMaiden:
|
||||
LDA.b #$CE : STA.w $0E20,X
|
||||
|
||||
; Load the position cache from the maiden follower
|
||||
LDA.b $00 : STA.w $0D10,X
|
||||
LDA.b $01 : STA.w $0D30,X
|
||||
LDA.b $02 : SEC : SBC.b #$10 : STA.w $0D00,X
|
||||
LDA.b $03 : STA.w $0D20,X
|
||||
LDA.b $00 : STA.w SprX,X
|
||||
LDA.b $01 : STA.w SprXH,X
|
||||
LDA.b $02 : SEC : SBC.b #$10 : STA.w SprY,X
|
||||
LDA.b $03 : STA.w SprYH,X
|
||||
|
||||
; Removed because it was causing the sprite to disappear
|
||||
; JSL SpritePrep_LoadProperties
|
||||
@@ -1360,18 +1360,18 @@ BlindLaser_SpawnTrailGarnish:
|
||||
TYA
|
||||
STA.l $7FF92C,X
|
||||
|
||||
LDA.w $0D10,Y
|
||||
LDA.w SprX,Y
|
||||
STA.l $7FF83C,X
|
||||
|
||||
LDA.w $0D30,Y
|
||||
LDA.w SprXH,Y
|
||||
STA.l $7FF878,X
|
||||
|
||||
LDA.w $0D00,Y
|
||||
LDA.w SprY,Y
|
||||
CLC
|
||||
ADC.b #$10
|
||||
STA.l $7FF81E,X
|
||||
|
||||
LDA.w $0D20,Y
|
||||
LDA.w SprYH,Y
|
||||
ADC.b #$00
|
||||
STA.l $7FF85A,X
|
||||
|
||||
@@ -1409,11 +1409,11 @@ pullpc
|
||||
|
||||
NewMantlePrep:
|
||||
{
|
||||
LDA $0D00, X : CLC : ADC.b #$07 : STA $0D00, X
|
||||
LDA $0D10, X : CLC : ADC.b #$08 : STA $0D10, X
|
||||
LDA SprY, X : CLC : ADC.b #$07 : STA.w SprY, X
|
||||
LDA SprX, X : CLC : ADC.b #$08 : STA.w SprX, X
|
||||
|
||||
LDA $7EF0DA : AND #$0F : BEQ +
|
||||
LDA $0D10, X : CLC : ADC.b #$28 : STA $0D10, X
|
||||
LDA SprX, X : CLC : ADC.b #$28 : STA.w SprX, X
|
||||
+
|
||||
|
||||
RTL
|
||||
|
||||
@@ -73,9 +73,9 @@ Sprite_Wolfos_Prep:
|
||||
Sprite_Wolfos_CheckIfDefeated:
|
||||
{
|
||||
LDA.w SprHealth, X : CMP.b #$10 : BCS .not_defeated
|
||||
LDA.b #$06 : STA SprAction, X ; Set to defeated
|
||||
LDA.b #$09 : STA SprState, X
|
||||
LDA.b #$40 : STA SprHealth, X ; Refill the health of the sprite
|
||||
LDA.b #$06 : STA.w SprAction, X ; Set to defeated
|
||||
LDA.b #$09 : STA.w SprState, X
|
||||
LDA.b #$40 : STA.w SprHealth, X ; Refill the health of the sprite
|
||||
STZ.w SprMiscD, X
|
||||
RTS
|
||||
.not_defeated
|
||||
@@ -104,9 +104,9 @@ Wolfos_DecideAction:
|
||||
|
||||
JSL Sprite_DirectionToFacePlayer
|
||||
LDA $0E ; y distance from player
|
||||
STA SprMiscC, X
|
||||
STA.w SprMiscC, X
|
||||
LDA $0F ; x distance from player
|
||||
STA SprMiscB, X
|
||||
STA.w SprMiscB, X
|
||||
|
||||
LDA SprMiscC, X
|
||||
CMP #$10 ; Check if y distance is significant
|
||||
@@ -165,7 +165,7 @@ Sprite_Wolfos_Main:
|
||||
STA.w SprYSpeed, X
|
||||
|
||||
LDA #$30
|
||||
STA SprTimerA, X
|
||||
STA.w SprTimerA, X
|
||||
|
||||
RTS
|
||||
}
|
||||
@@ -179,7 +179,7 @@ Sprite_Wolfos_Main:
|
||||
STA.w SprYSpeed, X
|
||||
|
||||
LDA #$30
|
||||
STA SprTimerA, X
|
||||
STA.w SprTimerA, X
|
||||
|
||||
RTS
|
||||
}
|
||||
@@ -199,7 +199,7 @@ Sprite_Wolfos_Main:
|
||||
+
|
||||
|
||||
LDA #$30
|
||||
STA SprTimerA, X
|
||||
STA.w SprTimerA, X
|
||||
|
||||
RTS
|
||||
}
|
||||
@@ -219,7 +219,7 @@ Sprite_Wolfos_Main:
|
||||
+
|
||||
|
||||
LDA #$30
|
||||
STA SprTimerA, X
|
||||
STA.w SprTimerA, X
|
||||
|
||||
RTS
|
||||
}
|
||||
@@ -274,7 +274,7 @@ Sprite_Wolfos_Main:
|
||||
; Run the dialogue and wait for a song of healing flag to be set
|
||||
LDA SprMiscD, X : BNE .wait
|
||||
%ShowUnconditionalMessage($0F)
|
||||
LDA.b #$01 : STA SprMiscD, X
|
||||
LDA.b #$01 : STA.w SprMiscD, X
|
||||
.wait
|
||||
LDA $FE : BEQ .ninguna_cancion
|
||||
STZ $FE
|
||||
|
||||
@@ -62,7 +62,7 @@ Sprite_AntiKirby_Prep:
|
||||
LDY $0FFF
|
||||
LDA .bump_damage, Y : STA.w SprBump, X
|
||||
LDA .health, Y : STA.w SprHealth, X
|
||||
LDA .prize_pack, Y : STA SprPrize, X
|
||||
LDA .prize_pack, Y : STA.w SprPrize, X
|
||||
|
||||
PLB
|
||||
RTL
|
||||
@@ -115,7 +115,7 @@ Sprite_AntiKirby_Main:
|
||||
|
||||
; Randomly Suck
|
||||
JSL GetRandomInt : AND #$3F : BNE .not_done
|
||||
LDA #$04 : STA SprTimerA, X
|
||||
LDA #$04 : STA.w SprTimerA, X
|
||||
%GotoAction(2)
|
||||
RTS
|
||||
.not_done
|
||||
@@ -123,7 +123,7 @@ Sprite_AntiKirby_Main:
|
||||
%PlayAnimation(0, 2, 10) ; Start
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
|
||||
LDA #!RecoilTime : STA SprTimerA, X
|
||||
LDA #!RecoilTime : STA.w SprTimerA, X
|
||||
%GotoAction(1) ; Hurt
|
||||
RTS
|
||||
.NoDamage
|
||||
@@ -153,7 +153,7 @@ Sprite_AntiKirby_Main:
|
||||
%PlayAnimation(4, 5, 10) ; Suck
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
|
||||
LDA #!RecoilTime : STA SprTimerA, X
|
||||
LDA #!RecoilTime : STA.w SprTimerA, X
|
||||
%GotoAction(1) ; Hurt
|
||||
RTS
|
||||
.NoDamage
|
||||
@@ -235,7 +235,7 @@ Sprite_AntiKirby_Main:
|
||||
JSL Sprite_PlayerCantPassThrough
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
|
||||
LDA #!RecoilTime : STA SprTimerA, X
|
||||
LDA #!RecoilTime : STA.w SprTimerA, X
|
||||
%GotoAction(6) ; Hurt
|
||||
.NoDamage
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ Sprite_DekuScrubEnemy_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub
|
||||
LDA.b #$06 : STA SprAction, X ; Pea Shot State
|
||||
LDA.b #$06 : STA.w SprAction, X ; Pea Shot State
|
||||
LDA.b #$20 : STA.b SprPrize, X
|
||||
.normal_scrub
|
||||
|
||||
@@ -102,7 +102,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
LDA 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 SprTimerA, X
|
||||
LDA #$20 : STA.w SprTimerA, X
|
||||
%GotoAction(1)
|
||||
.too_close
|
||||
.is_below_player
|
||||
@@ -120,7 +120,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
JSR SpawnPeaShot
|
||||
LDA #$50 : STA SprTimerA, X
|
||||
LDA #$50 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
|
||||
@@ -166,7 +166,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
|
||||
; Play the spinning animation for a bit before proceeding
|
||||
LDA SprTimerA, X : BNE .not_done
|
||||
LDA #$40 : STA SprTimerA, X
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
INC.w SprAction, X
|
||||
.not_done
|
||||
|
||||
@@ -222,7 +222,7 @@ Sprite_DekuScrubEnemy_Main:
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayerLong : BCC .no_damage
|
||||
; Apply force in the opposite direction
|
||||
LDA #-16 : STA SprYSpeed, X
|
||||
LDA #-16 : STA.w SprYSpeed, X
|
||||
.no_damage
|
||||
RTS
|
||||
}
|
||||
@@ -258,14 +258,14 @@ DekuScrub_GiveRandomPrize:
|
||||
|
||||
CheckForPeaShotRedirect:
|
||||
{
|
||||
LDA.w $0D10, X : STA.b $00
|
||||
LDA.w $0D30, X : STA.b $08
|
||||
LDA.w SprX, X : STA.b $00
|
||||
LDA.w SprXH, X : STA.b $08
|
||||
|
||||
LDA.b #$04 : STA.b $02
|
||||
STZ $03
|
||||
|
||||
LDA.w $0D00, X : STA.b $01
|
||||
LDA.w $0D20, X : STA.b $09
|
||||
LDA.w SprY, X : STA.b $01
|
||||
LDA.w SprYH, X : STA.b $09
|
||||
|
||||
PHX
|
||||
LDA.w Offspring1_Id : TAX
|
||||
@@ -305,19 +305,19 @@ SpawnPeaShot:
|
||||
REP #$20
|
||||
LDA $0FD8
|
||||
SEP #$20
|
||||
STA $0D10, Y : XBA : STA $0D30, Y
|
||||
STA.w SprX, Y : XBA : STA.w SprXH, Y
|
||||
|
||||
REP #$20
|
||||
LDA $0FDA : CLC : ADC.w #$000C
|
||||
SEP #$20
|
||||
STA $0D00, Y : XBA : STA $0D20, Y
|
||||
STA.w SprY, Y : XBA : STA.w SprYH, Y
|
||||
|
||||
TYX
|
||||
|
||||
STZ $0D70, X
|
||||
|
||||
LDA #$10 : STA SprYSpeed, X
|
||||
STA SprYRound, X
|
||||
LDA #$10 : STA.w SprYSpeed, X
|
||||
STA.w SprYRound, X
|
||||
|
||||
STX.w Offspring1_Id
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ Sprite_HelmetChuchu_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.b #$0C : STA.w SprHealth, X
|
||||
JSL GetRandomInt : AND.b #$02 : STA SprAction, X
|
||||
JSL GetRandomInt : AND.b #$02 : STA.w SprAction, X
|
||||
STZ.w SprMiscB, X
|
||||
|
||||
LDA.w SprAction, X : BNE +
|
||||
|
||||
@@ -84,7 +84,7 @@ Sprite_PolsVoice_Main:
|
||||
%DoDamageToPlayerSameLayerOnContact()
|
||||
|
||||
JSL GetRandomInt : AND #$3F : BNE .not_done
|
||||
LDA #$04 : STA SprTimerA, X
|
||||
LDA #$04 : STA.w SprTimerA, X
|
||||
%GotoAction(1)
|
||||
.not_done
|
||||
|
||||
@@ -102,9 +102,9 @@ Sprite_PolsVoice_Main:
|
||||
LDA #$20 : STA.w SprXSpeed, X
|
||||
BRA .not_left
|
||||
.not_right
|
||||
LDA #$E0 : STA SprXSpeed, X
|
||||
LDA #$E0 : STA.w SprXSpeed, X
|
||||
.not_left
|
||||
LDA #$04 : STA SprTimerA, X
|
||||
LDA #$04 : STA.w SprTimerA, X
|
||||
%GotoAction(1)
|
||||
.no_damage
|
||||
RTS
|
||||
|
||||
@@ -218,7 +218,7 @@ Sprite_Farore_Main:
|
||||
}
|
||||
|
||||
; 07
|
||||
; Look at the RAM $0D00 to $0D60, the first few are the actual positions of the sprite
|
||||
; Look at the RAM SprY to $0D60, the first few are the actual positions of the sprite
|
||||
; that you can just set manually or $0D40 and $0D50 are the "speeds" of the sprites irrc
|
||||
; You can set one of the speeds and then call the function called Sprite_Move
|
||||
; And then that will handle it applying the speed for you
|
||||
|
||||
@@ -63,7 +63,7 @@ Sprite_Korok_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA SprSubtype, X : STA SprAction,X
|
||||
LDA SprSubtype, X : STA.w SprAction,X
|
||||
|
||||
PLB
|
||||
RTL
|
||||
|
||||
@@ -16,10 +16,10 @@ pullpc
|
||||
RanchGirl_Message:
|
||||
{
|
||||
LDA $7EF34C : CMP.b #$01 : BCS .has_ocarina
|
||||
%ShowUnconditionalMessage($017D)
|
||||
LDA #$01 : STA SprMiscD, X
|
||||
RTL
|
||||
.has_ocarina
|
||||
%ShowUnconditionalMessage($017D)
|
||||
LDA #$01 : STA.w SprMiscD, X
|
||||
RTL
|
||||
.has_ocarina
|
||||
%ShowUnconditionalMessage($010E)
|
||||
RTL
|
||||
}
|
||||
@@ -68,27 +68,27 @@ pushpc
|
||||
org $01AFECF
|
||||
ChickenLady:
|
||||
{
|
||||
#_1AFECF: JSR .main
|
||||
#_1AFECF: JSR .main
|
||||
|
||||
#_1AFED2: RTL
|
||||
#_1AFED2: RTL
|
||||
|
||||
.main
|
||||
#_1AFED3: LDA.b #$01
|
||||
#_1AFED5: STA.w $0DE0,X
|
||||
#_1AFED3: LDA.b #$01
|
||||
#_1AFED5: STA.w $0DE0,X
|
||||
|
||||
#_1AFED8: JSL SpriteDraw_RaceGameLady
|
||||
#_1AFEDC: JSR Sprite_CheckIfActive_Bank1A
|
||||
#_1AFED8: JSL SpriteDraw_RaceGameLady
|
||||
#_1AFEDC: JSR Sprite_CheckIfActive_Bank1A
|
||||
|
||||
#_1AFEDF: LDA.w $0DF0,X
|
||||
#_1AFEE2: CMP.b #$01
|
||||
#_1AFEE4: BNE .no_message
|
||||
#_1AFEDF: LDA.w $0DF0,X
|
||||
#_1AFEE2: CMP.b #$01
|
||||
#_1AFEE4: BNE .no_message
|
||||
|
||||
JSL RanchGirl_Message
|
||||
JSL RanchGirl_Message
|
||||
|
||||
.no_message
|
||||
JSL RanchGirl_TeachSong
|
||||
JSL RanchGirl_TeachSong
|
||||
.return
|
||||
#_1AFEFF: RTS
|
||||
#_1AFEFF: RTS
|
||||
}
|
||||
|
||||
warnpc $01AFEFF
|
||||
@@ -32,27 +32,27 @@
|
||||
|
||||
Sprite_IceBlock_Long:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.w $0DE0, X : BEQ .not_being_pushed
|
||||
STZ.w $0DE0, X
|
||||
STZ.b $5E : STZ.b $48
|
||||
LDA.w SprMiscC, X : BEQ .not_being_pushed
|
||||
STZ.w SprMiscC, X
|
||||
STZ.b $5E : STZ.b $48
|
||||
.not_being_pushed
|
||||
LDA.w $0DF0, X : BEQ .retain_momentum
|
||||
LDA.b #$01 : STA.w $0DE0, X
|
||||
LDA #$84 : STA $48
|
||||
LDA.b #$04 : STA.b $5E
|
||||
LDA.w $0DF0, X : BEQ .retain_momentum
|
||||
LDA.b #$01 : STA.w SprMiscC, X
|
||||
LDA.b #$84 : STA $48
|
||||
LDA.b #$04 : STA.b $5E
|
||||
.retain_momentum
|
||||
|
||||
JSR Sprite_IceBlock_Draw ; Call the draw code
|
||||
JSL Sprite_CheckActive ; Check if game is not paused
|
||||
BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive
|
||||
JSR Sprite_IceBlock_Draw ; Call the draw code
|
||||
JSL Sprite_CheckActive ; Check if game is not paused
|
||||
BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive
|
||||
|
||||
JSR Sprite_IceBlock_Main ; Call the main sprite code
|
||||
JSR Sprite_IceBlock_Main ; Call the main sprite code
|
||||
|
||||
.SpriteIsNotActive
|
||||
PLB ; Get back the databank we stored previously
|
||||
RTL ; Go back to original code
|
||||
PLB ; Get back the databank we stored previously
|
||||
RTL ; Go back to original code
|
||||
}
|
||||
|
||||
Sprite_IceBlock_Prep:
|
||||
@@ -60,10 +60,10 @@ Sprite_IceBlock_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
; Cache Sprite position
|
||||
LDA SprX, X : STA SprMiscD, X
|
||||
LDA SprY, X : STA SprMiscE, X
|
||||
LDA SprXH, X : STA SprMiscF, X
|
||||
LDA SprYH, X : STA SprMiscG, X
|
||||
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
|
||||
|
||||
STZ.w $0CAA, X
|
||||
|
||||
@@ -71,7 +71,6 @@ Sprite_IceBlock_Prep:
|
||||
RTL
|
||||
}
|
||||
|
||||
|
||||
StatueDirection:
|
||||
db $04, $06, $00, $02
|
||||
|
||||
@@ -85,8 +84,6 @@ db -16, 16 ; bleeds into next
|
||||
.y
|
||||
db 0, 0, -16, 16
|
||||
|
||||
|
||||
|
||||
Sprite_IceBlock_Main:
|
||||
{
|
||||
LDA.w SprAction, X
|
||||
@@ -98,54 +95,53 @@ Sprite_IceBlock_Main:
|
||||
; 0x00
|
||||
MovementHandler:
|
||||
{
|
||||
%PlayAnimation(0, 0, 1)
|
||||
%PlayAnimation(0, 0, 1)
|
||||
|
||||
JSR Statue_BlockSprites
|
||||
JSR Statue_BlockSprites
|
||||
|
||||
JSL Sprite_CheckDamageFromPlayerLong
|
||||
BCC .no_damage
|
||||
LDA SprMiscD, X : STA SprX, X
|
||||
LDA SprMiscE, X : STA SprY, X
|
||||
LDA SprMiscF, X : STA SprXH, X
|
||||
LDA SprMiscG, X : STA SprYH, X
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
JSL Sprite_CheckDamageFromPlayerLong
|
||||
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
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
.no_damage
|
||||
|
||||
; JSR IceBlock_CheckForGround
|
||||
|
||||
STZ.w $0642
|
||||
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
LDA.b #$01 : STA.w $0642
|
||||
; JSR IceBlock_CheckForGround
|
||||
|
||||
STZ.w $0642
|
||||
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
LDA.b #$01 : STA.w $0642
|
||||
.no_switch
|
||||
|
||||
JSL Sprite_Move ; Sprite MoveXY
|
||||
JSL Sprite_Get_16_bit_Coords ; Get 16bit coords
|
||||
JSL Sprite_CheckTileCollision ; Check Tile collision
|
||||
JSL Sprite_CheckDamageToPlayerSameLayer
|
||||
BCC NotInContact
|
||||
JSR ApplyPush
|
||||
; Set timer
|
||||
LDA.b #$07 : STA.w $0DF0, X
|
||||
JSL Sprite_Move ; Sprite MoveXY
|
||||
JSL Sprite_Get_16_bit_Coords ; Get 16bit coords
|
||||
JSL Sprite_CheckTileCollision ; Check Tile collision
|
||||
JSL Sprite_CheckDamageToPlayerSameLayer
|
||||
BCC NotInContact
|
||||
JSR ApplyPush
|
||||
; Set timer
|
||||
LDA.b #$07 : STA.w $0DF0, X
|
||||
|
||||
JSL $079291 ; Sprite_RepelDash_long
|
||||
JSL $079291 ; Sprite_RepelDash_long
|
||||
|
||||
LDA.w $0E00,X : BNE Statue_CancelHookshot
|
||||
; JSL Sprite_DirectionToFacePlayer
|
||||
; LDA.w StatueSpeed_x,Y
|
||||
; STA.w $0D50,X
|
||||
; LDA.w StatueSpeed_y,Y
|
||||
; STA.w $0D40,X
|
||||
; JSR Statue_HandleGrab
|
||||
|
||||
LDA SprX, X : AND #$F0 : STA SprX, X
|
||||
LDA SprY, X : AND #$F0 : STA SprY, X
|
||||
RTS
|
||||
LDA.w $0E00,X : BNE Statue_CancelHookshot
|
||||
; JSL Sprite_DirectionToFacePlayer
|
||||
; LDA.w StatueSpeed_x,Y
|
||||
; STA.w SprXSpeed,X
|
||||
; LDA.w StatueSpeed_y,Y
|
||||
; 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
|
||||
RTS
|
||||
.not_in_contact
|
||||
%GotoAction(1)
|
||||
%GotoAction(1)
|
||||
.dont_move
|
||||
RTS
|
||||
RTS
|
||||
}
|
||||
|
||||
Statue_CancelHookshot:
|
||||
@@ -164,12 +160,12 @@ Sprite_IceBlock_Main:
|
||||
.delay_timer
|
||||
|
||||
REP #$20
|
||||
LDA.w $0FD8
|
||||
LDA.w SprCachedX
|
||||
SEC : SBC.b $22
|
||||
CLC : ADC.w #$0010
|
||||
CMP.w #$0023 : BCS .reset_contact
|
||||
|
||||
LDA.w $0FDA
|
||||
LDA.w SprCachedY
|
||||
SEC : SBC.b $20
|
||||
CLC : ADC.w #$000C
|
||||
CMP.w #$0024 : BCS .reset_contact
|
||||
@@ -181,7 +177,7 @@ Sprite_IceBlock_Main:
|
||||
; CMP.w StatueDirection,Y : BNE .reset_contact
|
||||
; LDA.w $0372 : BNE .reset_contact
|
||||
; LDA.b #$01 : STA.w $02FA
|
||||
; LDA.b #$01 : STA.w $0D90,X
|
||||
; LDA.b #$01 : STA.w SprFrame,X
|
||||
; LDA.w $0376 : AND.b #$02 : BEQ .exit
|
||||
|
||||
; LDA.b $F0 : AND.w StatuePressMask,Y : BEQ .exit
|
||||
@@ -190,17 +186,17 @@ Sprite_IceBlock_Main:
|
||||
|
||||
; TYA : EOR.b #$01 : TAY
|
||||
|
||||
; LDA.w StatueSpeed_x,Y : STA.w $0D50,X
|
||||
; LDA.w StatueSpeed_x,Y : STA.w SprXSpeed,X
|
||||
|
||||
; LDA.w StatueSpeed_y,Y : STA.w $0D40,X
|
||||
; LDA.w StatueSpeed_y,Y : STA.w SprYSpeed,X
|
||||
|
||||
; JMP.w Statue_HandleGrab
|
||||
|
||||
.reset_contact
|
||||
SEP #$30
|
||||
|
||||
LDA.w $0D90,X : BEQ .exit
|
||||
STZ.w $0D90,X
|
||||
LDA.w SprFrame,X : BEQ .exit
|
||||
STZ.w SprFrame,X
|
||||
|
||||
STZ.b $5E
|
||||
STZ.w $0376
|
||||
@@ -222,20 +218,20 @@ Sprite_IceBlock_Main:
|
||||
CMP.b #$08 : BEQ .push_up
|
||||
|
||||
.push_right
|
||||
LDA #16 : STA.w $0D50,X
|
||||
LDA #00 : STA.w $0D40,X
|
||||
LDA #16 : STA.w SprXSpeed,X
|
||||
LDA #00 : STA.w SprYSpeed,X
|
||||
JMP .push_done
|
||||
.push_left
|
||||
LDA #-16 : STA.w $0D50,X
|
||||
LDA #00 : STA.w $0D40,X
|
||||
LDA #-16 : STA.w SprXSpeed,X
|
||||
LDA #00 : STA.w SprYSpeed,X
|
||||
JMP .push_done
|
||||
.push_down
|
||||
LDA #00 : STA.w $0D50,X
|
||||
LDA #16 : STA.w $0D40,X
|
||||
LDA #00 : STA.w SprXSpeed,X
|
||||
LDA #16 : STA.w SprYSpeed,X
|
||||
JMP .push_done
|
||||
.push_up
|
||||
LDA #00 : STA.w $0D50,X
|
||||
LDA #-16 : STA.w $0D40,X
|
||||
LDA #00 : STA.w SprXSpeed,X
|
||||
LDA #-16 : STA.w SprYSpeed,X
|
||||
|
||||
.push_done
|
||||
|
||||
@@ -247,10 +243,10 @@ Sprite_IceBlock_Main:
|
||||
; Currently unused as it doesnt play well with the hitbox choices
|
||||
IceBlock_CheckForGround:
|
||||
{
|
||||
LDA.w $0D00,X : CLC : ADC.b #$08 : STA.b $00
|
||||
LDA.w $0D20,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w $0D10,X : STA.b $02
|
||||
LDA.w $0D30,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w SprY,X : CLC : ADC.b #$08 : STA.b $00
|
||||
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX,X : STA.b $02
|
||||
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w $0F20,X
|
||||
PHY
|
||||
JSL $06E87B ; GetTileType_long
|
||||
@@ -261,43 +257,43 @@ IceBlock_CheckForGround:
|
||||
SEC
|
||||
RTS
|
||||
.stop
|
||||
STZ.w $0D50,X
|
||||
STZ.w $0D40,X
|
||||
STZ.w SprXSpeed,X
|
||||
STZ.w SprYSpeed,X
|
||||
CLC
|
||||
RTS
|
||||
}
|
||||
|
||||
Sprite_IceBlock_CheckForSwitch:
|
||||
{
|
||||
LDY.b #$03
|
||||
LDY.b #$03
|
||||
|
||||
.next_tile
|
||||
LDA.w $0D00,X : CLC : ADC.w .offset_y,Y : STA.b $00
|
||||
LDA.w $0D20,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w $0D10,X : CLC : ADC.w .offset_x,Y : STA.b $02
|
||||
LDA.w $0D30,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w $0F20,X
|
||||
LDA.w SprY,X : CLC : ADC.w .offset_y,Y : STA.b $00
|
||||
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX,X : CLC : ADC.w .offset_x,Y : STA.b $02
|
||||
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w $0F20,X
|
||||
|
||||
PHY
|
||||
JSL $06E87B ; GetTileType_long
|
||||
PLY
|
||||
PHY
|
||||
JSL $06E87B ; GetTileType_long
|
||||
PLY
|
||||
|
||||
LDA.w $0FA5
|
||||
CMP.w .tile_id+0 : BEQ .switch_tile
|
||||
CMP.w .tile_id+1 : BEQ .switch_tile
|
||||
CMP.w .tile_id+2 : BEQ .switch_tile
|
||||
CMP.w .tile_id+3 : BNE .fail
|
||||
LDA.w $0FA5
|
||||
CMP.w .tile_id+0 : BEQ .switch_tile
|
||||
CMP.w .tile_id+1 : BEQ .switch_tile
|
||||
CMP.w .tile_id+2 : BEQ .switch_tile
|
||||
CMP.w .tile_id+3 : BNE .fail
|
||||
|
||||
.switch_tile
|
||||
DEY
|
||||
BPL .next_tile
|
||||
DEY
|
||||
BPL .next_tile
|
||||
|
||||
SEC
|
||||
RTS
|
||||
SEC
|
||||
RTS
|
||||
|
||||
.fail
|
||||
CLC
|
||||
RTS
|
||||
CLC
|
||||
RTS
|
||||
|
||||
.offset_x
|
||||
db 3, 12, 3, 12
|
||||
@@ -331,21 +327,21 @@ Statue_BlockSprites:
|
||||
CMP.b #$09
|
||||
BCC .skip
|
||||
|
||||
LDA.w $0D10,Y
|
||||
LDA.w SprX,Y
|
||||
STA.b $04
|
||||
|
||||
LDA.w $0D30,Y
|
||||
LDA.w SprXH,Y
|
||||
STA.b $05
|
||||
|
||||
LDA.w $0D00,Y
|
||||
LDA.w SprY,Y
|
||||
STA.b $06
|
||||
|
||||
LDA.w $0D20,Y
|
||||
LDA.w SprYH,Y
|
||||
STA.b $07
|
||||
|
||||
REP #$20
|
||||
|
||||
LDA.w $0FD8
|
||||
LDA.w SprCachedX
|
||||
SEC
|
||||
SBC.b $04
|
||||
CLC
|
||||
@@ -354,7 +350,7 @@ Statue_BlockSprites:
|
||||
CMP.w #$0018
|
||||
BCS .skip
|
||||
|
||||
LDA.w $0FDA
|
||||
LDA.w SprCachedY
|
||||
SEC
|
||||
SBC.b $06
|
||||
CLC
|
||||
@@ -396,7 +392,7 @@ Sprite_IceBlock_Draw:
|
||||
JSL Sprite_PrepOamCoord
|
||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
||||
|
||||
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
||||
LDA $0DC0, X : CLC : ADC SprFrame, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
|
||||
|
||||
|
||||
@@ -100,13 +100,13 @@ Sprite_Minecart_Prep:
|
||||
; If the subtype is > 4, then it's an active cart
|
||||
LDA.w SprSubtype, X : CMP.b #$04 : BCC .continue
|
||||
LDA.w SprSubtype, X : SEC : SBC.b #$04 : STA.w SprSubtype, X
|
||||
LDA.b #$01 : STA SprMiscF, X ; Set the auto-move flag
|
||||
LDA.b #$01 : STA.w SprMiscF, X ; Set the auto-move flag
|
||||
.continue
|
||||
LDA #$00 : STA $0CAA, X ; Sprite persist in dungeon
|
||||
LDA #$04 : STA $0E40, X ; Nbr Oam Entries
|
||||
LDA #$40 : STA $0E60, x ; Impervious props
|
||||
LDA #$E0 : STA $0F60, X ; Persist
|
||||
LDA #$00 : STA SprBump, X ; No bump damage
|
||||
LDA #$00 : STA.w SprBump, X ; No bump damage
|
||||
LDA #$00 : STA $0B6B, X ; Set interactive hitbox?
|
||||
|
||||
STZ.w !MinecartDirection
|
||||
@@ -187,31 +187,31 @@ HandleToss:
|
||||
CMP.b #$04 : BEQ .toss_east
|
||||
CMP.b #$06 : BEQ .toss_west
|
||||
.toss_north
|
||||
LDA.b #-!DoubleSpeed : STA SprYSpeed, X
|
||||
LDA #$00 : STA SprSubtype, X : STA !SpriteDirection, X
|
||||
LDA.b #-!DoubleSpeed : STA.w SprYSpeed, X
|
||||
LDA #$00 : STA.w SprSubtype, X : STA !SpriteDirection, X
|
||||
%GotoAction(1) ; Minecart_WaitVert
|
||||
JMP .continue
|
||||
.toss_south
|
||||
LDA.b #!DoubleSpeed : STA SprYSpeed, X
|
||||
LDA #$02 : STA SprSubtype, X
|
||||
LDA.b #!DoubleSpeed : STA.w SprYSpeed, X
|
||||
LDA #$02 : STA.w SprSubtype, X
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
%GotoAction(1) ; Minecart_WaitVert
|
||||
JMP .continue
|
||||
.toss_east
|
||||
LDA.b #-!DoubleSpeed : STA SprXSpeed, X
|
||||
LDA #$01 : STA SprSubtype, X
|
||||
LDA.b #-!DoubleSpeed : STA.w SprXSpeed, X
|
||||
LDA #$01 : STA.w SprSubtype, X
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
%GotoAction(0) ; Minecart_WaitHoriz
|
||||
JMP .continue
|
||||
.toss_west
|
||||
LDA.b #!DoubleSpeed : STA SprXSpeed, X
|
||||
LDA #$03 : STA SprSubtype, X
|
||||
LDA.b #!DoubleSpeed : STA.w SprXSpeed, X
|
||||
LDA #$03 : STA.w SprSubtype, X
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
%GotoAction(0) ; Minecart_WaitHoriz
|
||||
.continue
|
||||
LDA #$01 : STA SprMiscG, X
|
||||
LDA #$12 : STA SprTimerC, X
|
||||
STA SprYRound, X : STA SprXRound, X
|
||||
LDA #$01 : STA.w SprMiscG, X
|
||||
LDA #$12 : STA.w SprTimerC, X
|
||||
STA.w SprYRound, X : STA.w SprXRound, X
|
||||
RTS
|
||||
}
|
||||
|
||||
@@ -236,8 +236,8 @@ HandleTossedCart:
|
||||
.low_enough
|
||||
|
||||
LDA.w SprTimerC, X : BNE .not_tossed
|
||||
LDA SprX, X : AND.b #$F8 : STA SprX, X
|
||||
LDA SprY, X : AND.b #$F8 : STA SprY, X
|
||||
LDA SprX, X : AND.b #$F8 : STA.w SprX, X
|
||||
LDA SprY, X : AND.b #$F8 : STA.w SprY, X
|
||||
STZ.w SprMiscG, X
|
||||
STZ.w SprYSpeed, X
|
||||
STZ.w SprXSpeed, X
|
||||
@@ -339,10 +339,10 @@ Sprite_Minecart_Main:
|
||||
%InitMovement()
|
||||
|
||||
LDA $36 : BNE .fast_speed
|
||||
LDA.b #-!MinecartSpeed : STA SprYSpeed, X
|
||||
LDA.b #-!MinecartSpeed : STA.w SprYSpeed, X
|
||||
JMP .continue
|
||||
.fast_speed
|
||||
LDA.b #-!DoubleSpeed : STA SprYSpeed, X
|
||||
LDA.b #-!DoubleSpeed : STA.w SprYSpeed, X
|
||||
.continue
|
||||
JSL Sprite_MoveVert
|
||||
|
||||
@@ -389,10 +389,10 @@ Sprite_Minecart_Main:
|
||||
%InitMovement()
|
||||
|
||||
LDA $36 : BNE .fast_speed
|
||||
LDA.b #!MinecartSpeed : STA SprYSpeed, X
|
||||
LDA.b #!MinecartSpeed : STA.w SprYSpeed, X
|
||||
JMP .continue
|
||||
.fast_speed
|
||||
LDA.b #!DoubleSpeed : STA SprYSpeed, X
|
||||
LDA.b #!DoubleSpeed : STA.w SprYSpeed, X
|
||||
.continue
|
||||
JSL Sprite_MoveVert
|
||||
|
||||
@@ -439,7 +439,7 @@ Sprite_Minecart_Main:
|
||||
%StopCart()
|
||||
|
||||
LDA SprTimerD, X : BNE .not_ready
|
||||
LDA #$40 : STA SprTimerA, X
|
||||
LDA #$40 : STA.w SprTimerA, X
|
||||
LDA.w !SpriteDirection, X : CMP.b #$00 : BEQ .vert
|
||||
CMP.b #$02 : BEQ .vert
|
||||
JMP .horiz
|
||||
@@ -478,7 +478,7 @@ HandleTileDirections:
|
||||
|
||||
CMP.b #$02 : BNE .not_out_of_bounds
|
||||
; If the tile is out of bounds, release the cart
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
%GotoAction(6) ; Minecart_Release
|
||||
RTS
|
||||
|
||||
@@ -492,13 +492,13 @@ HandleTileDirections:
|
||||
|
||||
.stop_north
|
||||
; Set the new direction to north and flip the cart's orientation
|
||||
LDA.b #South : STA SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA.b #South : STA.w SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
JMP .go_vert
|
||||
|
||||
.stop_south
|
||||
; Set the new direction to south and flip the cart's orientation
|
||||
LDA.b #North : STA SprSubtype, X : STZ.w !MinecartDirection
|
||||
LDA.b #North : STA.w SprSubtype, X : STZ.w !MinecartDirection
|
||||
LDA #$00 : STA !SpriteDirection, X
|
||||
|
||||
; -----------------------------------------------
|
||||
@@ -511,13 +511,13 @@ HandleTileDirections:
|
||||
|
||||
.stop_east
|
||||
; Set the new direction to east and flip the cart's orientation
|
||||
LDA.b #West : STA SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA.b #West : STA.w SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
JMP .go_horiz
|
||||
|
||||
.stop_west
|
||||
; Set the new direction to west and flip the cart's orientation
|
||||
LDA.b #East : STA SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA.b #East : STA.w SprSubtype, X : STA.w !MinecartDirection
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
|
||||
; -----------------------------------------------
|
||||
@@ -541,20 +541,20 @@ HandleTileDirections:
|
||||
.horiz
|
||||
; Are we moving left or right?
|
||||
LDA SprSubtype, X : CMP.b #$03 : BEQ .inverse_horiz_velocity
|
||||
LDA.b #!MinecartSpeed : STA SprXSpeed, X
|
||||
LDA.b #!MinecartSpeed : STA.w SprXSpeed, X
|
||||
LDA.b #East : STA !MinecartDirection
|
||||
JMP .done
|
||||
.inverse_horiz_velocity
|
||||
LDA.b #-!MinecartSpeed : STA SprXSpeed, X
|
||||
LDA.b #-!MinecartSpeed : STA.w SprXSpeed, X
|
||||
LDA.b #West : STA !MinecartDirection
|
||||
JMP .done
|
||||
.vert
|
||||
; Are we moving up or down?
|
||||
LDA SprSubtype, X : CMP.b #$00 : BEQ .inverse_vert_velocity
|
||||
LDA.b #!MinecartSpeed : STA SprYSpeed, X
|
||||
LDA.b #!MinecartSpeed : STA.w SprYSpeed, X
|
||||
JMP .done
|
||||
.inverse_vert_velocity
|
||||
LDA.b #-!MinecartSpeed : STA SprYSpeed, X
|
||||
LDA.b #-!MinecartSpeed : STA.w SprYSpeed, X
|
||||
JMP .done
|
||||
|
||||
.check_direction
|
||||
@@ -575,31 +575,31 @@ HandleTileDirections:
|
||||
JMP .done
|
||||
|
||||
.move_north
|
||||
LDA #$00 : STA SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$00 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
STA !SpriteDirection, X
|
||||
%GotoAction(2) ; Minecart_MoveNorth
|
||||
LDA SprX, X : AND #$F8 : STA SprX, X
|
||||
LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
RTS
|
||||
.move_east
|
||||
LDA #$01 : STA SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$01 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
STA !MinecartDirection
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
LDA SprY, X : AND #$F8 : STA SprY, X
|
||||
LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
%GotoAction(3) ; Minecart_MoveEast
|
||||
RTS
|
||||
.move_south
|
||||
LDA #$02 : STA SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$02 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
%GotoAction(4) ; Minecart_MoveSouth
|
||||
LDA SprX, X : AND #$F8 : STA SprX, X
|
||||
LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
RTS
|
||||
.move_west
|
||||
LDA #$03 : STA SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$03 : STA.w SprSubtype, X : STA !MinecartDirection
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
LDA SprY, X : AND #$F8 : STA SprY, X
|
||||
LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
%GotoAction(5) ; Minecart_MoveWest
|
||||
.done
|
||||
LDA #$04 : STA SprTimerA, X
|
||||
LDA #$04 : STA.w SprTimerA, X
|
||||
RTS
|
||||
|
||||
; Direction to move on tile collision
|
||||
@@ -658,36 +658,36 @@ HandleDynamicSwitchTileDirections:
|
||||
|
||||
.east_or_west
|
||||
LDA SwitchRam : BNE .go_west
|
||||
LDA #$01 : STA SprSubtype, X
|
||||
LDA #$01 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
LDA #$03 : STA !SpriteDirection, X
|
||||
%GotoAction(3) ; Minecart_MoveEast
|
||||
; LDA SprY, X : AND #$F8 : STA SprY, X
|
||||
; LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
RTS
|
||||
|
||||
.go_west
|
||||
LDA #$03 : STA SprSubtype, X
|
||||
LDA #$03 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
LDA #$02 : STA !SpriteDirection, X
|
||||
%GotoAction(5) ; Minecart_MoveWest
|
||||
; LDA SprY, X : AND #$F8 : STA SprY, X
|
||||
; LDA SprY, X : AND #$F8 : STA.w SprY, X
|
||||
RTS
|
||||
|
||||
.north_or_south
|
||||
LDA SwitchRam : BNE .go_south
|
||||
LDA #$00 : STA SprSubtype, X
|
||||
LDA #$00 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
STA !SpriteDirection, X
|
||||
%GotoAction(2) ; Minecart_MoveNorth
|
||||
; LDA SprX, X : AND #$F8 : STA SprX, X
|
||||
; LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
RTS
|
||||
|
||||
.go_south
|
||||
LDA #$02 : STA SprSubtype, X
|
||||
LDA #$02 : STA.w SprSubtype, X
|
||||
STA.w !MinecartDirection
|
||||
LDA #$01 : STA !SpriteDirection, X
|
||||
%GotoAction(4) ; Minecart_MoveSouth
|
||||
; LDA SprX, X : AND #$F8 : STA SprX, X
|
||||
; LDA SprX, X : AND #$F8 : STA.w SprX, X
|
||||
RTS
|
||||
|
||||
|
||||
@@ -753,7 +753,7 @@ CheckForPlayerInput:
|
||||
LDA.b #$01 : STA !SpriteDirection, X
|
||||
|
||||
LDA.b #South : STA !MinecartDirection
|
||||
STA SprSubtype, X
|
||||
STA.w SprSubtype, X
|
||||
%GotoAction(4) ; Minecart_MoveSouth
|
||||
BRA .return
|
||||
|
||||
@@ -762,7 +762,7 @@ CheckForPlayerInput:
|
||||
LDA.b #$02 : STA !SpriteDirection, X
|
||||
|
||||
LDA.b #West : STA !MinecartDirection
|
||||
STA SprSubtype, X
|
||||
STA.w SprSubtype, X
|
||||
%GotoAction(5) ; Minecart_MoveWest
|
||||
BRA .return
|
||||
|
||||
@@ -1070,15 +1070,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 SprY, X
|
||||
LDA POSX : STA SprX, X
|
||||
LDA POSY : CLC : ADC #$08 : STA.w SprY, X
|
||||
LDA POSX : STA.w SprX, X
|
||||
JMP .finish_prep
|
||||
.vert_adjust
|
||||
LDA POSY : STA SprY, X
|
||||
LDA POSX : CLC : ADC #$02 : STA SprX, X
|
||||
LDA POSY : STA.w SprY, X
|
||||
LDA POSX : CLC : ADC #$02 : STA.w SprX, X
|
||||
.finish_prep
|
||||
LDA POSYH : STA SprYH, X
|
||||
LDA POSXH : STA SprXH, X
|
||||
LDA POSYH : STA.w SprYH, X
|
||||
LDA POSXH : STA.w SprXH, X
|
||||
LDA.w !MinecartDirection : CLC : ADC.b #$04 : STA.w SprSubtype, X
|
||||
LDA .direction_to_anim, X : STA $0D90, X
|
||||
JSL Sprite_Minecart_Prep
|
||||
|
||||
@@ -56,7 +56,7 @@ Sprite_LeverSwitch_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.b #$00 : STA.w SprDefl, X
|
||||
LDA SprSubtype, X : STA SprAction, X
|
||||
LDA SprSubtype, X : STA.w SprAction, X
|
||||
LDA.b #$00 : STA.w SprTileDie, X
|
||||
STZ.w SprBulletproof, X
|
||||
|
||||
@@ -88,7 +88,7 @@ Sprite_LeverSwitch_Main:
|
||||
LDA #$25 : STA $012F
|
||||
|
||||
STZ.w $37
|
||||
LDA #$10 : STA SprTimerA, X
|
||||
LDA #$10 : STA.w SprTimerA, X
|
||||
%GotoAction(1)
|
||||
.NoDamage
|
||||
|
||||
@@ -106,7 +106,7 @@ Sprite_LeverSwitch_Main:
|
||||
|
||||
LDA #$25 : STA $012F
|
||||
LDA #$01 : STA $37
|
||||
LDA #$10 : STA SprTimerA, X
|
||||
LDA #$10 : STA.w SprTimerA, X
|
||||
%GotoAction(0)
|
||||
|
||||
.NoDamage
|
||||
|
||||
@@ -61,7 +61,7 @@ Sprite_Portal_Prep:
|
||||
|
||||
; Persist outside of camera
|
||||
LDA #$00 : STA $0CAA, X
|
||||
LDA SprHitbox, X : AND.b #$C0 : STA SprHitbox, X
|
||||
LDA SprHitbox, X : AND.b #$C0 : STA.w SprHitbox, X
|
||||
STZ.w $0B6B, X
|
||||
LDA.b #$FF : STA.w $0BA0, X
|
||||
|
||||
@@ -114,8 +114,8 @@ Sprite_Portal_Main:
|
||||
LDA $7E0FA6 : BNE .BluePortal
|
||||
LDA #$01 : STA $0307
|
||||
TXA : STA.w OrangeSpriteIndex
|
||||
LDA $0D00, X : STA OrangePortal_X
|
||||
LDA $0D10, X : STA OrangePortal_Y
|
||||
LDA SprY, X : STA OrangePortal_X
|
||||
LDA SprX, X : STA OrangePortal_Y
|
||||
LDA.b #$01 : STA.w SprSubtype, X
|
||||
|
||||
%GotoAction(2)
|
||||
@@ -123,8 +123,8 @@ Sprite_Portal_Main:
|
||||
.BluePortal
|
||||
LDA #$02 : STA $0307
|
||||
TXA : STA.w BlueSpriteIndex
|
||||
LDA $0D00, X : STA BluePortal_X
|
||||
LDA $0D10, X : STA BluePortal_Y
|
||||
LDA SprY, X : STA BluePortal_X
|
||||
LDA SprX, X : STA BluePortal_Y
|
||||
LDA.b #$02 : STA.w SprSubtype, X
|
||||
|
||||
%GotoAction(1)
|
||||
@@ -211,10 +211,10 @@ Sprite_Portal_Main:
|
||||
|
||||
PHX
|
||||
LDA OrangeSpriteIndex : TAX
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA $0D00, X : STA $7EC184
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
LDA SprY, X : STA $7EC184
|
||||
STA BluePortal_Y
|
||||
LDA $0D10, X : STA $7EC186
|
||||
LDA SprX, X : STA $7EC186
|
||||
STA BluePortal_X
|
||||
PLX
|
||||
|
||||
@@ -240,10 +240,10 @@ Sprite_Portal_Main:
|
||||
|
||||
PHX
|
||||
LDA BlueSpriteIndex : TAX
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA $0D00, X : STA $7EC184
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
LDA SprY, X : STA $7EC184
|
||||
STA OrangePortal_Y
|
||||
LDA $0D10, X : STA $7EC186
|
||||
LDA SprX, X : STA $7EC186
|
||||
STA OrangePortal_X
|
||||
PLX
|
||||
|
||||
@@ -266,7 +266,7 @@ Sprite_Portal_Main:
|
||||
|
||||
PHX ; Infinite loop prevention protocol
|
||||
LDA OrangeSpriteIndex : TAX
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
|
||||
PLX
|
||||
|
||||
@@ -290,7 +290,7 @@ Sprite_Portal_Main:
|
||||
|
||||
PHX
|
||||
LDA BlueSpriteIndex : TAX
|
||||
LDA #$40 : STA SprTimerD, X
|
||||
LDA #$40 : STA.w SprTimerD, X
|
||||
PLX
|
||||
|
||||
LDA #$01 : STA $5D
|
||||
|
||||
@@ -56,7 +56,7 @@ Sprite_RotatingTrack_Prep:
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.b #$80 : STA $0CAA, X
|
||||
LDA SprSubtype, X : STA SprAction,X
|
||||
LDA SprSubtype, X : STA.w SprAction,X
|
||||
|
||||
PLB
|
||||
RTL
|
||||
|
||||
@@ -137,8 +137,8 @@ Sprite_FloatTowardPlayer:
|
||||
|
||||
Sprite_FloatAwayFromPlayer:
|
||||
{
|
||||
LDA SprXSpeed, X : EOR.b #$FF : INC : STA SprXSpeed, X
|
||||
LDA SprYSpeed, X : EOR.b #$FF : INC : STA SprYSpeed, X
|
||||
LDA SprXSpeed, X : EOR.b #$FF : INC : STA.w SprXSpeed, X
|
||||
LDA SprYSpeed, X : EOR.b #$FF : INC : STA.w SprYSpeed, X
|
||||
|
||||
JSL Sprite_MoveAltitude
|
||||
|
||||
@@ -159,20 +159,12 @@ Sprite_BounceFromTileCollision:
|
||||
; =========================================================
|
||||
|
||||
Sprite_BounceOffWall:
|
||||
LDA.w SprCollision, X
|
||||
AND.b #$03
|
||||
BEQ .no_horizontal_collision
|
||||
|
||||
JSL Sprite_InvertSpeed_X
|
||||
|
||||
.no_horizontal_collision
|
||||
LDA.w SprCollision, X
|
||||
AND.b #$0C
|
||||
BEQ .no_vertical_collision
|
||||
|
||||
JSL Sprite_InvertSpeed_Y
|
||||
|
||||
.no_vertical_collision
|
||||
LDA.w SprCollision, X : AND.b #$03 : BEQ .no_horizontal_collision
|
||||
JSL Sprite_InvertSpeed_X
|
||||
.no_horizontal_collision
|
||||
LDA.w SprCollision, X : AND.b #$0C : BEQ .no_vertical_collision
|
||||
JSL Sprite_InvertSpeed_Y
|
||||
.no_vertical_collision
|
||||
RTL
|
||||
|
||||
; =========================================================
|
||||
|
||||
Reference in New Issue
Block a user