Replace common sprite ram with their symbols

This commit is contained in:
scawful
2024-11-19 16:11:23 -05:00
parent 2b90a21925
commit a4ec5b9f7a
25 changed files with 215 additions and 216 deletions

View File

@@ -31,18 +31,18 @@ NewSpikePrep:
{
PHB : PHK : PLB
LDA $0E30, X : TAY
LDA.w speedValuesH, Y : STA $0D50, X
LDA.w speedValuesV, Y : STA $0D40, X
LDA.w speedValuesH, Y : STA.w SprXSpeed, X
LDA.w speedValuesV, Y : STA.w SprYSpeed, X
PLB
RTL
}
NewSpikeCollision:
{
LDA.b #$04 : STA $0DF0, X
LDA.b #$04 : STA.w SprTimerA, X
LDA $0D50, X : EOR.b #$FF : INC A : STA $0D50, X
LDA $0D40, X : EOR.b #$FF : INC A : STA $0D40, X
LDA.w SprXSpeed, X : EOR.b #$FF : INC A : STA.w SprXSpeed, X
LDA.w SprYSpeed, X : EOR.b #$FF : INC A : STA.w SprYSpeed, X
LDA.b #$05 : JSL $0DBB7C ; Sound_SetSfx2PanLong
RTL

View File

@@ -130,15 +130,15 @@ LinkItem_FishingRod:
LDA.l $7F5BA3 : TAX
LDY.b $66
LDA.w DirSpeedsY, Y : STA.w $0D40, X ; YSpeed
LDA.w DirSpeedsX, Y : STA.w $0D50, X ; YSpeed
LDA.w DirSpeedsY, Y : STA.w SprYSpeed, X ; YSpeed
LDA.w DirSpeedsX, Y : STA.w SprXSpeed, X ; YSpeed
.BringBackFloater
LDA.b #$10 : STA.w $0F80, X ; Gravity
; =======================================================
; We got something spawn it and pull it at us
LDA.w $0DB0, X : BEQ .noPrize
LDA.w SprMiscB, X : BEQ .noPrize
JSL GetRandomInt : AND #$0F : TAY : LDA Prizes, Y : BEQ .noPrize
JSL Sprite_SpawnDynamically
JSL Sprite_SetSpawnedCoordinates
@@ -150,11 +150,11 @@ LinkItem_FishingRod:
PHX
LDX.b $66
LDA.w DirSpeedsY, X : STA.w $0D40, Y ; YSpeed
LDA.w DirSpeedsX, X : STA.w $0D50, Y ; YSpeed
LDA.w DirSpeedsY, X : STA.w SprYSpeed, Y ; YSpeed
LDA.w DirSpeedsX, X : STA.w SprXSpeed, Y ; YSpeed
PLX
LDA.b #$FF : STA.w $0EE0, Y
LDA.b #$FF : STA.w SprTimerD, Y
LDA.b #$20 : STA.w $0F80, Y ; Gravity
;LDA.b #$06 : STA.w $0F70, Y
@@ -324,19 +324,19 @@ Sprite_CheckIfActive:
SpritePrep_Floater:
{
LDA.b $66 : CMP.b #$03 : BNE .notRight
LDA.b #$12 : STA.w $0D50, X ; XSpeed
LDA.b #$12 : STA.w SprXSpeed, X ; XSpeed
BRA .DoInitFloater
.notRight
CMP.b #$02 : BNE .notLeft
LDA.b #$ED : STA.w $0D50, X ; XSpeed
LDA.b #$ED : STA.w SprXSpeed, X ; XSpeed
BRA .DoInitFloater
.notLeft
CMP.b #$01 : BNE .notDown
LDA.b #$12 : STA.w $0D40, X ; YSpeed
LDA.b #$12 : STA.w SprYSpeed, X ; YSpeed
BRA .DoInitFloater
.notDown
CMP.b #$00 : BNE .notUp
LDA.b #$ED : STA.w $0D40, X ; YSpeed
LDA.b #$ED : STA.w SprYSpeed, X ; YSpeed
BRA .DoInitFloater
.notUp
@@ -345,11 +345,11 @@ SpritePrep_Floater:
LDA.b #$08 : STA.w $0F70, X ; Height
LDA.b #$10 : STA.w $0F80, X ; Gravity
LDA.b #$00 : STA.w SprMiscG, X ; is it in water?
LDA.b #$00 : STA.w $0EB0, X ; Wiggling Velocity index
LDA.b #$00 : STA.w $0E90, X ; just for a check
LDA.b #$00 : STA.w $0DB0, X ; if we have a fish on line
LDA.b #$00 : STA.w SprMiscE, X ; Wiggling Velocity index
LDA.b #$00 : STA.w SprMiscD, X ; just for a check
LDA.b #$00 : STA.w SprMiscB, X ; if we have a fish on line
;$0EE0 Timer for when floater is in water waiting for a fish to catch
;SprTimerD Timer for when floater is in water waiting for a fish to catch
RTL
}
@@ -372,34 +372,34 @@ Sprite_Floater:
LDA.w SprMiscG, X : BEQ .noFishOnLine ; is the floater in water?
LDA.w $0EE0, X : BNE .noWigglingYet ; timerD wait until fish is on line
LDA.w SprTimerD, X : BNE .noWigglingYet ; timerD wait until fish is on line
LDA.w $0DB0, X : BNE .fishOnlineWait
LDA.w SprMiscB, X : BNE .fishOnlineWait
; start another random timer for the time it'll last
JSL GetRandomInt : AND #$3F
CLC : ADC.b #$0F : STA.w $0DF0, X ; wiggling timer
INC.w $0DB0, X ; we have a fish on line
CLC : ADC.b #$0F : STA.w SprTimerA, X ; wiggling timer
INC.w SprMiscB, X ; we have a fish on line
.noWigglingYet
LDA.w $0DB0, X : BEQ .noFishOnLine ; do we already have a fish on line?
LDA.w SprMiscB, X : BEQ .noFishOnLine ; do we already have a fish on line?
.fishOnlineWait
LDA.w $0DF0, X : BNE .still_wiggling
STZ.w $0DB0, X ; no more fish on line took too much time
LDA.w SprTimerA, X : BNE .still_wiggling
STZ.w SprMiscB, X ; no more fish on line took too much time
JSL GetRandomInt : AND.b #$7F
CLC : ADC.b #$7F : STA.w $0EE0, X ; reset timer wait until fish is on line
STZ.w $0D50, X
STZ.w $0D40, X
CLC : ADC.b #$7F : STA.w SprTimerD, X ; reset timer wait until fish is on line
STZ.w SprXSpeed, X
STZ.w SprYSpeed, X
BRA .noFishOnLine
.still_wiggling
LDY.w $0E10, X
LDA.w WigglingTable, Y : STA.w $0D50, X
LDA.w WigglingTable, Y : STA.w $0D40, X
LDY.w $0E10, X : BNE + ; use timer to do wiggling
LDY.w SprTimerC, X
LDA.w WigglingTable, Y : STA.w SprXSpeed, X
LDA.w WigglingTable, Y : STA.w SprYSpeed, X
LDY.w SprTimerC, X : BNE + ; use timer to do wiggling
; if = 0 then put it back to F
LDA.b #$0F : STA.w $0E10, X ; wiggling timer
LDA.b #$0F : STA.w SprTimerC, X ; wiggling timer
+
.noFishOnLine
@@ -413,9 +413,9 @@ Sprite_Floater:
STZ.w $0F70, X
LDA.w $0D50, X : ASL A : ROR.w $0D50, X
LDA.w SprXSpeed, X : ASL A : ROR.w SprXSpeed, X
LDA.w $0D40, X : ASL A : ROR.w $0D40, X
LDA.w SprYSpeed, X : ASL A : ROR.w SprYSpeed, X
LDA.w $0F80, X : EOR.b #$FF : INC A
@@ -423,8 +423,8 @@ Sprite_Floater:
CMP.b #$09
BCS .no_bounce
LDA.w $0E90, X : BNE .not_water_tile_last
INC.w $0E90, X
LDA.w SprMiscD, X : BNE .not_water_tile_last
INC.w SprMiscD, X
JSL Sprite_CheckTileCollision
LDA.w $0FA5
CMP.b #$08 : BEQ .water_tile_last
@@ -434,12 +434,12 @@ Sprite_Floater:
JSL Sprite_SpawnSmallSplash
JSL GetRandomInt : AND #$3F
CLC : ADC #$3F : STA.w $0EE0, X
CLC : ADC #$3F : STA.w SprTimerD, X
.not_water_tile_last
STZ.w $0F80, X
STZ.w $0D50, X
STZ.w $0D40, X
STZ.w SprXSpeed, X
STZ.w SprYSpeed, X
BRA .aloft

View File

@@ -125,7 +125,7 @@ LinkItem_FirePortal:
.finish
TYX
STZ $0D60, X : STZ $0D70, X
STZ.w SprYRound, X : STZ.w SprXRound, X
PLX
.return

View File

@@ -7,7 +7,7 @@ Sprite3_Move:
org $1EB593
Arrghus_ApproachTargetSpeed:
{
LDA $0DF0, X : BNE .delay
LDA.w SprTimerA, X : BNE .delay
INC $0D80, X
@@ -23,6 +23,6 @@ AdvancedArrghus:
LDA.b #$04 : STA $0CD2, Y
JSL Sprite_SpawnFireball
LDA.b #$50 : STA $0DF0, X
LDA.b #$50 : STA.w SprTimerA, X
RTL
}

View File

@@ -178,14 +178,14 @@ Sprite_DarkLink_Main:
REP #$20
LDA $0FD8 ; Sprite X
LDA.w SprCachedX ; Sprite X
SEC : SBC $22 ; - Player X
BPL +
EOR #$FFFF
+
STA $00 ; Distance X (ABS)
LDA $0FDA ; Sprite Y
LDA.w SprCachedY ; Sprite Y
SEC : SBC $20 ; - Player Y
BPL +
EOR #$FFFF
@@ -438,7 +438,7 @@ Sprite_DarkLink_Main:
; ... but once spawned, transmute it to an enemy bomb.
JSL $06AD50
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
STA $0E00, Y
STA.w SprTimerB, Y
.spawn_failed
RTS
}
@@ -460,10 +460,10 @@ Sprite_DarkLink_Main:
PHX
TYX
LDA.b #$28 : JSL Sprite_ApplySpeedTowardsPlayer
LDA.b #$01 : STA $0DB0, X
LDA.b #$01 : STA.w SprMiscB, X
LDA.b #$16 : STA $0F80, X
JSL GetRandomInt : AND #$7F : CLC : ADC #$20
STA $0E00, X
STA.w SprTimerB, X
PLX
.spawn_failed
@@ -677,14 +677,14 @@ Sprite_DarkLink_Main:
REP #$20
LDA $0FD8 ; Sprite X
LDA.w SprCachedX ; Sprite X
SEC : SBC $22 ; - Player X
BPL +
EOR #$FFFF
+
STA $00 ; Distance X (ABS)
LDA $0FDA ; Sprite Y
LDA.w SprCachedY ; Sprite Y
SEC : SBC $20 ; - Player Y
BPL +
EOR #$FFFF

