diff options
author | Astatin <[email protected]> | 2025-05-07 17:01:22 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-05-07 17:01:22 +0200 |
commit | 4b02238d88af30c98b2f8d44e5200fb80b04bcad (patch) | |
tree | d69861ff5fe1ebed41f9697335948bde512f10f4 /entity | |
parent | 7284cc51dedb4f77fe6c1fa1da735b52609b1d4d (diff) |
I was adding the frog and then broke everything to fix the viewport thingy
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 4 | ||||
-rw-r--r-- | entity/bunny.gbasm | 127 | ||||
-rw-r--r-- | entity/cat.gbasm | 18 | ||||
-rw-r--r-- | entity/display.gbasm | 9 | ||||
-rw-r--r-- | entity/fox.gbasm | 18 | ||||
-rw-r--r-- | entity/frog.gbasm | 170 | ||||
-rw-r--r-- | entity/init.gbasm | 16 | ||||
-rw-r--r-- | entity/list.gbasm | 4 | ||||
-rw-r--r-- | entity/mouse.gbasm | 4 | ||||
-rw-r--r-- | entity/penguin.gbasm | 18 |
10 files changed, 330 insertions, 58 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 9186a4b..58ae380 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -97,6 +97,10 @@ Turn_Jump_table: JP =Mouse_Turn NOP + ; 08 + JP =Frog_Turn + NOP + Interaction_Jump_table: ; 00 RET diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index 4ae93f3..46854b8 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -167,27 +167,28 @@ Move_Bunny: LD $mem_entity_being_attacked_low, A .Delayed_Attack.end: - .Scroll_viewport: - LD A, $mem_map_loading_flags - BIT 3, A - JR Z, =.Scroll_viewport.end - LD A, $mem_bunny_direction - BIT 3, A - JR Z, =.Scroll_viewport.end + .2x_speed_middle_update: + LD A, $mem_bunny_flags + BIT 0, A + JR Z, =.2x_speed_middle_update.end + LD A, $mem_moving_animation_step + CP $07 + JR NZ, =.2x_speed_middle_update.end - LD A, $mem_bunny_direction - LD D, A - LD A, $mem_prepared_viewport_x + LD A, $mem_bunny_x LD B, A - LD A, $mem_prepared_viewport_y + LD A, $mem_bunny_y LD C, A - LD A, E + LD A, $mem_bunny_direction + LD D, A + LD A, $02 .ADD_A_TO_DIRECTION_BC LD A, B - LD $mem_prepared_viewport_x, A + LD $mem_bunny_x, A LD A, C - LD $mem_prepared_viewport_y, A - .Scroll_viewport.end: + LD $mem_bunny_y, A + DBG + .2x_speed_middle_update.end: .End_movement: LD A, $mem_map_loading_flags @@ -207,24 +208,13 @@ Move_Bunny: LD B, A LD A, $mem_bunny_y LD C, A - LD A, E + LD A, $01 .ADD_A_TO_DIRECTION_BC LD A, B LD $mem_bunny_x, A LD A, C LD $mem_bunny_y, A - LD A, $mem_viewport_x - LD B, A - LD A, $mem_viewport_y - LD C, A - LD A, $01 - .ADD_A_TO_DIRECTION_BC - LD A, B - LD $mem_viewport_x, A - LD A, C - LD $mem_viewport_y, A - LD A, $mem_bunny_flags RES 0, A LD $mem_bunny_flags, A @@ -303,33 +293,7 @@ Move_Bunny: .End_movement.skip_mana_regen: .End_movement.end: - - .Middle_movement_doublespeed_viewport_update: - LD A, $mem_map_loading_flags - BIT 3, A - JP Z, =.Middle_movement_doublespeed_viewport_update.end - LD A, $mem_moving_animation_step - CP $07 - JP NZ, =.Middle_movement_doublespeed_viewport_update.end - LD A, $mem_bunny_direction - BIT 3, A - JR Z, =.Middle_movement_doublespeed_viewport_update.end - LD A, E - CP $02 - JR NZ, =.Middle_movement_doublespeed_viewport_update.end - - LD A, $mem_viewport_x - LD B, A - LD A, $mem_viewport_y - LD C, A - LD A, $01 - .ADD_A_TO_DIRECTION_BC - LD A, B - LD $mem_viewport_x, A - LD A, C - LD $mem_viewport_y, A - .Middle_movement_doublespeed_viewport_update.end: - + .Interaction: LD A, $mem_map_loading_flags BIT 3, A @@ -414,3 +378,58 @@ Move_Bunny: .Check_End_Action.end: RET + +Center_viewport_around_entity: ; Entity pointer in HL + INC HL + LD A, (HL) + SUB $05 + LD $mem_viewport_x, A + + LD A, (HL+) + LD B, A + + LD A, (HL) + SUB $04 + LD $mem_viewport_y, A + + LD A, (HL+) + LD C, A + LD D, (HL) + LD E, $00 + BIT 3, D + JR Z, =.moving_animation_end + LD A, $mem_moving_animation_step + LD E, A + LD A, L + AND $f0 + OR $07 + LD L, A + BIT 0, (HL) + JR Z, =.moving_animation_end + SLA E + LD A, E + AND $0f + LD E, A + .moving_animation_end: + + LD A, B + SWAP A + AND $f0 + SUB $48 + LD B, A + + LD A, C + SWAP A + AND $f0 + SUB $38 + LD C, A + + LD A, E + .ADD_A_TO_DIRECTION_BC + + LD A, B + LD $mem_prepared_viewport_x, A + LD A, C + LD $mem_prepared_viewport_y, A + + RET diff --git a/entity/cat.gbasm b/entity/cat.gbasm index 837dd39..655fd1b 100644 --- a/entity/cat.gbasm +++ b/entity/cat.gbasm @@ -33,13 +33,31 @@ Cat_Turn: DEC A LD $mem_enemies_alive_count, A + ; Drop when deadged PUSH DE + LD E, $02 + CALL =Check_attack_already_learnt + CP $01 + JR Z, =.drops.hp_regen_item + + .drops.attack_item: LD D, $6C LD E, $04 CALL =RNG_Step AND $03 CP $00 CALL Z, =Spawn_object + JR =.drops.end + + .drops.hp_regen_item: + LD D, $64 + LD E, $02 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + + .drops.end: POP DE JP =.Skip_turn diff --git a/entity/display.gbasm b/entity/display.gbasm index 42f4740..0a38755 100644 --- a/entity/display.gbasm +++ b/entity/display.gbasm @@ -152,7 +152,16 @@ Display_Entity: CP $30 JR NZ, =.SuperJump_Animation.end + PUSH BC + LD A, $mem_moving_animation_step + CPL + INC A + LD B, A LD A, $mem_moving_animation_step + SLA A + AND $0f + ADD B + POP BC CP $00 JR Z, =.SuperJump_Animation.end .ADD_A_TO_DIRECTION_BC diff --git a/entity/fox.gbasm b/entity/fox.gbasm index ce6da24..8e72ab4 100644 --- a/entity/fox.gbasm +++ b/entity/fox.gbasm @@ -33,13 +33,31 @@ Fox_Turn: DEC A LD $mem_enemies_alive_count, A + ; Drop when deadged PUSH DE + LD E, $04 + CALL =Check_attack_already_learnt + CP $01 + JR Z, =.drops.ep_regen_item + + .drops.attack_item: LD D, $6C LD E, $06 CALL =RNG_Step AND $03 CP $00 CALL Z, =Spawn_object + JR =.drops.end + + .drops.ep_regen_item: + LD D, $68 + LD E, $03 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + + .drops.end: POP DE JP NZ, =.Skip_turn diff --git a/entity/frog.gbasm b/entity/frog.gbasm new file mode 100644 index 0000000..c08d68f --- /dev/null +++ b/entity/frog.gbasm @@ -0,0 +1,170 @@ +Frog_Turn: + LD A, $mem_map_loading_flags + BIT 3, A + RET Z + + PUSH HL + PUSH BC + PUSH DE + INC HL + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + LD A, (HL+) + LD D, A + + .Health_check: + LD A, L + AND $f0 + ADD $06 + LD L, A + + LD A, (HL) + CP $00 + JR NZ, =.Health_check.end + + LD A, L + AND $f0 + LD L, A + + LD (HL), $00 + LD A, $mem_enemies_alive_count + DEC A + LD $mem_enemies_alive_count, A + + ; Drop when deadged + PUSH DE + LD E, $02 + CALL =Check_attack_already_learnt + CP $01 + JR Z, =.drops.hp_regen_item + + .drops.hp_regen_item: + LD D, $64 + LD E, $02 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + + .drops.end: + POP DE + + JP =.Skip_turn + .Health_check.end: + + .Freeze_shiver: + LD A, $mem_moving_animation_step + CP $00 + JP NZ, =.Freeze_shiver.end + LD A, L + AND $f0 + ADD $08 + LD L, A + LD A, $01 + CP (HL) + JR NZ, =.Freeze_shiver.end + LD A, D + AND $07 + LD D, A + CALL =RNG_Step + CP $55 + JP NC, =.Skip_turn + LD A, D + OR $40 + LD D, A + + CALL =RNG_Step + CP $55 + JP NC, =.Skip_turn + + LD A, $00 + LD (HL-), A + RES 1, (HL) + JP =.Skip_turn + .Freeze_shiver.end: + + .Should_turn_be_skipped: + LD A, L + AND $f0 + ADD $08 + LD L, A + + BIT 0, (HL) + JP NZ, =.Skip_turn + + .Start_action_or_movement: + LD A, $mem_moving_animation_step + CP $00 + JP NZ, =.Start_action_or_movement.end + + LD A, L + AND $f0 + OR $07 + LD L, A + RES 3, (HL) + + LD A, L + AND $f0 + ADD $09 + LD L, A + XOR A + CP (HL) + JR Z, =.Try_Basic_Attack + + CALL =Grab_sight_check + LD A, E + CP $00 + JR Z, =.Try_Basic_Attack + + CALL =Grab_Enemy_Attack + + JR =.Start_action_or_movement.end + + .Try_Basic_Attack: + + CALL =Check_player_next_to + LD A, E + CP $00 + JR Z, =.Try_Walking + + CALL =Basic_Enemy_Attack + + JR =.Start_action_or_movement.end + + .Try_Walking: + + CALL =Walking + + .Start_action_or_movement.end: + + .End_movement: + LD A, $mem_moving_animation_step + CP $0f + JP NZ, =.End_movement.end + + LD A, D + AND $07 + BIT 3, D + LD D, A + JR Z, =.End_movement.end + LD A, $01 + .ADD_A_TO_DIRECTION_BC + .End_movement.end: + + .Skip_Turn: + LD A, L + AND $f0 + LD L, A + INC HL + LD A, B + LD (HL+), A + LD A, C + LD (HL+), A + LD A, D + LD (HL+), A + POP DE + POP BC + POP HL + RET diff --git a/entity/init.gbasm b/entity/init.gbasm index afbd9f3..1e39456 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -129,6 +129,22 @@ Fix_Bunny_screen: OR $08 LD $mem_prepared_viewport_y, A + LD A, $mem_bunny_direction + BIT 3, A + RET Z + + LD A, $mem_bunny_direction + DEC A + XOR $01 + INC A + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $mem_moving_animation_step + .ADD_A_TO_DIRECTION_BC + RET Initialize_Enemy: ; HL => pointer to entity struct diff --git a/entity/list.gbasm b/entity/list.gbasm index 5ee97af..3038a40 100644 --- a/entity/list.gbasm +++ b/entity/list.gbasm @@ -28,7 +28,7 @@ Entity_list: .DB =OBJ_Tile_Image_Data.Frog ; Turn Jump Table index - .DB $03 + .DB $08 ; Interaction Jump Table index .DB $01 @@ -40,7 +40,7 @@ Entity_list: .DB $00 ; Starting mana - .DB $00 + .DB $05 ; Spawning rate (2 lsb) .DB 0b01 diff --git a/entity/mouse.gbasm b/entity/mouse.gbasm index 4a09009..ebf54ff 100644 --- a/entity/mouse.gbasm +++ b/entity/mouse.gbasm @@ -34,8 +34,8 @@ Mouse_Turn: LD $mem_enemies_alive_count, A PUSH DE - LD D, $6C - LD E, $04 + LD D, $64 + LD E, $02 CALL =RNG_Step AND $03 CP $00 diff --git a/entity/penguin.gbasm b/entity/penguin.gbasm index 401c28a..353af8e 100644 --- a/entity/penguin.gbasm +++ b/entity/penguin.gbasm @@ -33,13 +33,31 @@ Penguin_Turn: DEC A LD $mem_enemies_alive_count, A + ; Drop when deadged PUSH DE + LD E, $03 + CALL =Check_attack_already_learnt + CP $01 + JR Z, =.drops.ep_regen_item + + .drops.attack_item: LD D, $6C LD E, $05 CALL =RNG_Step AND $03 CP $00 CALL Z, =Spawn_object + JR =.drops.end + + .drops.ep_regen_item: + LD D, $68 + LD E, $03 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + + .drops.end: POP DE JP =.Skip_turn |