You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mario Kart 64's USA release uses an early version of F3DEX labelled 0.95. This is not identical to the more common 1.21 F3DEX on a binary level - one of the quirks of this version is the inclusion of the full gsSPQuadrangle command, which starting with 1.21 F3DEX is converted at compilation to a gsSPTriangle2. This is emulated correctly which is apparently handled via a special microcode -
{ F3DEX, false, false, true, 0x0ace4c3f }, // Mario Kart 64
Recently (today) it was discovered that another command has a difference in the binary layout; gsSPCullDisplayList appears to use the same binary from F3D and not the later 1.21 F3DEX versions.
To test a region of 8 vertices, the correct 0.95 F3DEX binary command and parameters should read - BE 00 00 00 00 00 01 40
Using the newer 1.21 F3DEX binary leads to a crash on original hardware as it checks for an invalid number of verts. This has gone unnoticed as the original game never uses the gsSPCullDisplayList command, however this leads to a discrepancy when attempting to design mods that are compatible with both modern emulators and console.
The text was updated successfully, but these errors were encountered:
Mario Kart 64's USA release uses an early version of F3DEX labelled 0.95. This is not identical to the more common 1.21 F3DEX on a binary level - one of the quirks of this version is the inclusion of the full gsSPQuadrangle command, which starting with 1.21 F3DEX is converted at compilation to a gsSPTriangle2. This is emulated correctly which is apparently handled via a special microcode -
GLideN64/src/GBI.cpp
Line 57 in cb6e6cb
Recently (today) it was discovered that another command has a difference in the binary layout; gsSPCullDisplayList appears to use the same binary from F3D and not the later 1.21 F3DEX versions.
To test a region of 8 vertices, the correct 0.95 F3DEX binary command and parameters should read -
BE 00 00 00 00 00 01 40
whereas GLideN64 currently (incorrectly) expects the 1.21 binary format -
BE 00 00 00 00 00 00 0E
Using the newer 1.21 F3DEX binary leads to a crash on original hardware as it checks for an invalid number of verts. This has gone unnoticed as the original game never uses the gsSPCullDisplayList command, however this leads to a discrepancy when attempting to design mods that are compatible with both modern emulators and console.
The text was updated successfully, but these errors were encountered: