aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-05-06 12:25:55 +0200
committerAstatin <[email protected]>2025-05-06 12:25:55 +0200
commit245c6e40f7199e4239763bae41722a03e00abfab (patch)
treee052cbec518e050c0dd28788c064d5c3090082bc
parent9261f0860f997d7fcaba1d508114d9e0f0253e91 (diff)
Mouse double movement (but broken with collision stuff)
-rw-r--r--definitions.gbasm4
-rw-r--r--entity/actions.gbasm6
-rw-r--r--entity/display.gbasm33
-rw-r--r--entity/list.gbasm6
-rw-r--r--entity/mouse.gbasm172
-rw-r--r--main.gbasm1
-rw-r--r--map/dungeons.gbasm2
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
diff --git a/main.gbasm b/main.gbasm
index 37605bc..9b50a3d 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -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