diff options
author | Astatin <[email protected]> | 2024-08-29 16:14:35 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-08-29 16:14:35 +0900 |
commit | 522bde7b7e7d70fc86a5dac2042b7b20e05c197b (patch) | |
tree | 01d3f81170c91debdf0784fa5c6255955730cd80 /map/objects.gbasm | |
parent | 4a4ff1db8fe026ced0530f8c2531033da43164e6 (diff) |
Fix issues related to VBlank wait in sameboy + Add stairs interactions
Diffstat (limited to 'map/objects.gbasm')
-rw-r--r-- | map/objects.gbasm | 77 |
1 files changed, 69 insertions, 8 deletions
diff --git a/map/objects.gbasm b/map/objects.gbasm index da80118..bfaa903 100644 --- a/map/objects.gbasm +++ b/map/objects.gbasm @@ -45,17 +45,25 @@ Initialize_Objects: RET Stairs_action: - LD A, $00 - LD $mem_bunny_x, A - LD A, $00 - LD $mem_bunny_y, A - CALL =Fix_Bunny_screen - RET + Stairs_action.Wait_VBlank: + LD A, $reg_lcd_status + AND $03 + CP $01 + JR NZ, =Stairs_action.Wait_VBlank + + ; LCDC + XOR A + LD $reg_lcd_controller, A + + JP =New_Dungeon Display_Objects: LD A, $mem_map_loading_flags BIT 0, A JR Z, =Display_Objects.End + LD A, $mem_moving_animation_step + CP $00 + JR NZ, =Display_Objects.End LD HL, $mem_object_list Display_Objects.loop: LD A, (HL+) @@ -63,34 +71,44 @@ Display_Objects: JR Z, =Display_Objects.next LD C, A LD A, (HL+) + ADD $80 LD D, A LD A, $mem_viewport_x - SUB $03 + SUB $83 CP D JR NC, =Display_Objects.next ADD $10 CP D JR C, =Display_Objects.next + LD A, D + SUB $80 + LD D, A LD A, (HL+) + ADD $80 LD B, A LD A, $mem_viewport_y - SUB $03 + SUB $83 CP B JR NC, =Display_Objects.next ADD $10 CP B JR C, =Display_Objects.next + LD A, B + SUB $80 + LD B, A LD A, D CALL =Construct_Tile_Address + CALL =VBlank_Wait LD A, C LD (DE), A INC E INC C + CALL =VBlank_Wait LD A, C LD (DE), A @@ -100,12 +118,14 @@ Display_Objects: XOR $21 LD E, A + CALL =VBlank_Wait LD A, C LD (DE), A INC C INC E + CALL =VBlank_Wait LD A, C LD (DE), A @@ -118,3 +138,44 @@ Display_Objects: JR NZ, =Display_Objects.loop Display_Objects.End: RET + +Object_Interactions_Check: + LD A, $mem_map_loading_flags + BIT 1, A + JR Z, =Object_Interactions_Check.End + LD HL, $mem_object_list + LD A, $mem_bunny_x + LD C, A + LD A, $mem_bunny_y + LD B, A + Object_Interactions_Check.loop: + LD A, (HL+) + CP $00 + JR Z, =Object_Interactions_Check.next + + LD A, (HL+) + CP C + JR NZ, =Object_Interactions_Check.next + + LD A, (HL+) + CP B + JR NZ, =Object_Interactions_Check.next + + LD A, (HL+) + LD D, A + LD A, (HL+) + LD E, A + + PUSH DE + RET + + Object_Interactions_Check.next: + LD A, L + AND $f8 + ADD $08 + LD L, A + CP $80 + JR NZ, =Object_Interactions_Check.loop + + Object_Interactions_Check.End: + RET |