drawing: Added double buffering
authorLukas Krickl <lukas@krickl.dev>
Mon, 12 Jan 2026 14:04:01 +0000 (15:04 +0100)
committerLukas Krickl <lukas@krickl.dev>
Mon, 12 Jan 2026 14:04:01 +0000 (15:04 +0100)
src/update.s
src/wram.s

index 96defe76d980ce5854f9573668eb4a35d9ffed5c..04da59070bb33c32ac2767ef3dda84560f369a53 100644 (file)
@@ -32,8 +32,37 @@ update_render:
        ; TODO: this should be smooth...
        ld b, RENDER_BUF_H ; loop counter
        ld de, render_buffer
+       
+       ld a, [scrn_select]
+       cp a, 0
+       jp z, @scrn0
+       
+       ; set next select
+       xor a, a
+       ld [scrn_select], a
+       
+       ; select screen
+       ld hl, SCRN0+0x240
+
+       ; load scroll
+       ld a, 144
+       ld [scroll_y], a
+
+       jr @scrn_selected REL
+@scrn0:
+       ; set next screen
+       ld a, 1
+       ld [scrn_select], a
+
+       ; select screen
+       ld hl, SCRN0
+       
+       ; set scroll
+       xor a, a
+       ld [scroll_y], a
+
+@scrn_selected:
 
-       ld hl, SCRN0    
        call next_vblank_wait
 
        ; copy buffer into SCRN0
index 085e22b276d4ce645d76b19914e629d7f690b69d..fb083fe004d7a39cb542b2edc711fb5808aa7500 100644 (file)
@@ -22,6 +22,9 @@ shadow_robp1: .adv 1
 
 ; shadow version of IE
 shadow_ie: .adv 1
+
+       ; either 0/1 for the next redraw
+scrn_select: .adv 1
        
        ; game state routine ptr
 game_state: .adv 2