aboutsummaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-12-18 14:47:13 +0900
committerAstatin <[email protected]>2024-12-18 14:48:13 +0900
commit0ed4b7a5d40ce169dc3f7e061d6edeccfa0b8784 (patch)
tree6541f082d5da769f3343a07033aa91f21cfba24b /map
parent2b0c6081d8a2c48c1f8412aefdcec6c2222e716c (diff)
Spawn a carrot in every level and make sure that it doesn't collide with
other objects
Diffstat (limited to 'map')
-rw-r--r--map/objects.gbasm100
1 files changed, 93 insertions, 7 deletions
diff --git a/map/objects.gbasm b/map/objects.gbasm
index adcfaa9..d4cfd6d 100644
--- a/map/objects.gbasm
+++ b/map/objects.gbasm
@@ -3,11 +3,14 @@ Initialize_Objects:
OR $01
LD $mem_map_loading_flags, A
LD HL, $mem_object_list
+ LD BC, $0080
+ CALL =bzero
+ LD HL, $mem_object_list
CALL =Spawn_stairs
+ CALL =Spawn_carrot
RET
-Spawn_stairs:
- LD A, $60
+Spawn_object_in_random_room: ; Object tile in A, Object jump table id in E
LD (HL+), A
LD A, $mem_number_of_rooms
@@ -38,17 +41,73 @@ Spawn_stairs:
INC A
CALL =RNG_Bound
ADD D
- LD (HL+), A
+ LD (HL), A
+ DEC HL
+
+ LD BC, $mem_object_list
+ Object_check_collisions.loop:
+ LD A, (BC)
+ CP $00
+ JR Z, =Object_check_collisions.loop.next
+
+ INC BC
+ LD A, C
+ CP L
+ JR Z, =Object_check_collisions.loop.next
+
+ LD A, (BC)
+ CP (HL)
+ JR NZ, =Object_check_collisions.loop.next
+
+ INC BC
+ INC HL
+ LD A, (BC)
+ CP (HL)
+ JR NZ, =Object_check_collisions.loop.next
+
+ DEC HL
+ DEC HL
+ XOR A
+ LD (HL+), A
+ LD (HL+), A
+ LD (HL), A
+ DEC HL
+ DEC HL
+ RET
+
+ Object_check_collisions.loop.next:
+ LD A, L
+ AND $f8
+ ADD $01
+ LD L, A
+ LD A, C
+ AND $f8
+ ADD $08
+ LD C, A
+ CP $80
+ JR NZ, =Object_check_collisions.loop
- LD A, $01
- LD (HL+), A
- INC HL
- INC HL
INC HL
INC HL
+
+ LD (HL), E
+ LD A, L
+ AND $f8
+ ADD $08
+ LD L, A
RET
+Spawn_stairs:
+ LD A, $60
+ LD E, $01
+ JP =Spawn_object_in_random_room
+
+Spawn_carrot:
+ LD A, $64
+ LD E, $02
+ JP =Spawn_object_in_random_room
+
Object_Interaction_Jump_table:
; 00
RET
@@ -60,6 +119,10 @@ Object_Interaction_Jump_table:
JP =Stairs_action
NOP
+ ; 02
+ JP =Heal_Action
+ NOP
+
Stairs_action:
DI
LD A, $00
@@ -77,6 +140,29 @@ Stairs_action:
CALL =Reset_Map
JP =New_Dungeon
+Heal_Action:
+ LD A, $mem_bunny_health
+ ADD $03
+ DAA
+ CP $20
+ JR C, =Heal_Action.Set_health
+ LD A, $20
+ Heal_Action.Set_health:
+ LD $mem_bunny_health, A
+
+ PUSH BC
+ LD A, $mem_bunny_x
+ LD B, A
+ LD A, $mem_bunny_y
+ LD C, A
+ LD A, $01
+ CALL =Try_Launch_Animation
+ POP BC
+
+ LD (HL), $00
+
+ RET
+
Display_Object:
LD HL, $mem_object_list
LD A, $mem_object_load_counter