This is an old revision of the document!


Console compatibility with SM64 ROM hacks

TBA

Issues

Misaligned decompressed MIO0 blocks

TBA

Improper use of Fast3D's SetCombine (0xFC) command

TBA

Warping triangles

Some versions of the SM64 Editor, like v1.9.3S, will have warping polygons when the player is moving around the level. This issue was caused by skelux setting the camera frustum's far value to be a negative number (0x9696 = -26,986) in the Geometry Layout Command 0xA (Set Camera Frustum).

How to fix it?

This issue can be fixed by changing the camera's far value back to being a positive number. The largest possible positive number is 0x7FFF (‭32767‬).

RCVI Hack

The RCVI hack is an option in the SM64 editor, under the “ROM Settings” tab, that can potentially reduce lag in emulators. The hack simply changes two bytes at ROM offset 0xF00C2 from  02 0D  to  08 34 . However, this hack prevents the game from working properly on console. It produces the strange visual artifacts seen in the image above on boot.

How to fix it?

To fix this issue, you only need to revert the two bytes back to normal. Just change the two bytes at ROM offset 0xF00C2 to  02 0D .

Trying to write to the framebuffer's area of memory (8038F800-803FFFFF)

Older versions of the SM64 Editor moved the music pointer to address 0x803E0000. The problem with using that address is that the region from 0x8038F800 to 0x803FFFFF is constantly being overwritten with the game's framebuffer, so any data that gets stored within that region will be erased immediately. Some graphic plugins for Project64, like jabo's, have the option of writing the framebuffer to memory turned off by default, which is probably why this was not caught earlier.

How to fix it?

Later versions of the SM64 Editor will put the music memory pool in extended memory, which is safe to use. Please do not store data within 0x8038F800-0x803FFFFF if you want your hack to be compatible.

The Project64 problem

Project64 is a popular, and performance friendly, Nintendo 64 emulator that was initially created back in 2001. While it is highly compatible with most of the N64 library when it comes to casual players, it is not cycle accurate and depends on plugins for graphics and audio. This fact makes it easy for us, as ROM hackers using the emulator, to unknowingly create the issues seen above.

See Also

References