View File

@@ -11,7 +11,7 @@ KingDodongo_NewHealthSystem:
TAY
LDA.w .phase_table,Y
STA.w $0DB0,X
STA.w SprMiscB,X
PLB
RTL

View File

@@ -282,11 +282,11 @@ 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 SprX,Y
LDA.w SprCachedX : STA.w SprX,Y
LDA.w $0FD9 : STA.w SprXH,Y
LDA.w $0FDA : STA.w SprY,Y
LDA.w SprCachedY : STA.w SprY,Y
LDA.w $0FDB : STA.w SprYH,Y
LDA.b #$1F : STA.w $0DF0,Y : STA.w $0D90,Y
LDA.b #$1F : STA.w SprTimerA,Y : STA.w $0D90,Y
LDA.b #$02 : STA.w $0F20,Y
.no_space
LDA.w SprTimerA, X : BNE .continue
@@ -491,7 +491,7 @@ MoveBody:
LDA.b #$01 : STA.w $0428
LDA.w SprY, X : SEC : SBC.b #$0C : STA.w $0DB0, X
LDA.w SprY, X : SEC : SBC.b #$0C : STA.w SprMiscB, X
LDA.w $0B08 : SEC : SBC.w SprX, X
CLC : ADC.b #$02
@@ -502,7 +502,7 @@ MoveBody:
CMP.b #$04 : BCS .not_at_target
.adjust_phase ; Unused?
LDA.b #$30 : STA.w $0DF0, X
LDA.b #$30 : STA.w SprTimerA, X
.not_at_target
; LayerEffect_Trinexx $0AFEF0

