Upload speed on display time
Posted: Wed Nov 13, 2019 1:16 am
I’m trying to do a map mode, or also known mode 7, on Megadrive/Genesis. So far the best idea I got is to use the idle time, or background “thread”, to upload pixels to the vdp nonstop independently from any synchronism, meaning no vblank will trigger it. This way it uses all idle time for this task and don’t disturb any game activities going on.
Now, the problem is idle time can occur after vblank and/or on display time. So I need the vdp throughput to be as fast as the cpu can calculate a pixel, the current code generates 8 pixels, so a long, every 128 cycles on the 68k in average. I know there is a queue of few words, so it’s great to soften latencies on the code and on the chip, but also means it’s a game about averages.
The question is: in average, every how many cpu cycles a word is upload into the vpd on display time?
In case it matters: without using dma.
I know the alternative is to buffer it and upload on vblank, but on the current way I do both steeps on a single pass, therefor faster… if the vpd is quick enough.
In case region matters, I’m focusing on NTSC 60hz, since is the worst case scenario.
Now, the problem is idle time can occur after vblank and/or on display time. So I need the vdp throughput to be as fast as the cpu can calculate a pixel, the current code generates 8 pixels, so a long, every 128 cycles on the 68k in average. I know there is a queue of few words, so it’s great to soften latencies on the code and on the chip, but also means it’s a game about averages.
The question is: in average, every how many cpu cycles a word is upload into the vpd on display time?
In case it matters: without using dma.
I know the alternative is to buffer it and upload on vblank, but on the current way I do both steeps on a single pass, therefor faster… if the vpd is quick enough.
In case region matters, I’m focusing on NTSC 60hz, since is the worst case scenario.