diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index be364aa..dbfb47f 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -48,8 +48,6 @@ Sprite_Kydreeok_Long: RTL } -; ========================================================= - Sprite_Kydreeok_Prep: { PHB : PHK : PLB @@ -121,8 +119,6 @@ MaybeRespawnHead: RTS } -; ========================================================= - Sprite_Kydreeok_Main: { %SpriteJumpTable(Kydreeok_Start, diff --git a/Sprites/Enemies/business_scrub.asm b/Sprites/Enemies/business_scrub.asm index 1d3d2c8..3b90150 100644 --- a/Sprites/Enemies/business_scrub.asm +++ b/Sprites/Enemies/business_scrub.asm @@ -29,7 +29,7 @@ !ImpervSwordHammer = 00 ; 01 = Impervious to sword and hammer attacks !Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss -%Set_Sprite_Properties(Sprite_BusinessScrub_Prep, Sprite_BusinessScrub_Long); +%Set_Sprite_Properties(Sprite_BusinessScrub_Prep, Sprite_BusinessScrub_Long) Sprite_BusinessScrub_Long: { @@ -60,7 +60,7 @@ Sprite_BusinessScrub_Prep: { PHB : PHK : PLB LDA.w SprSubtype, X : CMP.b #$01 : BEQ .pea_shot - CMP.b #$02 : BEQ .cutscene_scrub + CMP.b #$02 : BEQ .cutscene_scrub JMP + .pea_shot LDA.b #$06 : STA.w SprAction, X ; Pea Shot State diff --git a/Sprites/Enemies/poltergeist.asm b/Sprites/Enemies/poltergeist.asm index b0d1517..51cb34a 100644 --- a/Sprites/Enemies/poltergeist.asm +++ b/Sprites/Enemies/poltergeist.asm @@ -21,7 +21,7 @@ !DeflectArrow = 00 ; 01 = deflect arrows !WaterSprite = 00 ; 01 = can only walk shallow water !Blockable = 00 ; 01 = can be blocked by link's shield? -!Prize = 0 ; 00-15 = the prize pack the sprite will drop from +!Prize = 00 ; 00-15 = the prize pack the sprite will drop from !Sound = 00 ; 01 = Play different sound when taking damage !Interaction = 00 ; ?? No documentation !Statue = 00 ; 01 = Sprite is statue @@ -47,8 +47,6 @@ Sprite_Poltergeist_Long: RTL } -; ========================================================= - Sprite_Poltergeist_Prep: { PHB : PHK : PLB @@ -59,49 +57,49 @@ Sprite_Poltergeist_Prep: LDA #$01 : STA.w SprAction, X ; by default it's a chair LDA.w SprSubtype, X : CMP #$10 : BNE .notPictureFrame - STZ.w SprMiscA, X - STZ.w SprAction, X - JMP .done + STZ.w SprMiscA, X + STZ.w SprAction, X + JMP .done .notPictureFrame CMP #$11 : BNE .notAxe - LDA #$07 : STA.w SprFrame, X - LDA #$02 : STA.w SprAction, X - LDA #$04 : STA.w SprNbrOAM, X - BRA .done + LDA #$07 : STA.w SprFrame, X + LDA #$02 : STA.w SprAction, X + LDA #$04 : STA.w SprNbrOAM, X + BRA .done .notAxe CMP #$12 : BNE .notKnife - LDA #15 : STA.w SprFrame, X - LDA #$02 : STA.w SprAction, X - BRA .done + LDA #15 : STA.w SprFrame, X + LDA #$02 : STA.w SprAction, X + BRA .done .notKnife CMP #$13 : BNE .notFork - LDA #37 : STA.w SprFrame, X - LDA #$02 : STA.w SprAction, X - BRA .done + LDA #37 : STA.w SprFrame, X + LDA #$02 : STA.w SprAction, X + BRA .done .notFork CMP #$14 : BNE .notBed - LDA #5 : STA.w SprFrame, X - LDA #$01 : STA.w SprAction, X - LDA #$06 : STA.w SprNbrOAM, X - BRA .done + LDA #5 : STA.w SprFrame, X + LDA #$01 : STA.w SprAction, X + LDA #$06 : STA.w SprNbrOAM, X + BRA .done .notBed CMP #$15 : BNE .notDoor - LDA #36 : STA.w SprFrame, X - LDA #$01 : STA.w SprAction, 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 + LDA #36 : STA.w SprFrame, X + LDA #$01 : STA.w SprAction, 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 .notDoor LDA.w SprSubtype, X : AND #$08 : BNE .secondset ;2nd set - LDA.w SprSubtype, X : CLC : ADC #23 : STA.w SprFrame, X - BRA .done + LDA.w SprSubtype, X : CLC : ADC #23 : STA.w SprFrame, X + BRA .done .secondset LDA.w SprSubtype, X : AND #$07 : CLC : ADC #30 : STA.w SprFrame, X @@ -148,231 +146,196 @@ Sprite_Poltergeist_Main: PictureFrame: { - JSL Sprite_CheckDamageToPlayer - REP #$20 - - JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough - SEP #$20 - LDA #$01 : STA.w SprMiscA, X - LDA #$02 : STA.w SprHeight, X - - .notcloseenough + JSL Sprite_CheckDamageToPlayer + REP #$20 + JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough SEP #$20 + LDA #$01 : STA.w SprMiscA, X + LDA #$02 : STA.w SprHeight, X + .notcloseenough - LDA.w SprMiscA, X : BNE .chase - RTS - - .chase - - %PlayAnimation(0, 3, 6) - - LDA #$0A - JSL Sprite_ApplySpeedTowardsPlayer - - JSL Sprite_MoveLong - - JSL Sprite_CheckDamageFromPlayer : BCC .noShatter - JMP Shatter - - .noShatter + SEP #$20 + LDA.w SprMiscA, X : BNE .chase RTS + .chase + + %PlayAnimation(0, 3, 6) + + LDA #$0A + JSL Sprite_ApplySpeedTowardsPlayer + + JSL Sprite_MoveLong + + JSL Sprite_CheckDamageFromPlayer : BCC .noShatter + JMP Shatter + .noShatter + RTS } GetLinkDistance16bit: { - LDA.w SprCachedX ; Sprite X - SEC : SBC $22 ; - Player X + LDA.w SprCachedX ; Sprite X + SEC : SBC $22 ; - Player X - BPL + - EOR #$FFFF : INC - + + BPL + + EOR #$FFFF : INC + + - STA $00 ; Distance X (ABS) + STA $00 ; Distance X (ABS) - LDA.w SprCachedY ; Sprite Y - SEC : SBC $20 ; - Player Y + LDA.w SprCachedY ; Sprite Y + SEC : SBC $20 ; - Player Y - BPL + - EOR #$FFFF : INC - + + BPL + + EOR #$FFFF : INC + + - ; Add it back to X Distance - CLC : ADC $00 : STA $00 ; distance total X, Y (ABS) + ; Add it back to X Distance + CLC : ADC $00 : STA $00 ; distance total X, Y (ABS) - RTS + RTS } Chair: { - JSL Sprite_CheckDamageToPlayer - REP #$20 - - JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough - SEP #$20 - LDA.w SprMiscA, X : BNE + - LDA #$01 : STA.w SprMiscA, X - + - - .notcloseenough + JSL Sprite_CheckDamageToPlayer + REP #$20 + JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough SEP #$20 - - LDA.w SprMiscA, X : CMP #$01 : BNE + - ; Prepare to raise in the air - LDA.b #$20 : STA.w SprTimerA, X - INC.w SprMiscA, X - - RTS + LDA.w SprMiscA, X : BNE + + LDA #$01 : STA.w SprMiscA, X + + .notcloseenough - CMP #$02 : BNE + - ; Prepare to raise in the air - - LDA.w SprTimerA, X : BNE .stillrising - LDA.b #$10 : STA.w SprTimerA, X - INC.w SprMiscA, X - - RTS - - .stillrising - - ; OPTIONAL DELAY THE INCREASING SPRHEIGHT WITH TIMER - LDA.w SprTimerC, X : BNE .optionalTimer - LDA #$02 : STA.w SprTimerC, X - INC.w SprHeight, X - - .optionalTimer - - RTS - + - - CMP #$03 : BNE + - LDA.w SprTimerA, X : BNE .waitingdelay - JSL Sprite_MoveLong - JSL Sprite_CheckDamageToPlayer : BCS Shatter - JSL Sprite_CheckDamageFromPlayer : BCS Shatter - ;JSL Sprite_CheckTileCollision : BNE Shatter - + SEP #$20 + LDA.w SprMiscA, X : CMP #$01 : BNE + + ; Prepare to raise in the air + LDA.b #$20 : STA.w SprTimerA, X + INC.w SprMiscA, X RTS - + - RTS - .waitingdelay - LDA #$28 - JSL Sprite_ApplySpeedTowardsPlayer + + + CMP #$02 : BNE + + ; Prepare to raise in the air + LDA.w SprTimerA, X : BNE .stillrising + LDA.b #$10 : STA.w SprTimerA, X + INC.w SprMiscA, X + RTS + .stillrising + + ; OPTIONAL DELAY THE INCREASING SPRHEIGHT WITH TIMER + LDA.w SprTimerC, X : BNE .optionalTimer + LDA #$02 : STA.w SprTimerC, X + INC.w SprHeight, X + .optionalTimer RTS + + + + CMP #$03 : BNE + + LDA.w SprTimerA, X : BNE .waitingdelay + JSL Sprite_MoveLong + JSL Sprite_CheckDamageToPlayer : BCS Shatter + JSL Sprite_CheckDamageFromPlayer : BCS Shatter + ;JSL Sprite_CheckTileCollision : BNE Shatter + + RTS + + + RTS + .waitingdelay + LDA #$28 + JSL Sprite_ApplySpeedTowardsPlayer + + RTS } Shatter: { - 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.w SprState, X - - LDA.b #$1F : STA.w SprTimerA, X - - LDA.b #$EC : STA $0E20, X - - LDA.w SprNbrOAM, X : CLC : ADC #$04 : STA.w SprNbrOAM, X - - STZ $0EF0, X - - LDA.b #$80 : STA.w SprMiscB, X - RTS + 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.w SprState, X + LDA.b #$1F : STA.w SprTimerA, X + LDA.b #$EC : STA $0E20, X + LDA.w SprNbrOAM, X : CLC : ADC #$04 : STA.w SprNbrOAM, X + STZ $0EF0, X + LDA.b #$80 : STA.w SprMiscB, X + RTS } Axe: { - JSL Sprite_CheckDamageToPlayer - REP #$20 - JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough - SEP #$20 - - LDA.w SprMiscA, X : BNE + - LDA #$01 : STA.w SprMiscA, X - + - - .notcloseenough - + JSL Sprite_CheckDamageToPlayer + REP #$20 + JSR GetLinkDistance16bit : CMP #$0050 : BCS .notcloseenough SEP #$20 - LDA.w SprMiscA, X : CMP #$01 : BNE + - ; Prepare to raise in the air - LDA.b #$20 : STA.w SprTimerA, X - INC.w SprMiscA, X - - RTS + LDA.w SprMiscA, X : BNE + + LDA #$01 : STA.w SprMiscA, X + + .notcloseenough - CMP #$02 : BNE + - ; Prepare to raise in the air - - LDA.w SprTimerA, X : BNE .stillrising - LDA.b #$10 : STA.w SprTimerA, X - INC.w SprMiscA, X - - RTS - - .stillrising - - ; OPTIONAL DELAY THE INCREASING SPRHEIGHT WITH TIMER - LDA.w SprTimerC, X : BNE .optionalTimer - LDA #$02 : STA.w SprTimerC, X - INC.w SprHeight, X - - .optionalTimer - - RTS - + - - CMP #$03 : BNE + - LDA.w SprSubtype, X : CMP #$11 : BNE .notAxe - JSR PlayAxe - BRA .done - - .notAxe - - CMP #$12 : BNE .notKnife - JSR PlayKnife - BRA .done - - .notKnife - - JSR PlayFork - - .done - - LDA.w SprTimerA, X : BNE .waitingdelay - JSL Sprite_MoveLong - - JSL Sprite_CheckDamageToPlayer : BCC .noShatter - JMP Shatter - - JSL Sprite_CheckDamageFromPlayer : BCC .noShatter - JMP Shatter - - JSL Sprite_CheckTileCollision : BEQ .noShatter - JMP Shatter - - .noShatter - - RTS - + + SEP #$20 + LDA.w SprMiscA, X : CMP #$01 : BNE + + ; Prepare to raise in the air + LDA.b #$20 : STA.w SprTimerA, X + INC.w SprMiscA, X RTS + + - .waitingdelay - - LDA #$20 - JSL Sprite_ApplySpeedTowardsPlayer + CMP #$02 : BNE + + ; Prepare to raise in the air + LDA.w SprTimerA, X : BNE .stillrising + LDA.b #$10 : STA.w SprTimerA, X + INC.w SprMiscA, X + RTS + .stillrising + ; OPTIONAL DELAY THE INCREASING SPRHEIGHT WITH TIMER + LDA.w SprTimerC, X : BNE .optionalTimer + LDA #$02 : STA.w SprTimerC, X + INC.w SprHeight, X + .optionalTimer RTS + + + + CMP #$03 : BNE + + LDA.w SprSubtype, X : CMP #$11 : BNE .notAxe + JSR PlayAxe + BRA .done + .notAxe + + CMP #$12 : BNE .notKnife + JSR PlayKnife + BRA .done + .notKnife + + JSR PlayFork + .done + + LDA.w SprTimerA, X : BNE .waitingdelay + JSL Sprite_MoveLong + JSL Sprite_CheckDamageToPlayer : BCC .noShatter + JMP Shatter + JSL Sprite_CheckDamageFromPlayer : BCC .noShatter + JMP Shatter + JSL Sprite_CheckTileCollision : BEQ .noShatter + JMP Shatter + .noShatter + RTS + + + RTS + + .waitingdelay + + LDA #$20 + JSL Sprite_ApplySpeedTowardsPlayer + + RTS } PlayAxe: @@ -395,380 +358,378 @@ PlayKnife: SpawnerTester: { - LDA.w SprTimerA, X : BEQ + - RTS - + + LDA.w SprTimerA, X : BEQ + + RTS + + - LDA #$FF : STA.w SprTimerA, X + LDA #$FF : STA.w SprTimerA, X + LDA #$00 + JSL Sprite_SpawnDynamically + JSL Sprite_SetSpawnedCoords + LDA.w SprMiscD, X : STA.w SprSubtype, Y + INC.w SprMiscD, X + + ;LDA #$28 : STA.w SprY, X + LDA #$01 : STA.w SprAction, Y ; by default it's a chair + LDA.w SprSubtype, Y : CMP #$10 : BNE .notPictureFrame LDA #$00 - JSL Sprite_SpawnDynamically - JSL Sprite_SetSpawnedCoords - LDA.w SprMiscD, X : STA.w SprSubtype, Y - INC.w SprMiscD, X + STA.w SprMiscA, Y + STA.w SprAction, Y + BRA .done - ;LDA #$28 : STA.w SprY, X - LDA #$01 : STA.w SprAction, Y ; by default it's a chair - LDA.w SprSubtype, Y : CMP #$10 : BNE .notPictureFrame - LDA #$00 - STA.w SprMiscA, Y - STA.w SprAction, Y - BRA .done + .notPictureFrame - .notPictureFrame + CMP #$11 : BNE .notAxe + LDA #$07 : STA.w SprFrame, Y + LDA #$02 : STA.w SprAction, Y + BRA .done - CMP #$11 : BNE .notAxe - LDA #$07 : STA.w SprFrame, Y - LDA #$02 : STA.w SprAction, Y - BRA .done + .notAxe - .notAxe + CMP #$12 : BNE .notKnife + LDA #15 : STA.w SprFrame, Y + LDA #$02 : STA.w SprAction, Y + BRA .done - CMP #$12 : BNE .notKnife - LDA #15 : STA.w SprFrame, Y - LDA #$02 : STA.w SprAction, Y - BRA .done + .notKnife - .notKnife + CMP #$13 : BNE .notFork + LDA #37 : STA.w SprFrame, Y + LDA #$02 : STA.w SprAction, Y + BRA .done - CMP #$13 : BNE .notFork - LDA #37 : STA.w SprFrame, Y - LDA #$02 : STA.w SprAction, Y - BRA .done + .notFork - .notFork + CMP #$14 : BNE .notBed + LDA #5 : STA.w SprFrame, Y + LDA #$01 : STA.w SprAction, Y + BRA .done - CMP #$14 : BNE .notBed - LDA #5 : STA.w SprFrame, Y - LDA #$01 : STA.w SprAction, Y - BRA .done + .notBed - .notBed + CMP #$14 : BNE .notDoor + LDA #36 : STA.w SprFrame, Y + LDA #$01 : STA.w SprAction, Y + BRA .done - CMP #$14 : BNE .notDoor - LDA #36 : STA.w SprFrame, Y - LDA #$01 : STA.w SprAction, Y - BRA .done + .notDoor - .notDoor + LDA.w SprSubtype, Y : AND #$08 : BNE .secondset ;2nd set + LDA.w SprSubtype, Y : CLC : ADC #23 : STA.w SprFrame, Y + BRA .done - LDA.w SprSubtype, Y : AND #$08 : BNE .secondset ;2nd set - LDA.w SprSubtype, Y : CLC : ADC #23 : STA.w SprFrame, Y - BRA .done + .secondset - .secondset + LDA.w SprSubtype, Y : AND #$07 : CLC : ADC #30 : STA.w SprFrame, Y + LDA.w SprSubtype, Y - LDA.w SprSubtype, Y : AND #$07 : CLC : ADC #30 : STA.w SprFrame, Y - LDA.w SprSubtype, Y + .done - .done - - RTS + RTS } Sprite_Poltergeist_Draw: { - LDA.w SprAction, X : CMP #$03 : BNE + - RTS - + + LDA.w SprAction, X : CMP #$03 : BNE + + RTS + + - JSL Sprite_PrepOamCoord - LDA #$08 - JSL Sprite_OAM_AllocateDeferToPlayer + JSL Sprite_PrepOamCoord + LDA #$08 + JSL Sprite_OAM_AllocateDeferToPlayer - LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame - LDA .start_index, Y : STA $06 + LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame + LDA .start_index, Y : STA $06 - PHX - LDX .nbr_of_tiles, Y ;amount of tiles -1 - LDY.b #$00 + PHX + LDX .nbr_of_tiles, Y ;amount of tiles -1 + LDY.b #$00 - .nextTile + .nextTile - PHX ; Save current Tile Index? + PHX ; Save current Tile Index? - TXA : CLC : ADC $06 ; Add Animation Index Offset + TXA : CLC : ADC $06 ; Add Animation Index Offset - PHA ; Keep the value with animation index offset? + PHA ; Keep the value with animation index offset? - ASL A : TAX + ASL A : TAX - REP #$20 + REP #$20 - LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y - AND.w #$0100 : STA $0E - INY - LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y - CLC : ADC #$0010 : CMP.w #$0100 - SEP #$20 + LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y + AND.w #$0100 : STA $0E + INY + LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y + CLC : ADC #$0010 : CMP.w #$0100 + SEP #$20 - BCC .on_screen_y - LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way - STA $0E + BCC .on_screen_y + LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way + STA $0E - .on_screen_y + .on_screen_y - PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) - INY - LDA .chr, X : STA ($90), Y - INY - LDA .properties, X : STA ($90), Y + PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) + INY + LDA .chr, X : STA ($90), Y + INY + LDA .properties, X : STA ($90), Y - PHY + PHY - TYA : LSR #2 : TAY + TYA : LSR #2 : TAY - LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - PLY : INY - PLX : DEX : BPL .nextTile + PLY : INY + PLX : DEX : BPL .nextTile - PLX - LDA.w SprMiscA, X : BEQ .noshadow - JSL Sprite_DrawShadow - .noshadow - RTS + PLX + LDA.w SprMiscA, X : BEQ .noshadow + JSL Sprite_DrawShadow + .noshadow + RTS + + .start_index + db $00, $02, $04, $06, $08, $09, $0F, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1F, $20, $22, $23, $25, $26, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $33, $35, $37, $39, $3B, $3F, $41, $42, $44, $45, $47, $48, $4A + + .nbr_of_tiles + db 1, 1, 1, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3, 1, 0, 1, 0, 1, 0, 1, 0 + + .x_offsets + dw -8, 8 + dw -8, 8 + dw -8, 8 + dw -8, 8 + dw 0 + dw -8, 8, -8, 8, -8, 8 + dw -4, 12, -4, 20, 4, 12 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 4, 4 + dw 0 + dw 0, 8 + dw 0 + dw 4, 4 + dw 0 + dw 8, 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0, 0 + dw 0, 0 + dw 4, 4 + dw -4, -4 + dw 4, 4 + dw -8, 8, -8, 8 + dw 4, 4 + dw 0 + dw 0, 8 + dw 0 + dw 4, 4 + dw 0 + dw 0, 8 + dw 0 + + .y_offsets + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0 + dw -12, -12, 4, 4, 12, 12 + dw -4, -4, 12, 12, 12, 12 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0, 8 + dw 0 + dw 4, 4 + dw 0 + dw 8, 0 + dw 0 + dw 4, 4 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0 + dw 0, -16 + dw 8, -8 + dw 0, 8 + dw -12, 4 + dw -12, 4 + dw -4, -4, 12, 12 + dw 8, 0 + dw 0 + dw 4, 4 + dw 0 + dw 0, 8 + dw 0 + dw 4, 4 + dw 0 + + .chr + db $02, $02 + db $00, $00 + db $02, $02 + db $04, $04 + db $2C + db $0C, $0C, $0E, $0E, $1E, $1E + db $0A, $0A, $2A, $2A, $2B, $2B + db $20 + db $24 + db $22 + db $26 + db $20 + db $24 + db $22 + db $26 + db $06, $16 + db $08 + db $3A, $3B + db $08 + db $06, $16 + db $08 + db $3A, $3B + db $08 + db $42 + db $40 + db $44 + db $46 + db $60 + db $62 + db $64 + db $66 + db $6A, $4A + db $6C, $4C + db $6F, $7F + db $4E, $4E + db $4E, $4E + db $48, $48, $68, $68 + db $07, $17 + db $28 + db $3F, $3E + db $28 + db $07, $17 + db $28 + db $3E, $3F + db $28 + + .properties + db $3D, $7D + db $3D, $7D + db $3D, $7D + db $3D, $7D + db $3D + db $3D, $7D, $3D, $7D, $3D, $7D + db $3D, $7D, $3D, $7D, $3D, $7D + db $39 + db $39 + db $39 + db $39 + db $F9 + db $F9 + db $F9 + db $F9 + db $39, $39 + db $39 + db $39, $39 + db $B9 + db $B9, $B9 + db $F9 + db $79, $79 + db $79 + db $3D + db $3D + db $39 + db $3D + db $3D + db $3D + db $39 + db $3D + db $3D, $3D + db $3D, $3D + db $3D, $3D + db $3D, $BD + db $7D, $FD + db $3D, $7D, $3D, $7D + db $B9, $B9 + db $F9 + db $79, $79 + db $79 + db $39, $39 + db $39 + db $39, $39 + db $B9 + + .sizes + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02 + db $02, $02, $02, $02, $02, $02 + db $02, $02, $00, $00, $00, $00 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $00, $00 + db $02 + db $00, $00 + db $02 + db $00, $00 + db $02 + db $00, $00 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02 + db $02, $02 + db $02, $02 + db $00, $00 + db $02, $02 + db $02, $02 + db $02, $02, $02, $02 + db $00, $00 + db $02 + db $00, $00 + db $02 + db $00, $00 + db $02 + db $00, $00 + db $02 } - -; ========================================================= - - .start_index - db $00, $02, $04, $06, $08, $09, $0F, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1F, $20, $22, $23, $25, $26, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $33, $35, $37, $39, $3B, $3F, $41, $42, $44, $45, $47, $48, $4A - - .nbr_of_tiles - db 1, 1, 1, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3, 1, 0, 1, 0, 1, 0, 1, 0 - - .x_offsets - dw -8, 8 - dw -8, 8 - dw -8, 8 - dw -8, 8 - dw 0 - dw -8, 8, -8, 8, -8, 8 - dw -4, 12, -4, 20, 4, 12 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 4, 4 - dw 0 - dw 0, 8 - dw 0 - dw 4, 4 - dw 0 - dw 8, 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0, 0 - dw 0, 0 - dw 4, 4 - dw -4, -4 - dw 4, 4 - dw -8, 8, -8, 8 - dw 4, 4 - dw 0 - dw 0, 8 - dw 0 - dw 4, 4 - dw 0 - dw 0, 8 - dw 0 - - .y_offsets - dw 0, 0 - dw 0, 0 - dw 0, 0 - dw 0, 0 - dw 0 - dw -12, -12, 4, 4, 12, 12 - dw -4, -4, 12, 12, 12, 12 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0, 8 - dw 0 - dw 4, 4 - dw 0 - dw 8, 0 - dw 0 - dw 4, 4 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0 - dw 0, -16 - dw 8, -8 - dw 0, 8 - dw -12, 4 - dw -12, 4 - dw -4, -4, 12, 12 - dw 8, 0 - dw 0 - dw 4, 4 - dw 0 - dw 0, 8 - dw 0 - dw 4, 4 - dw 0 - - .chr - db $02, $02 - db $00, $00 - db $02, $02 - db $04, $04 - db $2C - db $0C, $0C, $0E, $0E, $1E, $1E - db $0A, $0A, $2A, $2A, $2B, $2B - db $20 - db $24 - db $22 - db $26 - db $20 - db $24 - db $22 - db $26 - db $06, $16 - db $08 - db $3A, $3B - db $08 - db $06, $16 - db $08 - db $3A, $3B - db $08 - db $42 - db $40 - db $44 - db $46 - db $60 - db $62 - db $64 - db $66 - db $6A, $4A - db $6C, $4C - db $6F, $7F - db $4E, $4E - db $4E, $4E - db $48, $48, $68, $68 - db $07, $17 - db $28 - db $3F, $3E - db $28 - db $07, $17 - db $28 - db $3E, $3F - db $28 - - .properties - db $3D, $7D - db $3D, $7D - db $3D, $7D - db $3D, $7D - db $3D - db $3D, $7D, $3D, $7D, $3D, $7D - db $3D, $7D, $3D, $7D, $3D, $7D - db $39 - db $39 - db $39 - db $39 - db $F9 - db $F9 - db $F9 - db $F9 - db $39, $39 - db $39 - db $39, $39 - db $B9 - db $B9, $B9 - db $F9 - db $79, $79 - db $79 - db $3D - db $3D - db $39 - db $3D - db $3D - db $3D - db $39 - db $3D - db $3D, $3D - db $3D, $3D - db $3D, $3D - db $3D, $BD - db $7D, $FD - db $3D, $7D, $3D, $7D - db $B9, $B9 - db $F9 - db $79, $79 - db $79 - db $39, $39 - db $39 - db $39, $39 - db $B9 - - .sizes - db $02, $02 - db $02, $02 - db $02, $02 - db $02, $02 - db $02 - db $02, $02, $02, $02, $02, $02 - db $02, $02, $00, $00, $00, $00 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $00, $00 - db $02 - db $00, $00 - db $02 - db $00, $00 - db $02 - db $00, $00 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02, $02 - db $02, $02 - db $00, $00 - db $02, $02 - db $02, $02 - db $02, $02, $02, $02 - db $00, $00 - db $02 - db $00, $00 - db $02 - db $00, $00 - db $02 - db $00, $00 - db $02 diff --git a/Sprites/NPCs/ranch_girl.asm b/Sprites/NPCs/ranch_girl.asm index acefcdd..f0dc213 100644 --- a/Sprites/NPCs/ranch_girl.asm +++ b/Sprites/NPCs/ranch_girl.asm @@ -43,13 +43,7 @@ RanchGirl_TeachSong: .not_started .running_dialog .has_song - LDA.b $1A - LSR A - LSR A - LSR A - LSR A - AND.b #$01 - STA.w $0DC0,X + LDA.b $1A : LSR #4 : AND.b #$01 : STA.w $0DC0,X RTL } diff --git a/Sprites/NPCs/vasu.asm b/Sprites/NPCs/vasu.asm index 110786d..1e8c85b 100644 --- a/Sprites/NPCs/vasu.asm +++ b/Sprites/NPCs/vasu.asm @@ -34,7 +34,6 @@ Sprite_Vasu_Long: { PHB : PHK : PLB - LDA.w SprSubtype, X : BNE + JSR Sprite_Vasu_Draw JMP ++ @@ -43,7 +42,7 @@ Sprite_Vasu_Long: ++ JSL Sprite_DrawShadow JSL Sprite_CheckActive : BCC .SpriteIsNotActive - JSR Sprite_Vasu_Main + JSR Sprite_Vasu_Main .SpriteIsNotActive PLB RTL diff --git a/Sprites/Objects/ice_block.asm b/Sprites/Objects/ice_block.asm index 5e167de..fffd85d 100644 --- a/Sprites/Objects/ice_block.asm +++ b/Sprites/Objects/ice_block.asm @@ -35,13 +35,13 @@ Sprite_IceBlock_Long: PHB : PHK : PLB LDA.w SprMiscC, X : BEQ .not_being_pushed STZ.w SprMiscC, X - STZ.b $5E ; Clear Links speed + STZ.b LinkSpeedTbl STZ.b $48 ; Clear push actions bitfield .not_being_pushed LDA.w SprTimerA, X : BEQ .retain_momentum LDA.b #$01 : STA.w SprMiscC, X LDA.b #$84 : STA.b $48 ; Set statue and push block actions - LDA.b #$04 : STA.b $5E ; Slipping into pit speed + LDA.b #$04 : STA.b LinkSpeedTbl ; Slipping into pit speed .retain_momentum JSR Sprite_IceBlock_Draw @@ -60,7 +60,6 @@ Sprite_IceBlock_Prep: LDA.w SprY, X : STA.w SprMiscE, X LDA.w SprXH, X : STA.w SprMiscF, X LDA.w SprYH, X : STA.w SprMiscG, X - STZ.w SprDefl, X PLB RTL @@ -110,6 +109,7 @@ Sprite_IceBlock_Main: LDA.b $26 : STA.w SprMiscA, X JSR ApplyPush .push_cached + LDA.b #$07 : STA.w SprTimerA, X STZ.b $5E JSL Sprite_RepelDash @@ -227,71 +227,36 @@ Statue_BlockSprites: LDY.b #$0F .next - LDA.w $0E20,Y - CMP.b #$1C ; SPRITE 1C - BEQ .skip + ; SPRITE 1C + LDA.w $0E20, Y : CMP.b #$1C : BEQ .skip + CPY.w $0FA0 : BEQ .skip + TYA : EOR.b $1A : AND.b #$01 : BNE .skip + LDA.w SprState,Y : CMP.b #$09 : BCC .skip - CPY.w $0FA0 - BEQ .skip - - TYA - EOR.b $1A - AND.b #$01 - BNE .skip - - LDA.w SprState,Y - CMP.b #$09 - BCC .skip - - LDA.w SprX,Y - STA.b $04 - - LDA.w SprXH,Y - STA.b $05 - - LDA.w SprY,Y - STA.b $06 - - LDA.w SprYH,Y - STA.b $07 + LDA.w SprX, Y : STA.b $04 + LDA.w SprXH, Y : STA.b $05 + LDA.w SprY, Y : STA.b $06 + LDA.w SprYH, Y : STA.b $07 REP #$20 - LDA.w SprCachedX - SEC - SBC.b $04 - CLC - ADC.w #$000C + LDA.w SprCachedX : SEC : SBC.b $04 : CLC : ADC.w #$000C + CMP.w #$0018 : BCS .skip - CMP.w #$0018 - BCS .skip - - LDA.w SprCachedY - SEC - SBC.b $06 - CLC - ADC.w #$000C - - CMP.w #$0024 - BCS .skip + LDA.w SprCachedY : SEC : SBC.b $06 : CLC : ADC.w #$000C + CMP.w #$0024 : BCS .skip SEP #$20 - LDA.b #$04 - STA.w $0EA0,Y + LDA.b #$04 : STA.w $0EA0, Y PHY - LDA.b #$20 JSL Sprite_CheckSlopedTileCollision ; JSR Sprite_ProjectSpeedTowardsLocation - PLY - LDA.b $00 - STA.w SprYRecoil,Y - - LDA.b $01 - STA.w SprXRecoil,Y + LDA.b $00 : STA.w SprYRecoil, Y + LDA.b $01 : STA.w SprXRecoil, Y .skip SEP #$20