Page 8 of 8

Posted: Wed May 02, 2007 5:12 pm
by commodorejohn
It's probably not as big a deal for Genesis emulators because fewer Genesis games rely on critical PPU timing than NES games; Final Fantasy, for instance, has an effect when you relight an Orb wherein the color emphasis (or the background color, I'm not sure,) is switched not only on a scanline basis, but in mid-scanline. I'm sure there are some Genesis games that do such tricks, but they're few and far between.

Posted: Thu May 03, 2007 12:14 am
by LocalH
tepples wrote:It happens on at least one NES emulator I know of. Or has nobody tried to make a Genesis emulator whose VDP accuracy approaches Nintendulator's PPU accuracy?
Well, in that context I meant "any Genesis emulator", but yeah you're right. If the VDP were emulated with the same accuracy as modern PPU emulation then such artifacts would indeed appear. Kega is quite accurate in terms of game compatibility, but it doesn't support some things at all (for example, on hardware, you can change the backdrop register mid-scanline to create "raster splits" - Kega ignores this completely). I remember hearing about a project recently to create a highly accurate Genesis emulator, but I think the guy behind it is busy IRL ATM.

Due to the layer of indirection between the 68k and VDP RAM, it's not that feasible to modify much of said RAM mid-scanline, although it's definitely possible (although I don't have the numbers handy off the top of my head as to how many times the 68k can hit VDP RAM during a scanline with the screen enabled). Thankfully, the Genesis has DMA, which enables you to modify more data in a scanline than you otherwise could if the 68k had to shuffle everything around. I've ruminated before about a software-based graphics mode that changes 8 colors per scanline, so that each scanline has 8 old colors from the line above and 8 new colors.

Plus, there's also the problem with CPU jitter, where the code's exact execution point has a slight bit of variance between frames, meaning that unless you set up a "stable raster" (as it's known on the C64), any such raster splits will jitter violently. I have not looked into what would have to be done to get a stable raster on the Genesis.