mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Implement F3DTEX/A ucode. Decoded by olivieryuyu.
Fixed 64 de hakken HLE not working. #268
This commit is contained in:
parent
3ad872cff4
commit
a8ecc0aa70
|
@ -284,6 +284,7 @@
|
|||
<ClCompile Include="..\..\src\F3DGOLDEN.cpp" />
|
||||
<ClCompile Include="..\..\src\F3DSETA.cpp" />
|
||||
<ClCompile Include="..\..\src\F3DBETA.cpp" />
|
||||
<ClCompile Include="..\..\src\F3DTEXA.cpp" />
|
||||
<ClCompile Include="..\..\src\FBOTextureFormats.cpp" />
|
||||
<ClCompile Include="..\..\src\FrameBuffer.cpp" />
|
||||
<ClCompile Include="..\..\src\FrameBufferInfo.cpp" />
|
||||
|
@ -402,6 +403,7 @@
|
|||
<ClInclude Include="..\..\src\F3DEX2MM.h" />
|
||||
<ClInclude Include="..\..\src\F3DGOLDEN.h" />
|
||||
<ClInclude Include="..\..\src\F3DSETA.h" />
|
||||
<ClInclude Include="..\..\src\F3DTEXA.h" />
|
||||
<ClInclude Include="..\..\src\FBOTextureFormats.h" />
|
||||
<ClInclude Include="..\..\src\FrameBuffer.h" />
|
||||
<ClInclude Include="..\..\src\FrameBufferInfo.h" />
|
||||
|
|
|
@ -266,6 +266,9 @@
|
|||
<ClCompile Include="..\..\src\F3DBETA.cpp">
|
||||
<Filter>Source Files\uCodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\F3DTEXA.cpp">
|
||||
<Filter>Source Files\uCodes</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\3DMath.h">
|
||||
|
@ -475,5 +478,8 @@
|
|||
<ClInclude Include="..\..\src\F3DBETA.h">
|
||||
<Filter>Header Files\uCodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\F3DTEXA.h">
|
||||
<Filter>Header Files\uCodes</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -24,6 +24,7 @@ set(GLideN64_SOURCES
|
|||
F3DEX2.cpp
|
||||
F3DEX2CBFD.cpp
|
||||
F3DEX2MM.cpp
|
||||
F3DTEXA.cpp
|
||||
FBOTextureFormats.cpp
|
||||
FrameBuffer.cpp
|
||||
FrameBufferInfo.cpp
|
||||
|
|
66
src/F3DTEXA.cpp
Normal file
66
src/F3DTEXA.cpp
Normal file
|
@ -0,0 +1,66 @@
|
|||
#include "GLideN64.h"
|
||||
#include "F3D.h"
|
||||
#include "F3DEX.h"
|
||||
#include "F3DTEXA.h"
|
||||
#include "N64.h"
|
||||
#include "RDP.h"
|
||||
#include "gSP.h"
|
||||
#include "GBI.h"
|
||||
|
||||
#define F3DTEXA_LOADTEX 0xB5
|
||||
#define F3DTEXA_SETTILESIZE 0xBE
|
||||
|
||||
u32 G_TEXA_LOADTEX, G_TEXA_SETTILESIZE;
|
||||
|
||||
void F3DTTEXA_LoadTex(u32 w0, u32 w1)
|
||||
{
|
||||
RDP_SetTImg(0x3d100000, w1);
|
||||
RDP_SetTile(0x35100000, 0x07000000);
|
||||
RDP_LoadBlock(0x33000000, 0x27000000 | _SHIFTR(w0, 0, 24));
|
||||
}
|
||||
|
||||
void F3DTTEXA_SetTileSize(u32 w0, u32 w1)
|
||||
{
|
||||
const u32 firstHalf = _SHIFTL(_SHIFTR(w1, 24, 8), 9, 8);
|
||||
RDP_SetTile(0x35400000 | firstHalf, _SHIFTR(w0, 0, 24));
|
||||
RDP_SetTileSize(0x32000000, _SHIFTR(w1, 0, 24));
|
||||
}
|
||||
|
||||
void F3DTEXA_Init()
|
||||
{
|
||||
gSPSetupFunctions();
|
||||
// Set GeometryMode flags
|
||||
GBI_InitFlags(F3DEX);
|
||||
|
||||
GBI.PCStackSize = 18;
|
||||
|
||||
// GBI Command Command Value Command Function
|
||||
GBI_SetGBI(G_SPNOOP, F3D_SPNOOP, F3D_SPNoOp);
|
||||
GBI_SetGBI(G_MTX, F3D_MTX, F3D_Mtx);
|
||||
GBI_SetGBI(G_RESERVED0, F3D_RESERVED0, F3D_Reserved0);
|
||||
GBI_SetGBI(G_MOVEMEM, F3D_MOVEMEM, F3D_MoveMem);
|
||||
GBI_SetGBI(G_VTX, F3D_VTX, F3DEX_Vtx);
|
||||
GBI_SetGBI(G_RESERVED1, F3D_RESERVED1, F3D_Reserved1);
|
||||
GBI_SetGBI(G_DL, F3D_DL, F3D_DList);
|
||||
GBI_SetGBI(G_RESERVED2, F3D_RESERVED2, F3D_Reserved2);
|
||||
GBI_SetGBI(G_RESERVED3, F3D_RESERVED3, F3D_Reserved3);
|
||||
GBI_SetGBI(G_SPRITE2D_BASE, F3D_SPRITE2D_BASE, F3D_Sprite2D_Base);
|
||||
|
||||
GBI_SetGBI(G_TRI1, F3D_TRI1, F3DEX_Tri1);
|
||||
GBI_SetGBI(G_TEXA_SETTILESIZE, F3DTEXA_SETTILESIZE, F3DTTEXA_SetTileSize);
|
||||
GBI_SetGBI(G_POPMTX, F3D_POPMTX, F3D_PopMtx);
|
||||
GBI_SetGBI(G_MOVEWORD, F3D_MOVEWORD, F3D_MoveWord);
|
||||
GBI_SetGBI(G_TEXTURE, F3D_TEXTURE, F3D_Texture);
|
||||
GBI_SetGBI(G_SETOTHERMODE_H, F3D_SETOTHERMODE_H, F3D_SetOtherMode_H);
|
||||
GBI_SetGBI(G_SETOTHERMODE_L, F3D_SETOTHERMODE_L, F3D_SetOtherMode_L);
|
||||
GBI_SetGBI(G_ENDDL, F3D_ENDDL, F3D_EndDL);
|
||||
GBI_SetGBI(G_SETGEOMETRYMODE, F3D_SETGEOMETRYMODE, F3D_SetGeometryMode);
|
||||
GBI_SetGBI(G_CLEARGEOMETRYMODE, F3D_CLEARGEOMETRYMODE, F3D_ClearGeometryMode);
|
||||
GBI_SetGBI(G_TEXA_LOADTEX, F3DTEXA_LOADTEX, F3DTTEXA_LoadTex);
|
||||
GBI_SetGBI(G_RDPHALF_1, F3D_RDPHALF_1, F3D_RDPHalf_1);
|
||||
GBI_SetGBI(G_RDPHALF_2, F3D_RDPHALF_2, F3D_RDPHalf_2);
|
||||
GBI_SetGBI(G_MODIFYVTX, F3DEX_MODIFYVTX, F3DEX_ModifyVtx);
|
||||
GBI_SetGBI(G_TRI2, F3DEX_TRI2, F3DEX_Tri2);
|
||||
GBI_SetGBI(G_BRANCH_Z, F3DEX_BRANCH_Z, F3DEX_Branch_Z);
|
||||
GBI_SetGBI(G_LOAD_UCODE, F3DEX_LOAD_UCODE, F3DEX_Load_uCode);
|
||||
}
|
6
src/F3DTEXA.h
Normal file
6
src/F3DTEXA.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifndef F3DTEXA_H
|
||||
#define F3DTEXA_H
|
||||
|
||||
void F3DTEXA_Init();
|
||||
|
||||
#endif
|
|
@ -25,6 +25,7 @@
|
|||
#include "F3DGOLDEN.h"
|
||||
#include "F3DEX2CBFD.h"
|
||||
#include "F3DEX2MM.h"
|
||||
#include "F3DTEXA.h"
|
||||
#include "ZSort.h"
|
||||
#include "CRC.h"
|
||||
#include "Log.h"
|
||||
|
@ -188,6 +189,7 @@ void GBIInfo::_makeCurrent(MicrocodeInfo * _pCurrent)
|
|||
case F3DSETA: F3DSETA_Init(); break;
|
||||
case F3DGOLDEN: F3DGOLDEN_Init(); break;
|
||||
case F3DEX2MM: F3DEX2MM_Init(); break;
|
||||
case F3DTEXA: F3DTEXA_Init(); break;
|
||||
}
|
||||
|
||||
#ifndef GLESX
|
||||
|
@ -290,6 +292,8 @@ void GBIInfo::loadMicrocode(u32 uc_start, u32 uc_dstart, u16 uc_dsize)
|
|||
current.textureGen = false;
|
||||
else if (strncmp(&uc_str[14], "F3DZ", 4) == 0)
|
||||
type = F3DEX2MM;
|
||||
else if (strncmp(&uc_str[14], "F3DTEX/A", 8) == 0)
|
||||
type = F3DTEXA;
|
||||
else if (strncmp(&uc_str[14], "F3DLX.Rej", 9) == 0)
|
||||
current.NoN = true;
|
||||
else if (strncmp(&uc_str[14], "F3DLP.Rej", 9) == 0) {
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
#define ZSortp 15
|
||||
#define F3DSETA 16
|
||||
#define F3DEX2MM 17
|
||||
#define NONE 18
|
||||
#define F3DTEXA 18
|
||||
#define NONE 19
|
||||
|
||||
// Fixed point conversion factors
|
||||
#define FIXED2FLOATRECIP1 0.5f
|
||||
|
|
|
@ -20,6 +20,10 @@ void RDP_TexRect(u32 w0, u32 w1);
|
|||
void RDP_ProcessRDPList();
|
||||
void RDP_RepeatLastLoadBlock();
|
||||
void RDP_SetScissor(u32 w0, u32 w1);
|
||||
void RDP_SetTImg(u32 w0, u32 w1);
|
||||
void RDP_LoadBlock(u32 w0, u32 w1);
|
||||
void RDP_SetTile(u32 w0, u32 w1);
|
||||
void RDP_SetTileSize(u32 w0, u32 w1);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ MY_LOCAL_SRC_FILES := \
|
|||
$(SRCDIR)/F3DGOLDEN.cpp \
|
||||
$(SRCDIR)/F3DSETA.cpp \
|
||||
$(SRCDIR)/F3DBETA.cpp \
|
||||
$(SRCDIR)/F3DTEXA.cpp \
|
||||
$(SRCDIR)/FBOTextureFormats.cpp \
|
||||
$(SRCDIR)/FrameBuffer.cpp \
|
||||
$(SRCDIR)/FrameBufferInfo.cpp \
|
||||
|
|
Loading…
Reference in New Issue
Block a user