and more boring moving and cleanup ...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1661 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
17a601958c
commit
358333b94b
|
@ -15,7 +15,6 @@
|
||||||
// Official SVN repository and contact information can be found at
|
// Official SVN repository and contact information can be found at
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "IndexGenerator.h"
|
#include "IndexGenerator.h"
|
||||||
|
|
||||||
/*
|
/*
|
|
@ -15,13 +15,18 @@
|
||||||
// Official SVN repository and contact information can be found at
|
// Official SVN repository and contact information can be found at
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#pragma once
|
// This is currently only used by the DX plugin, but it may make sense to
|
||||||
|
// use it in the GL plugin or a future DX10 plugin too.
|
||||||
|
|
||||||
|
#ifndef _INDEXGENERATOR_H
|
||||||
|
#define _INDEXGENERATOR_H
|
||||||
|
|
||||||
class IndexGenerator
|
class IndexGenerator
|
||||||
{
|
{
|
||||||
unsigned short *ptr;
|
unsigned short *ptr;
|
||||||
int numPrims;
|
int numPrims;
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Start(unsigned short *startptr);
|
void Start(unsigned short *startptr);
|
||||||
void AddList(int numVerts);
|
void AddList(int numVerts);
|
||||||
|
@ -33,4 +38,6 @@ public:
|
||||||
void AddQuads(int numVerts);
|
void AddQuads(int numVerts);
|
||||||
int GetNumPrims() {return numPrims;} //returns numprimitives
|
int GetNumPrims() {return numPrims;} //returns numprimitives
|
||||||
int GetNumVerts() {return index;} //returns numprimitives
|
int GetNumVerts() {return index;} //returns numprimitives
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif // _INDEXGENERATOR_H
|
|
@ -22,13 +22,13 @@
|
||||||
|
|
||||||
namespace VertexLoaderManager
|
namespace VertexLoaderManager
|
||||||
{
|
{
|
||||||
void Init();
|
void Init();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
|
||||||
void MarkAllDirty();
|
void MarkAllDirty();
|
||||||
|
|
||||||
int GetVertexSize(int vtx_attr_group);
|
int GetVertexSize(int vtx_attr_group);
|
||||||
void RunVertices(int vtx_attr_group, int primitive, int count);
|
void RunVertices(int vtx_attr_group, int primitive, int count);
|
||||||
|
|
||||||
// For debugging
|
// For debugging
|
||||||
void AppendListToString(std::string *dest);
|
void AppendListToString(std::string *dest);
|
||||||
|
|
|
@ -471,6 +471,14 @@
|
||||||
RelativePath=".\Src\Fifo.h"
|
RelativePath=".\Src\Fifo.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\IndexGenerator.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\IndexGenerator.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Src\LookUpTables.cpp"
|
RelativePath=".\Src\LookUpTables.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -1257,14 +1257,6 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="Render"
|
Name="Render"
|
||||||
>
|
>
|
||||||
<File
|
|
||||||
RelativePath=".\Src\IndexGenerator.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Src\IndexGenerator.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Src\PixelShader.cpp"
|
RelativePath=".\Src\PixelShader.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -37,6 +37,14 @@ using namespace D3D;
|
||||||
namespace VertexManager
|
namespace VertexManager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
enum Collection
|
||||||
|
{
|
||||||
|
C_NOTHING=0,
|
||||||
|
C_TRIANGLES=1,
|
||||||
|
C_LINES=2,
|
||||||
|
C_POINTS=3
|
||||||
|
};
|
||||||
|
|
||||||
static IndexGenerator indexGen;
|
static IndexGenerator indexGen;
|
||||||
static Collection collection;
|
static Collection collection;
|
||||||
|
|
||||||
|
@ -65,6 +73,23 @@ const D3DVERTEXELEMENT9 decl[] =
|
||||||
D3DDECL_END()
|
D3DDECL_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const Collection collectionTypeLUT[8] =
|
||||||
|
{
|
||||||
|
C_TRIANGLES,//quads
|
||||||
|
C_NOTHING, //nothing
|
||||||
|
C_TRIANGLES,//triangles
|
||||||
|
C_TRIANGLES,//strip
|
||||||
|
C_TRIANGLES,//fan
|
||||||
|
C_LINES, //lines
|
||||||
|
C_LINES, //linestrip
|
||||||
|
C_POINTS //guess :P
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
D3DVertex *vbufferwrite;
|
||||||
|
|
||||||
|
void CreateDeviceObjects();
|
||||||
|
void DestroyDeviceObjects();
|
||||||
|
|
||||||
bool Init()
|
bool Init()
|
||||||
{
|
{
|
||||||
|
@ -105,12 +130,11 @@ void DestroyDeviceObjects()
|
||||||
vDecl = 0;
|
vDecl = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddIndices(int _primitive, int _numVertices)
|
void AddIndices(int _primitive, int _numVertices)
|
||||||
{
|
{
|
||||||
switch(_primitive) {
|
switch (_primitive) {
|
||||||
case GX_DRAW_QUADS: indexGen.AddQuads(_numVertices); return;
|
case GX_DRAW_QUADS: indexGen.AddQuads(_numVertices); return;
|
||||||
case GX_DRAW_TRIANGLES: indexGen.AddList(_numVertices); return;
|
case GX_DRAW_TRIANGLES: indexGen.AddList(_numVertices); return;
|
||||||
case GX_DRAW_TRIANGLE_STRIP: indexGen.AddStrip(_numVertices); return;
|
case GX_DRAW_TRIANGLE_STRIP: indexGen.AddStrip(_numVertices); return;
|
||||||
case GX_DRAW_TRIANGLE_FAN: indexGen.AddFan(_numVertices); return;
|
case GX_DRAW_TRIANGLE_FAN: indexGen.AddFan(_numVertices); return;
|
||||||
case GX_DRAW_LINE_STRIP: indexGen.AddLineStrip(_numVertices); return;
|
case GX_DRAW_LINE_STRIP: indexGen.AddLineStrip(_numVertices); return;
|
||||||
|
@ -119,20 +143,6 @@ void AddIndices(int _primitive, int _numVertices)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Collection collectionTypeLUT[8] =
|
|
||||||
{
|
|
||||||
C_TRIANGLES,//quads
|
|
||||||
C_NOTHING, //nothing
|
|
||||||
C_TRIANGLES,//triangles
|
|
||||||
C_TRIANGLES,//strip
|
|
||||||
C_TRIANGLES,//fan
|
|
||||||
C_LINES, //lines
|
|
||||||
C_LINES, //linestrip
|
|
||||||
C_POINTS //guess :P
|
|
||||||
};
|
|
||||||
|
|
||||||
D3DVertex *vbufferwrite;
|
|
||||||
|
|
||||||
void AddVertices(int _primitive, int _numVertices, const DecodedVArray *varray)
|
void AddVertices(int _primitive, int _numVertices, const DecodedVArray *varray)
|
||||||
{
|
{
|
||||||
if (_numVertices <= 0) //This check is pretty stupid...
|
if (_numVertices <= 0) //This check is pretty stupid...
|
||||||
|
|
|
@ -18,13 +18,13 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CPStructs.h"
|
#include "CPMemory.h"
|
||||||
#include "VertexLoader.h"
|
#include "VertexLoader.h"
|
||||||
#include "DecodedVArray.h"
|
#include "DecodedVArray.h"
|
||||||
|
|
||||||
struct UV
|
struct UV
|
||||||
{
|
{
|
||||||
float u,v,w;
|
float u, v, w;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct D3DVertex {
|
struct D3DVertex {
|
||||||
|
@ -34,27 +34,14 @@ struct D3DVertex {
|
||||||
UV uv[8];
|
UV uv[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Collection
|
|
||||||
{
|
|
||||||
C_NOTHING=0,
|
|
||||||
C_TRIANGLES=1,
|
|
||||||
C_LINES=2,
|
|
||||||
C_POINTS=3
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace VertexManager
|
namespace VertexManager
|
||||||
{
|
{
|
||||||
|
|
||||||
extern const Collection collectionTypeLUT[8];
|
|
||||||
|
|
||||||
bool Init();
|
bool Init();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
|
||||||
void BeginFrame();
|
void BeginFrame();
|
||||||
|
|
||||||
void CreateDeviceObjects();
|
|
||||||
void DestroyDeviceObjects();
|
|
||||||
|
|
||||||
void AddVertices(int _primitive, int _numVertices, const DecodedVArray *varray);
|
void AddVertices(int _primitive, int _numVertices, const DecodedVArray *varray);
|
||||||
void Flush();
|
void Flush();
|
||||||
|
|
||||||
|
|
|
@ -363,7 +363,7 @@ void BPWritten(int addr, int changes, int newval)
|
||||||
VertexManager::Flush();
|
VertexManager::Flush();
|
||||||
((u32*)&bpmem)[addr] = newval;
|
((u32*)&bpmem)[addr] = newval;
|
||||||
PRIM_LOG("ztex bias=0x%x\n", bpmem.ztex1.bias);
|
PRIM_LOG("ztex bias=0x%x\n", bpmem.ztex1.bias);
|
||||||
PixelShaderMngr::SetZTetureBias(bpmem.ztex1.bias);
|
PixelShaderMngr::SetZTextureBias(bpmem.ztex1.bias);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BPMEM_ZTEX2:
|
case BPMEM_ZTEX2:
|
||||||
|
|
|
@ -41,7 +41,9 @@ PIXELSHADERUID PixelShaderMngr::s_curuid;
|
||||||
static int s_nMaxPixelInstructions;
|
static int s_nMaxPixelInstructions;
|
||||||
static int s_nColorsChanged[2]; // 0 - regular colors, 1 - k colors
|
static int s_nColorsChanged[2]; // 0 - regular colors, 1 - k colors
|
||||||
static int s_nIndTexMtxChanged = 0;
|
static int s_nIndTexMtxChanged = 0;
|
||||||
static bool s_bAlphaChanged, s_bZBiasChanged, s_bIndTexScaleChanged;
|
static bool s_bAlphaChanged;
|
||||||
|
static bool s_bZBiasChanged;
|
||||||
|
static bool s_bIndTexScaleChanged;
|
||||||
static float lastRGBAfull[2][4][4];
|
static float lastRGBAfull[2][4][4];
|
||||||
static u8 s_nTexDimsChanged;
|
static u8 s_nTexDimsChanged;
|
||||||
static u32 lastAlpha = 0;
|
static u32 lastAlpha = 0;
|
||||||
|
@ -54,9 +56,9 @@ static u32 lastZBias = 0;
|
||||||
u32 s_texturemask = 0;
|
u32 s_texturemask = 0;
|
||||||
|
|
||||||
static int maptocoord[8]; // indexed by texture map, holds the texcoord associated with the map
|
static int maptocoord[8]; // indexed by texture map, holds the texcoord associated with the map
|
||||||
static u32 maptocoord_mask=0;
|
static u32 maptocoord_mask = 0;
|
||||||
|
|
||||||
static GLuint s_ColorMatrixProgram=0;
|
static GLuint s_ColorMatrixProgram = 0;
|
||||||
|
|
||||||
void PixelShaderMngr::SetPSConstant4f(int const_number, float f1, float f2, float f3, float f4) {
|
void PixelShaderMngr::SetPSConstant4f(int const_number, float f1, float f2, float f3, float f4) {
|
||||||
glProgramEnvParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, const_number, f1, f2, f3, f4);
|
glProgramEnvParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, const_number, f1, f2, f3, f4);
|
||||||
|
@ -216,8 +218,6 @@ bool PixelShaderMngr::CompilePixelShader(FRAGMENTSHADER& ps, const char* pstrpro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ERROR_LOG(pcompiledprog);
|
|
||||||
//ERROR_LOG(pstrprogram);
|
|
||||||
glGenProgramsARB( 1, &ps.glprogid );
|
glGenProgramsARB( 1, &ps.glprogid );
|
||||||
glBindProgramARB( GL_FRAGMENT_PROGRAM_ARB, ps.glprogid );
|
glBindProgramARB( GL_FRAGMENT_PROGRAM_ARB, ps.glprogid );
|
||||||
glProgramStringARB( GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, (GLsizei)strlen(pcompiledprog), pcompiledprog);
|
glProgramStringARB( GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, (GLsizei)strlen(pcompiledprog), pcompiledprog);
|
||||||
|
@ -348,9 +348,15 @@ void PixelShaderMngr::SetConstants()
|
||||||
// xyz - static matrix
|
// xyz - static matrix
|
||||||
//TODO w - dynamic matrix scale / 256...... somehow / 4 works better
|
//TODO w - dynamic matrix scale / 256...... somehow / 4 works better
|
||||||
SetPSConstant4f(C_INDTEXMTX+2*i,
|
SetPSConstant4f(C_INDTEXMTX+2*i,
|
||||||
bpmem.indmtx[i].col0.ma * fscale, bpmem.indmtx[i].col1.mc * fscale, bpmem.indmtx[i].col2.me * fscale, fscale * 256.0f);
|
bpmem.indmtx[i].col0.ma * fscale,
|
||||||
|
bpmem.indmtx[i].col1.mc * fscale,
|
||||||
|
bpmem.indmtx[i].col2.me * fscale,
|
||||||
|
fscale * 256.0f);
|
||||||
SetPSConstant4f(C_INDTEXMTX+2*i+1,
|
SetPSConstant4f(C_INDTEXMTX+2*i+1,
|
||||||
bpmem.indmtx[i].col0.mb * fscale, bpmem.indmtx[i].col1.md * fscale, bpmem.indmtx[i].col2.mf * fscale, fscale * 256.0f);
|
bpmem.indmtx[i].col0.mb * fscale,
|
||||||
|
bpmem.indmtx[i].col1.md * fscale,
|
||||||
|
bpmem.indmtx[i].col2.mf * fscale,
|
||||||
|
fscale * 256.0f);
|
||||||
|
|
||||||
PRIM_LOG("indmtx%d: scale=%f, mat=(%f %f %f; %f %f %f)\n", i,
|
PRIM_LOG("indmtx%d: scale=%f, mat=(%f %f %f; %f %f %f)\n", i,
|
||||||
1024.0f*fscale, bpmem.indmtx[i].col0.ma * fscale, bpmem.indmtx[i].col1.mc * fscale, bpmem.indmtx[i].col2.me * fscale,
|
1024.0f*fscale, bpmem.indmtx[i].col0.ma * fscale, bpmem.indmtx[i].col1.mc * fscale, bpmem.indmtx[i].col2.me * fscale,
|
||||||
|
@ -439,7 +445,7 @@ void PixelShaderMngr::SetTexDims(int texmapid, u32 width, u32 height, u32 wraps,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PixelShaderMngr::SetZTetureBias(u32 bias)
|
void PixelShaderMngr::SetZTextureBias(u32 bias)
|
||||||
{
|
{
|
||||||
if (lastZBias != bias) {
|
if (lastZBias != bias) {
|
||||||
s_bZBiasChanged = true;
|
s_bZBiasChanged = true;
|
||||||
|
@ -477,7 +483,7 @@ void PixelShaderMngr::SetTevIndirectChanged(int id)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void PixelShaderMngr::SetZTetureOpChanged()
|
void PixelShaderMngr::SetZTextureOpChanged()
|
||||||
{
|
{
|
||||||
s_bZBiasChanged = true;
|
s_bZBiasChanged = true;
|
||||||
}
|
}
|
||||||
|
@ -546,7 +552,7 @@ void PixelShaderMngr::GetPixelShaderId(PIXELSHADERUID &uid)
|
||||||
s_curuid.values[0] = (s_curuid.values[0] & ~0x0ff00000) | (projtexcoords << 20);
|
s_curuid.values[0] = (s_curuid.values[0] & ~0x0ff00000) | (projtexcoords << 20);
|
||||||
// swap table
|
// swap table
|
||||||
for (int i = 0; i < 8; i += 2)
|
for (int i = 0; i < 8; i += 2)
|
||||||
((u8*)&uid.values[1])[i/2] = (bpmem.tevksel[i].hex & 0xf) | ((bpmem.tevksel[i + 1].hex & 0xf)<<4);
|
((u8*)&uid.values[1])[i/2] = (bpmem.tevksel[i].hex & 0xf) | ((bpmem.tevksel[i + 1].hex & 0xf) << 4);
|
||||||
|
|
||||||
uid.values[2] = s_texturemask;
|
uid.values[2] = s_texturemask;
|
||||||
int hdr = 3;
|
int hdr = 3;
|
||||||
|
|
|
@ -125,7 +125,7 @@ public:
|
||||||
static void SetAlpha(const AlphaFunc& alpha);
|
static void SetAlpha(const AlphaFunc& alpha);
|
||||||
static void SetDestAlpha(const ConstantAlpha& alpha);
|
static void SetDestAlpha(const ConstantAlpha& alpha);
|
||||||
static void SetTexDims(int texmapid, u32 width, u32 height, u32 wraps, u32 wrapt);
|
static void SetTexDims(int texmapid, u32 width, u32 height, u32 wraps, u32 wrapt);
|
||||||
static void SetZTetureBias(u32 bias);
|
static void SetZTextureBias(u32 bias);
|
||||||
static void SetIndTexScaleChanged();
|
static void SetIndTexScaleChanged();
|
||||||
static void SetIndMatrixChanged(int matrixidx);
|
static void SetIndMatrixChanged(int matrixidx);
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ public:
|
||||||
static void SetTevKSelChanged(int id);
|
static void SetTevKSelChanged(int id);
|
||||||
static void SetTevOrderChanged(int id);
|
static void SetTevOrderChanged(int id);
|
||||||
static void SetTevIndirectChanged(int id);
|
static void SetTevIndirectChanged(int id);
|
||||||
static void SetZTetureOpChanged();
|
static void SetZTextureOpChanged();
|
||||||
static void SetTexturesUsed(u32 nonpow2tex);
|
static void SetTexturesUsed(u32 nonpow2tex);
|
||||||
static void SetTexDimsChanged(int texmapid);
|
static void SetTexDimsChanged(int texmapid);
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,8 @@
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "VertexManager.h"
|
#include "VertexManager.h"
|
||||||
#include "VertexLoaderManager.h"
|
#include "VertexLoaderManager.h"
|
||||||
#include "VertexShaderManager.h"
|
|
||||||
#include "VertexManager.h"
|
|
||||||
#include "VertexLoader.h"
|
#include "VertexLoader.h"
|
||||||
#include "BPStructs.h"
|
#include "BPMemory.h"
|
||||||
#include "DataReader.h"
|
#include "DataReader.h"
|
||||||
|
|
||||||
#include "VertexLoader_Position.h"
|
#include "VertexLoader_Position.h"
|
||||||
|
@ -48,18 +46,18 @@
|
||||||
|
|
||||||
NativeVertexFormat *g_nativeVertexFmt;
|
NativeVertexFormat *g_nativeVertexFmt;
|
||||||
|
|
||||||
//these don't need to be saved
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#undef inline
|
#undef inline
|
||||||
#define inline
|
#define inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Direct
|
// Matrix components are first in GC format but later in PC format - we need to store it temporarily
|
||||||
// ==============================================================================
|
// when decoding each vertex.
|
||||||
static u8 s_curposmtx;
|
static u8 s_curposmtx;
|
||||||
static u8 s_curtexmtx[8];
|
static u8 s_curtexmtx[8];
|
||||||
static int s_texmtxwrite = 0;
|
static int s_texmtxwrite = 0;
|
||||||
static int s_texmtxread = 0;
|
static int s_texmtxread = 0;
|
||||||
|
|
||||||
static int loop_counter;
|
static int loop_counter;
|
||||||
|
|
||||||
// Vertex loaders read these. Although the scale ones should be baked into the shader.
|
// Vertex loaders read these. Although the scale ones should be baked into the shader.
|
||||||
|
@ -514,8 +512,6 @@ void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
VertexManager::EnableComponents(m_NativeFmt->m_components);
|
VertexManager::EnableComponents(m_NativeFmt->m_components);
|
||||||
|
|
||||||
// Load position and texcoord scale factors.
|
// Load position and texcoord scale factors.
|
||||||
// TODO - figure out if we should leave these independent, or compile them into
|
|
||||||
// the vertexloaders.
|
|
||||||
m_VtxAttr.PosFrac = g_VtxAttr[vtx_attr_group].g0.PosFrac;
|
m_VtxAttr.PosFrac = g_VtxAttr[vtx_attr_group].g0.PosFrac;
|
||||||
m_VtxAttr.texCoord[0].Frac = g_VtxAttr[vtx_attr_group].g0.Tex0Frac;
|
m_VtxAttr.texCoord[0].Frac = g_VtxAttr[vtx_attr_group].g0.Tex0Frac;
|
||||||
m_VtxAttr.texCoord[1].Frac = g_VtxAttr[vtx_attr_group].g1.Tex1Frac;
|
m_VtxAttr.texCoord[1].Frac = g_VtxAttr[vtx_attr_group].g1.Tex1Frac;
|
||||||
|
@ -528,10 +524,9 @@ void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
|
|
||||||
pVtxAttr = &m_VtxAttr;
|
pVtxAttr = &m_VtxAttr;
|
||||||
posScale = shiftLookup[m_VtxAttr.PosFrac];
|
posScale = shiftLookup[m_VtxAttr.PosFrac];
|
||||||
if (m_NativeFmt->m_components & VB_HAS_UVALL) {
|
if (m_NativeFmt->m_components & VB_HAS_UVALL)
|
||||||
for (int i = 0; i < 8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
tcScale[i] = shiftLookup[m_VtxAttr.texCoord[i].Frac];
|
tcScale[i] = shiftLookup[m_VtxAttr.texCoord[i].Frac];
|
||||||
}
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
colElements[i] = m_VtxAttr.color[i].Elements;
|
colElements[i] = m_VtxAttr.color[i].Elements;
|
||||||
|
|
||||||
|
@ -604,7 +599,6 @@ void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
if (count - v < remainingVerts)
|
if (count - v < remainingVerts)
|
||||||
remainingVerts = count - v;
|
remainingVerts = count - v;
|
||||||
|
|
||||||
// Clean tight loader loop. Todo - build the loop into the JIT code.
|
|
||||||
#ifdef USE_JIT
|
#ifdef USE_JIT
|
||||||
if (remainingVerts > 0) {
|
if (remainingVerts > 0) {
|
||||||
loop_counter = remainingVerts;
|
loop_counter = remainingVerts;
|
||||||
|
|
|
@ -117,7 +117,7 @@ void LOADERDECL Color_ReadDirect_24b_6666()
|
||||||
_SetCol6666(val);
|
_SetCol6666(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
// F|RES: i am not 100 percent show, but the colElements seems to be important for rendering only
|
// F|RES: i am not 100 percent sure, but the colElements seems to be important for rendering only
|
||||||
// at least it fixes mario party 4
|
// at least it fixes mario party 4
|
||||||
//
|
//
|
||||||
// if (colElements[colIndex])
|
// if (colElements[colIndex])
|
||||||
|
|
|
@ -126,7 +126,4 @@ public:
|
||||||
static float GetPixelAspectRatio();
|
static float GetPixelAspectRatio();
|
||||||
};
|
};
|
||||||
|
|
||||||
void LoadXFReg(u32 transferSize, u32 address, u32 *pData);
|
|
||||||
void LoadIndexedXF(u32 val, int array);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue