aboutsummaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-08-27 18:33:46 +0900
committerAstatin <astatin@redacted>2024-08-27 18:33:46 +0900
commit4a4ff1db8fe026ced0530f8c2531033da43164e6 (patch)
tree2f1055120080dd6b7557fb383dd60e5354e47da4 /map
parentf0d9de7afa943ebd41c1b202690b2ab3e387f708 (diff)
Add objects and spawn bunny & goal in a random room
Diffstat (limited to 'map')
-rw-r--r--map/generation.gbasm8
-rw-r--r--map/loading.gbasm17
-rw-r--r--map/objects.gbasm120
3 files changed, 135 insertions, 10 deletions
diff --git a/map/generation.gbasm b/map/generation.gbasm
index 8b0181e..4f5296a 100644
--- a/map/generation.gbasm
+++ b/map/generation.gbasm
@@ -159,9 +159,9 @@ Generation_Head_Explosion:
LD A, C
LD (HL+), A
- LD L, C
+ LD L, B
Room_Generation.X_loop:
- LD H, B
+ LD H, C
Room_Generation.Y_loop:
PUSH BC
LD A, D
@@ -175,11 +175,11 @@ Generation_Head_Explosion:
DEC H
LD A, H
- CP $00
+ CP $ff
JR NZ, =Room_Generation.Y_loop
DEC L
LD A, L
- CP $00
+ CP $ff
JR NZ, =Room_Generation.X_loop
POP HL
diff --git a/map/loading.gbasm b/map/loading.gbasm
index 8b3f414..bb3410b 100644
--- a/map/loading.gbasm
+++ b/map/loading.gbasm
@@ -104,12 +104,7 @@ Load_Column: ; (+1/-1 direction in B)
POP AF
RET
-Load_Block: ; X in A, Y in B
- PUSH BC
- PUSH AF
- PUSH DE
-
- ; Construct Tile Map address from A and B in DE
+Construct_Tile_Address: ; Construct Tile Map address from A and B in DE
PUSH AF
PUSH BC
@@ -134,9 +129,19 @@ Load_Block: ; X in A, Y in B
LD A, D
OR $98
LD D, A
+
POP BC
POP AF
+ RET
+
+Load_Block: ; X in A, Y in B
+ PUSH BC
+ PUSH AF
+ PUSH DE
+
+ CALL =Construct_Tile_Address
+
PUSH AF
PUSH DE
diff --git a/map/objects.gbasm b/map/objects.gbasm
new file mode 100644
index 0000000..da80118
--- /dev/null
+++ b/map/objects.gbasm
@@ -0,0 +1,120 @@
+Initialize_Objects:
+ LD A, $mem_map_loading_flags
+ OR $01
+ LD $mem_map_loading_flags, A
+ LD HL, $mem_object_list
+ LD A, $60
+ LD (HL+), A
+
+ LD A, $mem_number_of_rooms
+ CALL =RNG_Bound
+ SLA A
+ SLA A
+ ADD $80
+ LD C, A
+
+ LD B, $c8
+
+ LD A, (BC)
+ LD D, A
+ INC BC
+ LD A, (BC)
+ INC A
+ CALL =RNG_Bound
+ ADD D
+
+ LD (HL+), A
+
+ INC BC
+
+ LD A, (BC)
+ LD D, A
+ INC BC
+ LD A, (BC)
+ INC A
+ CALL =RNG_Bound
+ ADD D
+ LD (HL+), A
+
+
+ LD BC, =Stairs_action
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ RET
+
+Stairs_action:
+ LD A, $00
+ LD $mem_bunny_x, A
+ LD A, $00
+ LD $mem_bunny_y, A
+ CALL =Fix_Bunny_screen
+ RET
+
+Display_Objects:
+ LD A, $mem_map_loading_flags
+ BIT 0, A
+ JR Z, =Display_Objects.End
+ LD HL, $mem_object_list
+ Display_Objects.loop:
+ LD A, (HL+)
+ CP $00
+ JR Z, =Display_Objects.next
+ LD C, A
+ LD A, (HL+)
+ LD D, A
+ LD A, $mem_viewport_x
+ SUB $03
+ CP D
+ JR NC, =Display_Objects.next
+ ADD $10
+ CP D
+ JR C, =Display_Objects.next
+
+ LD A, (HL+)
+ LD B, A
+ LD A, $mem_viewport_y
+ SUB $03
+ CP B
+ JR NC, =Display_Objects.next
+ ADD $10
+ CP B
+ JR C, =Display_Objects.next
+
+ LD A, D
+ CALL =Construct_Tile_Address
+
+ LD A, C
+ LD (DE), A
+
+ INC E
+ INC C
+
+ LD A, C
+ LD (DE), A
+
+ INC C
+
+ LD A, E
+ XOR $21
+ LD E, A
+
+ LD A, C
+ LD (DE), A
+
+ INC C
+ INC E
+
+ LD A, C
+ LD (DE), A
+
+ Display_Objects.next:
+ LD A, L
+ AND $f8
+ ADD $08
+ LD L, A
+ CP $80
+ JR NZ, =Display_Objects.loop
+ Display_Objects.End:
+ RET