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 | 
			
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a58 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a54 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a50 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a4c in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Jump to invalid address: 03418c00 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a48 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Jump to invalid address: 034f0720 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a44 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Jump to invalid address: 034ef980 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2025-08-26 | Branch in Jump delay slot at 09d52a40 in block starting at 09d52a10 | 
				| Call of Duty : Roads to Victory™ | v1.10.3 | 2025-07-14 | sceDmacMemcpy(dest=04000000, src=092875c0, size=557056): overlapping read | 
				| Call of Duty : Roads to Victory™ | v1.9.4 | 2025-06-21 | ReadFromHardware: Invalid address 5180003f near PC 5180003f LR 088a9180 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-06-09 | MIPSCompileOp: Invalid instruction 05d8ef8e | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-06-09 | MIPSCompileOp: Invalid instruction 0030258e | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-22 | WriteToHardware: Invalid address 0000dd71 near PC 089534c0 LR 089534c0 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-22 | Unknown GetPointerWrite 00000080 PC 089f453c LR 08952e80 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-22 | ReadFromHardware: Invalid address 0000dd71 near PC 089534c0 LR 089534c0 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Vertices without position found: (1246fa03) [1246fa03] P: ? T: f W: u8 (4x) I: ? Morph: 2  (32b) | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | VTYPE with morph used: THRU=0 TC=3 COL=0 POS=0 NRM=0 WT=1 NW=4 IDX=3 MC=2 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Vertices without position found: (1240000b) [1240000b] P: ? C: ? T: f  (4b) | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Bad vertex address 01c2763c! | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Vertices without position found: (12200023) [12200023] P: ? N: s8 T: f  (16b) | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Bad bounding box data: 0034bb | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Bad vertex address 0b67ee86! | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Vertices without position found: (0540000b) [0540000b] P: ? C: ? T: f  (4b) | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Drawing region rate add non-zero: 04e7, 013f of 000a, 0000 | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-03-12 | Vertices without position found: (0560000f) [0560000f] P: ? C: ? T: f  (4b) | 
				| Call of Duty : Roads to Victory™ | v1.12.1 | 2025-03-08 | WriteToHardware: Invalid address 000003e4 near PC 08a645e0 LR 08a64660 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2025-03-04 | Unimplemented HLE function sceNetResolverTerm | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2025-03-04 | Unimplemented HLE function sceNetResolverCreate | 
				| Call of Duty : Roads to Victory™ | v1.16.3 | 2025-03-01 | sceKernelLoadModule: unsupported options size=00000014, flags=08d74120, pos=0, access=1, data=1, text=1 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2025-02-28 | 80630006=sceAtracSetDataAndGetID(08a87000, 00020000): invalid RIFF header | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2025-02-28 | 80630006=sceAtracSetDataAndGetID(08a87000, 80020323): invalid RIFF header | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-01-26 | WriteToHardware: Invalid address 0000015c near PC 089c5c44 LR 089bfd1c | 
				| Call of Duty : Roads to Victory™ | v1.17.1-334-g1786a4ddb | 2025-01-04 | 80630006=sceAtracSetData(1, 08ad1140, 00008000): multiple fmt definitions | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-10-28 | __KernelStopThread: thread 446 does not exist (ApctlThread deleted) | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-10-27 | 80630011=sceAtracSetHalfwayBufferAndGetID(08bff040, 00000000, 00040000): buffer too small | 
				| Call of Duty : Roads to Victory™ | v1.11.3-1233-g9de942087 | 2024-10-07 | Unknown GetPointer 00000060 PC 08969c18 LR 089687ec | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-09-26 | 80630006=sceAtracSetData(2, 08bb6100, 00020000): invalid RIFF header | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-09-16 | __KernelStopThread: thread 442 does not exist (ApctlThread deleted) | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-08-25 | 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 r7p0-00rel1 [Revision 96995].
