SM64 Fast3D Anti-Aliasing Reducer
#1
This is a simple tool you can use to improve performance on real N64 hardware by forcing the game to use the reduced anti-aliasing mode instead of the full anti-aliasing mode.

[Image: 5IiWuQr.png]



How does it work?

This tool will inject a modified version of the Fast3D 2.0D microcode that will block any attempt to write the IM_RD render mode flag into the RDP's othermode variable. Doing this forces the game to use the reduced anti-aliasing mode, which should improve performance on console by 3-4 fps (~10%).



How do I use it?

Just simply open up a Super Mario 64 ROM file, and then you can click the "Reduce the AA!" button if the ROM is compatible. Once the button is pressed, it will create a new ROM file with the ".ra" prefixed to the extension. For example, using the rom file "sm64.z64" will generate a new rom called "sm64.ra.z64".



What SM64 ROMs are supported?

Any SM64 ROM that uses the Fast3D 2.0D microcode is compatible. This includes the Japanese and North American versions of SM64 and any ROM hacks made with those versions.



What about emulators?

If you are using a high-level emulation graphics plugin like Jabo or GlideN64, then you should still get the full anti-aliasing since none of the game's code is being modified.

I have noticed that some low-level emulation plugins like angrylion do not like the custom microcode, and may make the game lag even more than before. Which is weird, because the microcode runs fine on real hardware. ¯\_(ツ)_/¯



Benchmark

The beginning area of Jolly Roger Bay does lag a significant amount. Going down to a 22 fps minimum in my testing. Injecting the modified microcode makes a significant difference in the feel of the game, with the minimum increased to 25 fps.

My jolly roger bay benchmark starts at the beginning of the level and has Mario swim into the underwater cave. The framerate is bad in the beginning, but gets a lot better when you are deep underwater.

[Image: C0IV7yY.jpg]



Download & Source

Download: https://github.com/DavidSM64/SM64-Fast3D...r/releases
Source: https://github.com/DavidSM64/SM64-Fast3D-AA-Reducer/


Reply
#2
Nobody's made any replies so i'll say it first but i love you for making this
David liked this post
Reply
#3
Quick question, is this different from the "disable AA" gameshark codes? I know those also improve performance so if this is different, yo could combine both for an ultra-high FPS experience.
Reply
#4
(12-07-2019, 05:56 AM)triclon Wrote: Quick question, is this different from the "disable AA" gameshark codes?  I know those also improve performance so if this is different, yo could combine both for an ultra-high FPS experience.

I know people use the gameshark code to make the game look "better" by removing the AA, but I haven't seen any proof that it improves performance. As far as I know, most of the lag comes from the calculations on the RDP. 

I haven't actually tested the gameshark code myself, but both methods are different. The gameshark code disables the anti-aliasing from the Video Interface (VI), whereas this tool disables the IM_RD flag which is used by the blender in the RDP.

From the N64 programming manual:

Quote:In the blender, the pixel color and the last value stored for the pixel in memory are combined. The blender also combines the pixel coverage and memory coverage and does z-buffering. The blender typically performs operations such as antialiasing the interior edges of objects and transparency. The new pixel’s color, coverage, and Z are stored in the frame buffer. The Video Interface (VI) reads the pixel color and coverage and antialiases the silhouettes of objects.

I would guess that having the gameshark code plus this tool would be the same as disabling anti-aliasing entirely. Which only gives you an extra 1-2 FPS over the reduced version. It wouldn't magically give you "ultra-high" FPS, unfortunately.

I wouldn't call myself an RDP expert, so I could be wrong. If I am, please leave a reply and I'll make a correction to this post.
Reply




Users browsing this thread: 1 Guest(s)