aboutsummaryrefslogtreecommitdiff
path: root/map/objects.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'map/objects.gbasm')
-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