spu2-x: compilation fix; pcsx2: fix the codeblock project; zzogl-pg: Add some comments and debugging code.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4122 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2010-12-22 10:43:20 +00:00
parent 0962198a3b
commit def52f300e
3 changed files with 70 additions and 1 deletions

View File

@ -510,6 +510,11 @@
<Option weight="0" /> <Option weight="0" />
<Option compiler="gcc" use="1" buildCommand="$(SvnRootDir)/tools/bin2app.sh $(SvnRootDir) $file" /> <Option compiler="gcc" use="1" buildCommand="$(SvnRootDir)/tools/bin2app.sh $(SvnRootDir) $file" />
</Unit> </Unit>
<Unit filename="../gui/Resources/ConfigIcon_Appearance.png">
<Option compile="1" />
<Option weight="0" />
<Option compiler="gcc" use="1" buildCommand="$(SvnRootDir)/tools/bin2app.sh $(SvnRootDir) $file" />
</Unit>
<Unit filename="../gui/Resources/ConfigIcon_Cpu.h" /> <Unit filename="../gui/Resources/ConfigIcon_Cpu.h" />
<Unit filename="../gui/Resources/ConfigIcon_Cpu.png"> <Unit filename="../gui/Resources/ConfigIcon_Cpu.png">
<Option compile="1" /> <Option compile="1" />

View File

@ -69,7 +69,7 @@ static __forceinline bool RegDump() { return _RegDump & DebugEnabled; }*/
extern int Interpolation; extern int Interpolation;
extern int ReverbBoost; extern int ReverbBoost;
extern bool EffectsDisabled; extern bool EffectsDisabled;
extern bool postprocess_filter_enabled = 1; extern bool postprocess_filter_enabled;
extern int AutoDMAPlayRate[2]; extern int AutoDMAPlayRate[2];

View File

