Replace more common sprite ram with symbols
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
KingDodongo_NewHealthSystem:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
LDA.w $0E50,X
|
||||
LDA.w SprHealth,X
|
||||
LSR A
|
||||
LSR A
|
||||
TAY
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user