aboutsummaryrefslogtreecommitdiff
path: root/entity
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-06-03 14:51:59 +0200
committerAstatin <[email protected]>2025-06-03 14:51:59 +0200
commiteca91612b60b5379f9e8d6ce6f51366db54aacc3 (patch)
treec5fad4dc000a5430958fa8b354f69b3ba6628fe6 /entity
parentf3a70613f78023c25d9a075231cb55639a75ee99 (diff)
Add loading from pregenerated collision map
Diffstat (limited to 'entity')
-rw-r--r--entity/init.gbasm179
1 files changed, 62 insertions, 117 deletions
diff --git a/entity/init.gbasm b/entity/init.gbasm
index 38d3141..e0272be 100644
--- a/entity/init.gbasm
+++ b/entity/init.gbasm
@@ -1,8 +1,8 @@
Initialize_Entities:
LD A, $mem_bunny_mana
- LD C, A
+ LD E, A
LD A, $mem_bunny_health
- LD B, A
+ LD D, A
LD HL, $mem_entities_list
Clear_Entities.loop:
XOR A
@@ -10,58 +10,74 @@ Initialize_Entities:
CP L
JR NZ, =Clear_Entities.loop
- LD A, B
+ LD A, D
LD $mem_bunny_health, A
- LD A, C
+ LD A, E
LD $mem_bunny_mana, A
- LD HL, $mem_entities_list
- LD A, $01
- LD (HL+), A
+ CALL =Initialize_Bunny_Random_room
- LD A, $mem_number_of_rooms
- CALL =RNG_Bound
+ LD A, $00
+ LD $mem_enemies_alive_count, A
+
+ LD A, $mem_bunny_current_room_idx
LD $tmp_var_1, A
- SLA A
- SLA A
- ADD low($mem_room_list)
- LD C, A
+ LD A, $ff
+ LD $mem_bunny_current_room_idx, A
- LD B, high($mem_room_list)
+ LD A, $00
+ LD $tmp_var_3, A
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ LD A, $tmp_var_1
+ LD $mem_bunny_current_room_idx, A
- LD A, (BC)
- LD D, A
- INC BC
- LD A, (BC)
- INC A
- CALL =RNG_Bound
- ADD D
+ CALL =Reset_Entities_Collision_Map
- LD (HL+), A
+Reset_viewport_thingies:
+ LD A, $mem_bunny_x
+ SUB $05
+ LD $mem_viewport_x, A
- INC BC
+ LD A, $mem_bunny_y
+ SUB $04
+ LD $mem_viewport_y, A
- LD A, (BC)
- LD D, A
- INC BC
- LD A, (BC)
- INC A
- CALL =RNG_Bound
- ADD D
+ LD A, $mem_viewport_x
+ SWAP A
+ AND $f0
+ OR $08
+ LD $mem_prepared_viewport_x, A
- LD (HL), A
+ LD A, $mem_viewport_y
+ SWAP A
+ AND $f0
+ OR $08
+ LD $mem_prepared_viewport_y, A
- PUSH BC
- LD C, (HL)
- DEC HL
- LD B, (HL)
+ RET
+
+Initialize_Bunny_Random_room:
+ LD A, $ff
+ CALL =Pick_Random_Room_Avoid_A
+ LD $mem_bunny_current_room_idx, A
+ CALL =Pick_Room_position
+
+Initialize_Bunny: ; BC is XY position
+ LD HL, $mem_entities_list
+ LD A, $01
+ LD (HL+), A
+
+ LD (HL), B
INC HL
+ LD (HL), C
CALL =Carve_Entity_Collision_Map
- POP BC
-
INC HL
LD A, $enum_direction_down
@@ -92,45 +108,6 @@ Initialize_Entities:
AND $f0
ADD $10
LD L, A
-
- LD A, $00
- LD $mem_enemies_alive_count, A
-
- LD A, $ff
- LD $mem_bunny_current_room_idx, A
-
- LD A, $00
- LD $tmp_var_3, A
- CALL =Initialize_Enemy
- CALL =Initialize_Enemy
- CALL =Initialize_Enemy
- CALL =Initialize_Enemy
- CALL =Initialize_Enemy
- LD A, $tmp_var_1
- LD $mem_bunny_current_room_idx, A
-
- CALL =Reset_Entities_Collision_Map
-
- LD A, $mem_bunny_x
- SUB $05
- LD $mem_viewport_x, A
-
- LD A, $mem_bunny_y
- SUB $04
- LD $mem_viewport_y, A
-
- LD A, $mem_viewport_x
- SWAP A
- AND $f0
- OR $08
- LD $mem_prepared_viewport_x, A
-
- LD A, $mem_viewport_y
- SWAP A
- AND $f0
- OR $08
- LD $mem_prepared_viewport_y, A
-
RET
Initialize_Enemy: ; HL => pointer to entity struct
@@ -147,58 +124,19 @@ Initialize_Entity: ; HL => pointer to entity struct, A => entity loaded index, 1
SLA A
ADD B
INC A
- LD (HL+), A
+ LD (HL), A
LD A, $mem_bunny_current_room_idx
- CALL =Pick_Random_Room_Avoid_A
-
- SLA A
- SLA A
- ADD low($mem_room_list)
- LD C, A
-
- LD B, high($mem_room_list)
-
- ; X
- LD A, (BC)
- LD D, A
- INC BC
- LD A, (BC)
- INC A
- CALL =RNG_Bound
- ADD D
-
- LD (HL+), A
-
- INC BC
-
- ; Y
- LD A, (BC)
- LD D, A
- INC BC
- LD A, (BC)
- INC A
- CALL =RNG_Bound
- ADD D
- LD (HL), A
+ CALL =Pick_Room_position_Avoid_A
; Check if spawning on collisionable tile
- PUSH BC
- LD C, (HL)
- DEC HL
- LD B, (HL)
- INC HL
-
CALL =Is_Collisionable
CP $00
JR Z, =.no_collision
XOR A
- LD (HL-), A
- LD (HL-), A
LD (HL), A
- POP BC
LD A, $tmp_var_3
CP $01
@@ -209,6 +147,13 @@ Initialize_Entity: ; HL => pointer to entity struct, A => entity loaded index, 1
JP =Initialize_Entity
.no_collision:
+
+ INC HL
+ LD (HL), B
+ INC HL
+ LD (HL), C
+ INC HL
+
CALL =Carve_Entity_Collision_Map
POP BC