diff --git a/projects/msvc/GLideN64.vcxproj b/projects/msvc/GLideN64.vcxproj index 05318ee8a..73d370839 100644 --- a/projects/msvc/GLideN64.vcxproj +++ b/projects/msvc/GLideN64.vcxproj @@ -391,6 +391,7 @@ copy /Y "$(OutDir)$(TargetName).*" "$(Mupen64PluginsDir_x64)") + @@ -540,6 +541,7 @@ copy /Y "$(OutDir)$(TargetName).*" "$(Mupen64PluginsDir_x64)") + diff --git a/projects/msvc/GLideN64.vcxproj.filters b/projects/msvc/GLideN64.vcxproj.filters index 42581c680..46a4fe58b 100644 --- a/projects/msvc/GLideN64.vcxproj.filters +++ b/projects/msvc/GLideN64.vcxproj.filters @@ -443,6 +443,9 @@ Source Files\uCodes + + Source Files\uCodes + @@ -700,9 +703,15 @@ Header Files\uCodes + + Header Files\uCodes + Header Files\uCodes + + Header Files\uCodes + Header Files\uCodes @@ -820,9 +829,6 @@ Header Files - - Header Files\uCodes - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8f04011f5..a49783cca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -120,6 +120,7 @@ set(GLideN64_SOURCES uCodes/F3DBETA.cpp uCodes/F3DDKR.cpp uCodes/F3DEX.cpp + uCodes/F3DEX095.cpp uCodes/F3DAM.cpp uCodes/F3DEX2.cpp uCodes/F3DEX3.cpp diff --git a/src/GBI.cpp b/src/GBI.cpp index ff72715f2..3313627f0 100644 --- a/src/GBI.cpp +++ b/src/GBI.cpp @@ -12,6 +12,7 @@ #include "RSP.h" #include "uCodes/F3D.h" #include "uCodes/F3DEX.h" +#include "uCodes/F3DEX095.h" #include "uCodes/F3DEX2.h" #include "uCodes/F3DEX3.h" #include "uCodes/L3D.h" @@ -58,7 +59,7 @@ static const std::vector specialMicrocodes = { { S2DEX2, false, true, false, 0x02c399dd }, // Animal Forest - { F3DEX, false, false, true, 0x0ace4c3f }, // Mario Kart 64 + { F3DEX095, false, false, true, 0x0ace4c3f }, // Mario Kart 64 { F3D, true, false, false, 0x16c3a775 }, // AeroFighters { F3DEX2CBFD, true, true, false, 0x1b4ace88 }, // Conker's Bad Fur Day { F3DPD, true, true, false, 0x1c4f7869 }, // Perfect Dark @@ -209,6 +210,11 @@ void GBIInfo::_makeCurrent(MicrocodeInfo * _pCurrent) F3D_Init(); m_hwlSupported = true; break; + case F3DEX095: + F3DEX095_Init(); + m_hwlSupported = true; + gSP.clipRatio = m_pCurrent->Rej ? 2U : 1U; + break; case F3DEX: F3DEX_Init(); m_hwlSupported = true; diff --git a/src/GBI.h b/src/GBI.h index 0a3c9d6df..3f009e46d 100644 --- a/src/GBI.h +++ b/src/GBI.h @@ -36,7 +36,8 @@ #define S2DEX_1_03 27 #define S2DEX_1_05 28 #define F3DEX3 29 -#define NONE 30 +#define F3DEX095 30 +#define NONE 31 // Fixed point conversion factors #define FIXED2FLOATRECIP1 0.5f diff --git a/src/uCodes/F3DEX095.cpp b/src/uCodes/F3DEX095.cpp new file mode 100644 index 000000000..047c5f734 --- /dev/null +++ b/src/uCodes/F3DEX095.cpp @@ -0,0 +1,12 @@ +#include "F3D.h" +#include "F3DEX.h" +#include "F3DEX095.h" +#include "gSP.h" +#include "GBI.h" + +// See #2774 for details +void F3DEX095_Init() +{ + F3DEX_Init(); + GBI_SetGBI(G_CULLDL, F3D_CULLDL, F3D_CullDL); +} diff --git a/src/uCodes/F3DEX095.h b/src/uCodes/F3DEX095.h new file mode 100644 index 000000000..3e22270c7 --- /dev/null +++ b/src/uCodes/F3DEX095.h @@ -0,0 +1,7 @@ +#ifndef F3DEX095_H +#define F3DEX095_H + +void F3DEX095_Init(); + +#endif +