Replace more common sprite ram with symbols

This commit is contained in:
scawful
2024-11-19 16:25:24 -05:00
parent b17b2125be
commit 9aa9d39c78
34 changed files with 168 additions and 168 deletions

View File

@@ -19,8 +19,8 @@ Arrghus_ApproachTargetSpeed:
pullpc
AdvancedArrghus:
{
LDA $0CAA, Y : ORA.b #$08 : STA $0CAA, Y
LDA.b #$04 : STA $0CD2, Y
LDA.w SprDefl, Y : ORA.b #$08 : STA.w SprDefl, Y
LDA.b #$04 : STA.w SprBump, Y
JSL Sprite_SpawnFireball
LDA.b #$50 : STA.w SprTimerA, X

View File

@@ -557,7 +557,7 @@ Sprite_DarkLink_Main:
LDA #$20
JSL Sprite_ApplySpeedTowardsPlayer
;restore life removed by the checkdamage
STZ.w $0CE2, X
STZ.w SprBump, X
LDA #$20 : STA $29 : STA $C7
@@ -638,9 +638,9 @@ Sprite_DarkLink_Main:
DEC.w $0F80,X : DEC.w $0F80,X
LDA.w $0F70,X : BPL .aloft
LDA.w SprHeight,X : BPL .aloft
STZ.w $0F70,X
STZ.w SprHeight,X
%GotoAction(0)
.aloft
@@ -714,10 +714,10 @@ Sprite_DarkLink_Main:
DEC.w $0F80,X : DEC.w $0F80,X : DEC.w $0F80,X : DEC.w $0F80,X
LDA.w $0F70,X : BPL .aloft
LDA.w SprHeight,X : BPL .aloft
STZ.w $0F70,X
STZ.w SprHeight,X
LDA.b #$90 : STA.w SprTimerC, X
LDA.b #$10 : STA.w SprTimerA, X
@@ -878,12 +878,12 @@ Sprite_DarkLink_Main:
DEC.w $0F80,X : DEC.w $0F80,X
LDA.w $0F70,X : BPL .aloft
LDA.w SprHeight,X : BPL .aloft
STZ.w SprYSpeed, X
STZ.w SprXSpeed, X
STZ.w $0F70,X
STZ.w SprHeight,X
.aloft
@@ -977,7 +977,7 @@ Sprite_DarkLink_Main:
INC.w SprMiscF, X
;LDA #$1A : STA.b $11 ; ganon open door routine
; handled by the room tag?
LDA #$04 : STZ.w $0DD0, X
LDA #$04 : STZ.w SprState, X
LDA.b #$80 : STA $0403
%GotoAction(14)

View File

@@ -5,7 +5,7 @@
KingDodongo_NewHealthSystem:
{
PHB : PHK : PLB
LDA.w $0E50,X
LDA.w SprHealth,X
LSR A
LSR A
TAY

View File

@@ -279,9 +279,9 @@ Sprite_Kydreeok_Main:
LDA.b #$00
JSL Sprite_SpawnDynamically : BMI .no_space
LDA.b #$0B : STA.w $0AAA
LDA.b #$04 : STA.w $0DD0,Y
LDA.b #$03 : STA.w $0E40,Y
LDA.b #$0C : STA.w $0F50,Y
LDA.b #$04 : STA.w SprState,Y
LDA.b #$03 : STA.w SprNbrOAM,Y
LDA.b #$0C : STA.w SprProps,Y
LDA.w SprCachedX : STA.w SprX,Y
LDA.w $0FD9 : STA.w SprXH,Y
LDA.w SprCachedY : STA.w SprY,Y
@@ -293,7 +293,7 @@ Sprite_Kydreeok_Main:
STZ.w $0422
STZ.w $0424
LDA $1C : ORA.b #$01 : STA $1C ;turn on BG2 (Body)
STZ.w $0DD0, X ; GG
STZ.w SprState, X ; GG
.continue
RTS
}

View File

@@ -203,7 +203,7 @@ Sprite_KydreeokHead_Main:
JSL Sprite_Move
LDA.w SprTimerA, X : BNE .not_done
LDA #$00 : STA $0DD0, X
LDA #$00 : STA.w SprState, X
.not_done
RTS
}

View File

