aboutsummaryrefslogtreecommitdiff
path: root/entity
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-05-07 17:01:22 +0200
committerAstatin <[email protected]>2025-05-07 17:01:22 +0200
commit4b02238d88af30c98b2f8d44e5200fb80b04bcad (patch)
treed69861ff5fe1ebed41f9697335948bde512f10f4 /entity
parent7284cc51dedb4f77fe6c1fa1da735b52609b1d4d (diff)
I was adding the frog and then broke everything to fix the viewport thingy
Diffstat (limited to 'entity')
-rw-r--r--entity/actions.gbasm4
-rw-r--r--entity/bunny.gbasm127
-rw-r--r--entity/cat.gbasm18
-rw-r--r--entity/display.gbasm9
-rw-r--r--entity/fox.gbasm18
-rw-r--r--entity/frog.gbasm170
-rw-r--r--entity/init.gbasm16
-rw-r--r--entity/list.gbasm4
-rw-r--r--entity/mouse.gbasm4
-rw-r--r--entity/penguin.gbasm18
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