01f10444:00050b00 HWX T N TexProjUV UVMtx Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 3: c:0 t:0 MatUp:1 
#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))
// 01f10444:00050b00 HWX T N TexProjUV UVMtx Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 3: c:0 t:0 MatUp:1 
attribute vec3 position;
attribute mediump vec3 normal;
attribute vec2 texcoord;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform mediump mat4 u_texmtx;
uniform vec4 u_uvscaleoffset;
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 vec3 u_lightpos3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
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 vec3 v_texcoord;
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 = u_matambientalpha;
  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;
  toLight = u_lightpos3;
  ldot = dot(toLight, worldnormal);
  diffuse = (u_lightdiffuse3 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient3 * ambientColor.rgb + diffuse);
  v_color0 = clamp(lightSum0, 0.0, 1.0);
  v_texcoord = mul(vec4(texcoord.xy, 0.0, 1.0), u_texmtx).xyz * vec3(u_uvscaleoffset.xy, 1.0);
  v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
  gl_Position = outPos;
} | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-08-02 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=089d549c, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-08-02 | sceKernelLoadModuleByID: unsupported options size=00000014, flags=08aa3274, pos=0, access=1, data=1, text=1 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-07-18 | UNIMPL sceUtilityLoadUsbModule(1) | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-22 | ReadFromHardware: Invalid address 07a42b58 near PC 08a6eda4 LR 09214f80 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-22 | ReadFromHardware: Invalid address 07a42b54 near PC 08a6eda4 LR 09214f80 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-12 | Unknown GetPointer 00000000 PC 0884a918 LR 0884a938 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-10 | WriteToHardware: Invalid address 00000038 near PC 088ce684 LR 088ce6a4 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-10 | WriteToHardware: Invalid address 00000006 near PC 089c68a8 LR 089c68a8 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-10 | ReadFromHardware: Invalid address 00000007 near PC 089d0978 LR 089d0978 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-06-10 | ReadFromHardware: Invalid address 0000005d near PC 089c689c LR 089c689c | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-05-22 | sceGeBreak(mode=0, unknown=08b9cc8c): unknown ptr (valid) | 
				| Call of Duty : Roads to Victory™ | v1.17.1-491-g9cdd97c13b | 2024-05-19 | 80630006=sceAtracSetData(1, 08af11c0, 00008000): multiple fmt definitions | 
				| Call of Duty : Roads to Victory™ | v1.17.1-491-g9cdd97c13b | 2025-01-04 | 80630006=sceAtracSetData(0, 08ad1140, 00008000): multiple fmt definitions | 
				| Call of Duty : Roads to Victory™ | v1.17.1-491-g9cdd97c13b | 2025-01-04 | 80630006=sceAtracSetData(0, 08af11c0, 00008000): multiple fmt definitions | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-05-17 | 80000107=sceDisplaySetFrameBuf(00000000, 512, 3, 0): must change latched framebuf first | 
				| Call of Duty : Roads to Victory™ | v1.14.2 | 2024-04-23 | UI scissor out of bounds in MainScreen: 65,0-1312,811 / 1722,810 | 
				| Call of Duty : Roads to Victory™ | v1.14.2 | 2024-04-27 | UI scissor out of bounds in GameSettingsScreen: 291,0-1420,811 / 1722,810 | 
				| Call of Duty : Roads to Victory™ | v1.14.2 | 2024-04-23 | UI scissor out of bounds in GameSettingsScreen: 291,0-1498,811 / 1800,810 | 
				| Call of Duty : Roads to Victory™ | v1.13.1 | 2024-04-08 | Unknown GetPointer 00000483 PC 00000483 LR 00000483 | 
				| Call of Duty : Roads to Victory™ | v1.13.1 | 2024-04-08 | ReadFromHardware: Invalid address 00000483 near PC 00000483 LR 00000483 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | ReadFromHardware: Invalid address 00000000 near PC 00000000 LR 0881bbe4 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | Unexpected mpeg first timestamp: 5000000600 / 343597385216 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | sceKernelLoadModule: unsupported options size=00000014, flags=08c7f740, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | sceKernelLoadModule: unsupported options size=00000014, flags=00000004, pos=0, access=1, data=1, text=1 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | sceKernelLoadModule: unsupported options size=00000014, flags=00000001, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.14.4 | 2024-04-03 | Could not setup streams, unexpected stream count: 13462 | 
				| Call of Duty : Roads to Victory™ | v1.9.0 | 2024-04-01 | ReadFromHardware: Invalid address 98bcef80 near PC 98bcef80 LR 98bcef80 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-01 | Unknown GetPointerWrite 0a001f80 PC 089f4468 LR 089d3900 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-01 | Unknown GetPointer 00000005 PC 089f4468 LR 089d0718 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-03-05 | sceKernelLoadModule: unsupported options size=00000014, flags=08806b20, pos=0, access=-80, data=0, text=0 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-03-05 | sceKernelLoadModule: unsupported options size=00000014, flags=08806b20, pos=0, access=20, data=0, text=0 | 
				| Call of Duty : Roads to Victory™ | v1.15.4 | 2024-02-03 | Jump to invalid address: 00000404 | 
				| Call of Duty : Roads to Victory™ | v1.15.4 | 2024-02-03 | Branch in Jump delay slot at 09a2054c in block starting at 09a20530 | 
				| Call of Duty : Roads to Victory™ | v1.15.4 | 2024-02-03 | Jump to invalid address: 03903180 | 
				| Call of Duty : Roads to Victory™ | v1.15.4 | 2024-02-03 | Jump to invalid address: 0687da80 | 
				| Call of Duty : Roads to Victory™ | v1.13.1 | 2024-01-22 | Unknown GetPointer 00000008 PC 00000008 LR 08a64538 | 
				| Call of Duty : Roads to Victory™ | v1.16.6 | 2024-01-14 | 80630007=sceAtracSetData(2, 08d4b1c0, 0000fe00): atracID uses different codec type than data | 
				| Call of Duty : Roads to Victory™ | v1.16.6 | 2024-01-14 | Rendering to framebuffer offset at 040cc000 +64x0 (stride 512) | 
				| Call of Duty : Roads to Victory™ | v1.18.1-1042-gd58d193138 | 2025-05-24 | Can't draw: No current render step. Step count: 0 | 
				| Call of Duty : Roads to Victory™ | v1.14.4 | 2023-12-03 | Unimplemented HLE function sceKernelStopUnloadSelfModule | 
				| Call of Duty : Roads to Victory™ | v1.12.3 | 2023-11-25 | sceKernelLoadModule: unsupported options size=00000014, flags=08af0100, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.12.3 | 2023-11-25 | sceKernelLoadModule: unsupported options size=00000014, flags=08c03170, pos=0, access=1, data=1, text=1 | 
				| Call of Duty : Roads to Victory™ | v1.17.1 | 2024-04-04 | Could not setup streams, unexpected stream count: 7168 | 
				| Call of Duty : Roads to Victory™ | v1.12.3 | 2023-11-16 | 80630007=sceAtracSetData(2, 08d4b180, 0000fe00): atracID uses different codec type than data | 
				| Call of Duty : Roads to Victory™ | v1.16.6 | 2024-04-03 | __KernelStopThread: thread 308 does not exist (helper deleted) | 
				| Call of Duty : Roads to Victory™ | v1.15.4-69-gca75e2015 | 2023-10-17 | sceKernelLoadModule: unsupported options size=00000014, flags=08e3bde8, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction b000103c | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction b3001c27 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction b000108e | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction 40b82534 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | WriteToHardware: Invalid address 00000400 near PC 0888d5ff LR 088a008f | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction 40a82514 | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction b70054af | 
				| Call of Duty : Roads to Victory™ | v1.15.3 | 2023-09-26 | MIPSCompileOp: Invalid instruction b60050af | 
				| Call of Duty : Roads to Victory™ | v1.18.1 | 2025-01-10 | Branch in branch delay slot at 088a008f with different target | 
				| Call of Duty : Roads to Victory™ | v1.16.2 | 2023-09-22 | sceKernelLoadModule: unsupported options size=00000014, flags=08cacd90, pos=0, access=1, data=2, text=2 | 
				| Call of Duty : Roads to Victory™ | v1.16.1 | 2023-09-19 | FS shader gen error: We only do array textures for framebuffers in Vulkan. (GLES: 0100000e:12180000) | 
				| Call of Duty : Roads to Victory™ | v1.15.4 | 2023-09-10 | sceGeBreak(mode=0, unknown=08bac174): unknown ptr (valid) | 
				| Call of Duty : Roads to Victory™ | v1.14.2 | 2023-09-07 | 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 r8p0-00dev0 [Revision 96995].
01f14444:00050b38 HWX C T N Tex TexProjUV UVMtx Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 3: 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))
// 01f14444:00050b38 HWX C T N Tex TexProjUV UVMtx Light: 0: c:0 t:1 1: c:0 t:1 2: c:0 t:1 3: c:0 t:1 MatUp:1 Cull 
attribute vec3 position;
attribute mediump vec3 normal;
attribute vec2 texcoord;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform mediump mat4 u_texmtx;
uniform vec4 u_uvscaleoffset;
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 vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
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 vec3 v_texcoord;
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;
  toLight = u_lightpos3 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  lightScale = clamp(1.0 / dot(u_lightatt3, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
  diffuse = (u_lightdiffuse3 * diffuseColor) * max(ldot, 0.0);
  lightSum0.rgb += (u_lightambient3 * ambientColor.rgb + diffuse) * lightScale;
  v_color0 = clamp(lightSum0, 0.0, 1.0);
  v_texcoord = mul(vec4(texcoord.xy, 0.0, 1.0), u_texmtx).xyz * vec3(u_uvscaleoffset.xy, 1.0);
  v_fogdepth = (vi |