redraw: made redraw more generic.
authorLukas Krickl <lukas@krickl.dev>
Wed, 16 Jul 2025 08:54:45 +0000 (10:54 +0200)
committerLukas Krickl <lukas@krickl.dev>
Wed, 16 Jul 2025 08:54:45 +0000 (10:54 +0200)
Moved to video

src/defs.s
src/ui.s
src/video.s
src/wram.s

index dbbf2c4da906126dd46d6baf50a31b845d5ebfce..3829502670dfec0791a82606ee51dc88b79db429 100644 (file)
@@ -32,7 +32,7 @@
 #define WINDOW_Y 112
 #define WINDOW_X 1
 
-#define UI_TILE_WIDTH 20
+#define UI_TILE_WIDTH 32
 #define UI_TILE_HEIGHT 4
 
   ; defines end of scroll location
index 3b1a721ec17608d255f2c3c336fbfc36d58033e4..2477cb1e2b1be2011da63516958692adfeec5829 100644 (file)
--- a/src/ui.s
+++ b/src/ui.s
@@ -28,7 +28,7 @@ ui_redraw_hp:
 
   ret
 
-#define UI_REDRAW_TILES_PER_FRAME 5
+#define UI_REDRAW_TILES_PER_FRAME 4
 
   ; requests a redraw
   ; this will set up redraw_bg
@@ -36,79 +36,19 @@ ui_redraw_hp:
 ui_request_redraw:
   ld hl, SCRN1
   ld a, h
-  ld [ui_redraw_bg], a
+  ld [redraw_bg], a
   ld a, l
-  ld [ui_redraw_bg+1], a
+  ld [redraw_bg+1], a
 
   ld de, shadow_ui
   ld a, d
-  ld [ui_redraw_shadow], a
+  ld [redraw_shadow], a
   ld a, e
-  ld [ui_redraw_shadow+1], a
+  ld [redraw_shadow+1], a
   
   ; steps of 5 * 16
   ld a, UI_TILE_WIDTH * UI_TILE_HEIGHT / UI_REDRAW_TILES_PER_FRAME
-  ld [ui_redraw_steps], a
+  ld [redraw_steps], a
   ret
 
-#macro ui_redraw_vblank_write
-  ld a, [de]
-  inc de
-  ld [hl+], a
-#endmacro
 
-  ; redraws a UI step in vblank
-ui_redraw_vblank:
-  ld a, [ui_redraw_steps]
-  ; no more steps we bail
-  cp a, 0
-  ret z
-
-  ; steps--
-  dec a
-  ld [ui_redraw_steps], a
-  
-  ; load bg ptr
-  ld a, [ui_redraw_bg]
-  ld h, a
-  ld a, [ui_redraw_bg+1]
-  ld l, a
-
-  ; load source address
-  ld a, [ui_redraw_shadow]
-  ld d, a
-  ld a, [ui_redraw_shadow+1]
-  ld e, a
-
-  ; write data
-  ; in an unrolled loop
-  ui_redraw_vblank_write
-  ui_redraw_vblank_write
-  ui_redraw_vblank_write
-  ui_redraw_vblank_write
-  ui_redraw_vblank_write
-
-  ; lastly store current ptr state again
-
-  
-  ld a, d
-  ld [ui_redraw_shadow], a
-  ld a, e
-  ld [ui_redraw_shadow+1], a
-
-  ; skip 12 tiles ahead in BG
-  ; every other step
-  ld a, [ui_redraw_steps]
-  and a, 3
-  jr nz, @no_jump REL
-    ld de, 12
-    add hl, de
-@no_jump:
-
-  ld a, h
-  ld [ui_redraw_bg], a
-  ld a, l
-  ld [ui_redraw_bg+1], a
-
-  ret
-#undefine ui_redraw_vblank_write
index 3228ec5337a03a5c14bf772b49b18da4ef20d356..1b7e60f19357c4a5bc4cb056c4c01a3afb38c30b 100644 (file)
@@ -12,7 +12,7 @@ vblank:
   ld [RLCD], a
   
   ; check ui update
-  call ui_redraw_vblank
+  call redraw_vblank
 
   ; dma previous frame's oam
   call OAMDMAFN
@@ -225,6 +225,60 @@ video_fade_in:
   ret
 #undefine video_fade_set_bgp
 
+
+#macro redraw_vblank_write
+  ld a, [de]
+  inc de
+  ld [hl+], a
+#endmacro
+  ; redraws a BG step in vblank
+redraw_vblank:
+  ld a, [redraw_steps]
+  ; no more steps we bail
+  cp a, 0
+  ret z
+
+  ; steps--
+  dec a
+  ld [redraw_steps], a
+  
+  ; load bg ptr
+  ld a, [redraw_bg]
+  ld h, a
+  ld a, [redraw_bg+1]
+  ld l, a
+
+  ; load source address
+  ld a, [redraw_shadow]
+  ld d, a
+  ld a, [redraw_shadow+1]
+  ld e, a
+
+  ; write data
+  ; in an unrolled loop
+  redraw_vblank_write
+  redraw_vblank_write
+  redraw_vblank_write
+  redraw_vblank_write
+
+  ; lastly store current ptr state again
+
+  
+  ld a, d
+  ld [redraw_shadow], a
+  ld a, e
+  ld [redraw_shadow+1], a
+
+  ld a, h
+  ld [redraw_bg], a
+  ld a, l
+  ld [redraw_bg+1], a
+
+  ret
+#undefine redraw_vblank_write
+
+
+
   ; loads tilesets
   ; inputs:
   ;   de: source
index 16e50f23534f317c18aeff02902ad6b7a2064221..fc77985ed5b28db6d21f1c1cadbff8f959c5f204 100644 (file)
@@ -51,12 +51,12 @@ gameplay_flags: .adv 1
   ; this UI is then re-drawn on request in vblank
 shadow_ui: .adv UI_TILE_WIDTH * UI_TILE_HEIGHT
 
-; UI redraw BG address
-ui_redraw_bg: .adv 2 
-; UI redraw shadow address
-ui_redraw_shadow: .adv 2
-; remaining UI redraw steps
-ui_redraw_steps: .adv 1
+; redraw BG address
+redraw_bg: .adv 2 
+; redraw shadow address
+redraw_shadow: .adv 2
+; remaining redraw steps
+redraw_steps: .adv 1
 
 ; dummy oam 
 ; same memory as empty_unit