To see your stuff show here, enable Compatibility Server Reports in PPSSPP.
		Click on a version, game, or report message to show similar entries.  Hover over version to see platform info, and hover over a game title to see region and version info.
		
			
				| Game title | Version | Latest Report | Message | 
			
				| Dead to Rights: Reckoning | v1.12.3 | 2025-10-27 | sceKernelCreateSema(RealMutex) unsupported options parameter, size = 145752064 | 
				| Dead to Rights: Reckoning | v1.9.4 | 2025-10-22 | Unknown GetPointer 00000000 PC 08816148 LR 0881615c | 
				| Dead to Rights: Reckoning | v1.16.6 | 2025-06-26 | 80630006=sceAtracSetDataAndGetID(08bc2000, 00020000): invalid RIFF header | 
				| Dead to Rights: Reckoning | v1.16.6 | 2025-06-26 | Unexpected mpeg first timestamp: 0 / 0 | 
				| Dead to Rights: Reckoning | v1.16.6 | 2025-06-26 | sceKernelLoadModule: unsupported options size=00000014, flags=08b8c790, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.16.6 | 2025-06-26 | sceKernelLoadModule: unsupported options size=00000014, flags=08a870f0, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.19.2 | 2025-10-28 | sceKernelCreateThread(name=sceNetAdhocMatching_Library): unsupported attributes 00000006, ignoring | 
				| Dead to Rights: Reckoning | v1.19.2 | 2025-10-28 | sceKernelCreateThread(name=sceNetAdhocctl_Library): unsupported attributes 00000006, ignoring | 
				| Dead to Rights: Reckoning | v1.19.2 | 2025-10-28 | sceKernelCreateThread(name=sceNetAdhoc_Library): unsupported attributes 00000006, ignoring | 
				| Dead to Rights: Reckoning | v1.19.2 | 2025-10-28 | sceKernelCreateThread(name=sceNet_Library): unsupported attributes 00000006, ignoring | 
				| Dead to Rights: Reckoning | v1.19.2 | 2025-10-28 | sceKernelCreateThread(name=sceATRAC3plus_Library): unsupported attributes 00000006, ignoring | 
				| Dead to Rights: Reckoning | v1.18.1 | 2025-03-21 | WriteToHardware: Invalid address b202a706 near PC 0881a190 LR 0881cfe0 | 
				| Dead to Rights: Reckoning | v1.18 | 2024-12-21 | Branch in Jump delay slot at 08de8880 in block starting at 08a37a38 | 
				| Dead to Rights: Reckoning | v1.18 | 2024-12-21 | Jump to invalid address: 04e05c40 | 
				| Dead to Rights: Reckoning | v1.18 | 2024-12-21 | MIPSCompileOp: Invalid instruction 00000041 | 
				| Dead to Rights: Reckoning | v1.18 | 2024-12-21 | MIPSCompileOp: Invalid instruction 00ffffff | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-09-28 | Jump to invalid address: 06088240 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-09-28 | Jump to invalid address: 05fd9900 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-08-28 | sceUtilityMsgDialogInitStart: invalid status | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-08-28 | Utility access thread still running, state: shutting down, dialog=1/1 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-08-28 | Utility access thread still running, state: shutting down, dialog=2/1 | 
				| Dead to Rights: Reckoning | v1.17.3 | 2024-08-14 | Waiting thread for 20 that was already waiting for 20 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-07-20 | sceKernelLoadModule: unsupported options size=00000014, flags=08cd1630, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.16.3 | 2024-06-06 | sceGeBreak(mode=0, unknown=08dfeba8): unknown ptr (valid) | 
				| Dead to Rights: Reckoning | v1.12.3 | 2024-05-27 | BREAK instruction hit | 
				| Dead to Rights: Reckoning | v1.10.3 | 2024-05-21 | sceKernelCreateSema(RealSignal) unsupported options parameter, size = 144665236 | 
				| Dead to Rights: Reckoning | v1.10.3 | 2024-05-21 | sceKernelCreateSema(TibMutex) unsupported options parameter, size = 145830672 | 
				| Dead to Rights: Reckoning | v1.10.3 | 2024-05-21 | sceKernelCreateSema(TibMutex) unsupported options parameter, size = 144528672 | 
				| Dead to Rights: Reckoning | v1.10.3 | 2024-05-21 | sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 144665236 | 
				| Dead to Rights: Reckoning | v1.9.4 | 2024-05-16 | 80630006=sceAtracSetHalfwayBufferAndGetID(08bff040, 00001000, 00040000): invalid RIFF header | 
				| Dead to Rights: Reckoning | v1.11.2 | 2024-05-01 | sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 145634952 | 
				| Dead to Rights: Reckoning | v1.11.2 | 2024-05-01 | sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 145543488 | 
				| Dead to Rights: Reckoning | v1.17.4-1 | 2025-10-27 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=089a5164, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-11-09 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=089a5164, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.18.1 | 2025-05-11 | Can't draw: No current render step. Step count: 0 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-03-11 | sceKernelLoadModule: unsupported options size=00000014, flags=00000002, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-03-11 | sceKernelLoadModule: unsupported options size=00000014, flags=00000002, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-03-11 | sceKernelLoadModule: unsupported options size=00000014, flags=09fff5c8, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-03-11 | sceKernelLoadModule: unsupported options size=00000014, flags=09fff5c8, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.10.2 | 2024-03-07 | Render to texture with different formats 0 != 3 | 
				| Dead to Rights: Reckoning | v1.10.2 | 2024-03-07 | Render to texture with different strides 1024 != 512 | 
				| Dead to Rights: Reckoning | v1.10.2 | 2024-03-07 | Render to area containing texture at 04162000 +256x0 | 
				| Dead to Rights: Reckoning | v1.10.2 | 2024-03-07 | Ignoring possible render to texture at 04161800 +0x64 / 480x272 | 
				| Dead to Rights: Reckoning | v1.10.2 | 2024-03-07 | Rendering to framebuffer offset: 04162000 +256x0 | 
				| Dead to Rights: Reckoning | v1.17 | 2024-02-18 | 00000400=sceGeEdramSetAddrTranslation(00000400) | 
				| Dead to Rights: Reckoning | v1.16.6 | 2024-02-09 | Unexpected mpeg first timestamp: 906bf08d0c7 / 9924579479751 | 
				| Dead to Rights: Reckoning | v1.14.4 | 2024-02-06 | Unusual bezier/spline vtype: 120017c1, morph: 0, bones: 1 | 
				| Dead to Rights: Reckoning | v1.13.2-1480-g5318452e7 | 2024-01-23 | sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 573 | 
				| Dead to Rights: Reckoning | v1.13.2-1480-g5318452e7 | 2024-01-23 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=08a1d400, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.2-1480-g5318452e7 | 2024-01-23 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=0000001c, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.16.6 | 2023-12-15 | sceGeBreak(mode=0, unknown=09fff3f0): unknown ptr (valid) | 
				| Dead to Rights: Reckoning | v1.16.6 | 2023-12-10 | 00000400=sceGeEdramSetAddrTranslation(00000800) | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-08-28 | sceKernelLoadModule: unsupported options size=00000014, flags=08c734c4, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-08-28 | sceKernelLoadModule: unsupported options size=00000014, flags=08c734c4, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.14.4 | 2024-03-30 | sceKernelLoadModule: unsupported options size=00000014, flags=0899b0cc, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.14.4 | 2024-03-30 | sceKernelLoadModule: unsupported options size=00000014, flags=0899b0cc, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.16.6 | 2023-10-24 | sceGeBreak(mode=0, unknown=08ce04ac): unknown ptr (valid) | 
				| Dead to Rights: Reckoning | v1.14 | 2023-09-24 | sceKernelLoadModule: unsupported options size=00000014, flags=08cd3240, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.14 | 2023-09-24 | sceKernelLoadModule: unsupported options size=00000014, flags=08cd3240, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-09-05 | Error in shader compilation: info: 0:1: F0002: Mali-400 GP register allocation failed for vertex shader.
            Please contact [email protected] with the shader causing
            the problem, along with this error message.
            Mali online shader compiler r10p0-00rel0 [Revision 96995].
01710444:00000b28 HWX C T N Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 MatUp:1 Cull 
#version 100
// Driver: Mali-400 MP - GLSL 100
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01710444:00000b28 HWX C T N Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 MatUp:1 Cull 
attribute vec3 position;
attribute mediump vec3 normal;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
varying lowp vec4 v_color0;
varying mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
   return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
  vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
  mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
  vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
  vec4 outPos = mul(u_proj, viewPos);
  vec4 ambientColor = color0;
  vec3 diffuseColor = u_matdiffuse.rgb;
  vec3 specularColor = u_matspecular.rgb;
  lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
  vec3 toLight;
  lowp vec3 diffuse;
  float distance;
  lowp float lightScale;
  mediump float ldot;
  toLight = u_lightpos0 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse) * lightScale;
  toLight = u_lightpos1 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse1 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse) * lightScale;
  toLight = u_lightpos2 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt2, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse2 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient2 * ambientColor.rgb + diffuse) * lightScale;
  v_color0 = clamp(lightSum0, 0.0, 1.0);
  v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
  vec3 projPos = outPos.xyz / outPos.w;
  float projZ = (projPos.z - u_depthRange.z) * u_depthRange.w;
  if (u_cullRangeMin.w <= 0.0 || projZ * outPos.w > -outPos.w) {
    if ((projPos.x < u_cullRangeMin.x || projPos.y < u_cullRangeMin.y) || (projPos.x > u_cullRangeMax.x || projPos.y > u_cullRangeMax.y)) {
      outPos.xyzw = u_cullRangeMax.wwww;
    }
  }
  if (u_cullRangeMin.w <= 0.0) {
    if (projPos.z < u_cullRangeMin.z || projPos.z > u_cullRangeMax.z) {
      outPos.xyzw = u_cullRangeMax.wwww;
    }
  }
  gl_Position = outPos;
} | 
				| Dead to Rights: Reckoning | v1.15.4 | 2023-07-31 | __KernelStopThread: thread 336 does not exist (helper deleted) | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-04-23 | sceDmacMemcpy(dest=04000000, src=092875c0, size=557056): overlapping read | 
				| Dead to Rights: Reckoning | v1.10.3 | 2023-03-30 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=08aa3278, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.10.3 | 2023-03-30 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=00000136, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-03-27 | __KernelStopThread: thread 354 does not exist | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-03-27 | Decoding texture from VRAM mirror at 04688000 swizzle=0 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-03-27 | FBO created from existing depthbuffer as color, 04088000/00000000 and 04154000/04088000 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-03-27 | FBO created from existing depthbuffer as color, 04088000/00000000 and 041dc000/04088000 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-03-27 | FBO created from existing depthbuffer as color, 04088000/00000000 and 041e0000/04088000 | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-03-30 | Error in shader compilation: info: Vertex shader compilation failed.
