mirror of
https://github.com/libretro/ppsspp.git
synced 2025-02-24 02:40:43 +00:00
Merge pull request #8405 from unknownbrackets/debugger
gedbg: Format a few more cmds
This commit is contained in:
commit
41a9e00f01
@ -554,7 +554,7 @@ void GenerateVertexShaderDX9(const ShaderID &id, char *buffer) {
|
||||
break;
|
||||
|
||||
case GE_TEXMAP_ENVIRONMENT_MAP: // Shade mapping - use dots from light sources.
|
||||
WRITE(p, " Out.v_texcoord.xy = u_uvscaleoffset.xy * float2(1.0 + dot(normalize(u_lightpos%i), worldnormal), 1.0 + dot(normalize(u_lightpos%i), worldnormal)) * 0.5;\n", gstate.getUVLS0(), gstate.getUVLS1());
|
||||
WRITE(p, " Out.v_texcoord.xy = u_uvscaleoffset.xy * float2(1.0 + dot(normalize(u_lightpos%i), worldnormal), 1.0 + dot(normalize(u_lightpos%i), worldnormal)) * 0.5;\n", ls0, ls1);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -68,9 +68,15 @@ enum CmdFormatType {
|
||||
CMD_FMT_TEXMODE,
|
||||
CMD_FMT_LOGICOP,
|
||||
CMD_FMT_TEXWRAP,
|
||||
CMD_FMT_TEXLEVEL,
|
||||
CMD_FMT_TEXFILTER,
|
||||
CMD_FMT_TEXMAPMODE,
|
||||
CMD_FMT_TEXSHADELS,
|
||||
CMD_FMT_SHADEMODEL,
|
||||
CMD_FMT_LIGHTMODE,
|
||||
CMD_FMT_LIGHTTYPE,
|
||||
CMD_FMT_CULL,
|
||||
CMD_FMT_PATCHPRIMITIVE,
|
||||
};
|
||||
|
||||
struct TabStateRow {
|
||||
@ -116,12 +122,11 @@ static const TabStateRow stateLightingRows[] = {
|
||||
{ L"Mat. specular coef", GE_CMD_MATERIALSPECULARCOEF, CMD_FMT_FLOAT24 },
|
||||
{ L"Reverse normals", GE_CMD_REVERSENORMAL, CMD_FMT_FLAG },
|
||||
{ L"Shade model", GE_CMD_SHADEMODE, CMD_FMT_SHADEMODEL },
|
||||
// TODO: Format?
|
||||
{ L"Light mode", GE_CMD_LIGHTMODE, CMD_FMT_NUM, GE_CMD_LIGHTINGENABLE },
|
||||
{ L"Light type 0", GE_CMD_LIGHTTYPE0, CMD_FMT_NUM, GE_CMD_LIGHTENABLE0 },
|
||||
{ L"Light type 1", GE_CMD_LIGHTTYPE1, CMD_FMT_NUM, GE_CMD_LIGHTENABLE1 },
|
||||
{ L"Light type 2", GE_CMD_LIGHTTYPE2, CMD_FMT_NUM, GE_CMD_LIGHTENABLE2 },
|
||||
{ L"Light type 3", GE_CMD_LIGHTTYPE3, CMD_FMT_NUM, GE_CMD_LIGHTENABLE3 },
|
||||
{ L"Light mode", GE_CMD_LIGHTMODE, CMD_FMT_LIGHTMODE, GE_CMD_LIGHTINGENABLE },
|
||||
{ L"Light type 0", GE_CMD_LIGHTTYPE0, CMD_FMT_LIGHTTYPE, GE_CMD_LIGHTENABLE0 },
|
||||
{ L"Light type 1", GE_CMD_LIGHTTYPE1, CMD_FMT_LIGHTTYPE, GE_CMD_LIGHTENABLE1 },
|
||||
{ L"Light type 2", GE_CMD_LIGHTTYPE2, CMD_FMT_LIGHTTYPE, GE_CMD_LIGHTENABLE2 },
|
||||
{ L"Light type 3", GE_CMD_LIGHTTYPE3, CMD_FMT_LIGHTTYPE, GE_CMD_LIGHTENABLE3 },
|
||||
{ L"Light pos 0", GE_CMD_LX0, CMD_FMT_XYZ, GE_CMD_LIGHTENABLE0, GE_CMD_LY0, GE_CMD_LZ0 },
|
||||
{ L"Light pos 1", GE_CMD_LX1, CMD_FMT_XYZ, GE_CMD_LIGHTENABLE1, GE_CMD_LY1, GE_CMD_LZ1 },
|
||||
{ L"Light pos 2", GE_CMD_LX2, CMD_FMT_XYZ, GE_CMD_LIGHTENABLE2, GE_CMD_LY2, GE_CMD_LZ2 },
|
||||
@ -163,16 +168,13 @@ static const TabStateRow stateTextureRows[] = {
|
||||
{ L"Tex U offset", GE_CMD_TEXOFFSETU, CMD_FMT_FLOAT24, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex V offset", GE_CMD_TEXOFFSETV, CMD_FMT_FLOAT24, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex mapping mode", GE_CMD_TEXMAPMODE, CMD_FMT_TEXMAPMODE, GE_CMD_TEXTUREMAPENABLE },
|
||||
// TODO: Format.
|
||||
{ L"Tex shade srcs", GE_CMD_TEXSHADELS, CMD_FMT_HEX, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex shade srcs", GE_CMD_TEXSHADELS, CMD_FMT_TEXSHADELS, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex mode", GE_CMD_TEXMODE, CMD_FMT_TEXMODE, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex format", GE_CMD_TEXFORMAT, CMD_FMT_TEXFMT, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex filtering", GE_CMD_TEXFILTER, CMD_FMT_TEXFILTER, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex wrapping", GE_CMD_TEXWRAP, CMD_FMT_TEXWRAP, GE_CMD_TEXTUREMAPENABLE },
|
||||
// TODO: Format.
|
||||
{ L"Tex level/bias", GE_CMD_TEXLEVEL, CMD_FMT_HEX, GE_CMD_TEXTUREMAPENABLE },
|
||||
// TODO: Format.
|
||||
{ L"Tex lod slope", GE_CMD_TEXLODSLOPE, CMD_FMT_HEX, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex level/bias", GE_CMD_TEXLEVEL, CMD_FMT_TEXLEVEL, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex lod slope", GE_CMD_TEXLODSLOPE, CMD_FMT_FLOAT24, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex func", GE_CMD_TEXFUNC, CMD_FMT_TEXFUNC, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"Tex env color", GE_CMD_TEXENVCOLOR, CMD_FMT_HEX, GE_CMD_TEXTUREMAPENABLE },
|
||||
{ L"CLUT", GE_CMD_CLUTADDR, CMD_FMT_PTRWIDTH, GE_CMD_TEXTUREMAPENABLE, GE_CMD_CLUTADDRUPPER },
|
||||
@ -211,8 +213,7 @@ static const TabStateRow stateSettingsRows[] = {
|
||||
{ L"Viewport Scale", GE_CMD_VIEWPORTXSCALE, CMD_FMT_XYZ, 0, GE_CMD_VIEWPORTYSCALE, GE_CMD_VIEWPORTZSCALE },
|
||||
{ L"Viewport Offset", GE_CMD_VIEWPORTXCENTER, CMD_FMT_XYZ, 0, GE_CMD_VIEWPORTYCENTER, GE_CMD_VIEWPORTZCENTER },
|
||||
{ L"Offset", GE_CMD_OFFSETX, CMD_FMT_F16_XY, 0, GE_CMD_OFFSETY },
|
||||
// TODO: Format.
|
||||
{ L"Cull mode", GE_CMD_CULL, CMD_FMT_NUM, GE_CMD_CULLFACEENABLE },
|
||||
{ L"Cull mode", GE_CMD_CULL, CMD_FMT_CULL, GE_CMD_CULLFACEENABLE },
|
||||
{ L"Color test", GE_CMD_COLORTEST, CMD_FMT_COLORTEST, GE_CMD_COLORTESTENABLE, GE_CMD_COLORREF, GE_CMD_COLORTESTMASK },
|
||||
{ L"Alpha test", GE_CMD_ALPHATEST, CMD_FMT_ALPHATEST, GE_CMD_ALPHATESTENABLE },
|
||||
{ L"Stencil test", GE_CMD_STENCILTEST, CMD_FMT_STENCILTEST, GE_CMD_STENCILTESTENABLE },
|
||||
@ -235,10 +236,11 @@ static const TabStateRow stateSettingsRows[] = {
|
||||
{ L"Morph Weight 5", GE_CMD_MORPHWEIGHT5, CMD_FMT_FLOAT24 },
|
||||
{ L"Morph Weight 6", GE_CMD_MORPHWEIGHT6, CMD_FMT_FLOAT24 },
|
||||
{ L"Morph Weight 7", GE_CMD_MORPHWEIGHT7, CMD_FMT_FLOAT24 },
|
||||
// TODO: Enabled? Formats?
|
||||
// TODO: Format?
|
||||
{ L"Patch division", GE_CMD_PATCHDIVISION, CMD_FMT_HEX },
|
||||
{ L"Patch primitive", GE_CMD_PATCHPRIMITIVE, CMD_FMT_HEX },
|
||||
{ L"Patch facing", GE_CMD_PATCHFACING, CMD_FMT_HEX },
|
||||
{ L"Patch primitive", GE_CMD_PATCHPRIMITIVE, CMD_FMT_PATCHPRIMITIVE },
|
||||
// TODO: Format?
|
||||
{ L"Patch facing", GE_CMD_PATCHFACING, CMD_FMT_HEX, GE_CMD_PATCHCULLENABLE },
|
||||
{ L"Dither 0", GE_CMD_DITH0, CMD_FMT_HEX, GE_CMD_DITHERENABLE },
|
||||
{ L"Dither 1", GE_CMD_DITH1, CMD_FMT_HEX, GE_CMD_DITHERENABLE },
|
||||
{ L"Dither 2", GE_CMD_DITH2, CMD_FMT_HEX, GE_CMD_DITHERENABLE },
|
||||
@ -629,6 +631,27 @@ void FormatStateRow(wchar_t *dest, const TabStateRow &info, u32 value, bool enab
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_TEXLEVEL:
|
||||
{
|
||||
const char *mipLevelModes[] = {
|
||||
"auto",
|
||||
"bias",
|
||||
"slope + bias",
|
||||
};
|
||||
const int mipLevel = value & 0xFFFF;
|
||||
const int biasFixed = (s8)(value >> 16);
|
||||
const float bias = (float)biasFixed / 16.0f;
|
||||
|
||||
if (mipLevel == 0 && bias == 0) {
|
||||
swprintf(dest, L"%S", mipLevelModes[mipLevel]);
|
||||
} else if (mipLevel == 1 || mipLevel == 2) {
|
||||
swprintf(dest, L"%S: %f", mipLevelModes[mipLevel], bias);
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_TEXFILTER:
|
||||
{
|
||||
const char *textureFilters[] = {
|
||||
@ -675,6 +698,75 @@ void FormatStateRow(wchar_t *dest, const TabStateRow &info, u32 value, bool enab
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_TEXSHADELS:
|
||||
if ((value & ~0x0303) == 0) {
|
||||
const int sLight = (value & 0x0003) >> 0;
|
||||
const int tLight = (value & 0x0300) >> 8;
|
||||
swprintf(dest, L"s: %d, t: %d", sLight, tLight);
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_LIGHTMODE:
|
||||
if (value == 0) {
|
||||
swprintf(dest, L"mixed color");
|
||||
} else if (value == 1) {
|
||||
swprintf(dest, L"separate specular");
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_LIGHTTYPE:
|
||||
{
|
||||
const char *lightComputations[] = {
|
||||
"diffuse",
|
||||
"diffuse + spec",
|
||||
"pow(diffuse) + spec",
|
||||
"unknown (diffuse?)",
|
||||
};
|
||||
const char *lightTypes[] = {
|
||||
"directional",
|
||||
"point",
|
||||
"spot",
|
||||
"unknown (directional?)",
|
||||
};
|
||||
if ((value & ~0x0303) == 0) {
|
||||
const int comp = (value & 0x0003) >> 0;
|
||||
const int type = (value & 0x0300) >> 8;
|
||||
swprintf(dest, L"type: %S, comp: %S", lightTypes[type], lightComputations[comp]);
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_CULL:
|
||||
if (value == 0) {
|
||||
swprintf(dest, L"front (CW)");
|
||||
} else if (value == 1) {
|
||||
swprintf(dest, L"back (CCW)");
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_PATCHPRIMITIVE:
|
||||
{
|
||||
const char *patchPrims[] = {
|
||||
"triangles",
|
||||
"lines",
|
||||
"points",
|
||||
};
|
||||
if (value < (u32)ARRAY_SIZE(patchPrims)) {
|
||||
swprintf(dest, L"%S", patchPrims[value]);
|
||||
} else {
|
||||
swprintf(dest, L"%06x", value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_FMT_FLAG:
|
||||
if ((value & ~1) == 0) {
|
||||
swprintf(dest, L"%d", value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user