Well, it works just as supposed/doccumented on the real hardware, both NTSC and PAL. The amazing thing is that, on NTSC, you get the exact same result on all resets and power on (or I've been extremely lucky). Nestopia isn't too far from the truth, but doesn't emulate different reset behavior on PAL.
You're a hero Blarg, congratulations ! I was just going to ask you where was the devlopment of the NTSC version because i haven't had news for a while, and I was afraid something would have turned up not doable.
Tokumaru, you're probably missing how much of an improvement what did blargg over the common synchronization method is. Under normal circunstances, the "best" possible margin for a PPU write was about a dozen of pixels (by having an all-cycle timed code from a NMI which interrupts an endless jmp here loop). Now the best possible margin is 1 pixel NTSC and 3 pixel PAL (so I'll say this is 3 pixels - because it's the worst case that counts if you want chances to do things that are doable on both NTSC and PAL systems).
So 3 pixels fits perfectly in a tile if you're lucky. This allows you to do :
- Mid-scanline CHR-bankswitching on the BG *WITHOUT* any tiles that are shared between all banks
- Scroll writes mid-scanline *WITHOUT* any blank area. Vertical or horizontal screen split becomes perfectly possible (as long as the bottom isn't used - to have free CPU time before the next VBLank)
- Nametable switching mid-scanline *WITHOUT* any tiles that are shared between both tables
- Do funky clipping effects with $2001 WITHOUT having any shaking horizontally.
- Palette rewrites during HBlank could become much less of a nightmare to get glitch free
- The accuracy of emulators can be tested to a higer point : Because it's possible to write to registers to a very predictable pixel, if effects takes too early or too late the result can be visible and inacuracies that would have otherwise never noticed will be corrected.
Quote:
What we need now is for people to try this out with their favorite raster technique, including ones they could never get to work due to timing, and see what is possible.
True, I'll dig my old "Window" demo that did palette writes during HBlank but with glitches and see if I can improve that.
Also, some research about $2007 reads during the frame should be done. Nobody has any clue of what effects those have, and to be honest it's about time some serious info about that would be published.
I'd also say some research about $2003 and $2004 should be done, but Blarg was about to become mad last time so we could just forget about those two and keep to the good old "just sta $4014 and don't ask any other questions".