aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bunny.gbasm110
-rw-r--r--entities.gbasm111
2 files changed, 197 insertions, 24 deletions
diff --git a/bunny.gbasm b/bunny.gbasm
index b80efd8..1386f01 100644
--- a/bunny.gbasm
+++ b/bunny.gbasm
@@ -40,10 +40,44 @@ Initialize_Bunny:
LD (HL+), A
INC HL
INC HL
+
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
LD A, $0d
LD (HL+), A
- LD A, $10
+ LD A, $mem_bunny_x
LD (HL+), A
+ LD A, $mem_bunny_y
LD (HL+), A
LD A, $03
LD (HL+), A
@@ -54,10 +88,12 @@ Initialize_Bunny:
LD (HL+), A
INC HL
INC HL
+
LD A, $0d
LD (HL+), A
- LD A, $10
+ LD A, $mem_bunny_x
LD (HL+), A
+ LD A, $mem_bunny_y
LD (HL+), A
LD A, $03
LD (HL+), A
@@ -69,6 +105,71 @@ Initialize_Bunny:
INC HL
INC HL
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
+ LD A, $0d
+ LD (HL+), A
+ LD A, $mem_bunny_x
+ LD (HL+), A
+ LD A, $mem_bunny_y
+ LD (HL+), A
+ LD A, $03
+ LD (HL+), A
+ LD BC, =Fox_AI
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ INC HL
+ INC HL
+
+
Fix_Bunny_screen:
LD A, $mem_bunny_x
SUB $05
@@ -109,10 +210,10 @@ Move_Bunny:
LD A, $mem_bunny_direction
DEC A
- LD B, $01
+ LD B, $01 ; Direction of the movement (+1)
BIT 0, A
JR NZ, =Move_Bunny.check_direction_end
- LD B, $FF
+ LD B, $FF ; Direction of the movement (-1)
Move_Bunny.check_direction_end:
@@ -143,6 +244,7 @@ Move_Bunny:
JP =Move_Bunny.check_end_of_movement
Move_Bunny.vertical_move:
+ Move_Bunny.vertical_move.check_collision:
LD D, B
LD A, $mem_bunny_y
ADD D
diff --git a/entities.gbasm b/entities.gbasm
index 7b74071..4d4d365 100644
--- a/entities.gbasm
+++ b/entities.gbasm
@@ -1,26 +1,38 @@
Prepare_Entities:
- LD HL, $mem_oam_buffer
- LD BC, $00a0
- CALL =bzero
LD A, $00
LD $tmp_var_1, A
LD HL, $mem_entites_list
CALL =Prepare_Entity
CALL =Prepare_Entity
CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
- ; CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ CALL =Prepare_Entity
+ LD BC, $00a0
+ LD HL, $mem_oam_buffer
+
+ LD A, $tmp_var_1
+ ADD L
+ LD L, A
+
+ LD A, $tmp_var_1
+ XOR $ff
+ INC A
+ ADD C
+ LD C, A
+
+ CALL =bzero
+
RET
Prepare_Entity:
@@ -321,9 +333,59 @@ Entity_Behaviour:
POP HL
- INC HL
- INC HL
Entity_Behaviour.skip:
+ LD A, L
+ AND $f8
+ ADD $08
+ LD L, A
+ RET
+
+Entity_collision: ; entity (whatever alignement) in HL, direction to test in A, Result in A
+ PUSH HL
+ PUSH BC
+ PUSH AF
+
+ LD A, L
+ AND $f8
+ LD L, A
+
+ INC HL
+
+ LD A, (HL+)
+ LD C, A
+ LD A, (HL+)
+ LD B, A
+
+ POP AF
+ PUSH BC
+
+ DEC A
+ LD B, A
+
+ SLA A
+ AND $02
+ DEC A
+
+ BIT 1, B
+ JR NZ, =Entity_collision.vertical
+
+ Entity_collision.horizontal:
+ POP BC
+ ADD C
+ LD C, A
+ JR =Entity_collision.direction_end
+
+ Entity_collision.vertical:
+ POP BC
+ ADD B
+ LD B, A
+
+ Entity_collision.direction_end:
+ LD A, C
+ CALL =Is_Solid
+
+ POP BC
+ POP HL
RET
Fox_AI:
@@ -393,8 +455,17 @@ Fox_AI:
LD A, $04
CALL =RNG_Bound
INC A
- OR B
- LD (HL), A
+ OR $08
+ LD B, A
+
+ CALL =Entity_collision
+ CP $00
+ JR Z, =Fox_AI.change_direction
+
+ RES 3, B
+
+ Fox_AI.change_direction:
+ LD (HL), B
Fox_AI.end: