XaiJu
vitorvilela
vitorvilela

patreon


Project Super FX - It's time to push SNES to the limits

Hi! I have written before that SA-1 is not just the only SNES co-processor I may use to optimize games. Super FX is not just possible but also a reality for games that heavily uses graphics processing, frames buffers but suffers with slowdown or lag spikes.

This includes games that already uses Super FX, like Star Fox or Stunt Race FX. Any Super FX game can be made to run up to 30 FPS by adjusting frame buffers, optimizing v-blanking routines and still ensuring the game won't run faster than the intended speed.

You have read it right: it's possible to make Super FX games run with smoother frame rate, enough to make it not look poorly aged.

That works by ensuring the game is synchronized by the SNES CPU internal timers instead by the time the FX chip took to render the frame. The main issue on Star Fox is that it estimates the "time passed" by the amount of work Super FX does, but in case Super FX does the work faster than normal, the game logic will end up being faster than normal as well. It's possible to fix that even if the chip runs much faster, including when it involves overclocking.

By the way, Super FX's clock is not restricted 21.477272... MHz. You can overclock up to around... 70~80 or so MHz depending on model without getting completely unstable on real hardware. Imagine a lot of things you can do by making the chip run nearby as fast as the Nintendo 64's main processor?

That would not just allow to make games run smoother, but add more details to it, like increasing render distance or using more textures, pretty much allowing to a game made at that age look awesome to play today.

At this point, the main issue will be transferring the frame buffer: the time spent during blanking routine to transfer the picture the Super FX has drawn on the RAM to the SNES Picture Processing Unit's VRAM. This limitation can't be fixed by using enhancement chips, because you are restricted by the SNES DMA bus speed, which is 2.68 MHz. However, what you can do is adjusting the frame buffer size, optimizing the V-Blank routine and adjusting the F-Blank HDMA period to ensure you get the perfect resolution versus frame rate versus NMI code overhead. The games at that time didn't optimize their routines enough to ensure the highest frame rate, but with proper VRAM + DMA modeling and smart use the architecture, you can get a solid 30 FPS gameplay and a much more pleasant experience.

Note that Super FX is way harder to program because of the architecture, strict timing and limited tools. SA-1 uses the same architecture as the SNES CPU, so most of the tools made for the SNES CPU works for SA-1 too. But for the case of Super FX, specific tools are needed to program, debug, analyze, etc.

I've been studying Super FX for a lot of time, it requires a lot of dedication and motivation, maybe a bit more than SA-1 because I'm already used to the chip and I already know most details of the architecture. In addition, most of the Super FX games barely have documentation or analysis on how it works, which is an additional challenge for me.

If you like my work and would like have Super FX game optimizations eventually come out, consider supporting me! That will allow me to put more time on the SNES projects without worrying about real life budgets.

Meanwhile I study Super FX, Axelay and UN Squadron Area 88 will be likely the next SA-1 and/or FastROM conversions. Without forgetting Street Fighter Alpha II and its SPC700 challenge.

Thoughts about Super FX games? Make sure to comment below on this article! I'm always open for feedback!!

Project Super FX - It's time to push SNES to the limits

Comments

I don't know why, but the SNES is just such an amazing console. The look, sound and feel are all there. N64 had the hype and 3D, but the SNES had the games.

Eric Schafer

Wow. I would pay money for smooth Star Fox.

Moomoo


More Creators