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 | |
parent | 9261f0860f997d7fcaba1d508114d9e0f0253e91 (diff) |
Mouse double movement (but broken with collision stuff)
-rw-r--r-- | definitions.gbasm | 4 | ||||
-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 | ||||
-rw-r--r-- | main.gbasm | 1 | ||||
-rw-r--r-- | map/dungeons.gbasm | 2 |
7 files changed, 220 insertions, 4 deletions
diff --git a/definitions.gbasm b/definitions.gbasm index eb756c7..afec299 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -26,8 +26,9 @@ ; frame 2: applying bunny attack damages ; frame 3: checking entities health and death if 0 ; frame 4: new entity spawn -; frame 9: entity collision map is being updated +; frame 5: entity collision map is being updated ; frame 8: attack is executed on the enemies if it was predicted in frame "-1" +; frame 9: entity collision map is being updated (again) ; frame 15: movement is ended and coordinates are updated .DEFINE mem_bunny_sprite ($cb00) @@ -250,6 +251,7 @@ ; death = 2 ; superjump = 3 ; shaking = 4 +; doubleseed = 5 ; turn_function_jump_table_index: u8 ; action_function_jump_table_index: u8 ; health: u8 (DAA decimal !!) 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 @@ -141,6 +141,7 @@ Entrypoint: .INCLUDE "entity/bunny.gbasm" .INCLUDE "entity/fox.gbasm" .INCLUDE "entity/cat.gbasm" +.INCLUDE "entity/mouse.gbasm" .INCLUDE "entity/penguin.gbasm" .INCLUDE "entity/fimsh.gbasm" .INCLUDE "entity/questgoal.gbasm" diff --git a/map/dungeons.gbasm b/map/dungeons.gbasm index ca0293b..5236b29 100644 --- a/map/dungeons.gbasm +++ b/map/dungeons.gbasm @@ -88,6 +88,8 @@ Dungeon: .name: .DB =Dungeon_Name_1_Txt .max_floor: .DB 0x0a, inv(0x0a) .spawning_patterns: + .DB $04, $04, $04, $04, 0b11111111 + ; UNDER THIS IS THE REAL ONE .DB $02, $02, $02, $05, 0b00000010 .DB $02, $02, $03, $05, 0b00100011 .DB $02, $02, $00, $05, 0b00100111 |