diff --git a/Items/fishing_rod.asm b/Items/fishing_rod.asm index 5b7aa68..199cb78 100644 --- a/Items/fishing_rod.asm +++ b/Items/fishing_rod.asm @@ -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 diff --git a/Items/portal_rod.asm b/Items/portal_rod.asm index 390eb77..e55d7d1 100644 --- a/Items/portal_rod.asm +++ b/Items/portal_rod.asm @@ -87,14 +87,14 @@ macro SpawnPortal(x_offset, y_offset) REP #$20 LDA $22 : CLC : ADC.w # 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 # 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: diff --git a/Sprites/Bosses/dark_link.asm b/Sprites/Bosses/dark_link.asm index e4821e3..ccde4fd 100644 --- a/Sprites/Bosses/dark_link.asm +++ b/Sprites/Bosses/dark_link.asm @@ -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 diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 1ad00b2..f11e1d3 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -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 diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index ed1297c..64f1dec 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -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 diff --git a/Sprites/Bosses/kydrog.asm b/Sprites/Bosses/kydrog.asm index 6927c03..2ac00a3 100644 --- a/Sprites/Bosses/kydrog.asm +++ b/Sprites/Bosses/kydrog.asm @@ -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 } diff --git a/Sprites/Bosses/kydrog_boss.asm b/Sprites/Bosses/kydrog_boss.asm index ee5d3ac..e2330ef 100644 --- a/Sprites/Bosses/kydrog_boss.asm +++ b/Sprites/Bosses/kydrog_boss.asm @@ -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 diff --git a/Sprites/Bosses/lanmola.asm b/Sprites/Bosses/lanmola.asm index 1c8a316..1e60a17 100644 --- a/Sprites/Bosses/lanmola.asm +++ b/Sprites/Bosses/lanmola.asm @@ -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 diff --git a/Sprites/Bosses/lanmola_expanded.asm b/Sprites/Bosses/lanmola_expanded.asm index 9c68ce1..c2464fd 100644 --- a/Sprites/Bosses/lanmola_expanded.asm +++ b/Sprites/Bosses/lanmola_expanded.asm @@ -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 diff --git a/Sprites/Bosses/manhandla.asm b/Sprites/Bosses/manhandla.asm index 436198f..285d164 100644 --- a/Sprites/Bosses/manhandla.asm +++ b/Sprites/Bosses/manhandla.asm @@ -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 diff --git a/Sprites/Bosses/octoboss.asm b/Sprites/Bosses/octoboss.asm index 96d97e6..ba1725b 100644 --- a/Sprites/Bosses/octoboss.asm +++ b/Sprites/Bosses/octoboss.asm @@ -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 diff --git a/Sprites/Bosses/twinrova.asm b/Sprites/Bosses/twinrova.asm index bec9fba..549ec80 100644 --- a/Sprites/Bosses/twinrova.asm +++ b/Sprites/Bosses/twinrova.asm @@ -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 diff --git a/Sprites/Bosses/wolfos.asm b/Sprites/Bosses/wolfos.asm index b4baa0d..00315cc 100644 --- a/Sprites/Bosses/wolfos.asm +++ b/Sprites/Bosses/wolfos.asm @@ -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 diff --git a/Sprites/Enemies/anti_kirby.asm b/Sprites/Enemies/anti_kirby.asm index ae74dbc..576c831 100644 --- a/Sprites/Enemies/anti_kirby.asm +++ b/Sprites/Enemies/anti_kirby.asm @@ -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 diff --git a/Sprites/Enemies/deku_scrub_enemy.asm b/Sprites/Enemies/deku_scrub_enemy.asm index afd28d6..85f2227 100644 --- a/Sprites/Enemies/deku_scrub_enemy.asm +++ b/Sprites/Enemies/deku_scrub_enemy.asm @@ -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 diff --git a/Sprites/Enemies/helmet_chuchu.asm b/Sprites/Enemies/helmet_chuchu.asm index c214189..e831db1 100644 --- a/Sprites/Enemies/helmet_chuchu.asm +++ b/Sprites/Enemies/helmet_chuchu.asm @@ -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 + diff --git a/Sprites/Enemies/pols_voice.asm b/Sprites/Enemies/pols_voice.asm index 705d289..4b29670 100644 --- a/Sprites/Enemies/pols_voice.asm +++ b/Sprites/Enemies/pols_voice.asm @@ -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 diff --git a/Sprites/NPCs/farore.asm b/Sprites/NPCs/farore.asm index 7e9e734..0828a09 100644 --- a/Sprites/NPCs/farore.asm +++ b/Sprites/NPCs/farore.asm @@ -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 diff --git a/Sprites/NPCs/korok.asm b/Sprites/NPCs/korok.asm index 57e31e2..a4a4b33 100644 --- a/Sprites/NPCs/korok.asm +++ b/Sprites/NPCs/korok.asm @@ -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 diff --git a/Sprites/NPCs/ranch_girl.asm b/Sprites/NPCs/ranch_girl.asm index da6c1f1..f8afc2b 100644 --- a/Sprites/NPCs/ranch_girl.asm +++ b/Sprites/NPCs/ranch_girl.asm @@ -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 \ No newline at end of file diff --git a/Sprites/Objects/ice_block.asm b/Sprites/Objects/ice_block.asm index 1f1d085..5d9dd50 100644 --- a/Sprites/Objects/ice_block.asm +++ b/Sprites/Objects/ice_block.asm @@ -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 diff --git a/Sprites/Objects/minecart.asm b/Sprites/Objects/minecart.asm index 6f38280..7ed2879 100644 --- a/Sprites/Objects/minecart.asm +++ b/Sprites/Objects/minecart.asm @@ -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 diff --git a/Sprites/Objects/mineswitch.asm b/Sprites/Objects/mineswitch.asm index 419a060..589e6ac 100644 --- a/Sprites/Objects/mineswitch.asm +++ b/Sprites/Objects/mineswitch.asm @@ -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 diff --git a/Sprites/Objects/portal_sprite.asm b/Sprites/Objects/portal_sprite.asm index 438874d..0a97af5 100644 --- a/Sprites/Objects/portal_sprite.asm +++ b/Sprites/Objects/portal_sprite.asm @@ -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 diff --git a/Sprites/Objects/switch_track.asm b/Sprites/Objects/switch_track.asm index 073473a..e593aed 100644 --- a/Sprites/Objects/switch_track.asm +++ b/Sprites/Objects/switch_track.asm @@ -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 diff --git a/Sprites/ZSpriteLib/sprite_functions.asm b/Sprites/ZSpriteLib/sprite_functions.asm index 542464f..af86c5f 100644 --- a/Sprites/ZSpriteLib/sprite_functions.asm +++ b/Sprites/ZSpriteLib/sprite_functions.asm @@ -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 ; =========================================================