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/objects.gbasm | |
parent | f0d9de7afa943ebd41c1b202690b2ab3e387f708 (diff) |
Add objects and spawn bunny & goal in a random room
Diffstat (limited to 'map/objects.gbasm')
-rw-r--r-- | map/objects.gbasm | 120 |
1 files changed, 120 insertions, 0 deletions
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 |