I've read that supposedly the HDMI NES has this feature built-in, but I prefer NESRGB as I like to get 240p output that I can hook to a CRT or to my XRGB3 if I'm in a HDTV mood.
Most NES overclocking information I'm finding is several years old, so I'm wondering if there's a more modern method I'm unaware of to get around/fix the sound pitch when overclocking. I assume this would probably entail some specialty made product that goes between the NES and the CPU, an audio pitch changing circuit I wouldn't know where to begin creating, or some other crazy sorcery.
Essentially: no.
The only reason the HDMI NES can do it is that it doesn't use the NES for audio. The add-on completely replaces it.
The actual NES' audio is driven by the same clock as the CPU. There's no way to change one without the other. (Even in the HDMI NES, the actual NES is still produce overclocked audio, you're just not listening to it.)
Yes you could use a pitch shifter device on the output audio, there are guitar pedals and other DSP devices that can do this, but the results aren't terribly great. There tends to be an unnatural aspect to the sound.
Would it be possible to do something crazy like piggy back a 2nd NES CPU with only the minimum amount of pins needed for it to generate audio (to hopefully not interfere with proper operation of the primary CPU). Basically my scenario in question is:
1.) Have the primary CPU overclocked (with a switch for compatibility), and disconnect audio output on it.
2.) Piggy back a 2nd CPU 'correctly' just enough for it to generate audio but not cause chaos interfering with the primary CPU (no idea how feasible this is) , and have the original clock crystal fed to this CPU so it outputs audio with the correct pitch.
Theoretically possible, or completely impossible?
Almost all the pins would be needed to generate audio, as NES APU port addresses are fully decoded. You could probably leave out the IRQ, NMI, and joystick pins, but that's it.
tepples wrote:
Almost all the pins would be needed to generate audio, as NES APU port addresses are fully decoded. You could probably leave out the IRQ, NMI, and joystick pins, but that's it.
Would that theoretically work though? I assume the 2nd CPU needs to receive all the same data (minus controller input) as the first CPU so that it can generate sound, but I also assume there'd be chaos if it's sending data out/writing to memory/etc.
Would there be a way to make the 2nd CPU input-only so to speak (besides audio of course) so that it doesn't interfere with the rest of system operation that should be happening from the 1st CPU. I'm a technical guy, but I'm very unfamiliar with very low level CPU operation.
The second CPU would not be a CPU. Instead, it would be a cloned APU that responds only to writes to $4000-$401F. But it'd still need the entire address and data buses to decode writes to $4000-$401F.
So let me state the theory thus far and see if it seems correct:
1.) Perform overclock on NES CPU (I'll refer to this CPU as X) mod per usual methods.
2.) Disconnect pins 1 and 2 (AD1, AD2) on X so that it is no longer outputting audio to the NES sound circuit.
3.) Take another NES CPU (i'll refer to this as Y) removed from a NES.
4.) Piggy back Y to X, but only certain pins (following below)
5.) On Y, do not connect pins 1 and 2 to X. These will be connected to the NES sound circuit.
6.) On Y, connect pin 29 (CLK) to the default clock present on the NES mainboard.
7.) Connect the rest of Y's pins to the respective pins on X with the exceptions of pins 32 (IRQ), 33 (NMI), 35 through 39 (expansion port and controller port related)
End Result: Y will basically just be a cloned APU that should not interfere with proper NES system operation being performed by X. This will allow the correct pitch audio to be output by Y while the overclocked X is running the rest of the NES.
Correct?
cr4zymanz0r wrote:
So let me state the theory thus far and see if it seems correct:
End Result: Y will basically just be a cloned APU that should not interfere with proper NES system operation being performed by X. This will allow the correct pitch audio to be output by Y while the overclocked X is running the rest of the NES.
Nope, won't work. Each 2A03 contains its own CPU, with its own state, and there's no way to drive them externally. By overclocking one, the two CPUs will guaranteeably get out of sync with each other, and then the audio one will be executing garbage that has nothing in common.
Your only hope is a CPLD or FPGA to completely reimplement the 2A03 audio hardware, and even then DPCM won't work (because the cycle stealing for DMA uses the overclocked CPU to generate the time to fetch the audio for DPCM)
I'm just going to go full nuclear option here: you could do it with a custom FPGA. You could make/modify an FPGA (VHDL/Verilog/etc) implementation of the NES that would allow this.
However, if you're overclocking the NES, then you're already not compatible with previously made NES games (barring features that would disable the overclocking by default, etc.). At that point, why not just use one of the new 6502s and design a new non-NES system, since the end product won't be compatible with the NES either way.
thenewguy wrote:
I'm just going to go full nuclear option here: you could do it with a custom FPGA. You could make/modify an FPGA (VHDL/Verilog/etc) implementation of the NES that would allow this.
However, if you're overclocking the NES, then you're already not compatible with previously made NES games (barring features that would disable the overclocking by default, etc.). At that point, why not just use one of the new 6502s and design a new non-NES system, since the end product won't be compatible with the NES either way.
Retail NES games work in a overclocked NES. I'm sure there's probably compatibility issues with some games, but it definitely works. The issue here is the audio pitch being altered.
Overclocking is a common mod to alleviate game slowdown.
* For extremely small values of "common".
i.e.
Disabling the 10NES is a common NES mod.
Overclocking the NES is a rare NES mod.
The elephant-in-the-room question: why do you want to do this?
I was pondering modding in a switch to overclock my NES to eliminate/reduce slowdown in some games that have a more annoying amount of it. Only thing is I'm anal enough where the sound pitch change would drive me crazy.
I was hoping there was maybe a newer solution I was unaware of, but it's become obvious now that this is something definitely beyond my abilities at this point. Now I'm more curious than actually having hope of this getting 'solved'
That's what I was worried about.
Somehow I got the impression that overclocking the NES CPU to alleviate slowdown was more common than it actually is. It might have been these:
LOL well I could be wrong.
Anecdotally, I've never seen an overclocked NES in the flesh. I've seen tons of disabled lockout mods, several case mods and a few audio mods.
I don't think the
number of google search results is very meaningful. The search you linked has about 20 relevant results, then after that it's pretty much just unrelated stuff that includes either the word "nes" or "overclock".
At least if you played Lagrange Point it would mostly sound ok because it has it own on-board clock for the FM synth. I've tried it with a friend using an audio modded PAL NES and that worked like a charm. So if you can accept sped up crappy percussion that could work.