aboutsummaryrefslogtreecommitdiff
path: root/map/utils.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'map/utils.gbasm')
-rw-r--r--map/utils.gbasm41
1 files changed, 41 insertions, 0 deletions
diff --git a/map/utils.gbasm b/map/utils.gbasm
index cf2c4ce..64b2de7 100644
--- a/map/utils.gbasm
+++ b/map/utils.gbasm
@@ -27,3 +27,44 @@ Pick_Random_Room_Avoid_A: ; input A = room to avoid (or FF if none), output A =
POP BC
RET
+Pick_Room_Position_Avoid_A:; input A = room to avoid (or FF if none), output BC = XY position
+ CALL =Pick_Random_Room_Avoid_A
+Pick_Room_position: ; input A = room to spawn in, output BC = XY position
+ PUSH HL
+ PUSH DE
+ 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 H, A
+
+ INC BC
+
+ ; Y
+ LD A, (BC)
+ LD D, A
+ INC BC
+ LD A, (BC)
+ INC A
+ CALL =RNG_Bound
+ ADD D
+ LD L, A
+
+ LD B, H
+ LD C, L
+
+ POP DE
+ POP HL
+ RET