Recent logs - METAL GEAR SOLID PORTABLE OPS

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
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:0081d022 Tex TexAlpha 2x TFuncMod AlphaTest0 > #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; uniform sampler2D testtex; in vec4 v_color0; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = p * t; v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); if (v.a < 0.002) discard; fragColor0 = v; } vs: 00080000:00007b18 HWX C T N Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec4 u_cullRangeMin; uniform highp vec4 u_cullRangeMax; out lowp vec4 v_color0; out mediump vec3 v_texcoord; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_spline_count_u + (j + u); _pos[i * 4 + j] = texelFetch(u_tess_pos_tex, ivec2(index, 0), 0).xyz; _tex[i * 4 + j] = texelFetch(u_tess_tex_tex, ivec2(index, 0), 0).xy; _col[i * 4 + j] = texelFetch(u_tes
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:00a1d002 Tex Fog 2x TFuncMod AlphaTest0 > #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; uniform sampler2D testtex; in vec4 v_color0; uniform vec3 u_fogcolor; in mediump float v_fogdepth; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = vec4(t.rgb * p.rgb, p.a); v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); float fogCoef = clamp(v_fogdepth, 0.0, 1.0); v = mix(vec4(u_fogcolor, v.a), v, fogCoef); if (v.a < 0.002) discard; fragColor0 = v; } vs: 00080000:00007b1c HWX C T N Fog Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec2 u_fogcoef; 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; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i +
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:00a1d022 Tex TexAlpha Fog 2x TFuncMod AlphaTest0 > #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; uniform sampler2D testtex; in vec4 v_color0; uniform vec3 u_fogcolor; in mediump float v_fogdepth; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = p * t; v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); float fogCoef = clamp(v_fogdepth, 0.0, 1.0); v = mix(vec4(u_fogcolor, v.a), v, fogCoef); if (v.a < 0.002) discard; fragColor0 = v; } vs: 00080000:00007b1c HWX C T N Fog Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec2 u_fogcoef; 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; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_sp
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:00a00002 Tex Fog 2x TFuncMod #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; in vec4 v_color0; uniform vec3 u_fogcolor; in mediump float v_fogdepth; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = vec4(t.rgb * p.rgb, p.a); v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); float fogCoef = clamp(v_fogdepth, 0.0, 1.0); v = mix(vec4(u_fogcolor, v.a), v, fogCoef); fragColor0 = v; } vs: 00080000:00007b1c HWX C T N Fog Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec2 u_fogcoef; 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; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_spline_count_u + (j + u); _pos[i * 4 + j] = texelFetch
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:0081d002 Tex 2x TFuncMod AlphaTest0 > #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; uniform sampler2D testtex; in vec4 v_color0; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = vec4(t.rgb * p.rgb, p.a); v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); if (v.a < 0.002) discard; fragColor0 = v; } vs: 00080000:00007b18 HWX C T N Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec4 u_cullRangeMin; uniform highp vec4 u_cullRangeMax; out lowp vec4 v_color0; out mediump vec3 v_texcoord; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_spline_count_u + (j + u); _pos[i * 4 + j] = texelFetch(u_tess_pos_tex, ivec2(index, 0), 0).xyz; _tex[i * 4 + j] = texelFetch(u_tess_tex_tex, ivec2(index, 0), 0).xy; _col[i * 4 + j] = texelF
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:00800002 Tex 2x TFuncMod #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; in vec4 v_color0; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = vec4(t.rgb * p.rgb, p.a); v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); fragColor0 = v; } vs: 00080000:00007b18 HWX C T N Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec4 u_cullRangeMin; uniform highp vec4 u_cullRangeMax; out lowp vec4 v_color0; out mediump vec3 v_texcoord; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_spline_count_u + (j + u); _pos[i * 4 + j] = texelFetch(u_tess_pos_tex, ivec2(index, 0), 0).xyz; _tex[i * 4 + j] = texelFetch(u_tess_tex_tex, ivec2(index, 0), 0).xy; _col[i * 4 + j] = texelFetch(u_tess_col_tex, ivec2(index, 0), 0).rgba; } } vec2 tess
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-02-12 Error in shader program link: info: (unknown reason) fs: 00000000:00a00022 Tex TexAlpha Fog 2x TFuncMod #version 300 es #extension GL_EXT_shader_framebuffer_fetch : require precision lowp float; uniform sampler2D tex; in vec4 v_color0; uniform vec3 u_fogcolor; in mediump float v_fogdepth; in mediump vec3 v_texcoord; inout vec4 fragColor0; void main() { vec4 t = texture(tex, v_texcoord.xy); vec4 p = v_color0; vec4 v = p * t; v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0); float fogCoef = clamp(v_fogdepth, 0.0, 1.0); v = mix(vec4(u_fogcolor, v.a), v, fogCoef); fragColor0 = v; } vs: 00080000:00007b1c HWX C T N Fog Tex Spline TessC TessT TessRevN #version 300 es precision highp float; 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 lowp vec4 u_matambientalpha; uniform highp vec2 u_fogcoef; 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; uniform sampler2D u_tess_pos_tex; uniform sampler2D u_tess_tex_tex; uniform sampler2D u_tess_col_tex; uniform int u_spline_count_u; vec2 tess_sample(in vec2 points[16], in vec2 weights[4]) { vec2 pos = vec2(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec3 tess_sample(in vec3 points[16], in vec2 weights[4]) { vec3 pos = vec3(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } vec4 tess_sample(in vec4 points[16], in vec2 weights[4]) { vec4 pos = vec4(0.0); for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { float f = weights[j].x * weights[i].y; if (f != 0.0) pos = pos + f * points[i * 4 + j]; } } return pos; } uniform int u_spline_count_v; uniform int u_spline_type_u; uniform int u_spline_type_v; void spline_knot(ivec2 num_patches, ivec2 type, out vec2 knot[6], ivec2 patch_pos) { for (int i = 0; i < 6; ++i) { knot[i] = vec2(float(i + patch_pos.x - 2), float(i + patch_pos.y - 2)); } if ((type.x & 1) != 0) { if (patch_pos.x <= 2) knot[0].x = 0.0; if (patch_pos.x <= 1) knot[1].x = 0.0; } if ((type.x & 2) != 0) { if (patch_pos.x >= (num_patches.x - 2)) knot[5].x = float(num_patches.x); if (patch_pos.x == (num_patches.x - 1)) knot[4].x = float(num_patches.x); } if ((type.y & 1) != 0) { if (patch_pos.y <= 2) knot[0].y = 0.0; if (patch_pos.y <= 1) knot[1].y = 0.0; } if ((type.y & 2) != 0) { if (patch_pos.y >= (num_patches.y - 2)) knot[5].y = float(num_patches.y); if (patch_pos.y == (num_patches.y - 1)) knot[4].y = float(num_patches.y); } } void spline_weight(vec2 t, in vec2 knot[6], out vec2 weights[4]) { vec2 t0 = (t - knot[0]); vec2 t1 = (t - knot[1]); vec2 t2 = (t - knot[2]); vec2 f30 = t0 / (knot[3] - knot[0]); vec2 f41 = t1 / (knot[4] - knot[1]); vec2 f52 = t2 / (knot[5] - knot[2]); vec2 f31 = t1 / (knot[3] - knot[1]); vec2 f42 = t2 / (knot[4] - knot[2]); vec2 f32 = t2 / (knot[3] - knot[2]); vec2 a = (1.0 - f30)*(1.0 - f31); vec2 b = (f31*f41); vec2 c = (1.0 - f41)*(1.0 - f42); vec2 d = (f42*f52); weights[0] = a - (a*f32); weights[1] = vec2(1.0) - a - b + ((a + b + c - vec2(1.0))*f32); weights[2] = b + ((vec2(1.0) - b - c - d)*f32); weights[3] = d*f32; } void main() { vec3 _pos[16]; vec2 _tex[16]; vec4 _col[16]; int num_patches_u = u_spline_count_u - 3; int u = int(mod(float(gl_InstanceID), float(num_patches_u))); int v = gl_InstanceID / num_patches_u; ivec2 patch_pos = ivec2(u, v); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int index = (i + v) * u_spline_count_u + (j + u); _pos[i * 4 + j] = texelFetch(u_tess_po
METAL GEAR SOLID PORTABLE OPS v1.9.4 2019-12-07 FBO using existing buffer as depthbuffer, 04000000/04110000 and 04110000/04110000
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-01-30 WriteToHardware: Invalid address 00000000 near PC 08b83b5c LR 08b83b5c
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-10-03 ReadFromHardware: Invalid address 00000000 near PC 00000000 LR 00000000
METAL GEAR SOLID PORTABLE OPS v1.9.4 2020-02-04 Unknown GetPointer 00000000 PC 088439d8 LR 08000020
METAL GEAR SOLID PORTABLE OPS v1.8.0 2019-04-21 MIPSCompileOp: Invalid instruction 00260028
METAL GEAR SOLID PORTABLE OPS v1.8.0 2019-04-21 MIPSCompileOp: Invalid instruction 00d602be
METAL GEAR SOLID PORTABLE OPS v1.7.5 2019-02-09 Attempting to texture from target (src=00044000 / target=00044000 / flags=7)
METAL GEAR SOLID PORTABLE OPS v1.9.4 2020-02-25 FBO using existing buffer as depthbuffer, 04044000/04088000 and 04088000/04110000
METAL GEAR SOLID PORTABLE OPS v1.9.4 2020-02-20 FBO created from existing depthbuffer as color, 04088000/04110000 and 04044000/04088000
METAL GEAR SOLID PORTABLE OPS v1.9.3 2020-01-30 Unsupported AND logic op: 1
METAL GEAR SOLID PORTABLE OPS v1.6.3-519-ga661672cf 2018-10-14 Savedata version requested: 2
METAL GEAR SOLID PORTABLE OPS v1.9.3 2020-01-31 Savedata version requested: 1
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2020-01-15 Attempting to texture from target (src=00000000 / target=00000000 / flags=7)
METAL GEAR SOLID PORTABLE OPS v1.7.2 2020-01-20 Attempting to texture from target (src=001e0000 / target=001e0000 / flags=7)
METAL GEAR SOLID PORTABLE OPS v1.2.2-932-gb06359e 2017-11-19 DL PC = 00000000 WTF!!!!
METAL GEAR SOLID PORTABLE OPS v1.4.1 2017-06-21 FBO using existing buffer as depthbuffer, 00000000/00088000 and 00088000/00110000
METAL GEAR SOLID PORTABLE OPS v1.6.3 2018-09-06 UNIMPL sceUtilityGameSharingInitStart(096ec3fc)
METAL GEAR SOLID PORTABLE OPS v1.0-33-ge6af3cf 2015-11-21 FBO using existing buffer as depthbuffer, 00044000/00088000 and 00088000/00088000
METAL GEAR SOLID PORTABLE OPS v1.0.1-733-gcd1665e 2015-09-23 Render to texture with incompatible formats 3 != 1 at 00044000
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-05-14 sceKernelCreateThread(name=AdhocThread): unsupported options parameter 00001000
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-02-23 Render to texture with incompatible formats 4 != 3 at 04110000
METAL GEAR SOLID PORTABLE OPS v1.8.0 2020-02-24 Render to texture with different formats 1 != 3
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-02-23 Render to texture using CLUT with different strides 64 != 512
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-02-23 4 and 8-bit CLUT format not supported for framebuffers
METAL GEAR SOLID PORTABLE OPS v1.6.2 2018-06-17 FBO created from existing depthbuffer as color, 00088000/00110000 and 00000000/00088000
METAL GEAR SOLID PORTABLE OPS v1.0.1-98-g98d7afa 2016-06-19 Render to texture with incompatible formats 3 != 1 at 04044000
METAL GEAR SOLID PORTABLE OPS v1.5.2 2018-07-06 Loading module sceFont_Library with version 0101, devkit 00000000
METAL GEAR SOLID PORTABLE OPS v1.7.5 2020-02-03 FBO created from existing depthbuffer as color, 00088000/00110000 and 00044000/00088000
METAL GEAR SOLID PORTABLE OPS v0.9.8-1351-g756ad88 2015-09-06 FBO using existing buffer as depthbuffer, 00088000/00110000 and 00110000/00110000
METAL GEAR SOLID PORTABLE OPS v1.6.3-492-g9fddfff66 2019-05-02 FBO using existing buffer as depthbuffer, 00000000/00110000 and 00110000/00110000
METAL GEAR SOLID PORTABLE OPS v1.7.5 2020-02-12 FBO using existing buffer as depthbuffer, 00044000/00088000 and 00088000/00110000
METAL GEAR SOLID PORTABLE OPS v0.9.8-1351-g756ad88 2015-09-06 FBO created from existing depthbuffer as color, 00110000/00110000 and 00088000/00110000
METAL GEAR SOLID PORTABLE OPS v0.9.8-1351-g756ad88 2015-09-06 FBO created from existing depthbuffer as color, 00110000/00110000 and 00110000/00110000
METAL GEAR SOLID PORTABLE OPS v1.9.4 2020-02-25 Render to texture with different formats 3 != 1
METAL GEAR SOLID PORTABLE OPS v1.9.4 2020-02-25 sceKernelReleaseWaitThread(): Refusing to wake HLE-delayed thread, right thing to do?