ERROR: 0:126: 'comp' : redefinition 
ERROR: 0:127: 'type' : redefinition 
ERROR: 0:175: 'comp' : redefinition 
ERROR: 0:176: 'type' : redefinition 
ERROR: 0:224: 'comp' : redefinition 
ERROR: 0:225: 'type' : redefinition 
ERROR: 6 compilation errors.  No code generated.
01000000:80000b38 HWX C T N Tex Light: LightUberShader Cull 
#version 300 es
// Driver: Adreno (TM) 330 - GLSL 300
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01000000:80000b38 HWX C T N Tex Light: LightUberShader Cull 
in vec3 position;
in mediump vec3 normal;
in vec2 texcoord;
in lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform uint u_lightControl;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform mediump vec3 u_lightdir0;
uniform mediump vec2 u_lightangle_spotCoef0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform lowp vec3 u_lightspecular0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform mediump vec3 u_lightdir1;
uniform mediump vec2 u_lightangle_spotCoef1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform lowp vec3 u_lightspecular1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform mediump vec3 u_lightdir2;
uniform mediump vec2 u_lightangle_spotCoef2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform mediump vec3 u_lightdir3;
uniform mediump vec2 u_lightangle_spotCoef3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
uniform lowp vec3 u_lightspecular3;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
out lowp vec4 v_color0;
out mediump vec3 v_texcoord;
out mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
   return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
  vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
  mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
  vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
  vec4 outPos = mul(u_proj, viewPos);
  vec4 ambientColor = ((u_lightControl & (1u << 0x14u)) != 0x0u) ? color0 : u_matambientalpha;
  vec3 diffuseColor = ((u_lightControl & (1u << 0x15u)) != 0x0u) ? color0.rgb : u_matdiffuse;
  vec3 specularColor = ((u_lightControl & (1u << 0x16u)) != 0x0u) ? color0.rgb : u_matspecular.rgb;
  lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
  lowp vec3 lightSum1 = splat3(0.0);
  vec3 toLight;
  lowp vec3 diffuse;
  float distance;
  lowp float lightScale;
  mediump float ldot;
  lowp float angle;
  if ((u_lightControl & 1u) != 0x0u) { 
    uint comp = (u_lightControl >> 0x04u) & 0x3u;
    uint type = (u_lightControl >> 0x06u) & 0x3u;
    if (type == 0x0u) {
      toLight = u_lightpos0;
    } else {
      toLight = u_lightpos0 - worldpos;
      distance = length(toLight);
      toLight /= distance;
    }
    ldot = dot(toLight, worldnormal);
    if (comp == 0x2u) {
      if (u_matspecular.a <= 0.0) {
        ldot = 1.0;
      } else {
        ldot = pow(max(ldot, 0.0), u_matspecular.a);
      }
    }
    switch (int(type)) {
    case 1:
      lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
      break;
    case 2:
      angle = length(u_lightdir0) == 0.0 ? 0.0 : dot(normalize(u_lightdir0), toLight);
      if (angle >= u_lightangle_spotCoef0.x) {
        lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef0.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef0.y));
      } else {
        lig | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-03-30 | Error in shader compilation: info: Vertex shader compilation failed.
ERROR: 0:125: 'comp' : redefinition 
ERROR: 0:126: 'type' : redefinition 
ERROR: 0:174: 'comp' : redefinition 
ERROR: 0:175: 'type' : redefinition 
ERROR: 0:223: 'comp' : redefinition 
ERROR: 0:224: 'type' : redefinition 
ERROR: 6 compilation errors.  No code generated.
01000000:80000b30 HWX T N Tex Light: LightUberShader Cull 
#version 300 es
// Driver: Adreno (TM) 330 - GLSL 300
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull 
in vec3 position;
in mediump vec3 normal;
in vec2 texcoord;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform uint u_lightControl;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform mediump vec3 u_lightdir0;
uniform mediump vec2 u_lightangle_spotCoef0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform lowp vec3 u_lightspecular0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform mediump vec3 u_lightdir1;
uniform mediump vec2 u_lightangle_spotCoef1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform lowp vec3 u_lightspecular1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform mediump vec3 u_lightdir2;
uniform mediump vec2 u_lightangle_spotCoef2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform mediump vec3 u_lightdir3;
uniform mediump vec2 u_lightangle_spotCoef3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
uniform lowp vec3 u_lightspecular3;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
out lowp vec4 v_color0;
out mediump vec3 v_texcoord;
out mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
   return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
  vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
  mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
  vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
  vec4 outPos = mul(u_proj, viewPos);
  vec4 ambientColor = u_matambientalpha;
  vec3 diffuseColor = u_matdiffuse.rgb;
  vec3 specularColor = u_matspecular.rgb;
  lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
  lowp vec3 lightSum1 = splat3(0.0);
  vec3 toLight;
  lowp vec3 diffuse;
  float distance;
  lowp float lightScale;
  mediump float ldot;
  lowp float angle;
  if ((u_lightControl & 1u) != 0x0u) { 
    uint comp = (u_lightControl >> 0x04u) & 0x3u;
    uint type = (u_lightControl >> 0x06u) & 0x3u;
    if (type == 0x0u) {
      toLight = u_lightpos0;
    } else {
      toLight = u_lightpos0 - worldpos;
      distance = length(toLight);
      toLight /= distance;
    }
    ldot = dot(toLight, worldnormal);
    if (comp == 0x2u) {
      if (u_matspecular.a <= 0.0) {
        ldot = 1.0;
      } else {
        ldot = pow(max(ldot, 0.0), u_matspecular.a);
      }
    }
    switch (int(type)) {
    case 1:
      lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
      break;
    case 2:
      angle = length(u_lightdir0) == 0.0 ? 0.0 : dot(normalize(u_lightdir0), toLight);
      if (angle >= u_lightangle_spotCoef0.x) {
        lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef0.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef0.y));
      } else {
        lightScale = 0.0;
      }
      break;
    default:
      lightScale = 1.0;
      break;
    }
    diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
    if (comp == 0x1u) {
      if ( | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 13, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 12, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 11, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 10, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 9, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 8, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 7, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 6, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-02-06 | sceSasSetADSRMode(08c3e340, 5, 15, 00000000, 00000000, 00000000, 00000000): invalid modes | 
				| Dead to Rights: Reckoning | v1.14.4 | 2023-01-23 | Error in shader compilation: info: 0:1: F0002: Mali-400 GP register allocation failed for vertex shader.
            Please contact [email protected] with the shader causing
            the problem, along with this error message.
            Mali online shader compiler r6p2-01rel0 [Revision 96995].
01710444:00000b28 HWX C T N Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 MatUp:1 Cull 
#version 100
// Driver: Mali-400 MP - GLSL 100
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01710444:00000b28 HWX C T N Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 MatUp:1 Cull 
attribute vec3 position;
attribute mediump vec3 normal;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
varying lowp vec4 v_color0;
varying mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
   return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
  vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
  mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
  vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
  vec4 outPos = mul(u_proj, viewPos);
  vec4 ambientColor = color0;
  vec3 diffuseColor = u_matdiffuse.rgb;
  vec3 specularColor = u_matspecular.rgb;
  lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
  vec3 toLight;
  lowp vec3 diffuse;
  float distance;
  lowp float lightScale;
  mediump float ldot;
  toLight = u_lightpos0 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse) * lightScale;
  toLight = u_lightpos1 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse1 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse) * lightScale;
  toLight = u_lightpos2 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt2, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse2 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient2 * ambientColor.rgb + diffuse) * lightScale;
  v_color0 = clamp(lightSum0, 0.0, 1.0);
  v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
  vec3 projPos = outPos.xyz / outPos.w;
  float projZ = (projPos.z - u_depthRange.z) * u_depthRange.w;
  if (u_cullRangeMin.w <= 0.0 || projZ * outPos.w > -outPos.w) {
    if ((projPos.x < u_cullRangeMin.x || projPos.y < u_cullRangeMin.y) || (projPos.x > u_cullRangeMax.x || projPos.y > u_cullRangeMax.y)) {
      outPos.xyzw = u_cullRangeMax.wwww;
    }
  }
  if (u_cullRangeMin.w <= 0.0) {
    if (projPos.z < u_cullRangeMin.z || projPos.z > u_cullRangeMax.z) {
      outPos.xyzw = u_cullRangeMax.wwww;
    }
  }
  gl_Position = outPos;
} | 
				| Dead to Rights: Reckoning | v1.14.1 | 2023-01-07 | UI scissor out of bounds in GameSettingsScreen: 178,0-774,480 / 899,480 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-04-23 | sceKernelLoadModule: unsupported options size=00000014, flags=7f800001, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2023-04-23 | sceKernelLoadModule: unsupported options size=00000014, flags=7f800001, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2022-12-07 | sceKernelLoadModule: unsupported options size=00000014, flags=00000007, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2022-12-07 | sceKernelLoadModule: unsupported options size=00000014, flags=00000007, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.17.1 | 2024-06-10 | sceKernelLoadModule: unsupported options size=00000014, flags=088273f0, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-17 | Failed decrypting the PRX (ret = -4, size = 4046305, psp_size = 4046656)! | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-10 | sceKernelLoadModule: unsupported options size=00000014, flags=0899a904, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-05 | sceKernelLoadModule: unsupported options size=00000014, flags=00000021, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2022-11-07 | sceKernelLoadModule: unsupported options size=00000014, flags=08d74120, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-08-13 | Decoding texture from VRAM mirror at 04710000 swizzle=0 | 
				| Dead to Rights: Reckoning | v1.16.6 | 2023-12-14 | sceKernelCreateThread(name=scePsmf_library): unsupported attributes 00000006 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2022-11-29 | sceKernelLoadModule: unsupported options size=00000014, flags=08cacbd0, pos=0, access=1, data=2, text=2 | 
				| Dead to Rights: Reckoning | v1.13.2 | 2022-11-29 | sceKernelLoadModule: unsupported options size=00000014, flags=00000001, pos=0, access=1, data=1, text=1 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-03 | Failed to read valid video stream data from header | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-08-13 | 80020001=sceKernelCreateSema(): invalid name | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-03 | Could not setup streams, unexpected stream count: 13462 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-09-03 | Unexpected mpeg first timestamp: 5579a080000 / 5873804509184 | 
				| Dead to Rights: Reckoning | v1.13.1 | 2022-08-06 | sceKernelLoadModule: unsupported options size=00000014, flags=08a0dc94, pos=0, access=1, data=1, text=1 |