Sure it's the least I can do for all the help I got from here. I mostly used the amazing nocash superfx asm information here:
http://nocash.emubase.de/fullsnes.htm#snescartgsunprogrammablerisccpuakasuperfxmariochip10gamesBefore I started romhacking starfox 1 was the only game I had that would run at super speeds. I figured that maybe this was because starfox 1 is the only game programmed for the mario chip therefore it doesn't enable extra hardware functions added in the gsu series chips such as the double speed internal clock. Superfx roms enable double speed mode by writing to 3039. You can either find the code using a debugger or just by searching the rom using a hex editor. I just do a search for "A9 01 8D 39 30". Then I change the "39 30" to "35 30" since 3035 is unused to disable double speed mode.
Disabling double speed mode is important because it allows you to double your overclock speed before you reach the limit. The more you overclock the smoother the game becomes, so it's important to to make the rom as overclockable as possible. Changing the "IRQ Interrupt Mask" is a little bit different. Writing to 3037 lets you configure both the "IRQ Interrupt Mask" and the multiplier speed. I noticed whether the multiplier speed is set to high or standard the overclocking limit is still the same, but for some reason setting the "IRQ Interrupt Mask" to "disable irq" allows some games to overclock faster. Here's what starfox does when overclocked past 48 mhz before I disabled the irq interrupt mask:
https://www.youtube.com/watch?v=Zt29sSn7B3YAfter setting the "IRQ Interrupt Mask" to "disable irq" this problem went away. Starfox 2 would flicker a lot past 48 mhz, and vortex would just freeze. All these problems went away and all these games could overclock much faster once I disabled the irq interrupt mask. Again use a debugger or a hex editor to look for writes to 3037, sometimes the rom will be writing "20", sometimes "A0", maybe even 80. I usually change the value to set it the same way and also disable the irq mask. If the rom is writing "20" to 3037 I change it to write "A0" which is the same settings just with the irq mask disabled.
Starfox 1 was a bit of a pain because it didn't set this stuff so I had to hijack the first write command to 2100 and turn that into setting the rom to high multiplier speed and disabling the irq mask. All other games set these modes so you can hunt down the code and change it without overwriting something else.
Once your rom is burned, wire it up (there's gsu 1 / 2 maskrom pinouts in google). Next find the clock trace on the gsu 1 / 2 and completely disconnect that trace from everything. Wire up a wire for vcc, ground, and a third wire connecting to the gsu 1 / 2 clock trace, and wire in a four pin crystal oscillator of whatever speed you desire.
For some strange reason the ram chip on the stunt race fx cart allows you to overclock faster. I have no idea why, the ram chip that comes on the doom pcb can't overclock as fast. I transplanted the ram chip from a stunt race fx pcb onto a doom pcb and suddenly games on the doom pcb could overclock faster. Therefore I recommend using stunt race fx as a donor cart, it even has a battery saving circuit. The only thing the stunt race fx pcb can't do is run 16 mbit games like doom and mario world 2, but mario world 2 doesn't need overclocking, and even using these tricks I can't get doom to overclock very fast.
Also today I applied the same tricks to the vortex rom and now vortex runs happily at 55 mhz.