I just tried this with Mega Man 3, having the PPU running at 1/3 it's normal speed and it seemed to have a very positive effect! Just wondering if most games would benefit from something like this, cause if they do I would definitely make it an option in my emulator.
Some games will benefit from it, but others will glitch to various degrees, because a lot of games rely on timed code for visual effects.
You know how there's one final scanline (before NMI) which is a blanking line? The Dendy instead runs 51 blanking scanlines at that point. So games which rely on timed code still work, and the CPU runs faster with no side effects. If you want to run 300 extra scanlines at that point, you could even do that, and most games would still synchronize correctly. Some wouldn't, because they turn the screen off early and assume that vblank starts very shortly from that point, so they start waiting for a Sprite 0 hit before vblank has ended.
Of course, this will also break every game which attempts to detect the region.
But Dendy was a 50 FPS PAL system. You need to speed up the system to 60 FPS. And if you're doing cycle-accurate sound emulation, you would need to correct the sound pitches for all channels for this new "overclocked NTSC" mode. Software played PCM will play back faster, but you can fix the other sound channels.
Code: Select all
float cycles = CPU.Execute(); PPU.Execute(cycles * 3f); APU.Execute(cycles);
Code: Select all
float cycles = CPU.Execute(); PPU.Execute(cycles); APU.Execute(cycles / 3f);
There are other games that benefit too. I think there was a bugs bunny game that had quite a change. Games that use CPU based IRQs need adjustment so their still trigger at the right time, PPU based do not. As previously mentioned any games like the RARE developed ones such as Battletoads will break due to precise timed code but I don't know that these games would benefit from overclocking anyway. I just remembered Kirby's Adventure shows improvement by being overclocked.
It would of course be an option in emulator. Maybe a slider bar to change the system to certain pre-configured frequencies?tepples wrote:Allowing the CPU to haul ass would break all sorts of raster effects.
How do games like Castlevania, Contra, and Mega Man handle the overclocking?MottZilla wrote:I just remembered Kirby's Adventure shows improvement by being overclocked.
Are you sure the data is actually used ?I'm giving an example: Rockman Complete Works, for PSX. There's absolutely no slowdown or sprite flickering. The 6502 PRG data is intact, only the graphics were ported to the PSX format.
I remember the PSX verison of Chrono Trigger contains the original ROM, but I don't think it was used at all.
Contra and Mega Man would handle it fine I guess. Castlevania would have problems with the status bar, as it has a time-out on it's wait-for-sprite-zero-hit loop. If you hack it to remove the timeout it will work fine.How do games like Castlevania, Contra, and Mega Man handle the overclocking?
Games like Rad Racer might end up completely broken, however, this won't be true if you do it like Dwedit says. In fact his method will only break several rare games that starts forced VBlank early and expect the NMI to come just after that or something in the like. It might be the better way to go. However such overclocking is not feasible on hardware.