diff options
author | Astatin <[email protected]> | 2024-08-27 18:33:46 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-08-27 18:33:46 +0900 |
commit | 4a4ff1db8fe026ced0530f8c2531033da43164e6 (patch) | |
tree | 2f1055120080dd6b7557fb383dd60e5354e47da4 /map | |
parent | f0d9de7afa943ebd41c1b202690b2ab3e387f708 (diff) |
Add objects and spawn bunny & goal in a random room
Diffstat (limited to 'map')
-rw-r--r-- | map/generation.gbasm | 8 | ||||
-rw-r--r-- | map/loading.gbasm | 17 | ||||
-rw-r--r-- | map/objects.gbasm | 120 |
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 |