mrkotfw
Mid Boss
I'm running some tests and I have the following (VDP1+VDP2 normal resolution, non-interlace):
0. Set up list of commands in H-WRAM
1. Transfer commands from H-WRAM to VDP1 VRAM
2. Draw. PTMR=1
3. If drawing is done (Sprite End IRQ fired) before VBLANK OUT IRQ, perform FB change. FBCR=3
4. Go back to step 0
Essentially the above would allow me to perform as many "draw calls" as I like, and only change framebuffers when I'm done.
As opposed to 1-cycle mode where I must always finish drawing before V-Blank OUT IRQ is fired.
However, this doesn't seem to work for double-density interlace, as expected. Note above, I DO NOT call to erase the framebuffers (FBCR=2). Instead, the command list has a large polygon to erase the FB.
How would I approach this? Do I check VDP2(TVSTAT) for even/odd field scan and set FBCR=8 (DIE) and FBCR=12 (DIE|DIL), respectively during VBLANK-OUT?
I ran a test where I draw as normal (as explained above), and I go through two frames, each time setting FBCR=8 for even field, and FBCR=12 for odd field. No swapping of framebuffer.
Though, this isn't working. I get massive flickering.
How do I approach this? Draw twice? Does calling FBCR=8 and FBCR=12 swap the framebuffers for me?
Any bit of info would help!
0. Set up list of commands in H-WRAM
1. Transfer commands from H-WRAM to VDP1 VRAM
2. Draw. PTMR=1
3. If drawing is done (Sprite End IRQ fired) before VBLANK OUT IRQ, perform FB change. FBCR=3
4. Go back to step 0
Essentially the above would allow me to perform as many "draw calls" as I like, and only change framebuffers when I'm done.
As opposed to 1-cycle mode where I must always finish drawing before V-Blank OUT IRQ is fired.
However, this doesn't seem to work for double-density interlace, as expected. Note above, I DO NOT call to erase the framebuffers (FBCR=2). Instead, the command list has a large polygon to erase the FB.
How would I approach this? Do I check VDP2(TVSTAT) for even/odd field scan and set FBCR=8 (DIE) and FBCR=12 (DIE|DIL), respectively during VBLANK-OUT?
I ran a test where I draw as normal (as explained above), and I go through two frames, each time setting FBCR=8 for even field, and FBCR=12 for odd field. No swapping of framebuffer.
Though, this isn't working. I get massive flickering.
How do I approach this? Draw twice? Does calling FBCR=8 and FBCR=12 swap the framebuffers for me?
Any bit of info would help!
Last edited: