diff options
| -rwxr-xr-x | libpcsxcore/misc.c | 27 | ||||
| -rw-r--r-- | libpcsxcore/pgxp_gte.c | 2 | ||||
| -rw-r--r-- | libpcsxcore/pgxp_value.c | 2 | ||||
| -rw-r--r-- | libpcsxcore/pgxp_value.h | 1 | ||||
| -rwxr-xr-x | libpcsxcore/psxcommon.h | 2 | ||||
| -rwxr-xr-x | plugins/peopsxgl/externals.h | 1 | ||||
| -rw-r--r-- | plugins/peopsxgl/pgxp_gpu.c | 391 | ||||
| -rw-r--r-- | plugins/peopsxgl/pgxp_gpu.h | 10 | ||||
| -rwxr-xr-x | plugins/peopsxgl/prim.c | 24 | ||||
| -rwxr-xr-x | win32/gui/ConfigurePlugins.c | 4 | ||||
| -rwxr-xr-x | win32/gui/WndMain.c | 25 | ||||
| -rwxr-xr-x | win32/pcsxr.rc | 14 |
12 files changed, 219 insertions, 284 deletions
diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index 9b9b226a..f54abeb6 100755 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -363,32 +363,7 @@ int CheckCdrom() { } else { - switch (Config.PsxClock) - { - case 0: - PsxClockSpeed = 16934400; // 16.9344 MHz (0.5x) - break; - case 1: - PsxClockSpeed = 25401600; // 25.4016 MHz (0.75x) - break; - case 2: - PsxClockSpeed = 50803200; // 50.8032 MHz (1.5x) - break; - case 3: - PsxClockSpeed = 67737600; // 67.7376 MHz (2x) - break; - case 4: - PsxClockSpeed = 101606400; // 101.6064 MHz (3x) - break; - case 5: - PsxClockSpeed = 135475200; // 135.4752 MHz (4x) - break; - case 6: - PsxClockSpeed = 169344000; // 169.3440 MHz (5x) - break; - default: - PsxClockSpeed = 33868800; // 33.8688 MHz (stock) - } + PsxClockSpeed = 33868800 * Config.PsxClock; } if (CdromLabel[0] == ' ') { diff --git a/libpcsxcore/pgxp_gte.c b/libpcsxcore/pgxp_gte.c index 772dd2bb..51949646 100644 --- a/libpcsxcore/pgxp_gte.c +++ b/libpcsxcore/pgxp_gte.c @@ -182,7 +182,7 @@ int PGXP_NLCIP_valid(u32 sxy0, u32 sxy1, u32 sxy2) Validate(&SXY0, sxy0);
Validate(&SXY1, sxy1);
Validate(&SXY2, sxy2);
- if (((SXY0.flags & SXY1.flags & SXY2.flags & VALID_01) == VALID_01) && Config.PGXP_GTE && (Config.PGXP_Mode > 0))
+ if (((SXY0.flags & SXY1.flags & SXY2.flags & VALID_012) == VALID_012) && Config.PGXP_GTE && (Config.PGXP_Mode > 0))
return 1;
return 0;
}
diff --git a/libpcsxcore/pgxp_value.c b/libpcsxcore/pgxp_value.c index c52a8999..1ef79498 100644 --- a/libpcsxcore/pgxp_value.c +++ b/libpcsxcore/pgxp_value.c @@ -22,7 +22,7 @@ void MakeValid(PGXP_value *pV, u32 psxV) pV->x = psx.sw.l; pV->y = psx.sw.h; pV->z = 0.f; - pV->flags |= VALID_01; + pV->flags = VALID_01; pV->value = psx.d; } } diff --git a/libpcsxcore/pgxp_value.h b/libpcsxcore/pgxp_value.h index 68809fa2..a7ba1f3b 100644 --- a/libpcsxcore/pgxp_value.h +++ b/libpcsxcore/pgxp_value.h @@ -91,6 +91,7 @@ typedef enum #define VALID_2 (VALID << 16) #define VALID_3 (VALID << 24) #define VALID_01 (VALID_0 | VALID_1) +#define VALID_012 (VALID_0 | VALID_1 | VALID_2) #define VALID_ALL (VALID_0 | VALID_1 | VALID_2 | VALID_3) #define INV_VALID_ALL (ALL ^ VALID_ALL) //} PGXP_value_flags; diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h index d9cf2bdb..f89044a2 100755 --- a/libpcsxcore/psxcommon.h +++ b/libpcsxcore/psxcommon.h @@ -166,7 +166,7 @@ typedef struct { u8 HackFix; u8 MemHack; boolean OverClock; // enable overclocking - u8 PsxClock; + float PsxClock; // PGXP variables boolean PGXP_GTE; boolean PGXP_Cache; diff --git a/plugins/peopsxgl/externals.h b/plugins/peopsxgl/externals.h index 89c19743..1d82bf4f 100755 --- a/plugins/peopsxgl/externals.h +++ b/plugins/peopsxgl/externals.h @@ -195,6 +195,7 @@ typedef struct OGLVertexTag } c; unsigned int PGXP_flag; + unsigned int Vert_ID; } OGLVertex; typedef union EXShortTag diff --git a/plugins/peopsxgl/pgxp_gpu.c b/plugins/peopsxgl/pgxp_gpu.c index 926384d6..184c7452 100644 --- a/plugins/peopsxgl/pgxp_gpu.c +++ b/plugins/peopsxgl/pgxp_gpu.c @@ -58,6 +58,17 @@ typedef struct #define VALID_ALL (VALID_0 | VALID_1 | VALID_2 | VALID_3)
#define INV_VALID_ALL (ALL ^ VALID_ALL)
+enum PGXP_source
+{
+ SRC_2D = 0,
+ SRC_PGXP,
+ SRC_PGXP_NO_W,
+ SRC_NATIVE,
+ SRC_CACHE,
+ SRC_CACHE_AMBIGUOUS,
+ SRC_UNKNOWN
+};
+
unsigned int PGXP_tDebug = 0;
/////////////////////////////////
@@ -91,6 +102,26 @@ unsigned int IsSessionID(unsigned int vertID) return 0;
}
+unsigned int GetSessionIndex(unsigned int vertID)
+{
+ if (!IsSessionID(vertID))
+ return 0;
+
+ // No wrapping
+ if (lastID >= baseID)
+ return (vertID - baseID);
+
+ // If vertID is >= baseID it is pre-wrap and in session
+ if (vertID >= baseID)
+ return (vertID - baseID);
+
+ // vertID is < baseID, If it is <= lastID it is post-wrap and in session
+ if (vertID <= lastID)
+ return vertID + (0xFFFFFFFF - baseID);
+
+ return 0;
+}
+
void CALLBACK GPUpgxpCacheVertex(short sx, short sy, const unsigned char* _pVertex)
{
const PGXP_vertex* pNewVertex = (const PGXP_vertex*)_pVertex;
@@ -414,11 +445,12 @@ int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs) pVertex[i].y = y + yOffs;
pVertex[i].z = 0.95f;
pVertex[i].w = primStart[stride * i].z;
- pVertex[i].PGXP_flag = 1;
+ pVertex[i].PGXP_flag = SRC_PGXP;
+ pVertex[i].Vert_ID = primStart[stride * i].count;
if ((primStart[stride * i].flags & VALID_2) != VALID_2)
{
- pVertex[i].PGXP_flag = 6;
+ pVertex[i].PGXP_flag = SRC_PGXP_NO_W;
// __Log("GPPV No W: v:%x (%d, %d) pgxp(%f, %f)|\n", (currentAddr + 1 + (i * stride)) * 4, pPrimData[stride * i * 2], pPrimData[(stride * i * 2) + 1], primStart[stride * i].x, primStart[stride * i].y);
}
@@ -434,7 +466,7 @@ int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs) //if (primStart && ((primStart[stride * i].flags & VALID_01) == VALID_01) && primStart[stride * i].value != *(unsigned int*)(&pPrimData[stride * i * 2]))
// pVertex[i].PGXP_flag = 6;
//else
- pVertex[i].PGXP_flag = 2;
+ pVertex[i].PGXP_flag = SRC_NATIVE;
// Look in cache for valid vertex
pCacheVert = PGXP_GetCachedVertex(pPrimData[stride * i * 2], pPrimData[(stride * i * 2) + 1]);
@@ -448,12 +480,13 @@ int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs) pVertex[i].y = (pCacheVert->y + yOffs);
pVertex[i].z = 0.95f;
pVertex[i].w = pCacheVert->z;
- pVertex[i].PGXP_flag = 3;
+ pVertex[i].PGXP_flag = SRC_CACHE;
+ pVertex[i].Vert_ID = pCacheVert->count;
// reduce number of invalid vertices
invalidVert--;
}
else if(pCacheVert->mFlags > 1)
- pVertex[i].PGXP_flag = 4;
+ pVertex[i].PGXP_flag = SRC_CACHE_AMBIGUOUS;
}
}
@@ -469,9 +502,9 @@ int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs) for (unsigned i = 0; i < count; ++i)
pVertex[i].w = 1;
- if(PGXP_vDebug == 4)
- for (unsigned i = 0; i < count; ++i)
- pVertex[i].PGXP_flag = primIdx + 10;
+ //if(PGXP_vDebug == 5)
+ // for (unsigned i = 0; i < count; ++i)
+ // pVertex[i].PGXP_flag = primIdx + 10;
return 1;
}
@@ -480,7 +513,22 @@ int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs) //// Visual Debugging Functions
/////////////////////////////////
unsigned int PGXP_vDebug = 0;
-const unsigned int PGXP_maxDebug = 4;
+
+enum PGXP_vDebugMode
+{
+ vDEBUG_NONE = 0,
+ vDEBUG_SOURCE,
+ vDEBUG_W,
+ vDEBUG_OTZ,
+ vDEBUG_COLOUR,
+ vDEBUG_TEXTURE,
+ vDEBUG_PRIMTYPE,
+
+ vDEBUG_MAX,
+
+ vDEBUG_TEXCOORD,
+ vDEBUG_ID,
+};
const char red[4] = { 255, 0, 0, 255 };
const char blue[4] = { 0, 0, 255, 255 };
@@ -505,8 +553,8 @@ void CALLBACK GPUtoggleDebug(void) {
PGXP_vDebug++;
- if (PGXP_vDebug == PGXP_maxDebug)
- PGXP_vDebug = 0;
+ if (PGXP_vDebug == vDEBUG_MAX)
+ PGXP_vDebug = vDEBUG_NONE;
}
void ColourFromRange(float val, float min, float max, GLubyte alpha, int wrap)
@@ -561,7 +609,7 @@ void ColourFromRange(float val, float min, float max, GLubyte alpha, int wrap) glColor4f(r, g, b, (float)alpha/255.f);
}
-void PGXP_colour(OGLVertex* vertex, GLubyte alpha)
+void PGXP_colour(OGLVertex* vertex, GLubyte alpha, int prim, int isTextured, int colourMode, unsigned char* flatColour)
{
const char* pColour;
float fDepth;
@@ -573,76 +621,82 @@ void PGXP_colour(OGLVertex* vertex, GLubyte alpha) switch (PGXP_vDebug)
{
- case 1:
- // Vertex origin mode
+ case vDEBUG_SOURCE:
+ // Vertex source mode
switch (vertex->PGXP_flag)
{
- case 0:
+ case SRC_2D:
pColour = yellow;
break;
- case 1:
+ case SRC_PGXP:
pColour = blue;
break;
- case 2:
+ case SRC_PGXP_NO_W:
+ pColour = cyan;
+ break;
+ case SRC_NATIVE:
pColour = red;
break;
- case 3:
+ case SRC_CACHE:
pColour = green;
break;
- case 4:
+ case SRC_CACHE_AMBIGUOUS:
pColour = magenta;
break;
- case 6:
- pColour = cyan;
- break;
default:
pColour = mid_grey;
break;
}
glColor4ub(pColour[0], pColour[1], pColour[2], alpha);
break;
- case 2:
+ case vDEBUG_W:
// W component visualisation
ColourFromRange(vertex->w, 0, 0xFFFF, alpha, 0);
break;
- case 3:
- // draw order visualisation
+ case vDEBUG_OTZ:
+ // order table position visualisation
ColourFromRange(maxZ - currentDepth, 0, maxZ * 5, alpha, 0);// 1024 * 16);
break;
- case 4:
- // Primitive type
- switch (vertex->PGXP_flag - 10)
+ case vDEBUG_COLOUR:
+ // Vertex colour only
+ switch (colourMode)
{
- case 0:
- pColour = yellow;
- break;
- case 1:
- pColour = blue;
+ // Flat shaded primitives have their colour set earlier so we'll just leave it.
+ //case COLOUR_NONE:
+ // glColor4ub(255, 255, 255, 255);
+ // break;
+ case COLOUR_FLAT:
+ glColor4ubv(flatColour);
break;
- case 2:
- pColour = red;
- break;
- case 3:
- pColour = green;
- break;
- case 4:
- pColour = magenta;
- break;
- case 6:
- pColour = cyan;
- break;
- case 7:
- pColour = orange;
- default:
- pColour = black;
+ case COLOUR_SMOOTH:
+ glColor4ubv(vertex->c.col);
break;
}
- glColor4ub(pColour[0], pColour[1], pColour[2], alpha);
+
+ break;
+ case vDEBUG_TEXTURE:
+ // Texture only
+ glColor4ub(255, 255, 255, 255);
break;
+ case vDEBUG_PRIMTYPE:
+ // Primitive type
+ glColor4ub((prim+1) * 64, (isTextured) * 255, colourMode * 64, alpha);
+ break;
+ case vDEBUG_TEXCOORD:
+ // texture coordinates
+ glColor4f(vertex->sow, vertex->tow, isTextured, alpha);
+ break;
+ case vDEBUG_ID:
+ // Vertex ID
+ ColourFromRange(GetSessionIndex(vertex->Vert_ID), 0, GetSessionIndex(lastID-1), alpha, 1);
}
}
-int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4)
+#define DRAW_QUAD 0
+#define DRAW_TRI 1
+#define DRAW_TRIQUAD 2
+
+int DrawDebugPrim(int prim, OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4, int colourMode, int isTextured)
{
GLboolean bTexture = glIsEnabled(GL_TEXTURE_2D);
GLboolean bBlend = glIsEnabled(GL_BLEND);
@@ -657,55 +711,93 @@ int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* ver // return 0;
// Quit if PGXP_flag == ignore
- if ((vertex1->PGXP_flag == 5) ||
- (vertex2->PGXP_flag == 5) ||
- (vertex3->PGXP_flag == 5) ||
- (vertex4->PGXP_flag == 5))
+ if ((vertex1->PGXP_flag >= SRC_UNKNOWN) ||
+ (vertex2->PGXP_flag >= SRC_UNKNOWN) ||
+ (vertex3->PGXP_flag >= SRC_UNKNOWN))
return 1;
if (bBlend == GL_TRUE)
{
- alpha = 128;
- // glDisable(GL_BLEND);
+ // alpha = 128;
+ glDisable(GL_BLEND);
+ }
+
+ if(DrawSemiTrans)
+ {
+ glPolygonMode(GL_FRONT, GL_LINE);
+ glPolygonMode(GL_BACK, GL_LINE);
+ glLineWidth(5.f);
// return 1;
}
glGetIntegerv(GL_SHADE_MODEL, &iShadeModel);
glGetFloatv(GL_CURRENT_COLOR, fColour);
- glDisable(GL_TEXTURE_2D);
+ if(PGXP_vDebug != vDEBUG_TEXTURE)
+ glDisable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
- glBegin(GL_TRIANGLE_STRIP);
+ switch (prim)
+ {
+ case DRAW_QUAD:
+ glBegin(GL_QUADS);
+ break;
+ case DRAW_TRI:
+ glBegin(GL_TRIANGLES);
+ break;
+ case DRAW_TRIQUAD:
+ glBegin(GL_TRIANGLE_STRIP);
+ break;
+ }
- PGXP_colour(vertex1, alpha);
+ PGXP_colour(vertex1, alpha, prim, isTextured, colourMode, vertex1->c.col);
+ glTexCoord2fv(&vertex1->sow);
PGXP_glVertexfv(&vertex1->x);
- PGXP_colour(vertex2, alpha);
+ PGXP_colour(vertex2, alpha, prim, isTextured, colourMode, vertex1->c.col);
+ glTexCoord2fv(&vertex2->sow);
PGXP_glVertexfv(&vertex2->x);
- PGXP_colour(vertex3, alpha);
+ PGXP_colour(vertex3, alpha, prim, isTextured, colourMode, vertex1->c.col);
+ glTexCoord2fv(&vertex3->sow);
PGXP_glVertexfv(&vertex3->x);
- PGXP_colour(vertex4, alpha);
- PGXP_glVertexfv(&vertex4->x);
+ if (prim != DRAW_TRI)
+ {
+ PGXP_colour(vertex4, alpha, prim, isTextured, colourMode, vertex1->c.col);
+ glTexCoord2fv(&vertex4->sow);
+ PGXP_glVertexfv(&vertex4->x);
+ }
glEnd();
- if (bBlend == GL_TRUE)
- glDisable(GL_BLEND);
+// if (bBlend == GL_TRUE)
+// glDisable(GL_BLEND);
+ glLineWidth(1.f);
glPolygonMode(GL_FRONT, GL_LINE);
glPolygonMode(GL_BACK, GL_LINE);
- glBegin(GL_TRIANGLE_STRIP);
+ switch (prim)
+ {
+ case DRAW_QUAD:
+ glBegin(GL_QUADS);
+ break;
+ case DRAW_TRI:
+ glBegin(GL_TRIANGLES);
+ break;
+ case DRAW_TRIQUAD:
+ glBegin(GL_TRIANGLE_STRIP);
+ break;
+ }
glColor4ubv(black);
PGXP_glVertexfv(&vertex1->x);
PGXP_glVertexfv(&vertex2->x);
PGXP_glVertexfv(&vertex3->x);
- PGXP_glVertexfv(&vertex4->x);
+ if (prim != DRAW_TRI)
+ PGXP_glVertexfv(&vertex4->x);
glColor4fv(fColour);
@@ -725,164 +817,17 @@ int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* ver return 1;
}
-int PGXP_DrawDebugTri(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3)
+int PGXP_DrawDebugTri(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, int colourMode, int isTextured)
{
- GLboolean bTexture = glIsEnabled(GL_TEXTURE_2D);
- GLboolean bBlend = glIsEnabled(GL_BLEND);
- GLfloat fColour[4];
- GLint iShadeModel;
- GLubyte alpha = 255;
-
-
- //if ((vertex1->PGXP_flag == 0) ||
- // (vertex2->PGXP_flag == 0) ||
- // (vertex3->PGXP_flag == 0))
- // return 0;
-
-
- // Quit if PGXP_flag == ignore
- if ((vertex1->PGXP_flag == 5) ||
- (vertex2->PGXP_flag == 5) ||
- (vertex3->PGXP_flag == 5))
- return 1;
-
- if (bBlend == GL_TRUE)
- {
- alpha = 128;
- // glDisable(GL_BLEND);
- // return 1;
- }
-
- glGetIntegerv(GL_SHADE_MODEL, &iShadeModel);
- glGetFloatv(GL_CURRENT_COLOR, fColour);
-
- glDisable(GL_TEXTURE_2D);
- glShadeModel(GL_SMOOTH);
-
- glBegin(GL_TRIANGLES);
-
- PGXP_colour(vertex1, alpha);
- PGXP_glVertexfv(&vertex1->x);
-
- PGXP_colour(vertex2, alpha);
- PGXP_glVertexfv(&vertex2->x);
-
- PGXP_colour(vertex3, alpha);
- PGXP_glVertexfv(&vertex3->x);
-
- glEnd();
-
- if (bBlend == GL_TRUE)
- glDisable(GL_BLEND);
-
- glPolygonMode(GL_FRONT, GL_LINE);
- glPolygonMode(GL_BACK, GL_LINE);
-
- glBegin(GL_TRIANGLE_STRIP);
-
- glColor4ubv(black);
- PGXP_glVertexfv(&vertex1->x);
- PGXP_glVertexfv(&vertex2->x);
- PGXP_glVertexfv(&vertex3->x);
-
- glColor4fv(fColour);
-
- glEnd();
-
- glPolygonMode(GL_FRONT, GL_FILL);
- glPolygonMode(GL_BACK, GL_FILL);
-
- if (bTexture == GL_TRUE)
- glEnable(GL_TEXTURE_2D);
-
- if (bBlend == GL_TRUE)
- glEnable(GL_BLEND);
-
- glShadeModel(iShadeModel);
-
- return 1;
+ return DrawDebugPrim(DRAW_TRI, vertex1, vertex2, vertex3, NULL, colourMode, isTextured);
}
-int PGXP_DrawDebugQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4)
+int PGXP_DrawDebugQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4, int colourMode, int isTextured)
{
- GLboolean bTexture = glIsEnabled(GL_TEXTURE_2D);
- GLboolean bBlend = glIsEnabled(GL_BLEND);
- GLfloat fColour[4];
- GLint iShadeModel;
- GLubyte alpha = 255;
-
-
- //if ((vertex1->PGXP_flag == 0) ||
- // (vertex2->PGXP_flag == 0) ||
- // (vertex3->PGXP_flag == 0) ||
- // (vertex4->PGXP_flag == 0))
- // return 0;
-
-
- // Quit if PGXP_flag == ignore
- if ((vertex1->PGXP_flag == 5) ||
- (vertex2->PGXP_flag == 5) ||
- (vertex3->PGXP_flag == 5) ||
- (vertex4->PGXP_flag == 5))
- return 1;
-
- if (bBlend == GL_TRUE)
- {
- alpha = 128;
- // glDisable(GL_BLEND);
- // return 1;
- }
-
- glGetIntegerv(GL_SHADE_MODEL, &iShadeModel);
- glGetFloatv(GL_CURRENT_COLOR, fColour);
-
- glDisable(GL_TEXTURE_2D);
- glShadeModel(GL_SMOOTH);
-
- glBegin(GL_QUADS);
-
- PGXP_colour(vertex1, alpha);
- PGXP_glVertexfv(&vertex1->x);
-
- PGXP_colour(vertex2, alpha);
- PGXP_glVertexfv(&vertex2->x);
-
- PGXP_colour(vertex3, alpha);
- PGXP_glVertexfv(&vertex3->x);
-
- PGXP_colour(vertex4, alpha);
- PGXP_glVertexfv(&vertex4->x);
-
- glEnd();
-
- glPolygonMode(GL_FRONT, GL_LINE);
- glPolygonMode(GL_BACK, GL_LINE);
-
- if (bBlend == GL_TRUE)
- glDisable(GL_BLEND);
-
- glBegin(GL_TRIANGLE_STRIP);
-
- glColor4ubv(black);
- PGXP_glVertexfv(&vertex1->x);
- PGXP_glVertexfv(&vertex2->x);
- PGXP_glVertexfv(&vertex3->x);
- PGXP_glVertexfv(&vertex4->x);
-
- glColor4fv(fColour);
-
- glEnd();
-
- glPolygonMode(GL_FRONT, GL_FILL);
- glPolygonMode(GL_BACK, GL_FILL);
-
- if (bTexture == GL_TRUE)
- glEnable(GL_TEXTURE_2D);
-
- if (bBlend == GL_TRUE)
- glEnable(GL_BLEND);
-
- glShadeModel(iShadeModel);
+ return DrawDebugPrim(DRAW_QUAD, vertex1, vertex2, vertex3, vertex4, colourMode, isTextured);
+}
- return 1;
+int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4, int colourMode, int isTextured)
+{
+ return DrawDebugPrim(DRAW_TRIQUAD, vertex1, vertex2, vertex3, vertex4, colourMode, isTextured);
}
\ No newline at end of file diff --git a/plugins/peopsxgl/pgxp_gpu.h b/plugins/peopsxgl/pgxp_gpu.h index 789993d4..db0496a2 100644 --- a/plugins/peopsxgl/pgxp_gpu.h +++ b/plugins/peopsxgl/pgxp_gpu.h @@ -41,10 +41,14 @@ void PGXP_SetDepth(unsigned int addr); int PGXP_GetVertices(unsigned int* addr, void* pOutput, int xOffs, int yOffs);
void PGXP_glVertexfv(GLfloat* pVertex);
+#define COLOUR_NONE 0
+#define COLOUR_FLAT 1
+#define COLOUR_SMOOTH 2
+
extern unsigned int PGXP_vDebug;
extern unsigned int PGXP_debugFlags[4];
-int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4);
-int PGXP_DrawDebugTri(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3);
-int PGXP_DrawDebugQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4);
+int PGXP_DrawDebugTriQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4, int colourMode, int isTextured);
+int PGXP_DrawDebugTri(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, int colourMode, int isTextured);
+int PGXP_DrawDebugQuad(OGLVertex* vertex1, OGLVertex* vertex2, OGLVertex* vertex3, OGLVertex* vertex4, int colourMode, int isTextured);
#endif // _PGXP_GPU_H_
diff --git a/plugins/peopsxgl/prim.c b/plugins/peopsxgl/prim.c index 7dd017e0..b2aad92b 100755 --- a/plugins/peopsxgl/prim.c +++ b/plugins/peopsxgl/prim.c @@ -152,7 +152,7 @@ static __inline void PRIMdrawTexturedQuad(OGLVertex* vertex1, OGLVertex* vertex2 { if (PGXP_vDebug) { - if(PGXP_DrawDebugTriQuad(vertex1, vertex2, vertex4, vertex3)) + if(PGXP_DrawDebugTriQuad(vertex1, vertex2, vertex4, vertex3, COLOUR_NONE, 1)) return; } @@ -179,7 +179,7 @@ static __inline void PRIMdrawTexturedTri(OGLVertex* vertex1, OGLVertex* vertex2, { if (PGXP_vDebug) { - if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3)) + if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3, COLOUR_NONE, 1)) return; } @@ -202,7 +202,7 @@ static __inline void PRIMdrawTexGouraudTriColor(OGLVertex* vertex1, OGLVertex* v { if (PGXP_vDebug) { - if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3)) + if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3, COLOUR_SMOOTH, 1)) return; } @@ -229,7 +229,7 @@ static __inline void PRIMdrawTexGouraudTriColorQuad(OGLVertex* vertex1, OGLVerte { if (PGXP_vDebug) { - if(PGXP_DrawDebugTriQuad(vertex1, vertex2, vertex4, vertex3)) + if(PGXP_DrawDebugTriQuad(vertex1, vertex2, vertex4, vertex3, COLOUR_SMOOTH, 1)) return; } @@ -258,7 +258,7 @@ static __inline void PRIMdrawTri(OGLVertex* vertex1, OGLVertex* vertex2, OGLVert { if (PGXP_vDebug) { - if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3)) + if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3, COLOUR_NONE, 0)) return; } @@ -276,7 +276,7 @@ static __inline void PRIMdrawTri2(OGLVertex* vertex1, OGLVertex* vertex2, { if (PGXP_vDebug) { - if(PGXP_DrawDebugTriQuad(vertex1, vertex3, vertex2, vertex4)) + if(PGXP_DrawDebugTriQuad(vertex1, vertex3, vertex2, vertex4, 0, 0)) return; } @@ -295,7 +295,7 @@ static __inline void PRIMdrawGouraudTriColor(OGLVertex* vertex1, OGLVertex* vert { if (PGXP_vDebug) { - if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3)) + if(PGXP_DrawDebugTri(vertex1, vertex2, vertex3, COLOUR_SMOOTH, 0)) return; } @@ -318,7 +318,7 @@ static __inline void PRIMdrawGouraudTri2Color(OGLVertex* vertex1, OGLVertex* ver { if (PGXP_vDebug) { - if(PGXP_DrawDebugTriQuad(vertex1, vertex3, vertex2, vertex4)) + if(PGXP_DrawDebugTriQuad(vertex1, vertex3, vertex2, vertex4, COLOUR_SMOOTH, 0)) return; } @@ -343,7 +343,7 @@ static __inline void PRIMdrawFlatLine(OGLVertex* vertex1, OGLVertex* vertex2,OGL { if (PGXP_vDebug) { - if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4)) + if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4, COLOUR_FLAT, 0)) return; } @@ -364,7 +364,7 @@ static __inline void PRIMdrawGouraudLine(OGLVertex* vertex1, OGLVertex* vertex2, { if (PGXP_vDebug) { - if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4)) + if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4, COLOUR_SMOOTH, 0)) return; } @@ -391,7 +391,7 @@ static __inline void PRIMdrawQuad(OGLVertex* vertex1, OGLVertex* vertex2, { if (PGXP_vDebug) { - if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4)) + if(PGXP_DrawDebugQuad(vertex1, vertex2, vertex3, vertex4, COLOUR_NONE, 0)) return; } @@ -2556,7 +2556,7 @@ void DrawMultiBlur(void) for (unsigned int i = 0; i < 4; ++i) { - vertex[i].PGXP_flag = 5; + vertex[i].PGXP_flag = 999; vertex[i].w = 1.f; } diff --git a/win32/gui/ConfigurePlugins.c b/win32/gui/ConfigurePlugins.c index f67820db..c5ae207a 100755 --- a/win32/gui/ConfigurePlugins.c +++ b/win32/gui/ConfigurePlugins.c @@ -94,7 +94,7 @@ int LoadConfig() { QueryKeyV("Cpu", Conf->Cpu); QueryKeyV("PsxType", Conf->PsxType); - QueryKeyV("PsxClock", Conf->PsxClock); + QueryKey(sizeof(Conf->PsxClock), "PsxClock", &Conf->PsxClock); QueryKeyV("PGXP_GTE", Conf->PGXP_GTE); QueryKeyV("PGXP_Cache", Conf->PGXP_Cache); @@ -161,7 +161,7 @@ void SaveConfig() { SetKeyV("Cpu", Conf->Cpu); SetKeyV("PsxType", Conf->PsxType); - SetKeyV("PsxClock", Conf->PsxClock); + SetKey("PsxClock", &Conf->PsxClock, sizeof(Conf->PsxClock), REG_BINARY); SetKeyV("PGXP_GTE", Conf->PGXP_GTE); SetKeyV("PGXP_Cache", Conf->PGXP_Cache); diff --git a/win32/gui/WndMain.c b/win32/gui/WndMain.c index 1e3ae202..14921890 100755 --- a/win32/gui/WndMain.c +++ b/win32/gui/WndMain.c @@ -1430,6 +1430,7 @@ BOOL CALLBACK ConfigurePGXPDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPa BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { long tmp; RECT rect; + char cs[256]; switch(uMsg) { case WM_INITDIALOG: @@ -1484,14 +1485,16 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar ComboBox_AddString(GetDlgItem(hW,IDC_PSXTYPES), "PAL"); ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXTYPES),Config.PsxType); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "0.5x"); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "0.5"); ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "0.75"); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "1.5x"); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "2.0x"); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "3.0x"); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "4.0x"); - ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "5.0x"); - ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXCLOCK), Config.PsxClock); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "1.5"); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "2.0"); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "3.0"); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "4.0"); + ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "5.0"); + //ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXCLOCK), Config.PsxClock); + sprintf(cs, "%.2f", Config.PsxClock); + SetDlgItemText(hW, IDC_PSXCLOCK, cs); if (Config.Cpu == CPU_DYNAREC) { Config.Debug = 0; @@ -1515,7 +1518,13 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar if (tmp == 0) Config.PsxType = 0; else Config.PsxType = 1; - Config.PsxClock= ComboBox_GetCurSel(GetDlgItem(hW, IDC_PSXCLOCK)); + //Config.PsxClock= ComboBox_GetCurSel(GetDlgItem(hW, IDC_PSXCLOCK)); + + GetDlgItemText(hW, IDC_PSXCLOCK, cs, 255); + Config.PsxClock = (float)atof(cs); + //if (Config.PsxClock<0.0f) Config.PsxClock = 0.0f; + //if (Config.PsxClock>100.0f) Config.PsxClock = 100.0f; + Config.Xa = Button_GetCheck(GetDlgItem(hW,IDC_XA)); Config.SioIrq = Button_GetCheck(GetDlgItem(hW,IDC_SIO)); diff --git a/win32/pcsxr.rc b/win32/pcsxr.rc index 69c8663e..935356a9 100755 --- a/win32/pcsxr.rc +++ b/win32/pcsxr.rc @@ -109,9 +109,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Cpu Config"
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
- DEFPUSHBUTTON "OK",IDOK,51,323,50,14
- PUSHBUTTON "Cancel",IDCANCEL,119,323,50,14
- GROUPBOX "Misc Options",IDC_MISCOPT,6,5,220,236
+ DEFPUSHBUTTON "OK",IDOK,51,334,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,119,334,50,14
+ GROUPBOX "Misc Options",IDC_MISCOPT,6,5,220,247
CONTROL "Disable Xa Decoding",IDC_XA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,15,205,10
CONTROL "Sio Irq Always Enabled",IDC_SIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,30,205,10
CONTROL "Spu Irq Always Enabled",IDC_SPUIRQ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,45,205,10
@@ -132,10 +132,10 @@ BEGIN CONTROL "Save window position",IDC_SAVEWINDOWPOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,210,205,10
CONTROL "Compatibility hacks (Raystorm/VH-D/MML/Cart World/...)",IDC_HACKFIX,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,225,205,10
- CONTROL "Wipeout MemHack",IDC_MEMHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,240,205,10
- GROUPBOX "CPU Overclocking",IDC_SELPSXCLOCK,7,290,220,32
+ CONTROL "Memhack (formally Wipeout)",IDC_MEMHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,314,205,10
+ GROUPBOX "Overclocking",IDC_SELPSXCLOCK,7,290,220,37
CONTROL "Enable",IDC_OVRCLOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,300,80,10
- COMBOBOX IDC_PSXCLOCK,105,297,53,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_PSXCLOCK,105,297,53,50,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
END
IDD_NETPLAY DIALOG 0, 0, 165, 95
@@ -316,7 +316,7 @@ BEGIN LEFTMARGIN, 7
RIGHTMARGIN, 226
TOPMARGIN, 7
- BOTTOMMARGIN, 337
+ BOTTOMMARGIN, 348
END
IDD_NETPLAY, DIALOG
|
