From: Lukas Krickl Date: Mon, 12 Jan 2026 14:04:01 +0000 (+0100) Subject: drawing: Added double buffering X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=bea81d39d62643c48b927ec3cd94e936f51f9736;p=gbrg%2F.git drawing: Added double buffering --- diff --git a/src/update.s b/src/update.s index 96defe7..04da590 100644 --- a/src/update.s +++ b/src/update.s @@ -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 diff --git a/src/wram.s b/src/wram.s index 085e22b..fb083fe 100644 --- a/src/wram.s +++ b/src/wram.s @@ -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