From 2312452d28557ab74f49df824c3f43666c54ce44 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:50:12 -0400 Subject: [PATCH 01/16] Update Sprite_KydreeokHead_Long --- Sprites/Bosses/kydreeok_head.asm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index c22e7f1..948ded4 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -33,18 +33,17 @@ Sprite_KydreeokHead_Long: { - PHB : PHK : PLB + PHB : PHK : PLB + LDA SprAction, X : CMP #$02 : BEQ .no_head + JSR Sprite_KydreeokHead_Draw - LDA $0D80, X : CMP #$02 : BEQ .no_head - JSR Sprite_KydreeokHead_Draw ; Call the draw code -.no_head - JSL Sprite_CheckActive ; Check if game is not paused - BCC .SpriteIsNotActive - JSR Sprite_KydreeokHead_Main ; Call the main sprite code + .no_head + JSL Sprite_CheckActive : BCC .not_active + JSR Sprite_KydreeokHead_Main - .SpriteIsNotActive - PLB ; Get back the databank we stored previously - RTL ; Go back to original code + .not_active + PLB ; Get back the databank we stored previously + RTL ; Go back to original code } ; ========================================================= From 425d84f5c27a9bae88f17d06fa6c4573f4b96f42 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:50:26 -0400 Subject: [PATCH 02/16] Add TODO for Kydreeok Head properties --- Sprites/Bosses/kydreeok_head.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index 948ded4..b559a16 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -52,8 +52,8 @@ Sprite_KydreeokHead_Prep: { PHB : PHK : PLB - ; Add more code here to initialize data - + ; TODO: Set sprite properties for damage and health + ; TODO: Handle head death in conjunction with Kydreeok PLB RTL From 8f5d58560eaab3e1f8483b692864e331b3983dc1 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:51:16 -0400 Subject: [PATCH 03/16] Move and rename SpeedTable --- Sprites/Bosses/kydreeok_head.asm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index b559a16..0ef5c73 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -61,6 +61,10 @@ Sprite_KydreeokHead_Prep: ; ========================================================= +SpeedTable: + db $00, $02, $04, $06, $07, $01, $06, $03 + db 0, -2, -4, -6, -7, -1, -6, -3 + Sprite_KydreeokHead_Main: { LDA.w SprAction, X @@ -342,9 +346,8 @@ AdjustMovementSpeed: RTS } -tableSpeed: - db $00, $02, $04, $06, $07, $01, $06, $03 - db 0, -2, -4, -6, -7, -1, -6, -3 +; ========================================================= +; Based on Zarby Gleeok code KydreeokHead_NeckControl: { From 2e5a5908c09ba062aec33080eb31a545e86736aa Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:51:32 -0400 Subject: [PATCH 04/16] Reformat Kydreeok Head sprite actions --- Sprites/Bosses/kydreeok_head.asm | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index 0ef5c73..065a20f 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -70,12 +70,12 @@ Sprite_KydreeokHead_Main: LDA.w SprAction, X JSL UseImplicitRegIndexedLocalJumpTable - dw KydreeokHead_ForwardAnim - dw KydreeokHead_SideAnim - - dw KydreeokHead_SummonFire - + dw KydreeokHead_ForwardAnim ; 0x00 + dw KydreeokHead_SideAnim ; 0x01 + dw KydreeokHead_SummonFire ; 0x02 + ; ------------------------------------------------------- + ; 0x00 KydreeokHead_ForwardAnim: { %StartOnFrame(0) @@ -88,9 +88,9 @@ Sprite_KydreeokHead_Main: LDA.w SprTimerA, X : BNE .noSpeedChange JSL GetRandomInt : AND #$0F : TAY - LDA.w tableSpeed, Y : STA.w SprXSpeed, X + LDA.w SpeedTable, Y : STA.w SprXSpeed, X JSL GetRandomInt : AND #$0F : TAY - LDA.w tableSpeed, Y : STA.w SprYSpeed, X + LDA.w SpeedTable, Y : STA.w SprYSpeed, X ; LDA #$40 : STA.w SprTimerA, X .noSpeedChange @@ -120,12 +120,13 @@ Sprite_KydreeokHead_Main: JSR RandomlyAttack JSL Sprite_IsToRightOfPlayer : TYA : BNE .not_right - %GotoAction(1) + %GotoAction(1) .not_right - RTS } + ; ------------------------------------------------------- + ; 0x01 KydreeokHead_SideAnim: { %StartOnFrame(3) @@ -138,9 +139,9 @@ Sprite_KydreeokHead_Main: LDA.w SprTimerA, X : BNE .noSpeedChange JSL GetRandomInt : AND #$0F : TAY - LDA.w tableSpeed, Y : STA.w SprXSpeed, X + LDA.w SpeedTable, Y : STA.w SprXSpeed, X JSL GetRandomInt : AND #$0F : TAY - LDA.w tableSpeed, Y : STA.w SprYSpeed, X + LDA.w SpeedTable, Y : STA.w SprYSpeed, X ; LDA #$40 : STA.w SprTimerA, X .noSpeedChange JSL Sprite_Move @@ -153,12 +154,14 @@ Sprite_KydreeokHead_Main: JSR RandomlyAttack JSL Sprite_IsToRightOfPlayer : TYA : BNE .not_right - RTS + RTS .not_right %GotoAction(0) RTS } + ; ------------------------------------------------------- + ; 0x02 KydreeokHead_SummonFire: { ; %StartOnFrame(5) @@ -169,18 +172,18 @@ Sprite_KydreeokHead_Main: %DoDamageToPlayerSameLayerOnContact() JSR Sprite_Twinrova_FireAttack - JSL Sprite_Move LDA SprTimerA, X : BNE .not_done - LDA #$00 : STA $0DD0, X - + LDA #$00 : STA $0DD0, X .not_done RTS } } +; ========================================================= + CoordinateBasedRotation: { LDA Neck_Index : TAY From 8c0dc13f1fcf7dc1cf1f529f303ca89eb90dea35 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:51:49 -0400 Subject: [PATCH 05/16] Format head rotation code --- Sprites/Bosses/kydreeok_head.asm | 53 +++++++++++++++++++------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index 065a20f..3ddb6a5 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -186,7 +186,7 @@ Sprite_KydreeokHead_Main: CoordinateBasedRotation: { - LDA Neck_Index : TAY + LDA Neck_Index : TAY ; JSL GetRandomInt : AND #$04 : TAY ; LDA X_Coords, Y : STA Neck1_OffsetX ; JSL GetRandomInt : AND #$04 : TAY @@ -196,21 +196,25 @@ CoordinateBasedRotation: ; JSL GetRandomInt : AND #$04 : TAY LDA Y_Coords, Y : STA Neck2_OffsetY JSL GetRandomInt : AND #$3F : BNE .dont_increment - INC.w Neck_Index + INC.w Neck_Index .dont_increment CPY #15 : BNE .not_full - LDA #0 : STA Neck_Index + LDA #0 : STA Neck_Index .not_full RTS } ; Table for X coordinates (based on a radius of 8) X_Coords: - db 8, 11, 8, 3, -4, -9, -12, -9, -4, 3, 8, 11, 8, 3, -4, -9 ; X values + db 8, 11, 8, 3, -4, -9, -12, -9 + db -4, 3, 8, 11, 8, 3, -4, -9 ; Table for Y coordinates (based on a radius of 8) Y_Coords: - db 0, -3, -8, -11, -15, -15, -11, -8, -3, 0, 3, 8, 11, 15, 15, 11 ; Y values + db 0, -3, -8, -11, -15, -15, -11, -8 + db -3, 0, 3, 8, 11, 15, 15, 11 + +; ========================================================= RotateHeadUsingSpeedValues: { @@ -220,7 +224,7 @@ RotateHeadUsingSpeedValues: LDA.w SprYSpeed, X : CLC : ADC.w YSpeedSin, Y : ASL : STA.w SprYSpeed, X INY : CPY #$3F : BNE .not_full - LDY.b #$00 + LDY.b #$00 .not_full STY.w Neck_Index JSL Sprite_MoveLong @@ -229,22 +233,29 @@ RotateHeadUsingSpeedValues: } XSpeedSin: -db 0, 3, 6, 9, 12, 15, 18, 20, 23, 25 -db 27, 28, 30, 31, 31, 32 +{ + db 0, 3, 6, 9, 12, 15, 18, 20, 23, 25 + db 27, 28, 30, 31, 31, 32 +} + YSpeedSin: -db 32, 32, 31, 31 -db 30, 28, 27, 25, 23, 20, 18, 15, 12, 9 -db 6, 3, 0, -3, -6, -9, -12, -15, -18, -20 -db -23, -25, -27, -28, -30, -31, -31, -32, -32, -32 -db -31, -31, -30, -28, -27, -25, -23, -20, -18, -15 -db -12, -9, -6, -3 -db 0, 3, 6, 9, 12, 15, 18, 20, 23, 25 -db 27, 28, 30, 31, 31, 32, 32, 32, 31, 31 -db 30, 28, 27, 25, 23, 20, 18, 15, 12, 9 -db 6, 3, 0, -3, -6, -9, -12, -15, -18, -20 -db -23, -25, -27, -28, -30, -31, -31, -32, -32, -32 -db -31, -31, -30, -28, -27, -25, -23, -20, -18, -15 -db -12, -9, -6, -3 +{ + db 32, 32, 31, 31 + db 30, 28, 27, 25, 23, 20, 18, 15, 12, 9 + db 6, 3, 0, -3, -6, -9, -12, -15, -18, -20 + db -23, -25, -27, -28, -30, -31, -31, -32, -32, -32 + db -31, -31, -30, -28, -27, -25, -23, -20, -18, -15 + db -12, -9, -6, -3 + db 0, 3, 6, 9, 12, 15, 18, 20, 23, 25 + db 27, 28, 30, 31, 31, 32, 32, 32, 31, 31 + db 30, 28, 27, 25, 23, 20, 18, 15, 12, 9 + db 6, 3, 0, -3, -6, -9, -12, -15, -18, -20 + db -23, -25, -27, -28, -30, -31, -31, -32, -32, -32 + db -31, -31, -30, -28, -27, -25, -23, -20, -18, -15 + db -12, -9, -6, -3 +} + +; ========================================================= RandomlyAttack: { From 4b727b870d151b6edb559f65235f28654ed3ebbe Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:52:20 -0400 Subject: [PATCH 06/16] Format movement and random attack code --- Sprites/Bosses/kydreeok_head.asm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index 3ddb6a5..ec75f63 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -260,19 +260,20 @@ YSpeedSin: RandomlyAttack: { JSL GetRandomInt : AND #$7F : BNE .no_attack - CLC - JSL GetRandomInt : AND #$0F : BNE .no_attack - LDA #$CF - JSL Sprite_SpawnDynamically - JSL Sprite_SetSpawnedCoords - ;JSL $09B020 - LDA.b #$02 : STA $0D80, Y - LDA #$10 : STA.w SprTimerA, Y + CLC + JSL GetRandomInt : AND #$0F : BNE .no_attack + LDA #$CF + JSL Sprite_SpawnDynamically + JSL Sprite_SetSpawnedCoords + ;JSL $09B020 ; Fireball_SpawnTrailGarnish + LDA.b #$02 : STA.w SprAction, Y + LDA #$10 : STA.w SprTimerA, Y .no_attack - RTS } +; ========================================================= + Offspring1_Neck1_X = $19EA Offspring1_Neck2_X = $19EC Offspring1_Neck3_X = $19EE @@ -331,6 +332,10 @@ MoveWithBody: RTS } +; ========================================================= +; Adjusts the movement speed of the sprite based on its +; position. This came from Zarby's Gleeok code and causes +; some weird movement with the current implementation. AdjustMovementSpeed: { @@ -339,24 +344,20 @@ AdjustMovementSpeed: LDA #-8 : STA.w SprXSpeed, X .biggerthanorigin - LDA.w SprX, X : CLC : ADC #$16 ; X+32 CMP.w SprMiscA, X : BCS .lowerthanorigin LDA #$08 : STA.w SprXSpeed, X .lowerthanorigin - LDA.w SprY, X : SEC : SBC #$00 ; X-32 CMP.w SprMiscB, X : BCC .biggerthanorigin2 LDA #-8 : STA.w SprYSpeed, X .biggerthanorigin2 - LDA.w SprY, X : CLC : ADC #$20 ; X+32 CMP.w SprMiscB, X : BCS .lowerthanorigin2 LDA #$08 : STA.w SprYSpeed, X .lowerthanorigin2 - RTS } From 6842ac956c88f50ee343867221c9eaf00dc8e571 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:52:57 -0400 Subject: [PATCH 07/16] Add Sprite_KydreeokHead_DrawNeck for neck pieces draw --- Sprites/Bosses/kydreeok_head.asm | 174 ++++++++++++++----------------- 1 file changed, 81 insertions(+), 93 deletions(-) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index ec75f63..9af7628 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -556,29 +556,93 @@ KydreeokHead_NeckControl: LDA.b $08 : STA.w SprXSpeed, X LDA.b $09 : STA.w SprYSpeed, X - - RTS } +; ========================================================= +; This is here for reference. +Sprite_KydreeokHead_DrawNeck_Data: +{ + .start_index + db $12 + .nbr_of_tiles + db 0 + .x_offsets + dw 0 + .y_offsets + dw 0 + .chr + db $2E + .properties + db $39 + .sizes + db $02 +} + +; ========================================================= Sprite_KydreeokHead_DrawNeck: { - .start_index - db $12 - .nbr_of_tiles - db 0 - .x_offsets - dw 0 - .y_offsets - dw 0 - .chr - db $2E - .properties - db $39 - .sizes - db $02 + ; Dumb draw neck code + LDA.w SprSubtype, X : BNE .neck2 + LDA.w $19EA : STA.w $0FD8 + LDA.w $19EB : STA.w $0FDA + JSR .DrawNeckPart + + LDA.w $19EC : STA.w $0FD8 + LDA.w $19ED : STA.w $0FDA + JSR .DrawNeckPart + + LDA.w $19EE : STA.w $0FD8 + LDA.w $19EF : STA.w $0FDA + JSR .DrawNeckPart + + BRA .skipNeck + .neck2 + ; Dumb draw neck code + LDA.w $19F0 : STA.w $0FD8 + LDA.w $19F1 : STA.w $0FDA + JSR .DrawNeckPart + + LDA.w $19F2 : STA.w $0FD8 + LDA.w $19F3 : STA.w $0FDA + JSR .DrawNeckPart + + LDA.w $19F4 : STA.w $0FD8 + LDA.w $19F5 : STA.w $0FDA + JSR .DrawNeckPart + + .skipNeck + LDA.b $08 : STA.w $0FD8 + LDA.b $09 : STA.w $0FDA + .skipNeck2 + RTS + + .DrawNeckPart + PHY + JSL Sprite_PrepOamCoord + PLY + + REP #$20 + LDA $00 : STA ($90), Y : AND.w #$0100 : STA $0E : INY + LDA $02 : STA ($90), Y : CLC : ADC #$0010 : CMP.w #$0100 + SEP #$20 + BCC .on_screen_y2 + LDA.b #$F0 : STA ($90), Y ; Put the sprite out of the way + STA $0E + .on_screen_y2 + INY + LDA #$2E : STA ($90), Y + INY + LDA #$39 : STA ($90), Y + + PHY + TYA : LSR #2 : TAY + LDA #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer + PLY : INY + + RTS } ; ========================================================= @@ -630,83 +694,7 @@ Sprite_KydreeokHead_Draw: PLX - { - ; Dumb draw neck code - LDA.w SprSubtype, X : BNE .neck2 - - LDA.w $19EA : STA.w $0FD8 - LDA.w $19EB : STA.w $0FDA - JSR .DrawNeckPart - - - LDA.w $19EC : STA.w $0FD8 - LDA.w $19ED : STA.w $0FDA - JSR .DrawNeckPart - - LDA.w $19EE : STA.w $0FD8 - LDA.w $19EF : STA.w $0FDA - JSR .DrawNeckPart - - BRA .skipNeck - .neck2 - ; Dumb draw neck code - LDA.w $19F0 : STA.w $0FD8 - LDA.w $19F1 : STA.w $0FDA - JSR .DrawNeckPart - - LDA.w $19F2 : STA.w $0FD8 - LDA.w $19F3 : STA.w $0FDA - JSR .DrawNeckPart - - LDA.w $19F4 : STA.w $0FD8 - LDA.w $19F5 : STA.w $0FDA - JSR .DrawNeckPart - - .skipNeck - - LDA.b $08 : STA.w $0FD8 - LDA.b $09 : STA.w $0FDA - .skipNeck2 - RTS - - - - .DrawNeckPart - PHY - JSL Sprite_PrepOamCoord - PLY - - REP #$20 - - LDA $00 : STA ($90), Y - AND.w #$0100 : STA $0E - INY - LDA $02 : STA ($90), Y - CLC : ADC #$0010 : CMP.w #$0100 - SEP #$20 - BCC .on_screen_y2 - - LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way - STA $0E - .on_screen_y2 - - INY - LDA #$2E : STA ($90), Y - INY - LDA #$39 : STA ($90), Y - - PHY - - TYA : LSR #2 : TAY - - LDA #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer - - PLY : INY - - RTS - } - - RTS + JMP Sprite_KydreeokHead_DrawNeck .start_index db $00, $02, $04, $06, $0A, $0E From 446ccf0d7fc9ff0794534a4fd1f00edf094dd85a Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 11:53:31 -0400 Subject: [PATCH 08/16] Update Kydreeok Head header comment --- Sprites/Bosses/kydreeok_head.asm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sprites/Bosses/kydreeok_head.asm b/Sprites/Bosses/kydreeok_head.asm index 9af7628..b124904 100644 --- a/Sprites/Bosses/kydreeok_head.asm +++ b/Sprites/Bosses/kydreeok_head.asm @@ -1,4 +1,7 @@ ; ========================================================= +; Kydreeok Head sprite +; Child sprite of the Kydreeok boss +; ========================================================= !SPRID = $CF ; The sprite ID you are overwriting (HEX) !NbrTiles = 06 ; Number of tiles used in a frame From 0b173ce212aa03507dacc841d121d9f50e9db2d4 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:03:21 -0400 Subject: [PATCH 09/16] Update Sprite_Kydreeok_Long formatting --- Sprites/Bosses/kydreeok.asm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 89eab7f..a3781d2 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -1,6 +1,7 @@ ; ========================================================= ; Sprite Properties ; ========================================================= + !SPRID = $7A ; The sprite ID you are overwriting (HEX) !NbrTiles = 10 ; Number of tiles used in a frame !Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless @@ -34,17 +35,15 @@ Sprite_Kydreeok_Long: { - PHB : PHK : PLB + PHB : PHK : PLB - JSR Sprite_Kydreeok_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_Kydreeok_Main ; Call the main sprite code + JSR Sprite_Kydreeok_Draw + JSL Sprite_CheckActive : BCC .SpriteIsNotActive + JSR Sprite_Kydreeok_Main .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 } ; ========================================================= From 55f7de64cacfa68e3d1f7256fc6c063c7a751fa0 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:03:35 -0400 Subject: [PATCH 10/16] Update Sprite_Kydreeok_Prep formatting --- Sprites/Bosses/kydreeok.asm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index a3781d2..fbd5f81 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -53,27 +53,23 @@ Sprite_Kydreeok_Prep: PHB : PHK : PLB LDA #$40 : STA SprTimerA, X - LDA.b #$08 : STA $36 ;stores initial movement speeds - LDA.b #$06 : STA $0428 ;allows BG1 to move + LDA.b #$08 : STA $36 ; Stores initial movement speeds + LDA.b #$06 : STA $0428 ; Allows BG1 to move ; Cache the origin position of the sprite. LDA SprX, X : STA SprMiscA, X LDA SprY, X : STA SprMiscB, X - JSR SpawnLeftHead - JSR SpawnRightHead + JSR SpawnLeftHead : JSR SpawnRightHead - STZ.w Neck1_OffsetX - STZ.w Neck1_OffsetY - STZ.w Neck2_OffsetX - STZ.w Neck2_OffsetY + STZ.w Neck1_OffsetX : STZ.w Neck1_OffsetY + STZ.w Neck2_OffsetX : STZ.w Neck2_OffsetY PLB RTL } -; ============================================================================= - +; ========================================================= Sprite_Kydreeok_Main: { From 1dcdfaffa05d621a19ff97952cb1ac7d03179ca6 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:03:49 -0400 Subject: [PATCH 11/16] Update Kydreeok sprite actions --- Sprites/Bosses/kydreeok.asm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index fbd5f81..b7d02a2 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -82,7 +82,8 @@ Sprite_Kydreeok_Main: dw Kydreeok_MoveXorY ; 03 dw Kydreeok_KeepWalking ; 04 - + ; ------------------------------------------------------- + ; 0x00 Kydreeok_Start: { %StartOnFrame(0) @@ -100,6 +101,8 @@ Sprite_Kydreeok_Main: RTS } + ; ------------------------------------------------------- + ; 0x01 Kydreeok_StageControl: { %StartOnFrame(0) @@ -122,6 +125,8 @@ Sprite_Kydreeok_Main: RTS } + ; ------------------------------------------------------- + ; 0x02 Kydreeok_MoveXandY: { %StartOnFrame(0) @@ -145,7 +150,8 @@ Sprite_Kydreeok_Main: RTS } - + ; ------------------------------------------------------- + ; 0x03 Kydreeok_MoveXorY: { %StartOnFrame(0) @@ -170,6 +176,8 @@ Sprite_Kydreeok_Main: RTS } + ; ------------------------------------------------------- + ; 0x04 Kydreeok_KeepWalking: { %StartOnFrame(0) @@ -215,6 +223,8 @@ Sprite_Kydreeok_Main: } +; ========================================================= + SpawnLeftHead: { LDA #$CF From 9d1cd684d7e15bb75d8ab37d730e1faf746d3dce Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:04:04 -0400 Subject: [PATCH 12/16] Update SpawnLeftHead and SpawnRightHead formatting --- Sprites/Bosses/kydreeok.asm | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index b7d02a2..0d9a1d1 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -235,19 +235,16 @@ SpawnLeftHead: LDA.b #$00 : STA $0E30, Y PHX - ; code that controls where to spawn the offspring. REP #$20 LDA $0FD8 : SEC : SBC.w #$000F SEP #$20 - STA $0D10, Y - XBA : STA $0D30, Y + STA $0D10, Y : XBA : STA $0D30, Y REP #$20 LDA $0FDA : SEC : SBC.w #$000F SEP #$20 - STA $0D00, Y - XBA : STA $0D20, Y + STA $0D00, Y : XBA : STA $0D20, Y LDA.w SprX, Y STA.w SprMiscA, Y : STA.w $19EA : STA.w $19EC : STA.w $19EE @@ -258,14 +255,14 @@ SpawnLeftHead: STZ $0D60, X STZ $0D70, X - PLX .return - RTS } +; ========================================================= + SpawnRightHead: { LDA #$CF @@ -277,19 +274,16 @@ SpawnRightHead: LDA.b #$01 : STA $0E30, Y PHX - ; code that controls where to spawn the offspring. REP #$20 LDA $0FD8 : CLC : ADC.w #$000C SEP #$20 - STA $0D10, Y - XBA : STA $0D30, Y + STA $0D10, Y : XBA : STA $0D30, Y REP #$20 LDA $0FDA : SEC : SBC.w #$000F SEP #$20 - STA $0D00, Y - XBA : STA $0D20, Y + STA $0D00, Y : XBA : STA $0D20, Y LDA.w SprX, Y : STA.w SprX, Y STA.w SprMiscA, Y : STA.w $19F0 : STA.w $19F2 : STA.w $19F4 @@ -300,11 +294,9 @@ SpawnRightHead: STZ $0D60, X STZ $0D70, X - PLX .return - RTS } From 761fbce7d80fb2dd4532a740c123e3d3a4813a49 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:04:34 -0400 Subject: [PATCH 13/16] Update MoveBody formatting --- Sprites/Bosses/kydreeok.asm | 86 ++++++++++++------------------------- 1 file changed, 27 insertions(+), 59 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 0d9a1d1..8630d3f 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -300,87 +300,56 @@ SpawnRightHead: RTS } +; ========================================================= +; Originally from Trinexx_MoveBody $1DB2E5 -; ============================================================================== MoveBody: { ; Handle the shell bg movement ; Trinexx_MoveBody - #_1DB2E5: LDA.w $0D10, X - #_1DB2E8: PHA + LDA.w $0D10, X : PHA + LDA.w $0D00, X : PHA - #_1DB2E9: LDA.w $0D00, X - #_1DB2EC: PHA + JSL Sprite_Move - #_1DB2ED: JSL Sprite_Move - - #_1DB2F0: PLA - #_1DB2F1: LDY.b #$00 - - #_1DB2F3: SEC - #_1DB2F4: SBC.w $0D00, X - #_1DB2F7: STA.w $0310 - #_1DB2FA: BPL .pos_y_low - - #_1DB2FC: DEY + PLA + LDY.b #$00 : SEC : SBC.w $0D00, X : STA.w $0310 + BPL .pos_y_low + DEY .pos_y_low - #_1DB2FD: STY.w $0311 + STY.w $0311 ; ----------------------------------------------------- - #_1DB300: PLA - #_1DB301: LDY.b #$00 + PLA + LDY.b #$00 : SEC : SBC.w $0D10, X : STA.w $0312 + BPL .pos_x_low - #_1DB303: SEC - #_1DB304: SBC.w $0D10, X - #_1DB307: STA.w $0312 - #_1DB30A: BPL .pos_x_low - - #_1DB30C: DEY + DEY .pos_x_low - #_1DB30D: STY.w $0313 + STY.w $0313 ; ----------------------------------------------------- - #_1DB310: LDA.b #$01 - #_1DB312: STA.w $0428 + LDA.b #$01 : STA.w $0428 + LDA.w $0D00, X : SEC : SBC.b #$0C : STA.w $0DB0, X - #_1DB318: LDA.w $0D00, X - #_1DB31B: SEC - #_1DB31C: SBC.b #$0C - #_1DB31E: STA.w $0DB0, X + LDA.w $0B08 : SEC : SBC.w $0D10, X + CLC : ADC.b #$02 + CMP.b #$04 : BCS .not_at_target - #_1DB321: LDA.w $0B08 - #_1DB324: SEC - #_1DB325: SBC.w $0D10, X - #_1DB328: CLC - #_1DB329: ADC.b #$02 + LDA.w $0B09 : SEC : SBC.w $0D00, X + CLC : ADC.b #$02 + CMP.b #$04 : BCS .not_at_target - #_1DB32B: CMP.b #$04 - #_1DB32D: BCS .not_at_target - - #_1DB32F: LDA.w $0B09 - #_1DB332: SEC - #_1DB333: SBC.w $0D00, X - #_1DB336: CLC - #_1DB337: ADC.b #$02 - - #_1DB339: CMP.b #$04 - #_1DB33B: BCS .not_at_target - - .adjust_phase - #_1DB33D: STZ.w $0D80, X - - #_1DB340: LDA.b #$30 - #_1DB342: STA.w $0DF0, X + .adjust_phase ; Unused? + STZ.w $0D80, X + LDA.b #$30 : STA.w $0DF0, X .not_at_target - - ; JSR AdjustChildrenPos - ; LayerEffect_Trinexx $0AFEF0 REP #$20 LDA.w $0422 : CLC : ADC.w $0312 : STA.w $0422 @@ -388,11 +357,10 @@ MoveBody: STZ.w $0312 : STZ.w $0310 SEP #$20 - RTS } -; ============================================================================== +; ========================================================= StopIfOutOfBounds: { From 23fb2d928bde9fbdcdbbfa056b31001a947aaf89 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:04:52 -0400 Subject: [PATCH 14/16] Update Sprite_Kydreeok_Draw formatting --- Sprites/Bosses/kydreeok.asm | 120 +++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 58 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 8630d3f..893702f 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -435,6 +435,7 @@ StopIfOutOfBounds: RTS } +; ========================================================= Sprite_ApplySpeedTowardsPlayerXOrY: { @@ -529,6 +530,8 @@ Sprite_ApplySpeedTowardsPlayerXOrY: RTS } +; ========================================================= + ApplyPalette: { REP #$20 ;Set A in 16bit mode @@ -554,85 +557,86 @@ ApplyPalette: RTS } -; ============================================================================= +; ========================================================= Sprite_Kydreeok_Draw: - JSL Sprite_PrepOamCoord - JSL Sprite_OAM_AllocateDeferToPlayer +{ + JSL Sprite_PrepOamCoord + 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 + .next_tile - PHX - LDX .nbr_of_tiles, Y ;amount of tiles -1 - LDY.b #$00 - .nextTile + PHX ; Save current Tile Index? + + TXA : CLC : ADC $06 ; Add Animation Index Offset - PHX ; Save current Tile Index? - - 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 + BCC .on_screen_y - 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 + LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way + STA $0E .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 - - TYA : LSR #2 : TAY - - LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - - PLY : INY - - PLX : DEX : BPL .nextTile + PHY + + TYA : LSR #2 : TAY + + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer + + PLY : INY + + PLX : DEX : BPL .next_tile - PLX + PLX - RTS + RTS .start_index - db $00, $0A, $14 + db $00, $0A, $14 .nbr_of_tiles - db 9, 9, 9 + db 9, 9, 9 .x_offsets - dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 - dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 - dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 + dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 + dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 + dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 .y_offsets - dw 8, -8, 8, -36, -36, 8, -8, 8, -36, -36 - dw 8, -5, 11, -38, -38, 8, -8, 8, -39, -38 - dw 8, -8, 8, -36, -36, 8, -5, 11, -36, -36 + dw 8, -8, 8, -36, -36, 8, -8, 8, -36, -36 + dw 8, -5, 11, -38, -38, 8, -8, 8, -39, -38 + dw 8, -8, 8, -36, -36, 8, -5, 11, -36, -36 .chr - db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C - db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C - db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C + db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C + db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C + db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C .properties - db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 - db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 - db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 + db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 + db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 + db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 .sizes - db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 - db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 - db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 + db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 + db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 + db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 +} From 33846cda98ece00dde0568dcf83fb736b6ef6436 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:07:01 -0400 Subject: [PATCH 15/16] More Sprite action formatting --- Sprites/Bosses/kydreeok.asm | 100 +++++++++++++++++------------------- 1 file changed, 48 insertions(+), 52 deletions(-) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 893702f..74db3b0 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -86,102 +86,98 @@ Sprite_Kydreeok_Main: ; 0x00 Kydreeok_Start: { - %StartOnFrame(0) - %PlayAnimation(0, 2, 10) + %StartOnFrame(0) + %PlayAnimation(0, 2, 10) - JSR ApplyPalette - JSL Sprite_PlayerCantPassThrough + JSR ApplyPalette + JSL Sprite_PlayerCantPassThrough - LDA SprTimerA, X : BNE .continue - TXA : STA Kydreeok_Id - LDA #$40 : STA SprTimerA, X - %GotoAction(1) + LDA SprTimerA, X : BNE .continue + TXA : STA Kydreeok_Id + LDA #$40 : STA SprTimerA, X + %GotoAction(1) .continue - RTS + RTS } ; ------------------------------------------------------- ; 0x01 Kydreeok_StageControl: { - %StartOnFrame(0) - %PlayAnimation(0, 2, 10) + %StartOnFrame(0) + %PlayAnimation(0, 2, 10) - PHX + PHX - STZ $0D40 : STZ $0D50 ;set velocitys to 0 - JSR MoveBody + STZ $0D40 : STZ $0D50 ;set velocitys to 0 + JSR MoveBody - JSL Sprite_BounceFromTileCollision ; - JSR StopIfOutOfBounds + JSL Sprite_BounceFromTileCollision ; + JSR StopIfOutOfBounds - LDA SprTimerA, X : BNE .continue - %GotoAction(2) + LDA SprTimerA, X : BNE .continue + %GotoAction(2) .continue - PLX + PLX - RTS + RTS } ; ------------------------------------------------------- ; 0x02 Kydreeok_MoveXandY: { - %StartOnFrame(0) - %PlayAnimation(0, 2, 10) + %StartOnFrame(0) + %PlayAnimation(0, 2, 10) - PHX ;saves X so we can use it later + PHX ;saves X so we can use it later - LDA $36 - JSL Sprite_ApplySpeedTowardsPlayer - JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds - JSR StopIfOutOfBounds - JSR MoveBody + LDA $36 + JSL Sprite_ApplySpeedTowardsPlayer + JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds + JSR StopIfOutOfBounds + JSR MoveBody - JSL Sprite_CheckDamageFromPlayerLong - %DoDamageToPlayerSameLayerOnContact() + JSL Sprite_CheckDamageFromPlayerLong + %DoDamageToPlayerSameLayerOnContact() - PLX ;restores X + PLX ;restores X - %GotoAction(4) + %GotoAction(4) - RTS + RTS } ; ------------------------------------------------------- ; 0x03 Kydreeok_MoveXorY: { - %StartOnFrame(0) - %PlayAnimation(0, 2, 10) + %StartOnFrame(0) + %PlayAnimation(0, 2, 10) - PHX ;saves X so we can use it later + PHX + LDA $36 : STA $00 + JSR Sprite_ApplySpeedTowardsPlayerXOrY + JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds + JSR StopIfOutOfBounds + JSR MoveBody - LDA $36 - STA $00 - JSR Sprite_ApplySpeedTowardsPlayerXOrY - JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds - JSR StopIfOutOfBounds - JSR MoveBody + JSL Sprite_CheckDamageFromPlayerLong + %DoDamageToPlayerSameLayerOnContact() + PLX - JSL Sprite_CheckDamageFromPlayerLong - %DoDamageToPlayerSameLayerOnContact() - - PLX ;restores X - - %GotoAction(4) - - RTS + %GotoAction(4) + RTS } ; ------------------------------------------------------- ; 0x04 Kydreeok_KeepWalking: { - %StartOnFrame(0) - %PlayAnimation(0, 2, 10) + %StartOnFrame(0) + %PlayAnimation(0, 2, 10) PHX REP #$20 From 039be63412a9f50fb391816b3494dc440c560876 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 30 Mar 2024 12:07:15 -0400 Subject: [PATCH 16/16] Add todo to handle boss death based on kydreeok head health --- Sprites/Bosses/kydreeok.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/Sprites/Bosses/kydreeok.asm b/Sprites/Bosses/kydreeok.asm index 74db3b0..570c9fd 100644 --- a/Sprites/Bosses/kydreeok.asm +++ b/Sprites/Bosses/kydreeok.asm @@ -47,6 +47,7 @@ Sprite_Kydreeok_Long: } ; ========================================================= +; TODO: Handle boss death based on left and right head health Sprite_Kydreeok_Prep: {