aboutsummaryrefslogtreecommitdiff
path: root/enemiesattacks
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-05-15 15:42:26 +0200
committerAstatin <[email protected]>2025-05-15 15:42:26 +0200
commita1dad7db479d8203df30a649a688f7351b667d8e (patch)
tree66c878c78365d87f7b37a2ea506c1e1979e0d536 /enemiesattacks
parentef9de76cd0bc313385b7edac3659e03ab36d3c1e (diff)
Fix some bugs owl found
Diffstat (limited to 'enemiesattacks')
-rw-r--r--enemiesattacks/freeze.gbasm4
-rw-r--r--enemiesattacks/poison.gbasm4
-rw-r--r--enemiesattacks/walk.gbasm48
3 files changed, 35 insertions, 21 deletions
diff --git a/enemiesattacks/freeze.gbasm b/enemiesattacks/freeze.gbasm
index 86e47d9..cdf5afc 100644
--- a/enemiesattacks/freeze.gbasm
+++ b/enemiesattacks/freeze.gbasm
@@ -56,6 +56,10 @@ Freeze_Enemy_Attack: ; Direction to face in E. Result in BC (XY), Direction in D
POP BC
RET Z
+ LD A, $mem_bunny_flags
+ CP $00
+ RET NZ
+
LD A, $01
LD $mem_bunny_status, A
LD A, $02
diff --git a/enemiesattacks/poison.gbasm b/enemiesattacks/poison.gbasm
index 807eae3..8970571 100644
--- a/enemiesattacks/poison.gbasm
+++ b/enemiesattacks/poison.gbasm
@@ -56,6 +56,10 @@ Poison_Enemy_Attack: ; Direction to face in E. Result in BC (XY), Direction in D
POP BC
RET Z
+ LD A, $mem_bunny_flags
+ CP $00
+ RET NZ
+
LD A, $08
LD $mem_bunny_status, A
diff --git a/enemiesattacks/walk.gbasm b/enemiesattacks/walk.gbasm
index a11b32f..1bc762b 100644
--- a/enemiesattacks/walk.gbasm
+++ b/enemiesattacks/walk.gbasm
@@ -1,3 +1,20 @@
+.MACRODEF INVERT_AXIS
+ PUSH AF
+ LD A, $tmp_var_3
+ CP $00
+ JR Z, =$skip_invert_axis
+ LD A, B
+ LD B, C
+ LD C, A
+ LD A, D
+ DEC A
+ XOR $02
+ INC A
+ LD D, A
+ $skip_invert_axis:
+ POP AF
+.END
+
Walking: ; entity XY in BC, Breaks E, Direction result in D
; Is Bunny close enough to follow
LD A, $mem_bunny_x
@@ -41,20 +58,18 @@ Walking: ; entity XY in BC, Breaks E, Direction result in D
AND $02
LD $tmp_var_3, A
+ .INVERT_AXIS
+
+ LD A, $tmp_var_3
CP $00
- JR Z, =.skip_invert_axis
+ JR Z, =.skip_invert_target_axis
LD A, $mem_bunny_predicted_y
LD $tmp_var_1, A
LD A, $mem_bunny_predicted_x
LD $tmp_var_2, A
-
- LD E, B
- LD B, C
- LD C, E
-
- .skip_invert_axis:
+ .skip_invert_target_axis:
; Choose direction
LD A, B
@@ -74,17 +89,15 @@ Walking: ; entity XY in BC, Breaks E, Direction result in D
.Check_Horizontal_Collision:
LD E, A
- DEC E
- LD A, $tmp_var_3
- XOR E
- INC E
- INC A
OR $08
PUSH BC
+ PUSH DE
LD D, A
+ .INVERT_AXIS
LD A, $01
.ADD_A_TO_DIRECTION_BC
CALL =Is_Collisionable
+ POP DE
POP BC
CP $00
LD A, E
@@ -110,8 +123,6 @@ Walking: ; entity XY in BC, Breaks E, Direction result in D
DEC A
LD E, A
- LD A, $tmp_var_3
- XOR E
INC A
OR $08
LD D, A
@@ -119,13 +130,8 @@ Walking: ; entity XY in BC, Breaks E, Direction result in D
; Check collision
.No_movement:
- LD A, $tmp_var_3
- CP $00
- JR Z, =.skip_invert_axis2
- LD E, B
- LD B, C
- LD C, E
- .skip_invert_axis2:
+
+ .INVERT_AXIS
LD A, D
AND $07