Post subject: NES's DMC glitch, lag and Console Verification
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
There is a known bug in the NES hardware regarding the DMC sound channel. Whenever the DMC channel fetches a byte, it causes an extra read at whatever address the CPU is currently reading from. Most of the time, this doesn't matter at all. But if the extra read happens while reading the controller port, or reading from VRAM, the game program will miss a byte. So games that play DMC samples need to read the controller at least twice per frame, and see if they match or not, then read it a third time. Since it is using a little more CPU time to read the controller a third time, it could be a source of lag. So frame counts on an emulator may not exactly match frame counts on the original hardware. Some glitches rely on cycle-accurate timing, such as the Megaman 1 glitch. Fortunately, Megaman 1 does not use the DMC channel at all. Looking through the list of Console Verified games, I only see three of them that use the DMC channel: Mario 2, Mario 3, and Journey to Silius. Also, nobody knows whether or not the DMC fetches will happen at the exact same time or not every time you play a game on the console.
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
I think the problem is not the possibility of unexpected lag frame (as the probability is really low). The real problem is an extremely volatile RNG used in many KONAMI games, like TMNT3. Its behaviour is similar to the RNG in "Legend of Kage" described here: http://tasvideos.org/RandomGenerators.html#LegendOfKage For such games the extra joypad read and even a few extra cycles stolen from CPU are dramatic, so TASes for these games are unlikely to sync on a real console. But. TAS > Nintendo Nintendo = temporary toymaker TAS = everlasting art
Joined: 4/15/2012
Posts: 4
What is this about?