@@ -49,7 +49,7 @@ Sprite_Kydrog_Prep:
{
PHB : PHK : PLB
LDA.l $7EF300 : BEQ .PlayIntro
STZ.w $0DD0, X ; Kill the sprite
STZ.w SprState, X ; Kill the sprite
.PlayIntro
PLB
RTL

View File

@@ -61,7 +61,7 @@ Sprite_KydrogBoss_CheckIfDead:
LDA.w SprHealth, X : BNE .not_dead
PHX
LDA.b #$04 : STA $0DD0, X ;kill sprite boss style
LDA.b #$04 : STA.w SprState, X ;kill sprite boss style
LDA.b #$09 : STA.w SprAction, X ;go to KydrogBoss_Death stage
STZ.w $0D90,X
@@ -79,11 +79,11 @@ Sprite_KydrogBoss_Prep:
LDA #$00 : STA !KydrogPhase
LDA.b #$A0 : STA.w SprHealth, X ; health
LDA.b #$80 : STA $0CAA, X
LDA.b #$80 : STA.w SprDefl, X
LDA.b #$03 : STA $0F60, X ; hitbox settings
LDA.b #$03 : STA.w SprHitbox, X ; hitbox settings
LDA.b #$07 : STA.w SprBump, X ; bump damage type
LDA $0E60, X : AND.b #$BF : STA $0E60, X ; Not invincible
LDA.w SprGfxProps, X : AND.b #$BF : STA.w SprGfxProps, X ; Not invincible
JSR KydrogBoss_Set_Damage ; Set the damage table
@@ -466,10 +466,10 @@ CheckForNextPhase:
; TODO: Use a timer to unfreeze the sprite
Sprite_CheckIfFrozen:
{
LDA $0DD0, X : CMP.b #$0B : BNE .not_frozen
LDA.w SprState, X : CMP.b #$0B : BNE .not_frozen
LDA.w SprTimerC, X : BNE .not_frozen
LDA.b #$00 : STA.l $7FFA3C,X
LDA.b #$09 : STA.w $0DD0, X
LDA.b #$09 : STA.w SprState, X
.not_frozen
RTS
}
@@ -564,12 +564,12 @@ Kydrog_ThrowBoneAtPlayer:
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
LDA.b #$21 : STA $0E40, X : STA $0BA0, X
LDA $0E60, X : ORA.b #$40 : STA $0E60, X
LDA.b #$48 : STA $0CAA, X
LDA.b #$21 : STA.w SprNbrOAM, X : STA.w SprBulletproof, X
LDA.w SprGfxProps, X : ORA.b #$40 : STA.w SprGfxProps, X
LDA.b #$48 : STA.w SprDefl, X
LDA.b #$10 : STA.w SprTimerC, X
LDA.b #$14 : STA $0F60, X
LDA.b #$07 : STA $0F50, X
LDA.b #$14 : STA.w SprHitbox, X
LDA.b #$07 : STA.w SprProps, X
LDA.b #$20 : STA.w SprBump, X
PLX
LDA.b #$02 : JSL Sound_SetSfx2PanLong
@@ -595,7 +595,7 @@ GetNumberSpawnStalfos:
BRA .not_a_skull
.increment_count
LDA $0DD0, X : CMP.b #$00 : BEQ .not_a_skull
LDA.w SprState, X : CMP.b #$00 : BEQ .not_a_skull
INC $00
.not_a_skull

View File

@@ -48,7 +48,7 @@ Lanmola_FinishInitialization:
LDA.l .starting_delay, X : STA.w SprTimerA, X
LDA.b #$FF : STA $0F70, X
LDA.b #$FF : STA.w SprHeight, X
PHX
@@ -247,7 +247,7 @@ Lanmola_Dive: ;0x03
.alpha
; If we are under the ground go to the reset stage
LDA $0F70, X : BPL .notUnderGroundYet
LDA.w SprHeight, X : BPL .notUnderGroundYet
INC $0D80, X
LDA.b #$80 : STA.w SprTimerA, X
@@ -290,7 +290,7 @@ Lanmola_Death: ;0x05
JSR Lanmola_Draw
LDA.w SprTimerA, X : BNE .timerNotDone
STZ $0DD0, X
STZ.w SprState, X
; Y is the index where we write in RAM
PHX ; keep X
@@ -303,7 +303,7 @@ Lanmola_Death: ;0x05
.next_sprite
LDA $0E20, X : CMP.b #$54 : BNE .notLanmola
LDA $0DD0, X : BNE .oneIsntDead
LDA.w SprState, X : BNE .oneIsntDead
.notLanmola
@@ -344,7 +344,7 @@ Lanmola_Death: ;0x05
LDA.b #$00 : JSL Sprite_SpawnDynamically : BMI .spawn_failed
LDA.b #$0B : STA $0AAA
LDA.b #$04 : STA $0DD0, Y
LDA.b #$04 : STA.w SprState, Y
LDA.b #$1F : STA.w SprTimerA, Y : STA $0D90, Y
@@ -353,9 +353,9 @@ Lanmola_Death: ;0x05
LDA $0C : STA.w SprY, Y
LDA $0D : STA.w SprYH, Y
LDA.b #$03 : STA $0E40, Y
LDA.b #$03 : STA.w SprNbrOAM, Y
LDA.b #$0C : STA $0F50, Y
LDA.b #$0C : STA.w SprProps, Y
LDA.b #$0C : JSL Sound_SetSfx2PanLong
@@ -594,7 +594,7 @@ Sprite_Shrapnel:
.active
LDA $1A : ASL #2 : AND.b #$C0 : STA $0F50, X ; : ORA.b #$00
LDA $1A : ASL #2 : AND.b #$C0 : STA.w SprProps, X ; : ORA.b #$00
JSR $E948 ;Sprite4_MoveXyz
@@ -618,12 +618,12 @@ Sprite_Shrapnel:
SEP #$20
;JSR $8094 : BEQ .noTileCollision ;Sprite4_CheckTileCollision
;STZ $0DD0, X
;STZ.w SprState, X
.noTileCollision
LDA.w SprTimerA, X : BNE .timerNotDone
STZ $0DD0, X
STZ.w SprState, X
.timerNotDone

View File

@@ -296,7 +296,7 @@ Lanmola_MoveSegment:
LDA.w SprX, X : PHA ;lower x
LDA.w SprY, X : PHA ;lower y
LDA $0F70, X : PHA ;height
LDA.w SprHeight, X : PHA ;height
LDA $0F : PHA ;angle
LDA $0E80, X : STA $02 : STA $05
@@ -313,8 +313,8 @@ Lanmola_MoveSegment:
PLX
LDA $0DD0, X : CMP.b #$09 : BNE .notActive
LDA $11 : ORA $0FC1 : BNE .notActive
LDA.w SprState, X : CMP.b #$09 : BNE .notActive
LDA $11 : ORA.w SprFreeze : BNE .notActive
LDA $10 : CMP #$0E : BEQ .notActive
LDA $5D : CMP #$08 : BEQ .notActive ;in medallion cut scene
CMP #$09 : BEQ .notActive ;in medallion cut scene

View File

@@ -819,7 +819,7 @@ Mothula_SpawnBeams:
CLC : ADC.b #$03 : STA.w SprY,Y
LDA.b #$10 : STA.w SprTimerA,Y : STA.w $0BA0,Y
LDA.b #$10 : STA.w SprTimerA,Y : STA.w SprBulletproof,Y
PHX
@@ -834,7 +834,7 @@ Mothula_SpawnBeams:
STA.w SprYSpeed,Y
LDA.b #$00
STA.w $0F70,Y
STA.w SprHeight,Y
PLX

View File

@@ -17,11 +17,11 @@ Sprite_Octoboss_Long:
PHB : PHK : PLB
LDA.w SprMiscD, X : BNE + ; is the sprite already init
LDA #$04 : STA.w $0E40, X
LDA #$04 : STA.w SprNbrOAM, X
;LDA.w SprHitbox, X : AND.b #$E0 : ORA.b #$23 : STA.w SprHitbox, X
;LDA.w $0CAA, X : AND #$7F : ORA.b #$81 : STA.w $0CAA, X
;LDA.w SprDefl, X : AND #$7F : ORA.b #$81 : STA.w SprDefl, X
;LDA.b #$20 : STA.w SprHealth, X
STZ.w $0BA0, X
STZ.w SprBulletproof, X
; TODO: Add a safety check to prevent player from leaving without the item
; example if player left without the item, item will be on the ground still
@@ -34,14 +34,14 @@ Sprite_Octoboss_Long:
; Is is killed? do we have the quake medallion tho ?
LDA.l $7EF349 : BNE .weHaveMedallion
; Spawn the medallion
STZ.w $0DD0, X
STZ.w SprState, X
JSR SpawnMedallionAlt ; spawn standing medallion
BRA .SpriteIsNotActive
.weHaveMedallion
; Do nothing just kill this sprite
STZ.w $0DD0, X
STZ.w SprState, X
BRA .SpriteIsNotActive
.notKiledYet
@@ -49,8 +49,8 @@ Sprite_Octoboss_Long:
PLX
;LDA.w $0E60, X : AND.b #$BF : STA.w $0E60, X
;LDA.w $0F50, X : AND.b #$BF : STA.w $0F50, X
;LDA.w SprGfxProps, X : AND.b #$BF : STA.w SprGfxProps, X
;LDA.w SprProps, X : AND.b #$BF : STA.w SprProps, X
LDA.b #15 : STA.w SprFrame, X
LDA.b #$87 : STA.l $7EC664 : STA.l $7EC684
@@ -547,7 +547,7 @@ Sprite_Octoboss_Secondary:
LDA.w SprTimerB, X : BNE +
LDA.w SprFrame, X : DEC : STA.w SprFrame, X : CMP.b #01 : BCS .noframereset
JSR SpawnSplash
STZ.w $0DD0, X
STZ.w SprState, X
.noframereset
LDA.b #2 : STA.w SprTimerB, X
+
@@ -884,7 +884,7 @@ SpawnSplash:
JSL Sprite_SetSpawnedCoords
LDA.b #$03
STA.w $0DD0,Y
STA.w SprState,Y
LDA.b #$0F
STA.w SprTimerA,Y
@@ -893,7 +893,7 @@ SpawnSplash:
STA.w $0D80,Y
LDA.b #$03
STA.w $0E40,Y
STA.w SprNbrOAM,Y
LDA.b #$28 ; SFX2.28
JSL Sound_SetSfx2PanLong
@@ -939,8 +939,8 @@ SpawnBossPoof:
STA.w SprTimerA,Y
LDA.b #$09
STA.w $0E40,Y
STA.w $0BA0,Y
STA.w SprNbrOAM,Y
STA.w SprBulletproof,Y
RTS
@@ -1029,13 +1029,13 @@ SpawnMedallion:
JSL $0DBB7C ; SpriteSFX_QueueSFX2WithPan
LDA.b #$83
STA.w $0E40,X
STA.w SprNbrOAM,X
LDA.b #$58
STA.w $0E60,X
STA.w SprGfxProps,X
AND.b #$0F
STA.w $0F50,X
STA.w SprProps,X
PLX
@@ -1064,13 +1064,13 @@ SpawnMedallionAlt:
STA.w $0D90, X
LDA.b #$83
STA.w $0E40,X
STA.w SprNbrOAM,X
LDA.b #$58
STA.w $0E60,X
STA.w SprGfxProps,X
AND.b #$0F
STA.w $0F50,X
STA.w SprProps,X
LDA.b #$DC : STA.w SprY, X
LDA.b #$F7 : STA.w SprX, X

View File

@@ -63,7 +63,7 @@ Sprite_Twinrova_CheckIfDead:
.health_not_negative
LDA.w SprHealth, X : BNE .not_dead
PHX
LDA.b #$04 : STA $0DD0, X ; Kill sprite boss style
LDA.b #$04 : STA.w SprState, X ; Kill sprite boss style
LDA.b #$0A : STA.w SprAction, X ; Go to Twinrova_Dead stage
LDA.b #$10 : STA.w $0D90, X
PLX
@@ -79,13 +79,13 @@ Sprite_Twinrova_Prep:
; Kill the sprite if the Maiden is present
LDA.l $7EF3CC : CMP.b #$06 : BNE .prep_twinrova
STZ.w $0DD0, X
STZ.w SprState, X
.prep_twinrova
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.w $0E60, X : AND.b #$BF : STA.w $0E60, X ; Not invincible
LDA.b #$80 : STA.w SprDefl, X
LDA.b #$04 : STA.w SprBump, X ; Bump damage type (4 hearts, green tunic)
LDA.w SprGfxProps, X : AND.b #$BF : STA.w SprGfxProps, X ; Not invincible
%SetSpriteSpeedX(15)
%SetSpriteSpeedX(15)
@@ -277,9 +277,9 @@ Sprite_Twinrova_Main:
%Twinrova_Attack()
LDA #$01 : STA $0360
LDA $0CAA : AND.b #$03 : STA $0CAA
LDA.w SprDefl : AND.b #$03 : STA.w SprDefl
LDA.w SprTimerD, X : BNE +
LDA $0CAA : ORA.b #$03 : STA $0CAA
LDA.w SprDefl : ORA.b #$03 : STA.w SprDefl
LDA.b #$40 : STA.w SprTimerD, X
LDA $AC : BEQ .fire
%GotoAction(6) ; Ice Attack
@@ -539,7 +539,7 @@ RageModeMove:
; Handle floaty movement with controlled altitude
LDA.w SprHeight, X : CMP #$10 : BNE .CheckGrounded
DEC.w SprHeight, X
DEC.w $0F90, X
DEC.w SprHeightS, X
.CheckGrounded
; Move sprite
@@ -1018,12 +1018,12 @@ ApplyTwinrovaGraphics:
; $1DC845
#Fireball_Configure:
{
LDA.w $0CAA,Y
LDA.w SprDefl,Y
ORA.b #$08
STA.w $0CAA,Y
STA.w SprDefl,Y
LDA.b #$04
STA.w $0CD2,Y
STA.w SprBump,Y
.exit
RTS
@@ -1202,7 +1202,7 @@ Blind_SpawnFromMaiden:
LDX.b #$00 ; Load the boss into sprite index 0
; Set the sprite to alive and active
LDA.b #$09 : STA.w $0DD0,X
LDA.b #$09 : STA.w SprState,X
; SPRITE CE
LDA.b #$CE : STA.w $0E20,X
@@ -1223,7 +1223,7 @@ Blind_SpawnFromMaiden:
LDA.b #$00 : STA.w $0DC0,X
; Set SprMiscC and bulletproof properties
LDA.b #$02 : STA.w SprMiscC,X : STA.w $0BA0,X
LDA.b #$02 : STA.w SprMiscC,X : STA.w SprBulletproof,X
; Set the 2nd key / heart piece items taken room flag
LDA.w $0403 : ORA.b #$20 : STA.w $0403
@@ -1272,7 +1272,7 @@ SpritePrep_Blind_PrepareBattle:
RTL
.despawn
STZ.w $0DD0,X
STZ.w SprState,X
RTL
}

View File

@@ -65,8 +65,8 @@ Sprite_Wolfos_Prep:
RTL
.spawn_wolfos
LDA.b #$40 : STA.w SprTimerA, X
LDA.b #$80 : STA.w $0CAA, X ; Sprite persist
LDA.b #$08 : STA.w $0E40, X ; Nbr Oam Entries
LDA.b #$80 : STA.w SprDefl, X ; Sprite persist
LDA.b #$08 : STA.w SprNbrOAM, X ; Nbr Oam Entries
PLB
RTL
@@ -286,7 +286,7 @@ Sprite_Wolfos_Main:
STZ.w SprYSpeed, X
LDA.w SprTimerD, X : BNE .dismiss
LDA.b #$00 : STA $0DD0, X ; kill sprite normal style
LDA.b #$00 : STA.w SprState, X ; kill sprite normal style
STZ.w SprAction, X
STZ.w SprHealth, X
STZ.w BRANDISH ; Stop Link from holding his hands up.

View File

@@ -310,7 +310,7 @@ KillPeaShot:
; Kill the pea shot
PHX
LDA.w Offspring1_Id : TAX
STZ.w $0DD0, X
STZ.w SprState, X
PLX
RTS
}