View File

@@ -244,16 +244,16 @@ KydreeokHead_RotationMove:
Sprite_KydreeokHead_Damage_Flash:
{
LDA.w $0EB0, X : BEQ .dontFlash
LDA.w SprMiscE, X : BEQ .dontFlash
; Change the palette to the next in the cycle
LDA.w $0EB0, X : INC : CMP.b #$08 : BNE .dontReset
LDA.w SprMiscE, X : INC : CMP.b #$08 : BNE .dontReset
LDA.b #$00
.dontReset
STA.w $0EB0, X
STA.w SprMiscE, X
BRA .flash
.dontFlash
STZ.w $0EB0, X
STZ.w SprMiscE, X
.flash
RTS
@@ -685,7 +685,7 @@ Sprite_KydreeokHead_Draw:
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06
LDA.w $0EB0, X : STA $08
LDA.w SprMiscE, X : STA $08
PHX
; amount of tiles - 1

View File

@@ -46,7 +46,7 @@ Lanmola_FinishInitialization:
{
PHB : PHK : PLB
LDA.l .starting_delay, X : STA $0DF0, X
LDA.l .starting_delay, X : STA.w SprTimerA, X
LDA.b #$FF : STA $0F70, X
@@ -103,8 +103,8 @@ Lanmola_Wait: ;0x00
{
JSR Lanmola_Draw
LDA $0DF0, X : BNE .delay ; ORA $0F00, X :
LDA.b #$7F : STA $0DF0, X
LDA.w SprTimerA, X : BNE .delay ; ORA $0F00, X :
LDA.b #$7F : STA.w SprTimerA, X
INC $0D80, X
@@ -124,36 +124,36 @@ Lanmola_Mound: ;0x01
JSR Lanmola_DrawMound
JSL CheckIfActive : BCS Lanmola_Wait_delay
LDA $0DF0, X : BNE .return
LDA.w SprTimerA, X : BNE .return
JSL Lanmola_SpawnShrapnel
LDA.b #$13 : STA $012D
TXY
JSL GetRandomInt : AND.b #$07 : TAX
LDA $7EEAA8, X : STA $0DA0, Y ; Get random X pos to have the lanmola fly to. ;.randXPos
LDA $7EEAA8, X : STA.w SprMiscA, Y ; Get random X pos to have the lanmola fly to. ;.randXPos
JSL GetRandomInt : AND.b #$07 : TAX
LDA $7EEAB0, X : STA $0DB0, Y ; Get random Y pos to have the lanmola fly to. ;.randYPos
LDA $7EEAB0, X : STA.w SprMiscB, Y ; Get random Y pos to have the lanmola fly to. ;.randYPos
TYX
INC $0D80, X
LDA.b #$18 : STA $0F80, X
STZ $0EC0, X
STZ $0ED0, X
STZ.w SprMiscF, X
STZ.w SprMiscG, X
; ALTERNATE ENTRY POINT
.Lanmola_SetScatterSandPosition
LDA.w SprXH, X : STA $0DC0, X
LDA.w SprYH, X : STA $0EB0, X
LDA.w SprYH, X : STA.w SprMiscE, X
LDA.w SprX, X : STA $0DE0, X
LDA.w SprX, X : STA.w SprMiscC, X
LDA.w SprY, X : STA $0E70, X
LDA.b #$4A : STA $0E00, X
LDA.b #$4A : STA.w SprTimerB, X
.return
@@ -172,9 +172,9 @@ Lanmola_Fly: ;0x02
JSR Sprite2_MoveAltitude
; Slowly decrease the Y speed when first coming out of the ground
LDA $0EC0, X : BNE .notRising
LDA.w SprMiscF, X : BNE .notRising
LDA $0F80, X : SEC : SBC.b #$01 : STA $0F80, X : BNE .beta
INC $0EC0, X
INC.w SprMiscF, X
.beta
@@ -185,19 +185,19 @@ Lanmola_Fly: ;0x02
; Use the Y speed to bob up and down
LDA $1A : AND.b #$01 : BNE .dontSwitchDirections ; Every other frame.
TXY
LDA $0ED0, X : AND.b #$01 : TAX
LDA.w SprMiscG, X : AND.b #$01 : TAX
LDA $0F80, Y : CLC : ADC $7EEA9C, X : STA $0F80, Y : CMP $7EEA9E, X : BNE .dontSwitchDirections2 ;.y_speed_slope ;.y_speeds
TYX : INC $0ED0, X ; Switch direction
TYX : INC.w SprMiscG, X ; Switch direction
.dontSwitchDirections2
TYX
.dontSwitchDirections
LDA $0DA0, X : STA $04
LDA.w SprMiscA, X : STA $04
LDA.w SprXH, X : STA $05
LDA $0DB0, X : STA $06
LDA.w SprMiscB, X : STA $06
LDA.w SprYH, X : STA $07
LDA.w SprX, X : STA $00
LDA.w SprXH, X : STA $01
@@ -219,8 +219,8 @@ Lanmola_Fly: ;0x02
JSL Sprite_ProjectSpeedTowardsEntityLong
LDA $00 : STA $0D40, X
LDA $01 : STA $0D50, X
LDA $00 : STA.w SprYSpeed, X
LDA $01 : STA.w SprXSpeed, X
JSR Sprite2_Move
@@ -250,7 +250,7 @@ Lanmola_Dive: ;0x03
LDA $0F70, X : BPL .notUnderGroundYet
INC $0D80, X
LDA.b #$80 : STA $0DF0, X
LDA.b #$80 : STA.w SprTimerA, X
JSR Lanmola_Mound_Lanmola_SetScatterSandPosition
@@ -267,7 +267,7 @@ Lanmola_Reset: ;0x04
JSL Lanmola_DrawDirtLONG
JSL CheckIfActive : BCS Lanmola_Dive_notUnderGroundYet
LDA $0DF0, X : BNE .wait
LDA.w SprTimerA, X : BNE .wait
STZ $0D80, X ; Go back to wait phase
TXY
@@ -289,7 +289,7 @@ Lanmola_Death: ;0x05
{
JSR Lanmola_Draw
LDA $0DF0, X : BNE .timerNotDone
LDA.w SprTimerA, X : BNE .timerNotDone
STZ $0DD0, X
; Y is the index where we write in RAM
@@ -316,7 +316,7 @@ Lanmola_Death: ;0x05
.timerNotDone
LDA $0DF0, X : CMP.b #$20 : BCC Lanmola_Reset_wait
LDA.w SprTimerA, X : CMP.b #$20 : BCC Lanmola_Reset_wait
CMP.b #$A0 : BCS Lanmola_Reset_wait
AND.b #$0F : BNE Lanmola_Reset_wait
TXY
@@ -346,7 +346,7 @@ Lanmola_Death: ;0x05
LDA.b #$04 : STA $0DD0, Y
LDA.b #$1F : STA $0DF0, Y : STA $0D90, Y
LDA.b #$1F : STA.w SprTimerA, Y : STA $0D90, Y
LDA $0A : STA.w SprX, Y
LDA $0B : STA.w SprXH, Y
@@ -386,7 +386,7 @@ Lanmola_Draw:
STA $0F
LDA $0D40, X : ASL A : ROL A : AND.b #$01 : TAX
LDA.w SprYSpeed, X : ASL A : ROL A : AND.b #$01 : TAX
LDA $7EEA06, X : STA $0C ;.data2
@@ -528,15 +528,15 @@ Lanmola_DrawMound:
PHX
LDA $0DF0, X : LSR #3 : TAX
LDA.w SprTimerA, X : LSR #3 : TAX
LDA $7EEA54, X : TAX ;.frameMound
LDY.b #$00
REP #$20
LDA $0FDA : SEC : SBC $E8 : STA $02
LDA $0FD8 : SEC : SBC $E2 : STA ($90), Y
LDA.w SprCachedY : SEC : SBC $E8 : STA $02
LDA.w SprCachedX : SEC : SBC $E2 : STA ($90), Y
STZ $37
BPL .notNegative
@@ -601,11 +601,11 @@ Sprite_Shrapnel:
TXA : EOR $1A : AND.b #$03 : BNE .noTileCollision
REP #$20
LDA $0FD8 : SEC : SBC $22 : CLC : ADC.w #$0004
LDA.w SprCachedX : SEC : SBC $22 : CLC : ADC.w #$0004
CMP.w #$0010 : BCS .player_not_close
LDA $0FDA : SEC : SBC $20 : CLC : ADC.w #$FFFC
LDA.w SprCachedY : SEC : SBC $20 : CLC : ADC.w #$FFFC
CMP.w #$000C : BCS .player_not_close
@@ -622,7 +622,7 @@ Sprite_Shrapnel:
.noTileCollision
LDA $0DF0, X : BNE .timerNotDone
LDA.w SprTimerA, X : BNE .timerNotDone
STZ $0DD0, X
.timerNotDone

View File

@@ -38,14 +38,14 @@ Lanmola_DrawDirtLONG:
Lanmola_DrawDirt:
{
LDA $0E00, X : BNE .timerNotDone
LDA.w SprTimerB, X : BNE .timerNotDone
RTS
.timerNotDone
; Determine weather the dirt should draw in front of or behind the body
; based on its y velocity.
LDA $0D40, X : ASL A : ROL A : ASL A : EOR $0D80, X : AND.b #$02 : BEQ .nu
LDA.w SprYSpeed, X : ASL A : ROL A : ASL A : EOR $0D80, X : AND.b #$02 : BEQ .nu
LDA.b #$08 : JSL OAM_AllocateFromRegionB
BRA .xi
@@ -56,10 +56,10 @@ Lanmola_DrawDirt:
LDY.b #$00
LDA $0E00, X : LSR #2 : AND.b #$03 : EOR.b #$03 : ASL A : STA $06
LDA.w SprTimerB, X : LSR #2 : AND.b #$03 : EOR.b #$03 : ASL A : STA $06
LDA $0DC0, X : XBA
LDA $0DE0, X
LDA.w SprMiscC, X
REP #$20 : SEC : SBC $E2 : STA $00 : SEP #$20
STZ $37
@@ -68,7 +68,7 @@ Lanmola_DrawDirt:
.notNegative3
LDA $0EB0, X : XBA
LDA.w SprMiscE, X : XBA
LDA $0E70, X
REP #$20 : SEC : SBC $E8 : STA $02 : SEP #$20
@@ -281,8 +281,8 @@ Lanmola_MoveSegment:
PLX
LDA $0D40, X : SEC : SBC $0F80, X : STA $00
LDA $0D50, X : STA $01
LDA.w SprYSpeed, X : SEC : SBC $0F80, X : STA $00
LDA.w SprXSpeed, X : STA $01
JSL Sprite_ConvertVelocityToAngle : STA $0F
LDA $7EEA00, X : STA $04 ;.sprite_regions
@@ -330,7 +330,7 @@ Lanmola_MoveSegment:
SetShrapnelTimer:
{
LDA.b #$40 : STA $0DF0, Y
LDA.b #$40 : STA.w SprTimerA, Y
JSL GetRandomInt ; replaced code

View File

@@ -819,7 +819,7 @@ Mothula_SpawnBeams:
CLC : ADC.b #$03 : STA.w SprY,Y
LDA.b #$10 : STA.w $0DF0,Y : STA.w $0BA0,Y
LDA.b #$10 : STA.w SprTimerA,Y : STA.w $0BA0,Y
PHX
@@ -828,10 +828,10 @@ Mothula_SpawnBeams:
LDA.b $00 : CLC : ADC.w .speed_and_offset_x,X
STA.w SprX,Y
LDA.w .speed_and_offset_x,X : STA.w $0D50,Y
LDA.w .speed_and_offset_x,X : STA.w SprXSpeed,Y
LDA.w .speed_y,X
STA.w $0D40,Y
STA.w SprYSpeed,Y
LDA.b #$00
STA.w $0F70,Y

View File

@@ -887,7 +887,7 @@ SpawnSplash:
STA.w $0DD0,Y
LDA.b #$0F
STA.w $0DF0,Y
STA.w SprTimerA,Y
LDA.b #$00
STA.w $0D80,Y
@@ -936,7 +936,7 @@ SpawnBossPoof:
STA.w $0D90,Y
LDA.b #$2F
STA.w $0DF0,Y
STA.w SprTimerA,Y
LDA.b #$09
STA.w $0E40,Y
@@ -960,7 +960,7 @@ HandleMovingSplash:
TXY
LDX.b #$1D
LDA.w $0D40,Y
LDA.w SprYSpeed,Y
BMI .next_slot
LDX.b #$0E
@@ -1017,7 +1017,7 @@ SpawnMedallion:
TYX
LDA.b #$10
STA.w $0D50, X
STA.w SprXSpeed, X
LDA.b #$30
STA.w $0F80, X

View File

@@ -205,7 +205,7 @@ Sprite_Twinrova_Main:
RTS
; ---------------------------------------------
.phase_1
LDA $0DA0 : BEQ .not_flashing
LDA.w SprMiscA : BEQ .not_flashing
LDA.b #$30 : STA.w SprTimerD, X
%GotoAction(7) ; Goto Twinrova_Hurt
RTS
@@ -585,20 +585,20 @@ TrinexxBreath_AltEntry:
JSL GetRandomInt
AND.b #$03
TAY
LDA SpeedAdjustments, Y : CLC : ADC $0D50, X : STA $0D50, X
LDA SpeedAdjustments+4, Y : CLC : ADC $0D40, X : STA $0D40, X
LDA SpeedAdjustments, Y : CLC : ADC.w SprXSpeed, X : STA.w SprXSpeed, X
LDA SpeedAdjustments+4, Y : CLC : ADC.w SprYSpeed, X : STA.w SprYSpeed, X
.no_adjustment
JSL Sprite_BounceFromTileCollision
LDA $1A : AND.b #$03 : BNE .no_shake
JSL Sprite_IsToRightOfPlayer
LDA $0D50, X : CMP .x_speed_targets, Y : BEQ .no_shake
CLC : ADC.w .shake_x, Y : STA $0D50, X
LDA.w SprXSpeed, X : CMP .x_speed_targets, Y : BEQ .no_shake
CLC : ADC.w .shake_x, Y : STA.w SprXSpeed, X
.no_shake
JSL Sprite_IsBelowPlayer
LDA $0D40, X : CMP .x_speed_targets, Y : BEQ .exit
CLC : ADC.w .shake_y, Y : STA $0D40, X
LDA.w SprYSpeed, X : CMP .x_speed_targets, Y : BEQ .exit
CLC : ADC.w .shake_y, Y : STA.w SprYSpeed, X
JSL Sprite_CheckTileCollision : BEQ .exit
LDY #$10
@@ -803,11 +803,11 @@ Ganon_SpawnFallingTilesOverlord:
;----------------------------------------------------------
.free_slot
#_1D90DB: LDA.w $0EC0,X
#_1D90DB: LDA.w SprMiscF,X
#_1D90DE: CMP.b #$04
#_1D90E0: BCS .dont_spawn
#_1D90E2: INC.w $0EC0,X
#_1D90E2: INC.w SprMiscF,X
#_1D90E5: PHX
@@ -1044,10 +1044,10 @@ ReleaseFireballs:
JSL Sprite_DirectionToFacePlayer
LDA.w .speed_x,Y
STA.w $0D50,X
STA.w SprXSpeed,X
LDA.w .speed_y,Y
STA.w $0D40,X
STA.w SprYSpeed,X
LDA.w SprX,X
CLC
@@ -1217,13 +1217,13 @@ Blind_SpawnFromMaiden:
; JSL SpritePrep_LoadProperties
; Set SprTimerC
LDA.b #$C0 : STA.w $0E10,X
LDA.b #$C0 : STA.w SprTimerC,X
; Set SprGfx
LDA.b #$00 : STA.w $0DC0,X
; Set SprMiscC and bulletproof properties
LDA.b #$02 : STA.w $0DE0,X : STA.w $0BA0,X
LDA.b #$02 : STA.w SprMiscC,X : STA.w $0BA0,X
; Set the 2nd key / heart piece items taken room flag
LDA.w $0403 : ORA.b #$20 : STA.w $0403
@@ -1253,16 +1253,16 @@ SpritePrep_Blind_PrepareBattle:
BEQ .despawn
LDA.b #$60
STA.w $0E10,X
STA.w SprTimerC,X
LDA.b #$01
STA.w $0DB0,X
STA.w SprMiscB,X
LDA.b #$02
STA.w $0DE0,X
STA.w SprMiscC,X
LDA.b #$04
STA.w $0EB0,X
STA.w SprMiscE,X
LDA.b #$07
STA.w $0DC0,X

View File

@@ -264,12 +264,12 @@ AntiKirby_StealItem:
{
REP #$20
LDA.w $0FD8
LDA.w SprCachedX
CLC : ADC.b $04
SEC : SBC.b $22
CLC : ADC.w #$000C : CMP.w #$0018 : BCS .exit
LDA.w $0FDA
LDA.w SprCachedY
CLC : ADC.b $06
SEC : SBC.b $20
CLC : ADC.w #$000C : CMP.w #$0020 : BCS .exit

View File

@@ -330,17 +330,17 @@ SpawnPeaShot:
PHX
; Spawn Location
REP #$20
LDA $0FD8
LDA.w SprCachedX
SEP #$20
STA.w SprX, Y : XBA : STA.w SprXH, Y
REP #$20
LDA $0FDA : CLC : ADC.w #$000C
LDA.w SprCachedY : CLC : ADC.w #$000C
SEP #$20
STA.w SprY, Y : XBA : STA.w SprYH, Y
TYX
STZ $0D70, X
STZ.w SprXRound, X
LDA #$10 : STA.w SprYSpeed, X
STA.w SprYRound, X

View File

@@ -191,8 +191,8 @@ HelmetChuchu_SpawnHookshotDrag:
LDA.b #$00 : STA.w SprMiscB, Y
LDA.b #$80 : STA.w SprTimerA, Y
LDA.b #$01 : STA.w SprNbrOAM, Y
LDA.w .speed_x, X : STA.w $0D50, Y
LDA.w .speed_y, X : STA.w $0D40, Y
LDA.w .speed_x, X : STA.w SprXSpeed, Y
LDA.w .speed_y, X : STA.w SprYSpeed, Y
.no_space2
PLX
RTS

View File

@@ -148,9 +148,9 @@ Sprite_Octorok_Move:
.wait
LDY.w SprMiscC, X
LDA.w .speed_x, Y : STA.w $0D50,X
LDA.w .speed_x, Y : STA.w SprXSpeed,X
LDA.w .speed_y, Y : STA.w $0D40,X
LDA.w .speed_y, Y : STA.w SprYSpeed,X
JSL Sprite_CheckTileCollision
LDA.w $0E70, X : BEQ .no_collision
@@ -162,7 +162,7 @@ Sprite_Octorok_Move:
; ---------------------------------------------------------
.octorok_used_barrage
STZ.w $0D50, X : STZ.w $0D40,X
STZ.w SprXSpeed, X : STZ.w SprYSpeed,X
LDA.w SprTimerA, X : BNE Octorock_ShootEmUp
INC.w SprMiscF, X
@@ -405,16 +405,16 @@ Octorok_SpawnRock:
LDA.w SprMiscC,X
TAX
LDA.b $00 : CLC : ADC.w .offset_x_low,X : STA.w $0D10,Y
LDA.b $01 : ADC.w .offset_x_high,X : STA.w $0D30,Y
LDA.b $02 : CLC : ADC.w .offset_y_low,X : STA.w $0D00,Y
LDA.b $03 : ADC.w .offset_y_high,X : STA.w $0D20,Y
LDA.b $00 : CLC : ADC.w .offset_x_low,X : STA.w SprX,Y
LDA.b $01 : ADC.w .offset_x_high,X : STA.w SprXH,Y
LDA.b $02 : CLC : ADC.w .offset_y_low,X : STA.w SprY,Y
LDA.b $03 : ADC.w .offset_y_high,X : STA.w SprYH,Y
LDA.w SprMiscC,Y
TAX
LDA.w .rock_speed_x,X : STA.w $0D50,Y
LDA.w .rock_speed_y,X : STA.w $0D40,Y
LDA.w .rock_speed_x,X : STA.w SprXSpeed,Y
LDA.w .rock_speed_y,X : STA.w SprYSpeed,Y
PLX
.fired_a_blank

View File

@@ -1,6 +1,6 @@
; =========================================================
; =========================================================
; Sprite Properties
; =========================================================
; =========================================================
!SPRID = Sprite_Poltergeist
!NbrTiles = 4 ; Number of tiles used in a frame
@@ -11,7 +11,7 @@
!DeathAnimation = 00 ; 00 = normal death, 01 = no death animation
!ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it
!SmallShadow = 00 ; 01 = small shadow, 00 = no shadow
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
!Palette = 0 ; Unused in this template (can be 0 to 7)
!Hitbox = 00 ; 00 to 31, can be viewed in sprite draw tool
!Persist = 00 ; 01 = your sprite continue to live offscreen
@@ -60,7 +60,7 @@ Sprite_Poltergeist_Prep:
{
PHB : PHK : PLB
LDA #$00 : STA $0F60, X ; Persist
LDA #$00 : STA $0F60, X ; Persist
LDA #$00 : STA $0CAA, X ; Sprite persist in dungeon
LDA #$02 : STA $0E40, X ;1 tile by default
LDA #$01 : STA.w SprAction, X ; by default it's a chair
@@ -106,8 +106,8 @@ Sprite_Poltergeist_Prep:
LDA #36 : STA.w SprFrame, X
LDA #$01 : STA.w SprAction, X
LDA #$04 : STA $0E40, X
LDA.w SprY, X : SEC : SBC #$0C : STA.w SprY, X
LDA.w SprX, X : CLC : ADC #$08 : STA.w SprX, X
LDA.w SprY, X : SEC : SBC #$0C : STA.w SprY, X
LDA.w SprX, X : CLC : ADC #$08 : STA.w SprX, X
BRA .done
.notDoor
@@ -119,7 +119,7 @@ Sprite_Poltergeist_Prep:
.secondset
LDA.w SprSubtype, X : AND #$07 : CLC : ADC #30 : STA.w SprFrame, X
LDA.w SprSubtype, X
LDA.w SprSubtype, X
.done
@@ -152,7 +152,7 @@ Sprite_Poltergeist_Prep:
; 21:Shutter door
Sprite_Poltergeist_Main:
{
{
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
dw PictureFrame
@@ -189,7 +189,7 @@ PictureFrame:
JSL Sprite_CheckDamageFromPlayer : BCC .noShatter
JMP Shatter
.noShatter
RTS
@@ -197,7 +197,7 @@ PictureFrame:
GetLinkDistance16bit:
{
LDA $0FD8 ; Sprite X
LDA.w SprCachedX ; Sprite X
SEC : SBC $22 ; - Player X
BPL +
@@ -206,7 +206,7 @@ GetLinkDistance16bit:
STA $00 ; Distance X (ABS)
LDA $0FDA ; Sprite Y
LDA.w SprCachedY ; Sprite Y
SEC : SBC $20 ; - Player Y
BPL +
@@ -287,11 +287,11 @@ Shatter:
LDA.b #$1F : JSL Sound_SetSfx2PanLong
STZ $0DC0, X
LDA.b #$04 : STA $0DB0, X
LDA.b #$04 : STA.w SprMiscB, X
LDA.b #$06 : STA $0DD0, X
LDA.b #$1F : STA $0DF0, X
LDA.b #$1F : STA.w SprTimerA, X
LDA.b #$EC : STA $0E20, X
@@ -299,7 +299,7 @@ Shatter:
STZ $0EF0, X
LDA.b #$80 : STA $0DB0, X
LDA.b #$80 : STA.w SprMiscB, X
RTS
}
@@ -309,7 +309,7 @@ Axe:
REP #$20
JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough
SEP #$20
LDA.w SprMiscA, X : BNE +
LDA #$01 : STA.w SprMiscA, X
+
@@ -476,7 +476,7 @@ SpawnerTester:
.secondset
LDA.w SprSubtype, Y : AND #$07 : CLC : ADC #30 : STA.w SprFrame, Y
LDA.w SprSubtype, Y
LDA.w SprSubtype, Y
.done
@@ -504,17 +504,17 @@ Sprite_Poltergeist_Draw:
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX
ASL A : TAX
REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
@@ -532,12 +532,12 @@ Sprite_Poltergeist_Draw:
INY
LDA .properties, X : STA ($90), Y
PHY
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
@@ -548,8 +548,8 @@ Sprite_Poltergeist_Draw:
RTS
}
; =========================================================
; =========================================================
.start_index
db $00, $02, $04, $06, $08, $09, $0F, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1F, $20, $22, $23, $25, $26, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $33, $35, $37, $39, $3B, $3F, $41, $42, $44, $45, $47, $48, $4A
@@ -696,7 +696,7 @@ Sprite_Poltergeist_Draw:
db $28
db $3E, $3F
db $28
.properties
db $3D, $7D
db $3D, $7D

View File

@@ -155,10 +155,10 @@ Puffstool_SpawnSpores:
LDX.b $0D
LDA.w .speed_x,X
STA.w $0D50,Y
STA.w SprXSpeed,Y
LDA.w .speed_y,X
STA.w $0D40, Y
STA.w SprYSpeed, Y
LDA.b #$20
STA.w $0F80, Y

View File

@@ -202,8 +202,8 @@ Sprite_Farore_Main:
}
; 07
; 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
; Look at the RAM SprY to SprYRound, the first few are the actual positions of the sprite
; that you can just set manually or SprYSpeed and SprXSpeed 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
MakuArea_FaroreWaitForKydrog:

View File

@@ -75,12 +75,12 @@ ChickenLady:
.main
#_1AFED3: LDA.b #$01
#_1AFED5: STA.w $0DE0,X
#_1AFED5: STA.w SprMiscC,X
#_1AFED8: JSL SpriteDraw_RaceGameLady
#_1AFEDC: JSR Sprite_CheckIfActive_Bank1A
#_1AFEDF: LDA.w $0DF0,X
#_1AFEDF: LDA.w SprTimerA,X
#_1AFEE2: CMP.b #$01
#_1AFEE4: BNE .no_message

View File

@@ -259,10 +259,10 @@ Sprite_VillageDog_Main:
CheckIfPlayerIsNearby:
{
REP #$20
LDA $22 : CLC : ADC #$0012 : CMP $0FD8 : BCC .out
LDA $22 : SEC : SBC #$0012 : CMP $0FD8 : BCS .out
LDA $20 : CLC : ADC #$001A : CMP $0FDA : BCC .out
LDA $20 : SEC : SBC #$001A : CMP $0FDA : BCS .out
LDA $22 : CLC : ADC #$0012 : CMP.w SprCachedX : BCC .out
LDA $22 : SEC : SBC #$0012 : CMP.w SprCachedX : BCS .out
LDA $20 : CLC : ADC #$001A : CMP.w SprCachedY : BCC .out
LDA $20 : SEC : SBC #$001A : CMP.w SprCachedY : BCS .out
SEP #$21
RTS ; Return with carry set

View File

@@ -11,7 +11,7 @@
!DeathAnimation = 00 ; 00 = normal death, 01 = no death animation
!ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it
!SmallShadow = 00 ; 01 = small shadow, 00 = no shadow
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
!Palette = 00 ; Unused in this template (can be 0 to 7)
!Hitbox = 00 ; 00 to 31, can be viewed in sprite draw tool
!Persist = 00 ; 01 = your sprite continue to live offscreen
@@ -76,7 +76,6 @@ Sprite_Collectible_Prep:
LDA.b #$03 : STA.w SprAction, X
.not_lupo_mountain
PLB
RTL
}
@@ -86,7 +85,7 @@ Sprite_Collectible_Prep:
Sprite_Collectible_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL UseImplicitRegIndexedLocalJumpTable
dw Pineapple
dw Seashell
@@ -156,7 +155,7 @@ Sprite_Pineapple_Draw:
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
@@ -183,14 +182,14 @@ Sprite_Pineapple_Draw:
INY
LDA .properties, X : STA ($90), Y
PHY
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX
@@ -231,17 +230,17 @@ Sprite_SwordShield_Draw:
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX
ASL A : TAX
REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
@@ -258,14 +257,14 @@ Sprite_SwordShield_Draw:
INY
LDA .properties, X : STA ($90), Y
PHY
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX
@@ -304,17 +303,17 @@ Sprite_RockSirloin_Draw:
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX
ASL A : TAX
REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
@@ -331,14 +330,14 @@ Sprite_RockSirloin_Draw:
INY
LDA .properties, X : STA ($90), Y
PHY
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX

View File

@@ -38,7 +38,7 @@ Sprite_IceBlock_Long:
STZ.w SprMiscC, X
STZ.b $5E : STZ.b $48
.not_being_pushed
LDA.w $0DF0, X : BEQ .retain_momentum
LDA.w SprTimerA, X : BEQ .retain_momentum
LDA.b #$01 : STA.w SprMiscC, X
LDA.b #$84 : STA $48
LDA.b #$04 : STA.b $5E
@@ -123,11 +123,11 @@ Sprite_IceBlock_Main:
BCC NotInContact
JSR ApplyPush
; Set timer
LDA.b #$07 : STA.w $0DF0, X
LDA.b #$07 : STA.w SprTimerA, X
JSL $079291 ; Sprite_RepelDash_long
LDA.w $0E00,X : BNE Statue_CancelHookshot
LDA.w SprTimerB,X : BNE Statue_CancelHookshot
; JSL Sprite_DirectionToFacePlayer
; LDA.w StatueSpeed_x,Y
; STA.w SprXSpeed,X
@@ -154,8 +154,8 @@ Sprite_IceBlock_Main:
NotInContact:
{
%PlayAnimation(0, 0, 1)
LDA.w $0DF0,X : BNE .delay_timer
LDA.b #$0D : STA.w $0E00,X
LDA.w SprTimerA,X : BNE .delay_timer
LDA.b #$0D : STA.w SprTimerB,X
.delay_timer

View File

@@ -57,7 +57,7 @@ Sprite_MoveVert:
{
LDA.w SprYSpeed, X : BEQ .no_velocity
ASL : ASL : ASL : ASL
CLC : ADC.w $0D60,X : STA.w $0D60,X
CLC : ADC.w SprYRound,X : STA.w SprYRound,X
LDY.b #$00
LDA.w SprYSpeed, X
@@ -882,10 +882,10 @@ Sprite_CheckIfRecoiling:
LDA.w $0EA0, X : BEQ .exit
AND.b #$7F : BEQ .recoil_over
LDA.w $0D40, X
LDA.w SprYSpeed, X
PHA
LDA.w $0D50, X
LDA.w SprXSpeed, X
PHA
DEC.w $0EA0, X : BNE .still_recoiling
@@ -902,9 +902,9 @@ Sprite_CheckIfRecoiling:
LDA.b $1A : AND.w .masks,Y : BNE .no_movement
LDA.w $0F30, X : STA.w $0D40,X
LDA.w $0F30, X : STA.w SprYSpeed,X
LDA.w $0F40, X : STA.w $0D50,X
LDA.w $0F40, X : STA.w SprXSpeed,X
LDA.w $0CD2, X : BMI .handle_movement
@@ -916,13 +916,13 @@ Sprite_CheckIfRecoiling:
CMP.b #$04 : BCS .stop_vertical_movement
STZ.w $0F40,X
STZ.w $0D50,X
STZ.w SprXSpeed,X
BRA .movement_stopped
.stop_vertical_movement
STZ.w $0F30,X
STZ.w $0D40,X
STZ.w SprYSpeed,X
.movement_stopped
BRA .no_movement
@@ -932,10 +932,10 @@ Sprite_CheckIfRecoiling:
.no_movement
PLA
STA.w $0D50,X
STA.w SprXSpeed,X
PLA
STA.w $0D40,X
STA.w SprYSpeed,X
PLA
PLA