diff options
author | Astatin <[email protected]> | 2025-05-06 12:25:55 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-05-06 12:25:55 +0200 |
commit | 245c6e40f7199e4239763bae41722a03e00abfab (patch) | |
tree | e052cbec518e050c0dd28788c064d5c3090082bc /entity | |
parent | 9261f0860f997d7fcaba1d508114d9e0f0253e91 (diff) |
Mouse double movement (but broken with collision stuff)
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 6 | ||||
-rw-r--r-- | entity/display.gbasm | 33 | ||||
-rw-r--r-- | entity/list.gbasm | 6 | ||||
-rw-r--r-- | entity/mouse.gbasm | 172 |
4 files changed, 214 insertions, 3 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 083aed3..9186a4b 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -2,6 +2,8 @@ Entities_Actions: LD A, $mem_moving_animation_step CP $09 JR Z, =.Reset_Entities_Collision_Map + CP $05 + JR Z, =.Reset_Entities_Collision_Map LD A, $mem_map_loading_flags BIT 5, A @@ -91,6 +93,10 @@ Turn_Jump_table: JP =Fimsh_Turn NOP + ; 07 + JP =Mouse_Turn + NOP + Interaction_Jump_table: ; 00 RET diff --git a/entity/display.gbasm b/entity/display.gbasm index b73d393..42f4740 100644 --- a/entity/display.gbasm +++ b/entity/display.gbasm @@ -191,6 +191,39 @@ Display_Entity: LD B, A .Shaking_Animation.end: + .Moving_2x: + LD A, D + AND $f0 + CP $50 + JR NZ, =.Moving_2x.end + + LD A, $mem_moving_animation_step + CP $00 + JR Z, =.Moving_2x.end + SLA A + AND $0f + PUSH BC + LD B, A + LD A, $mem_moving_animation_step + CPL + INC A + ADD B + POP BC + .ADD_A_TO_DIRECTION_BC + LD A, $mem_moving_animation_step + SUB $08 + .ABS + SUB $04 + .ABS + CPL + INC A + ADD $04 + CPL + INC A + ADD C + LD C, A + .Moving_2x.end: + .Moving_Hops: LD A, D AND $f8 diff --git a/entity/list.gbasm b/entity/list.gbasm index ac2908a..5ee97af 100644 --- a/entity/list.gbasm +++ b/entity/list.gbasm @@ -100,13 +100,13 @@ Entity_list: .DB =OBJ_Tile_Image_Data.Mouse ; Turn Jump Table index - .DB $00 + .DB $07 ; Interaction Jump Table index - .DB $02 + .DB $01 ; Starting health - .DB $00 + .DB $01 ; Starting status .DB $00 diff --git a/entity/mouse.gbasm b/entity/mouse.gbasm new file mode 100644 index 0000000..4a09009 --- /dev/null +++ b/entity/mouse.gbasm @@ -0,0 +1,172 @@ +Mouse_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 + + PUSH DE + LD D, $6C + LD E, $04 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + 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) + + .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 + BIT 3, D + JR Z, =.Start_action_or_movement.end + LD A, D + OR $50 + LD D, A + .Start_action_or_movement.end: + + .Mid_movement: + LD A, $mem_moving_animation_step + CP $07 + JR NZ, =.Mid_movement.end + + LD A, D + AND $f0 + CP $50 + JR NZ, =.Mid_movement.end + + LD A, D + AND $07 + BIT 3, D + LD D, A + JR Z, =.Mid_movement.end + LD A, $01 + .ADD_A_TO_DIRECTION_BC + + .Mid_movement.Try_Walking: + CALL =Walking + BIT 3, D + JR Z, =.Mid_movement.end + LD A, D + OR $50 + LD D, A + .Mid_movement.end: + + .End_movement: + LD A, $mem_moving_animation_step + CP $0f + JR 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 |