View File

@@ -248,13 +248,13 @@ Sprite_Chuchu_Move:
JSL Sprite_MoveAltitude
DEC.w $0F80,X : DEC.w $0F80,X
LDA.w $0F70, X : BPL .aloft
STZ.w $0F70, X
LDA.w SprHeight, X : BPL .aloft
STZ.w SprHeight, X
LDA.b $08 : STA.w $0F80, X ; set height from 08
LDA.b $09
JSL Sprite_ApplySpeedTowardsPlayer
.aloft
LDA.w $0F70, X : BEQ .dontmove
LDA.w SprHeight, X : BEQ .dontmove
JSL Sprite_Move
.dontmove

View File

@@ -60,9 +60,9 @@ Sprite_Poltergeist_Prep:
{
PHB : PHK : PLB
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 #$00 : STA.w SprHitbox, X ; Persist
LDA #$00 : STA.w SprDefl, X ; Sprite persist in dungeon
LDA #$02 : STA.w SprNbrOAM, X ;1 tile by default
LDA #$01 : STA.w SprAction, X ; by default it's a chair
LDA.w SprSubtype, X : CMP #$10 : BNE .notPictureFrame
@@ -75,7 +75,7 @@ Sprite_Poltergeist_Prep:
CMP #$11 : BNE .notAxe
LDA #$07 : STA.w SprFrame, X
LDA #$02 : STA.w SprAction, X
LDA #$04 : STA $0E40, X
LDA #$04 : STA.w SprNbrOAM, X
BRA .done
.notAxe
@@ -97,7 +97,7 @@ Sprite_Poltergeist_Prep:
CMP #$14 : BNE .notBed
LDA #5 : STA.w SprFrame, X
LDA #$01 : STA.w SprAction, X
LDA #$06 : STA $0E40, X
LDA #$06 : STA.w SprNbrOAM, X
BRA .done
.notBed
@@ -105,7 +105,7 @@ Sprite_Poltergeist_Prep:
CMP #$15 : BNE .notDoor
LDA #36 : STA.w SprFrame, X
LDA #$01 : STA.w SprAction, X
LDA #$04 : STA $0E40, X
LDA #$04 : STA.w SprNbrOAM, 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
@@ -283,19 +283,19 @@ Chair:
Shatter:
{
LDA.b #$A6 : STA $0E40, X
LDA.b #$A6 : STA.w SprNbrOAM, X
LDA.b #$1F : JSL Sound_SetSfx2PanLong
STZ $0DC0, X
LDA.b #$04 : STA.w SprMiscB, X
LDA.b #$06 : STA $0DD0, X
LDA.b #$06 : STA.w SprState, X
LDA.b #$1F : STA.w SprTimerA, X
LDA.b #$EC : STA $0E20, X
LDA $0E40, X : CLC : ADC #$04 : STA $0E40, X
LDA.w SprNbrOAM, X : CLC : ADC #$04 : STA.w SprNbrOAM, X
STZ $0EF0, X

View File

@@ -81,7 +81,7 @@ Sprite_SeaUrchin_Main:
LDA.b #$06 : STA.w SprState, X
LDA.b #$0A : STA.w SprTimerA, X
STZ.w $0BE0,X
STZ.w SprPrize,X
LDA.b #$09 ; SFX2.1E
JSL $0DBB8A ; SpriteSFX_QueueSFX3WithPan

View File

@@ -51,7 +51,7 @@ Sprite_BeanVendor_Prep:
{
PHB : PHK : PLB
LDA.b #$80 : STA $0CAA, X ; Persist in dungeons
LDA.b #$80 : STA.w SprDefl, X ; Persist in dungeons
LDA.b #$40 : STA.w SprTimerA, X
LDA.w SprSubtype, X : STA.w SprAction, X
CMP.b #$02 : BEQ .OldMan

View File

@@ -22,7 +22,7 @@ SpritePrep_SickKid:
LDA.l $7EF355 : BEQ .no_boots
LDA.b #$03 : STA $0D80, X
.no_boots
INC.w $0BA0, X
INC.w SprBulletproof, X
RTS
}

View File

@@ -57,9 +57,9 @@ Sprite_Farore_Prep:
{
PHB : PHK : PLB
LDA.b #$80 : STA $0CAA, X ; Don't kill Farore when she goes off screen
LDA.b #$80 : STA.w SprDefl, X ; Don't kill Farore when she goes off screen
LDA.l $7EF300 : BEQ .PlayIntro
STZ.w $0DD0, X ; Kill the sprite
STZ.w SprState, X ; Kill the sprite
.PlayIntro
PLB

View File

@@ -98,13 +98,13 @@ ZoraBaby_RevertToSprite:
PHX
TAX
LDA.w $1A64, X : AND.b #$03 : STA.w $0EB0,Y : STA.w $0DE0,Y
LDA.w $1A00, X : CLC : ADC.b #$02 : STA.w $0D00,Y
LDA.w $1A14, X : ADC.b #$00 : STA.w $0D20,Y
LDA.w $1A28, X : CLC : ADC.b #$10 : STA.w $0D10,Y
LDA.w $1A3C, X : ADC.b #$00 : STA.w $0D30,Y
LDA.w $1A64, X : AND.b #$03 : STA.w SprMiscE,Y : STA.w SprMiscC,Y
LDA.w $1A00, X : CLC : ADC.b #$02 : STA.w SprY,Y
LDA.w $1A14, X : ADC.b #$00 : STA.w SprYH,Y
LDA.w $1A28, X : CLC : ADC.b #$10 : STA.w SprX,Y
LDA.w $1A3C, X : ADC.b #$00 : STA.w SprXH,Y
LDA.b $EE : STA.w $0F20,Y
LDA.b #$01 : STA.w $0BA0,Y : STA.w $0E80,Y
LDA.b #$01 : STA.w SprBulletproof,Y : STA.w $0E80,Y
LDA.b #$04 : STA.w SprAction, Y
LDA.b #$FF : STA.w SprTimerB, Y
PLX
@@ -276,7 +276,7 @@ org $06BD9C
org $068D59
SpritePrep_Locksmith:
{
INC.w $0BA0, X
INC.w SprBulletproof, X
; Clear sprite if we already have Zora baby
LDA.l $7EF3CC : CMP.b #$09 : BNE .not_already_following
@@ -325,14 +325,14 @@ Sprite_39_ZoraBaby:
LDY.b #$01
JSL Sprite_ShowSolicitedMessage
LDA.w $0D10, X
LDA.w SprX, X
PHA
SEC : SBC.b #$10 : STA.w $0D10, X
SEC : SBC.b #$10 : STA.w SprX, X
JSR Sprite_Get16BitCoords_Local
LDA.b #$01 : STA.w $0D50, X : STA.w $0D40, X
LDA.b #$01 : STA.w SprXSpeed, X : STA.w SprYSpeed, X
JSL Sprite_CheckTileCollision_long : BNE .dont_stalk_link
INC.w SprAction, X
@@ -340,7 +340,7 @@ Sprite_39_ZoraBaby:
LDA.b #$05 : STA.w SprAction, X
.dont_stalk_link
PLA
STA.w $0D10, X
STA.w SprX, X
RTS
}
@@ -480,7 +480,7 @@ SpritePrep_OldMan:
RTL
.main
INC.w $0BA0, X
INC.w SprBulletproof, X
; LDA.b $A0 : CMP.b #$E4 ; ROOM 00E4

View File

@@ -50,11 +50,11 @@ Sprite_ZoraPrincess_Prep:
PHB : PHK : PLB
LDA.l $7EF302
BEQ .doesnt_have_mask
STZ.w $0DD0, X ; Kill the sprite
STZ.w SprState, X ; Kill the sprite
.doesnt_have_mask
LDA #$00 : STA $0CAA, X
LDA #$00 : STA $0B6B, X
LDA #$00 : STA.w SprDefl, X
LDA #$00 : STA.w SprTileDie, X
PLB
RTL
@@ -110,7 +110,7 @@ Sprite_ZoraPrincess_Main:
LDY #$0F : STZ $02E9 ; Give the Zora Mask
JSL Link_ReceiveItem
LDA #$01 : STA.l $7EF302
LDA.b #$00 : STA $0DD0, X
LDA.b #$00 : STA.w SprState, X
+
RTS
}

View File

@@ -65,7 +65,7 @@ Sprite_IceBlock_Prep:
LDA.w SprXH, X : STA.w SprMiscF, X
LDA.w SprYH, X : STA.w SprMiscG, X
STZ.w $0CAA, X
STZ.w SprDefl, X
PLB
RTL
@@ -323,7 +323,7 @@ Statue_BlockSprites:
AND.b #$01
BNE .skip
LDA.w $0DD0,Y
LDA.w SprState,Y
CMP.b #$09
BCC .skip
@@ -372,10 +372,10 @@ Statue_BlockSprites:
PLY
LDA.b $00
STA.w $0F30,Y
STA.w SprYRecoil,Y
LDA.b $01
STA.w $0F40,Y
STA.w SprXRecoil,Y
.skip
SEP #$20

View File

@@ -282,7 +282,7 @@ Sprite_Minecart_Main:
.active_cart
JSL Link_CancelDash ; Stop the player from dashing
LDA #$02 : STA $02F5 ; Somaria platform and moving
LDA $0FDA : SEC : SBC #$0B : STA $20 ; Adjust player pos
LDA.w SprCachedY : SEC : SBC #$0B : STA $20 ; Adjust player pos
LDA #$01 : STA !LinkInCart ; Set Link in cart flag
; Check if the cart is facing east or west
@@ -315,7 +315,7 @@ Sprite_Minecart_Main:
.active_cart
JSL Link_CancelDash ; Stop the player from dashing
LDA #$02 : STA $02F5 ; Somaria platform and moving
LDA $0FDA : SEC : SBC #$0B : STA $20 ; Adjust player pos
LDA.w SprCachedY : SEC : SBC #$0B : STA $20 ; Adjust player pos
LDA #$01 : STA !LinkInCart ; Set Link in cart flag
; Check if the cart is facing north or south
@@ -365,7 +365,7 @@ Sprite_Minecart_Main:
%PlayAnimation(0,1,8)
%InitMovement()
LDA $36 : BNE .fast_speed
LDA.b #!MinecartSpeed : STA $0D50, X
LDA.b #!MinecartSpeed : STA.w SprXSpeed, X
JMP +
.fast_speed
LDA.b #!DoubleSpeed : STA.w SprXSpeed, X
@@ -751,10 +751,10 @@ CheckForPlayerInput:
CheckIfPlayerIsOn:
{
REP #$20
LDA $22 : CLC : ADC #$0009 : CMP $0FD8 : BCC .left
LDA $22 : SEC : SBC #$0009 : CMP $0FD8 : BCS .right
LDA $20 : CLC : ADC #$0012 : CMP $0FDA : BCC .up
LDA $20 : SEC : SBC #$0012 : CMP $0FDA : BCS .down
LDA $22 : CLC : ADC #$0009 : CMP.w SprCachedX : BCC .left
LDA $22 : SEC : SBC #$0009 : CMP.w SprCachedX : BCS .right
LDA $20 : CLC : ADC #$0012 : CMP.w SprCachedY : BCC .up
LDA $20 : SEC : SBC #$0012 : CMP.w SprCachedY : BCS .down
SEP #$21
RTS ; Return with carry set
.left

View File

@@ -60,10 +60,10 @@ Sprite_Portal_Prep:
PHB : PHK : PLB
; Persist outside of camera
LDA #$00 : STA $0CAA, X
LDA #$00 : STA.w SprDefl, X
LDA.w SprHitbox, X : AND.b #$C0 : STA.w SprHitbox, X
STZ.w $0B6B, X
LDA.b #$FF : STA.w $0BA0, X
STZ.w SprTileDie, X
LDA.b #$FF : STA.w SprBulletproof, X
PLB
RTL
@@ -297,13 +297,13 @@ CheckForDismissPortal:
LDA $7E0FA6 : BEQ .DespawnOrange ; Check what portal is spawning next
PHX
LDA.w BlueSpriteIndex : TAX
STZ.w $0DD0, X
STZ.w SprState, X
DEC.w $06FE
PLX
.DespawnOrange
PHX
LDA.w OrangeSpriteIndex : TAX
STZ.w $0DD0, X
STZ.w SprState, X
DEC.w $06FE
PLX
RTS
@@ -329,7 +329,7 @@ RejectOnTileCollision:
LDA #$3C ; SFX2.3C Error beep
STA $012E ; Queue sound effect
LDA #$00 : STA $0DD0, X
LDA #$00 : STA.w SprState, X
DEC $06FE
.not_out_of_bounds

View File

@@ -49,7 +49,7 @@ Sprite_RotatingTrack_Long:
Sprite_RotatingTrack_Prep:
{
PHB : PHK : PLB
LDA.b #$80 : STA $0CAA, X
LDA.b #$80 : STA.w SprDefl, X
LDA.w SprSubtype, X : STA.w SprAction,X
PLB
RTL

View File

@@ -81,7 +81,7 @@ Sprite_MoveZ:
Sprite_MoveAltitude:
{
LDA.w SprTimerF, X : ASL : ASL : ASL : ASL
CLC : ADC.w $0F90, X : STA.w $0F90, X
CLC : ADC.w SprHeightS, X : STA.w SprHeightS, X
LDA.w SprTimerF, X : PHP
LSR : LSR : LSR : LSR
@@ -342,7 +342,7 @@ Sprite_SetupHitBox:
PHB : PHK : PLB
LDA.w SprHeight, X : BMI .too_high
PHY
LDA.w $0F60, X : AND.b #$1F : TAY
LDA.w SprHitbox, X : AND.b #$1F : TAY
LDA.w SprX, X : CLC : ADC.w .offset_x_low, Y : STA.b $04
LDA.w SprXH, X : ADC.w .offset_x_high, Y : STA.b $0A
@@ -889,8 +889,8 @@ Sprite_CheckIfRecoiling:
PHA
DEC.w $0EA0, X : BNE .still_recoiling
LDA.w $0F40, X : CLC : ADC.b #$20 : CMP.b #$40 : BCS .no_adjust
LDA.w $0F30, X : CLC : ADC.b #$20 : CMP.b #$40 : BCC .still_recoiling
LDA.w SprXRecoil, X : CLC : ADC.b #$20 : CMP.b #$40 : BCS .no_adjust
LDA.w SprYRecoil, X : CLC : ADC.b #$20 : CMP.b #$40 : BCC .still_recoiling
.no_adjust
LDA.b #$90 : STA.w $0EA0,X
.still_recoiling
@@ -902,11 +902,11 @@ Sprite_CheckIfRecoiling:
LDA.b $1A : AND.w .masks,Y : BNE .no_movement
LDA.w $0F30, X : STA.w SprYSpeed,X
LDA.w SprYRecoil, X : STA.w SprYSpeed,X
LDA.w $0F40, X : STA.w SprXSpeed,X
LDA.w SprXRecoil, X : STA.w SprXSpeed,X
LDA.w $0CD2, X : BMI .handle_movement
LDA.w SprBump, X : BMI .handle_movement
JSL Sprite_CheckTileCollision_long
@@ -915,13 +915,13 @@ Sprite_CheckIfRecoiling:
.stop_horizontal_movement
CMP.b #$04 : BCS .stop_vertical_movement
STZ.w $0F40,X
STZ.w SprXRecoil,X
STZ.w SprXSpeed,X
BRA .movement_stopped
.stop_vertical_movement
STZ.w $0F30,X
STZ.w SprYRecoil,X
STZ.w SprYSpeed,X
.movement_stopped

View File

@@ -335,7 +335,7 @@ ShopItem_Banana:
JSR $F39E ; ShopItem_HandleCost
BCC $F1A1 ; ShopItem_GiveFailureMessage
STZ.w $0DD0,X
STZ.w SprState,X
INC.b Bananas