@ -42,6 +42,42 @@ u32 s_uClampData[2] = {0, };
//u32 results[65535] = {0, }; //u32 results[65535] = {0, };
// Note that not all the registers are currently handled, even if they write values out.
// For reference, I'm starting a list of unhandled flags here. I'm sure I missed some,
// so feel free to add to this, or remove ones that are handled that I missed.
// Cases where these values are set would be useful, too.
//
// In GIFRegHandlerFOG, I don't see gs.vertexregs.f being used anywhere afterwards.
// GIFRegHandlerTEX1 doesn't look like anything other then mmag and mmin are handled.
// This includes:
// lcm - the lod (level of detail) calculation method. If 0, it's (log2(1/|Q|)<<L)+K), whereas if it is one, it's just K.
// mxl - This is what MIPMAP level we use. The default is 0, and any other level uses miptbp0 & 1 to get the texture width.
// mtba - this is the base address specification for MIPMAP level 1+.
// l - Yeah, this is for the LOD calculation.
// k - This too.
// This largely sums up as that we don't support MIPMAP level 1+ (much like GSdx), and LOD.
//
// In GIFRegHandlerSCANMSK, it doesn't look like gs.smask is used, though it may have been in the old resolve code.
// Lets see: 00 is normal drawing, 01 is reserved, 10 prohibits drawing to even y coords, and 11 prohibits drawing to odd y coords.
//
// In GIFRegHandlerMIPTBP1 & 2, both miptbp0 & miptbp1 look unused, which isn't suprising, given mxl not being checked.
//
// GIFRegHandlerDIMX doesn't even have any code in it!
// This is supposed to read in the matrix for dithering.
//
// In GIFRegHandlerDTHE, nothing is done with gs.dthe.
// This goes right with the last one, because dthe is set to 1 when dithering with the dthe matrix.
// In GIFRegHandlerCOLCLAMP, gs.colclamp is not used.
// This is color clamping on the RGB value. If it's 0, it is set to mask, the lower 8 bits are enabled, and it wraps around. At 1, it is clamped from 0-255.
//#define SPAM_UNUSED_REGISTERS
#ifdef SPAM_UNUSED_REGISTERS
#define REG_LOG ZZLog::Error_Log
#else
#define REG_LOG 0 &&
#endif
void __gifCall GIFPackedRegHandlerNull(const u32* data) void __gifCall GIFPackedRegHandlerNull(const u32* data)
{ {
FUNCLOG FUNCLOG
@ -109,6 +145,7 @@ void __gifCall GIFPackedRegHandlerFOG(const u32* data)
{ {
FUNCLOG FUNCLOG
gs.vertexregs.f = (data[3] & 0xff0) >> 4; gs.vertexregs.f = (data[3] & 0xff0) >> 4;
if (gs.vertexregs.f != 0) REG_LOG("GIFPackedRegHandlerFOG == %d", gs.vertexregs.f);
} }
void __gifCall GIFPackedRegHandlerA_D(const u32* data) void __gifCall GIFPackedRegHandlerA_D(const u32* data)
@ -273,6 +310,8 @@ void __gifCall GIFRegHandlerFOG(const u32* data)
FUNCLOG FUNCLOG
//gs.gsvertex[gs.primIndex].f = (data[1] >> 24); // shift to upper bits //gs.gsvertex[gs.primIndex].f = (data[1] >> 24); // shift to upper bits
gs.vertexregs.f = data[1] >> 24; gs.vertexregs.f = data[1] >> 24;
if (gs.vertexregs.f != 0) REG_LOG("GIFPackedRegHandlerFOG == %d", gs.vertexregs.f);
} }
void __gifCall GIFRegHandlerXYZF3(const u32* data) void __gifCall GIFRegHandlerXYZF3(const u32* data)
@ -320,6 +359,11 @@ void __gifCall GIFRegHandlerTEX1(const u32* data)
tex1.mtba = (data[0] >> 9) & 0x1; tex1.mtba = (data[0] >> 9) & 0x1;
tex1.l = (data[0] >> 19) & 0x3; tex1.l = (data[0] >> 19) & 0x3;
tex1.k = (data[1] >> 4) & 0xff; tex1.k = (data[1] >> 4) & 0xff;
#ifdef SPAM_UNUSED_REGISTERS
REG_LOG("Lcm = %d, l = %d, k = %d", tex1.lcm, tex1.l, tex1.k);
if (tex1.mxl != 0) REG_LOG("MIPMAP level set to %d, which is unsupported.");
#endif
} }
template <u32 ctxt> template <u32 ctxt>
@ -420,6 +464,7 @@ void __gifCall GIFRegHandlerSCANMSK(const u32* data)
// ResolveZ(&vb[0]); // ResolveZ(&vb[0]);
gs.smask = data[0] & 0x3; gs.smask = data[0] & 0x3;
REG_LOG("Scanmsk == %d", gs.smask);
} }
template <u32 ctxt> template <u32 ctxt>
@ -433,6 +478,13 @@ void __gifCall GIFRegHandlerMIPTBP1(const u32* data)
miptbp0.tbw[1] = (data[1] >> 2) & 0x3f; miptbp0.tbw[1] = (data[1] >> 2) & 0x3f;
miptbp0.tbp[2] = (data[1] >> 8) & 0x3fff; miptbp0.tbp[2] = (data[1] >> 8) & 0x3fff;
miptbp0.tbw[2] = (data[1] >> 22) & 0x3f; miptbp0.tbw[2] = (data[1] >> 22) & 0x3f;
#ifdef SPAM_UNUSED_REGISTERS
if ((miptbp0.tbp[0] != 0) || (miptbp0.tbp[1] != 0) || (miptbp0.tbp[2] != 0))
{
REG_LOG("MIPTBP1: 0:%d(%d) 1:%d(%d) 2:%d(%d).", \
miptbp0.tbp[0], miptbp0.tbw[0], miptbp0.tbp[1], miptbp0.tbw[1], miptbp0.tbp[2], miptbp0.tbw[2]);
}
#endif
} }
template <u32 ctxt> template <u32 ctxt>
@ -446,6 +498,13 @@ void __gifCall GIFRegHandlerMIPTBP2(const u32* data)
miptbp1.tbw[1] = (data[1] >> 2) & 0x3f; miptbp1.tbw[1] = (data[1] >> 2) & 0x3f;
miptbp1.tbp[2] = (data[1] >> 8) & 0x3fff; miptbp1.tbp[2] = (data[1] >> 8) & 0x3fff;
miptbp1.tbw[2] = (data[1] >> 22) & 0x3f; miptbp1.tbw[2] = (data[1] >> 22) & 0x3f;
#ifdef SPAM_UNUSED_REGISTERS
if ((miptbp1.tbp[0] != 0) || (miptbp1.tbp[1] != 0) || (miptbp1.tbp[2] != 0))
{
REG_LOG("MIPTBP2: 0:%d(%d) 1:%d(%d) 2:%d(%d).", \
miptbp1.tbp[0], miptbp1.tbw[0], miptbp1.tbp[1], miptbp1.tbw[1], miptbp1.tbp[2], miptbp1.tbw[2]);
}
#endif
} }
void __gifCall GIFRegHandlerTEXA(const u32* data) void __gifCall GIFRegHandlerTEXA(const u32* data)
@ -535,12 +594,17 @@ void __gifCall GIFRegHandlerDTHE(const u32* data)
{ {
FUNCLOG FUNCLOG
gs.dthe = data[0] & 0x1; gs.dthe = data[0] & 0x1;
if (gs.dthe != 0) REG_LOG("Dithering set. (but not implemented.)");
} }
void __gifCall GIFRegHandlerCOLCLAMP(const u32* data) void __gifCall GIFRegHandlerCOLCLAMP(const u32* data)
{ {
FUNCLOG FUNCLOG
gs.colclamp = data[0] & 0x1; gs.colclamp = data[0] & 0x1;
if (gs.colclamp == 0)
REG_LOG("COLCLAMP == MASK");
else
REG_LOG("COLCLAMP == CLAMP");
} }
template <u32 ctxt> template <u32 ctxt>