From 398c9d42b691bc633d22dff85bc2ac29ed635efa Mon Sep 17 00:00:00 2001 From: Astatin Date: Thu, 27 Feb 2025 17:06:33 +0900 Subject: Fix entities and objects spawning on top of each other --- entity/init.gbasm | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'entity') diff --git a/entity/init.gbasm b/entity/init.gbasm index 60edff6..d035820 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -48,7 +48,20 @@ Initialize_Entities: INC A CALL =RNG_Bound ADD D - LD (HL+), A + + LD (HL), A + + PUSH BC + LD C, (HL) + DEC HL + LD B, (HL) + INC HL + + CALL =Carve_Entity_Collision_Map + + POP BC + + INC HL LD A, $enum_direction_down LD (HL+), A @@ -152,6 +165,7 @@ Initialize_Enemy: ; HL => pointer to entity struct LD B, high($mem_room_list) + ; X LD A, (BC) LD D, A INC BC @@ -172,7 +186,33 @@ Initialize_Enemy: ; HL => pointer to entity struct INC A CALL =RNG_Bound ADD D - LD (HL+), A + LD (HL), 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 + RET + + .no_collision: + CALL =Carve_Entity_Collision_Map + + POP BC + + INC HL ; Direction LD A, $03 -- cgit v1.2.3-70-g09d2