diff --git a/bios/Other/epsxe/.variants/libopenglplugin.so.0e506076 b/bios/Other/epsxe/.variants/libopenglplugin.so.0e506076 new file mode 100644 index 00000000..cd8665a5 Binary files /dev/null and b/bios/Other/epsxe/.variants/libopenglplugin.so.0e506076 differ diff --git a/bios/Other/epsxe/.variants/libopenglplugin.so.1ca91fb5 b/bios/Other/epsxe/.variants/libopenglplugin.so.1ca91fb5 new file mode 100644 index 00000000..120a3614 Binary files /dev/null and b/bios/Other/epsxe/.variants/libopenglplugin.so.1ca91fb5 differ diff --git a/bios/Other/epsxe/.variants/libopenglplugin.so.b28dd257 b/bios/Other/epsxe/.variants/libopenglplugin.so.b28dd257 new file mode 100644 index 00000000..3024a597 Binary files /dev/null and b/bios/Other/epsxe/.variants/libopenglplugin.so.b28dd257 differ diff --git a/bios/Other/epsxe/cheats/database.dat b/bios/Other/epsxe/cheats/database.dat new file mode 100644 index 00000000..304b49c1 Binary files /dev/null and b/bios/Other/epsxe/cheats/database.dat differ diff --git a/bios/Other/epsxe/libopenglplugin.so b/bios/Other/epsxe/libopenglplugin.so new file mode 100644 index 00000000..3a3d5121 Binary files /dev/null and b/bios/Other/epsxe/libopenglplugin.so differ diff --git a/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.5073938e b/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.5073938e new file mode 100644 index 00000000..2ea338e0 Binary files /dev/null and b/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.5073938e differ diff --git a/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.e9c2aeb3 b/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.e9c2aeb3 new file mode 100644 index 00000000..196506a9 Binary files /dev/null and b/bios/Other/epsxe/plugins/.variants/libogl2extplugin.so.e9c2aeb3 differ diff --git a/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5bfbcbce b/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5bfbcbce new file mode 100644 index 00000000..038f77ec Binary files /dev/null and b/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5bfbcbce differ diff --git a/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5fdb7d37 b/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5fdb7d37 new file mode 100644 index 00000000..23834bc9 Binary files /dev/null and b/bios/Other/epsxe/plugins/.variants/liboglplugin2.so.5fdb7d37 differ diff --git a/bios/Other/epsxe/plugins/libogl2extplugin.so b/bios/Other/epsxe/plugins/libogl2extplugin.so new file mode 100644 index 00000000..2cedf9e5 Binary files /dev/null and b/bios/Other/epsxe/plugins/libogl2extplugin.so differ diff --git a/bios/Other/epsxe/plugins/liboglplugin2.so b/bios/Other/epsxe/plugins/liboglplugin2.so new file mode 100644 index 00000000..14310704 Binary files /dev/null and b/bios/Other/epsxe/plugins/liboglplugin2.so differ diff --git a/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.fsh b/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.fsh new file mode 100644 index 00000000..57b542a5 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.fsh @@ -0,0 +1,77 @@ +// 4xGLSL HqFilter shader, Modified to use in PPSSPP. Grabbed from: +// http://forums.ngemu.com/showthread.php?t=76098 + +// by guest(r) (guest.r@gmail.com) +// License: GNU-GPL + +// Shader notes: looks better with sprite games + +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +uniform sampler2D uTex; + +varying vec4 v_texcoord0; +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec4 v_texcoord5; +varying vec4 v_texcoord6; + +const float mx = 0.325; // start smoothing factor +const float k = -0.250; // smoothing decrease factor +const float max_w = 0.25; // max. smoothing weigth +const float min_w =-0.05; // min smoothing/sharpening weigth + +void main() +{ + vec3 c = texture2D(uTex, v_texcoord0.xy).xyz; + vec3 i1 = texture2D(uTex, v_texcoord1.xy).xyz; + vec3 i2 = texture2D(uTex, v_texcoord2.xy).xyz; + vec3 i3 = texture2D(uTex, v_texcoord3.xy).xyz; + vec3 i4 = texture2D(uTex, v_texcoord4.xy).xyz; + vec3 o1 = texture2D(uTex, v_texcoord5.xy).xyz; + vec3 o3 = texture2D(uTex, v_texcoord6.xy).xyz; + vec3 o2 = texture2D(uTex, v_texcoord5.zw).xyz; + vec3 o4 = texture2D(uTex, v_texcoord6.zw).xyz; + + vec3 dt = vec3(1.0,1.0,1.0); + + float ko1=dot(abs(o1-c),dt); + float ko2=dot(abs(o2-c),dt); + float ko3=dot(abs(o3-c),dt); + float ko4=dot(abs(o4-c),dt); + + float sd1 = dot(abs(i1-i3),dt); + float sd2 = dot(abs(i2-i4),dt); + + float w1 = step(ko1,ko3)*sd2; + float w2 = step(ko2,ko4)*sd1; + float w3 = step(ko3,ko1)*sd2; + float w4 = step(ko4,ko2)*sd1; + + c = (w1*o1+w2*o2+w3*o3+w4*o4+0.1*c)/(w1+w2+w3+w4+0.1); + + float lc = c.r+c.g+c.b+0.2; + + w1 = (i1.r+i1.g+i1.b+lc)*0.2; + w1 = clamp(k*dot(abs(c-i1),dt)/w1+mx,min_w,max_w); + + w2 = (i2.r+i2.g+i2.b+lc)*0.2; + w2 = clamp(k*dot(abs(c-i2),dt)/w2+mx,min_w,max_w); + + w3 = (i3.r+i3.g+i3.b+lc)*0.2; + w3 = clamp(k*dot(abs(c-i3),dt)/w3+mx,min_w,max_w); + + w4 = (i4.r+i4.g+i4.b+lc)*0.2; + w4 = clamp(k*dot(abs(c-i4),dt)/w4+mx,min_w,max_w); + + gl_FragColor.rgb = w1*i1 + w2*i2 + w3*i3 + w4*i4 + (1.0-w1-w2-w3-w4)*c; + gl_FragColor.a = 1.0; +} + + + diff --git a/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.vsh b/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.vsh new file mode 100644 index 00000000..b1e73000 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/4xhqglsl.vsh @@ -0,0 +1,42 @@ +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +attribute vec4 aVertex; +attribute vec2 aTexCoord; + +uniform highp float outX; +uniform highp float outY; + +uniform highp float resX; +uniform highp float resY; + + +varying vec4 v_texcoord0; +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec4 v_texcoord5; +varying vec4 v_texcoord6; + +void main() +{ + float x = outX*((resX/outX)/2.0); + float y = outX*((resY/outY)/2.0); + vec2 dg1 = vec2( x,y); + vec2 dg2 = vec2(-x,y); + vec2 sd1 = dg1*0.5; + vec2 sd2 = dg2*0.5; + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0);; + v_texcoord0=aTexCoord.xyxy; + v_texcoord1.xy = v_texcoord0.xy - sd1; + v_texcoord2.xy = v_texcoord0.xy - sd2; + v_texcoord3.xy = v_texcoord0.xy + sd1; + v_texcoord4.xy = v_texcoord0.xy + sd2; + v_texcoord5.xy = v_texcoord0.xy - dg1; + v_texcoord6.xy = v_texcoord0.xy + dg1; + v_texcoord5.zw = v_texcoord0.xy - dg2; + v_texcoord6.zw = v_texcoord0.xy + dg2; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.fsh b/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.fsh new file mode 100644 index 00000000..bca902bd --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.fsh @@ -0,0 +1,187 @@ +precision highp float; +precision highp int; +uniform sampler2D uTex; +uniform highp float resX; +uniform highp float resY; +varying vec4 v_texture_coordinate; +varying vec4 v_texture_coordinate_1; +varying vec4 v_texture_coordinate_2; +varying vec4 v_texture_coordinate_3; +varying vec4 v_texture_coordinate_4; +varying vec4 v_texture_coordinate_5; +varying vec4 v_texture_coordinate_6; +varying vec4 v_texture_coordinate_7; + + const float coef = 2.0; + const float threshold = 10.0; + const float y_weight = 48.0; + const float u_weight = 7.0; + const float v_weight = 6.0; + + const mat3 yuv = mat3(0.299, 0.587, 0.114, -0.169, -0.331, 0.499, 0.499, -0.418, -0.0813); + const mat3 yuv_weighted = mat3(y_weight * yuv[0], u_weight * yuv[1], v_weight * yuv[2]); + + vec4 RGBtoYUV(vec3 v0, vec3 v1, vec3 v2, vec3 v3) { + float a = yuv_weighted[0].x * v0.x + yuv_weighted[0].y * v0.y + yuv_weighted[0].z * v0.z; + float b = yuv_weighted[0].x * v1.x + yuv_weighted[0].y * v1.y + yuv_weighted[0].z * v1.z; + float c = yuv_weighted[0].x * v2.x + yuv_weighted[0].y * v2.y + yuv_weighted[0].z * v2.z; + float d = yuv_weighted[0].x * v3.x + yuv_weighted[0].y * v3.y + yuv_weighted[0].z * v3.z; + + return vec4(a, b, c, d); + } + + bvec4 _and_(bvec4 A, bvec4 B) { + return bvec4(A.x && B.x, A.y && B.y, A.z && B.z, A.w && B.w); + } + + bvec4 _or_(bvec4 A, bvec4 B) { + return bvec4(A.x || B.x, A.y || B.y, A.z || B.z, A.w || B.w); + } + + vec4 df(vec4 A, vec4 B) { + return vec4(abs(A - B)); + } + + bvec4 close(vec4 A, vec4 B) { + return (lessThan(df(A, B), vec4(10.0, 10.0, 10.0, 10.0))); + } + bvec4 eq2(vec4 A, vec4 B) + { + return (lessThan(df(A, B), vec4(2.0, 2.0, 2.0, 2.0))); + } + + float c_df(vec3 c1, vec3 c2) { + vec3 df = abs(c1 - c2); + return df.r + df.g + df.b; + } + + vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) { + return (df(a, b) + df(a, c) + df(d, e) + df(d, f) + 4.0 * df(g, h)); + } + + + void main() { + vec2 fp = fract(v_texture_coordinate.xy * vec2(resX, resY)); + + vec3 A1 = texture2D(uTex, v_texture_coordinate_1.xw).rgb; + vec3 B1 = texture2D(uTex, v_texture_coordinate_1.yw).rgb; + vec3 C1 = texture2D(uTex, v_texture_coordinate_1.zw).rgb; + + vec3 A = texture2D(uTex, v_texture_coordinate_2.xw).rgb; + vec3 B = texture2D(uTex, v_texture_coordinate_2.yw).rgb; + vec3 C = texture2D(uTex, v_texture_coordinate_2.zw).rgb; + + vec3 D = texture2D(uTex, v_texture_coordinate_3.xw).rgb; + vec3 E = texture2D(uTex, v_texture_coordinate_3.yw).rgb; + vec3 F = texture2D(uTex, v_texture_coordinate_3.zw).rgb; + + vec3 G = texture2D(uTex, v_texture_coordinate_4.xw).rgb; + vec3 H = texture2D(uTex, v_texture_coordinate_4.yw).rgb; + vec3 I = texture2D(uTex, v_texture_coordinate_4.zw).rgb; + + vec3 G5 = texture2D(uTex, v_texture_coordinate_5.xw).rgb; + vec3 H5 = texture2D(uTex, v_texture_coordinate_5.yw).rgb; + vec3 I5 = texture2D(uTex, v_texture_coordinate_5.zw).rgb; + + vec3 A0 = texture2D(uTex, v_texture_coordinate_6.xy).rgb; + vec3 D0 = texture2D(uTex, v_texture_coordinate_6.xz).rgb; + vec3 G0 = texture2D(uTex, v_texture_coordinate_6.xw).rgb; + + vec3 C4 = texture2D(uTex, v_texture_coordinate_7.xy).rgb; + vec3 F4 = texture2D(uTex, v_texture_coordinate_7.xz).rgb; + vec3 I4 = texture2D(uTex, v_texture_coordinate_7.xw).rgb; + + vec4 b = RGBtoYUV(B, D, H, F); + vec4 c = RGBtoYUV(C, A, G, I); + vec4 e = RGBtoYUV(E, E, E, E); + vec4 d = b.yzwx; + vec4 f = b.wxyz; + vec4 g = c.zwxy; + vec4 h = b.zwxy; + vec4 i = c.wxyz; + + vec4 i4 = RGBtoYUV(I4, C1, A0, G5); + vec4 i5 = RGBtoYUV(I5, C4, A1, G0); + vec4 h5 = RGBtoYUV(H5, F4, B1, D0); + vec4 f4 = h5.yzwx; + + vec4 c1 = i4.yzwx; + vec4 g0 = i5.wxyz; + vec4 b1 = h5.zwxy; + vec4 d0 = h5.wxyz; + + vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bo = vec4( 1.0, 1.0, -1.0, -1.0 ); + vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); + vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bx = vec4( 0.5, 2.0, -0.5, -2.0 ); + vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); + vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 By = vec4( 2.0, 0.5, -2.0, -0.5 ); + vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); + + vec4 Az = vec4( 6.0, -2.0, -6.0, 2.0 ); + vec4 Bz = vec4( 2.0, 6.0, -2.0, -6.0 ); + vec4 Cz = vec4( 5.0, 3.0, -3.0, -1.0 ); + vec4 Aw = vec4( 2.0, -6.0, -2.0, 6.0 ); + vec4 Bw = vec4( 6.0, 2.0, -6.0,-2.0 ); + vec4 Cw = vec4( 5.0, -1.0, -3.0, 3.0 ); + + // These inequations define the line below which interpolation occurs + bvec4 fx = greaterThan(Ao * fp.y + Bo * fp.x, Co); + bvec4 fx_left = greaterThan(Ax * fp.y + Bx * fp.x, Cx); + bvec4 fx_up = greaterThan(Ay * fp.y + By * fp.x, Cy); + bvec4 fx3_left = greaterThan(Az * fp.y + Bz * fp.x, Cz); + bvec4 fx3_up = greaterThan(Aw * fp.y + Bw * fp.x, Cw); + + // bvec4 t1 = _and_( notEqual(e, f), notEqual(e, h) ); + // bvec4 t2 = _and_( not(close(f, b)), not(close(h, d))); + // bvec4 t3 = _and_( not(close(f, i4)), not(close(h, i5))); + // bvec4 t4 = _or_( close(e, g), close(e, c) ); + // bvec4 t5 = _and_( close(e, i), _or_(t3, t4) ); + // bvec4 t6 = _and_( notEqual(f, f4), notEqual(f, i)); + // bvec4 t7 = _and_( notEqual(h, h5), notEqual(h, i)); + // bvec4 t8 = _or_( notEqual(h, g), notEqual(f, c)); + // bvec4 t9 = _and_( close(b, c1), close(d, g0)); + // bvec4 t10 = _or_(t2, t5); + // bvec4 t11 = _or_(_or_(t6, t7), _or_(t8, t9)); + // bvec4 interp_restriction_lv1 = _and_(t1, _and_(t10, t11)); + + bvec4 t1 = _and_( notEqual(e, f), notEqual(e, h) ); + bvec4 t2 = _and_( not(close(f, b)), not(close(h, d)) ); + bvec4 t3 = _and_( not(close(h, i4)), not(close(h, i5)) ); + bvec4 t4 = _and_( notEqual(f, f4), notEqual(f, i) ); + bvec4 t5 = _and_( notEqual(h, h5), notEqual(h, i) ); + bvec4 t6 = _and_( close(e, i), _or_(t4, t5) ); + bvec4 t7 = _or_( close(e, g), close(e, c) ); + bvec4 t8 = _and_( close(b, c1), close(d, g0)); + bvec4 t9 = _or_( notEqual(h, g), notEqual(f, c)); + bvec4 interp_restriction_lv1 = _and_( t1, _or_(_or_(_or_( _or_( _or_(t2, t3), t6 ), t7 ), t8), t9 )); + + bvec4 interp_restriction_lv2_left = _and_( notEqual(e, g), notEqual(d, g) ); + bvec4 interp_restriction_lv2_up = _and_( notEqual(e, c), notEqual(b, c) ); + bvec4 interp_restriction_lv3_left = _and_( eq2(g,g0), not(eq2(d0,g0)) ); + bvec4 interp_restriction_lv3_up = _and_( eq2(c,c1), not(eq2(b1,c1)) ); + + bvec4 edr = _and_( lessThan(weighted_distance(e, c, g, i, h5, f4, h, f), + weighted_distance(h, d, i5, f, i4, b, e, i)), interp_restriction_lv1 ); + bvec4 edr_left = _and_( lessThanEqual(coef * df(f, g), df(h, c)), interp_restriction_lv2_left ); + bvec4 edr_up = _and_( greaterThanEqual(df(f, g), coef * df(h, c)), interp_restriction_lv2_up ); + bvec4 edr3_left = interp_restriction_lv3_left; + bvec4 edr3_up = interp_restriction_lv3_up; + + + + bvec4 t13 = _or_(fx_left, _and_(edr3_left, fx3_left)); + bvec4 t14 = _or_(fx_up, _and_(edr3_up, fx3_up)); + bvec4 nc = _and_(edr, _or_(fx, _or_(_and_(edr_left, t13), _and_(edr_up, t14)))); + + bvec4 px = lessThanEqual(df(e, f), df(e, h)); + + vec3 res1 = nc.x ? px.x ? F : H : nc.y ? px.y ? B : F : nc.z ? px.z ? D : B : nc.w ? px.w ? H : D : E; + vec3 res2 = nc.w ? px.w ? H : D : nc.z ? px.z ? D : B : nc.y ? px.y ? B : F : nc.x ? px.x ? F : H : E; + + vec3 res = mix(res1, res2, step(c_df(E, res1), c_df(E, res2))); + + gl_FragColor.xyz = res; + } diff --git a/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.vsh b/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.vsh new file mode 100644 index 00000000..1ea21457 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/5XBRZ.vsh @@ -0,0 +1,32 @@ +attribute vec2 aVertex; +attribute vec2 aTexCoord; +uniform highp float outX; +uniform highp float outY; +varying vec4 v_texture_coordinate; +varying vec4 v_texture_coordinate_1; +varying vec4 v_texture_coordinate_2; +varying vec4 v_texture_coordinate_3; +varying vec4 v_texture_coordinate_4; +varying vec4 v_texture_coordinate_5; +varying vec4 v_texture_coordinate_6; +varying vec4 v_texture_coordinate_7; +void main() { + float dx = 1.0 / outX; + float dy = 1.0 / outY; + + // A1 B1 C1 + // A0 A B C C4 + // D0 D E F F4 + // G0 G H I I4 + // G5 H5 I5 + + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + v_texture_coordinate = aTexCoord.xyxy; + v_texture_coordinate_1 = aTexCoord.xxxy + vec4(-dx, 0.0, dx, -2.0*dy); // A1 B1 C1 + v_texture_coordinate_2 = aTexCoord.xxxy + vec4(-dx, 0.0, dx, -dy); // A B C + v_texture_coordinate_3 = aTexCoord.xxxy + vec4(-dx, 0.0, dx, 0.0); // D E F + v_texture_coordinate_4 = aTexCoord.xxxy + vec4(-dx, 0.0, dx, dy); // G H I + v_texture_coordinate_5 = aTexCoord.xxxy + vec4(-dx, 0.0, dx, 2.0*dy); // G5 H5 I5 + v_texture_coordinate_6 = aTexCoord.xyyy + vec4(-2.0*dx, -dy, 0.0,dy); // A0 D0 G0 + v_texture_coordinate_7 = aTexCoord.xyyy + vec4( 2.0*dx, -dy, 0.0,dy); // C4 F4 I4 + } diff --git a/bios/Other/fpse-ng/FPse64/shaders/5xBR.fsh b/bios/Other/fpse-ng/FPse64/shaders/5xBR.fsh new file mode 100644 index 00000000..70fc365b --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/5xBR.fsh @@ -0,0 +1,138 @@ +/* + Hyllian's 5xBR v3.5a Shader + + Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +uniform sampler2D uTex; +uniform highp float resX; +uniform highp float resY; +uniform highp float outX; +uniform highp float outY; + +varying vec2 v_texcoord0; + +const float coef = 2.0; +const vec3 rgbw = vec3(16.163, 23.351, 8.4772); + +const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); +const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); +const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); +const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); +const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); +const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); + + +vec4 df(vec4 A, vec4 B) { + return abs(A-B); +} + +vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) { + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h)); +} + + +void main(){ + + bool upscale = (1.0/outX) > (1.6 * (1.0/resX)); + vec3 res = texture2D(uTex, v_texcoord0.xy).xyz; + + // Let's skip the whole scaling if output size smaller than 1.6x of input size + if (upscale) { + + bvec4 edr, edr_left, edr_up, px; // px = pixel, edr = edge detection rule + bvec4 interp_restriction_lv1, interp_restriction_lv2_left, interp_restriction_lv2_up; + bvec4 nc; // new_color + bvec4 fx, fx_left, fx_up; // inequations of straight lines. + + vec2 pS = 1.0 / (vec2(1.0/outX,1.0/outY)); + vec2 fp = fract(v_texcoord0.xy*pS.xy); + vec2 TexCoord_0 = v_texcoord0.xy-fp*vec2(1.0/resX,1.0/resY); + vec2 dx = vec2(1.0/outX,0.0); + vec2 dy = vec2(0.0,1.0/outY); + vec2 y2 = dy + dy; vec2 x2 = dx + dx; + + + vec3 A = texture2D(uTex, TexCoord_0 -dx -dy ).xyz; + vec3 B = texture2D(uTex, TexCoord_0 -dy ).xyz; + vec3 C = texture2D(uTex, TexCoord_0 +dx -dy ).xyz; + vec3 D = texture2D(uTex, TexCoord_0 -dx ).xyz; + vec3 E = texture2D(uTex, TexCoord_0 ).xyz; + vec3 F = texture2D(uTex, TexCoord_0 +dx ).xyz; + vec3 G = texture2D(uTex, TexCoord_0 -dx +dy ).xyz; + vec3 H = texture2D(uTex, TexCoord_0 +dy ).xyz; + vec3 I = texture2D(uTex, TexCoord_0 +dx +dy ).xyz; + vec3 A1 = texture2D(uTex, TexCoord_0 -dx -y2).xyz; + vec3 C1 = texture2D(uTex, TexCoord_0 +dx -y2).xyz; + vec3 A0 = texture2D(uTex, TexCoord_0 -x2 -dy).xyz; + vec3 G0 = texture2D(uTex, TexCoord_0 -x2 +dy).xyz; + vec3 C4 = texture2D(uTex, TexCoord_0 +x2 -dy).xyz; + vec3 I4 = texture2D(uTex, TexCoord_0 +x2 +dy).xyz; + vec3 G5 = texture2D(uTex, TexCoord_0 -dx +y2).xyz; + vec3 I5 = texture2D(uTex, TexCoord_0 +dx +y2).xyz; + vec3 B1 = texture2D(uTex, TexCoord_0 -y2).xyz; + vec3 D0 = texture2D(uTex, TexCoord_0 -x2 ).xyz; + vec3 H5 = texture2D(uTex, TexCoord_0 +y2).xyz; + vec3 F4 = texture2D(uTex, TexCoord_0 +x2 ).xyz; + + + vec4 b = vec4(dot(B ,rgbw), dot(D ,rgbw), dot(H ,rgbw), dot(F ,rgbw)); + vec4 c = vec4(dot(C ,rgbw), dot(A ,rgbw), dot(G ,rgbw), dot(I ,rgbw)); + vec4 d = vec4(b.y, b.z, b.w, b.x); + vec4 e = vec4(dot(E,rgbw)); + vec4 f = vec4(b.w, b.x, b.y, b.z); + vec4 g = vec4(c.z, c.w, c.x, c.y); + vec4 h = vec4(b.z, b.w, b.x, b.y); + vec4 i = vec4(c.w, c.x, c.y, c.z); + vec4 i4 = vec4(dot(I4,rgbw), dot(C1,rgbw), dot(A0,rgbw), dot(G5,rgbw)); + vec4 i5 = vec4(dot(I5,rgbw), dot(C4,rgbw), dot(A1,rgbw), dot(G0,rgbw)); + vec4 h5 = vec4(dot(H5,rgbw), dot(F4,rgbw), dot(B1,rgbw), dot(D0,rgbw)); + vec4 f4 = vec4(h5.y, h5.z, h5.w, h5.x); + + // These inequations define the line below which interpolation occurs. + fx = greaterThan(Ao*fp.y+Bo*fp.x,Co); + fx_left = greaterThan(Ax*fp.y+Bx*fp.x,Cx); + fx_up = greaterThan(Ay*fp.y+By*fp.x,Cy); + + interp_restriction_lv1 = bvec4(vec4(notEqual(e,f))*vec4(notEqual(e,h))); + interp_restriction_lv2_left = bvec4(vec4(notEqual(e,g))*vec4(notEqual(d,g))); + interp_restriction_lv2_up = bvec4(vec4(notEqual(e,c))*vec4(notEqual(b,c))); + + edr = bvec4(vec4(lessThan(weighted_distance( e, c, g, i, h5, f4, h, f), weighted_distance( h, d, i5, f, i4, b, e, i)))*vec4(interp_restriction_lv1)); + edr_left = bvec4(vec4(lessThanEqual(coef*df(f,g),df(h,c)))*vec4(interp_restriction_lv2_left)); + edr_up = bvec4(vec4(greaterThanEqual(df(f,g),coef*df(h,c)))*vec4(interp_restriction_lv2_up)); + + nc.x = ( edr.x && (fx.x || edr_left.x && fx_left.x || edr_up.x && fx_up.x) ); + nc.y = ( edr.y && (fx.y || edr_left.y && fx_left.y || edr_up.y && fx_up.y) ); + nc.z = ( edr.z && (fx.z || edr_left.z && fx_left.z || edr_up.z && fx_up.z) ); + nc.w = ( edr.w && (fx.w || edr_left.w && fx_left.w || edr_up.w && fx_up.w) ); + + px = lessThanEqual(df(e,f),df(e,h)); + + res = nc.x ? px.x ? F : H : nc.y ? px.y ? B : F : nc.z ? px.z ? D : B : nc.w ? px.w ? H : D : E; + } + gl_FragColor.rgb = res; + gl_FragColor.a = 1.0; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/5xBR.vsh b/bios/Other/fpse-ng/FPse64/shaders/5xBR.vsh new file mode 100644 index 00000000..8f6be907 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/5xBR.vsh @@ -0,0 +1,37 @@ +/* + Hyllian's 5xBR v3.5a Shader + + Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +attribute vec2 aVertex; +attribute vec2 aTexCoord; + + + +varying vec2 v_texcoord0; + +void main() { + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + v_texcoord0 = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Aacolor.fsh b/bios/Other/fpse-ng/FPse64/shaders/Aacolor.fsh new file mode 100644 index 00000000..af2a3c2d --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Aacolor.fsh @@ -0,0 +1,69 @@ +// AA-Color shader, Modified to use in PPSSPP. Grabbed from: +// http://forums.ngemu.com/showthread.php?t=76098 + +// by guest(r) (guest.r@gmail.com) +// license: GNU-GPL + +// Color variables + +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +const vec3 c_ch = vec3(1.0,1.0,1.0); // rgb color channel intensity +const float a = 1.20 ; // saturation +const float b = 1.00 ; // brightness +const float c = 1.25 ; // contrast + +// you can use contrast1,contrast2...contrast4 (or contrast0 for speedup) + +float contrast0(float x) +{ return x; } + +float contrast1(float x) +{ x = x*1.1547-1.0; + return sign(x)*pow(abs(x),1.0/c)*0.86 + 0.86;} + +float contrast2(float x) +{ return normalize(vec2(pow(x,c),pow(0.86,c))).x*1.72;} + +float contrast3(float x) +{ return 1.73*pow(0.57735*x,c); } + +float contrast4(float x) +{ return clamp(0.866 + c*(x-0.866),0.05, 1.73); } + +uniform sampler2D uTex; + +varying vec4 v_texcoord0; +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec4 v_texcoord5; +varying vec4 v_texcoord6; + +void main() +{ + vec3 c10 = texture2D(uTex, v_texcoord1.xy).xyz; + vec3 c01 = texture2D(uTex, v_texcoord4.xy).xyz; + vec3 c11 = texture2D(uTex, v_texcoord0.xy).xyz; + vec3 c21 = texture2D(uTex, v_texcoord5.xy).xyz; + vec3 c12 = texture2D(uTex, v_texcoord2.xy).xyz; + + vec3 dt = vec3(1.0,1.0,1.0); + float k1=dot(abs(c01-c21),dt); + float k2=dot(abs(c10-c12),dt); + + vec3 color = (k1*(c10+c12)+k2*(c01+c21)+0.001*c11)/(2.0*(k1+k2)+0.001); + + float x = sqrt(dot(color,color)); + + color.r = pow(color.r+0.001,a); + color.g = pow(color.g+0.001,a); + color.b = pow(color.b+0.001,a); + + gl_FragColor.rgb = contrast4(x)*normalize(color*c_ch)*b; + gl_FragColor.a = 1.0; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/Aacolor.vsh b/bios/Other/fpse-ng/FPse64/shaders/Aacolor.vsh new file mode 100644 index 00000000..87ad3a65 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Aacolor.vsh @@ -0,0 +1,41 @@ +// by guest(r) - guest.r@gmail.com +// license: GNU-GPL + +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + + +attribute vec2 aVertex; +attribute vec2 aTexCoord; +uniform highp float outX; +uniform highp float outY; + + +varying vec4 v_texcoord0; +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec4 v_texcoord5; +varying vec4 v_texcoord6; + +float scaleoffset = 0.8; + +void main() + +{ + float x = (1.0/outX)*scaleoffset; + float y = (1.0/outY)*scaleoffset; + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + v_texcoord0 = aTexCoord.xyxy; + v_texcoord1 = v_texcoord0; + v_texcoord2 = v_texcoord0; + v_texcoord4 = v_texcoord0; + v_texcoord5 = v_texcoord0; + v_texcoord1.y-=y; + v_texcoord2.y+=y; + v_texcoord4.x-=x; + v_texcoord5.x+=x; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.fsh b/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.fsh new file mode 100644 index 00000000..e44f4a89 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.fsh @@ -0,0 +1,296 @@ +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +varying vec2 vTexCoord; +uniform sampler2D uTex; +uniform float resX; +uniform float resY; + + +/* + Hyllian's CRT Shader + + Copyright (C) 2011-2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +// Uncomment to enable anti-ringing to horizontal filter. +//#define ANTI_RINGING + +// Comment next line if you don't desire the phosphor effect. +//#define PHOSPHOR + +// Uncomment to enable adjustment of red and green saturation. +//#define RED_GREEN_CONTROL + +#define InputGamma 2.4 +#define OutputGamma 2.2 +#define RED_BOOST 1.0 +#define GREEN_BOOST 1.0 +#define SCANLINES_STRENGTH 0.72 +#define BEAM_MIN_WIDTH 0.86 +#define BEAM_MAX_WIDTH 1.0 +#define COLOR_BOOST 1.5 +#define CRT_TV_BLUE_TINT 1.0 + + +#define GAMMA_IN(color) pow(color, vec3(InputGamma, InputGamma, InputGamma)) +#define GAMMA_OUT(color) pow(color, vec3(1.0 / OutputGamma, 1.0 / OutputGamma, 1.0 / OutputGamma)) + +const vec3 dtt = vec3(65536.0,255.0,1.0); + + +// Horizontal cubic filter. + +// Some known filters use these values: + +// B = 0.0, C = 0.0 => Hermite cubic filter. +// B = 1.0, C = 0.0 => Cubic B-Spline filter. +// B = 0.0, C = 0.5 => Catmull-Rom Spline filter. This is the default used in this shader. +// B = C = 1.0/3.0 => Mitchell-Netravali cubic filter. +// B = 0.3782, C = 0.3109 => Robidoux filter. +// B = 0.2620, C = 0.3690 => Robidoux Sharp filter. +// B = 0.36, C = 0.28 => My best config for ringing elimination in pixel art (Hyllian). + + +// For more info, see: http://www.imagemagick.org/Usage/img_diagrams/cubic_survey.gif + +// Change these params to configure the horizontal filter. +const float B = 0.0; +const float C = 0.5; + +/* +const mat4 invX = mat4( (-B - 6.0*C)/6.0, (3.0*B + 12.0*C)/6.0, (-3.0*B - 6.0*C)/6.0, B/6.0, + (12.0 - 9.0*B - 6.0*C)/6.0, (-18.0 + 12.0*B + 6.0*C)/6.0, 0.0, (6.0 - 2.0*B)/6.0, + -(12.0 - 9.0*B - 6.0*C)/6.0, (18.0 - 15.0*B - 12.0*C)/6.0, (3.0*B + 6.0*C)/6.0, B/6.0, + (B + 6.0*C)/6.0, -C, 0.0, 0.0); + +*/ +const mat4 invX = mat4( (-B - 6.0*C)/6.0, (12.0 - 9.0*B - 6.0*C)/6.0, -(12.0 - 9.0*B - 6.0*C)/6.0, (B + 6.0*C)/6.0, + (3.0*B + 12.0*C)/6.0, (-18.0 + 12.0*B + 6.0*C)/6.0, (18.0 - 15.0*B - 12.0*C)/6.0, -C, + (-3.0*B - 6.0*C)/6.0, 0.0, (3.0*B + 6.0*C)/6.0, 0.0, + B/6.0, (6.0 - 2.0*B)/6.0, B/6.0, 0.0); + + +/* +const static float4x4 invX = float4x4( (-B - 6.0*C)/6.0, (3.0*B + 12.0*C)/6.0, (-3.0*B - 6.0*C)/6.0, B/6.0, + (12.0 - 9.0*B - 6.0*C)/6.0, (-18.0 + 12.0*B + 6.0*C)/6.0, 0.0, (6.0 - 2.0*B)/6.0, + -(12.0 - 9.0*B - 6.0*C)/6.0, (18.0 - 15.0*B - 12.0*C)/6.0, (3.0*B + 6.0*C)/6.0, B/6.0, + (B + 6.0*C)/6.0, -C, 0.0, 0.0); + +*/ + +const float halfpi = 1.5707963267948966192313216916398; +const float pi = 3.1415926535897932384626433832795; +const float JINC2_WINDOW_SINC = 0.42; +const float JINC2_SINC = 0.92; +const float wa = JINC2_WINDOW_SINC*pi; +const float wb = JINC2_SINC*pi; +const float JINC2_AR_STRENGTH = 0.8; + +/* +const vec2 OGLSize = vec2( 4096.0, 2048.0 ); + +const vec2 OGLInvSize = vec2( 1.0/4096.0, 1.0/2048.0 ); + +const vec2 dx = vec2( 1.0/4096.0, 0.0 ); + +const vec2 dy = vec2( 0.0, 1.0/2048.0 ); + +*/ +/* +const vec2 OGLSize = vec2( 1024.0, 512.0); + +const vec2 OGLInvSize = vec2( 0.0009765625, 0.001953125); + +const vec2 dx = vec2( 0.0009765625, 0.0); + +const vec2 dy = vec2( 0.0, 0.001953125 ); + +*/ + +//uniform vec4 OGL2InvSize; +//uniform vec4 OGL2Size; + +float reduce(vec3 A) +{ + return dot(A, dtt); +} + + +// Calculates the distance between two points +float d(vec2 pt1, vec2 pt2) +{ + vec2 v = pt2 - pt1; + return sqrt(dot(v,v)); +} + +vec3 min4(vec3 a, vec3 b, vec3 c, vec3 d) +{ + return min(a, min(b, min(c, d))); +} + +vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d) +{ + return max(a, max(b, max(c, d))); +} + +vec4 resampler(vec4 x) +{ + vec4 res; + + res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x); + + return res; +} + +void main() +{ + vec3 color, E; + vec2 OGL2InvSize = vec2(resX, resY); + vec2 OGL2Size = 1.0/OGL2InvSize; + + vec2 dx = vec2(OGL2InvSize.x,0.0); + vec2 dy = vec2(0.0, OGL2InvSize.y); + + vec2 pix_coord = vTexCoord.xy*OGL2Size+vec2(-0.5,0.5); + vec2 tex = (floor(vTexCoord.xy*OGL2Size) + vec2(0.5, 0.5))*OGL2InvSize; + + vec2 tc = (floor(pix_coord)+vec2(0.5,0.5))*OGL2InvSize; + + vec2 fp = fract(pix_coord*0.25); + + vec3 c00 = GAMMA_IN(texture2D(uTex, tc - dx - dy).xyz); + vec3 c01 = GAMMA_IN(texture2D(uTex, tc - dy).xyz); + vec3 c02 = GAMMA_IN(texture2D(uTex, tc + dx - dy).xyz); + vec3 c03 = GAMMA_IN(texture2D(uTex, tc + 2.0*dx - dy).xyz); + vec3 c10 = GAMMA_IN(texture2D(uTex, tc - dx).xyz); + vec3 c11 = GAMMA_IN(texture2D(uTex, tc ).xyz); + vec3 c12 = GAMMA_IN(texture2D(uTex, tc + dx).xyz); + vec3 c13 = GAMMA_IN(texture2D(uTex, tc + 2.0*dx).xyz); + + color = E = GAMMA_IN(texture2D(uTex, vTexCoord.xy).xyz); + + vec3 F0 = texture2D(uTex, tex +dx+0.25*dx +0.25*dy).xyz; + vec3 F1 = texture2D(uTex, tex +dx+0.25*dx -0.25*dy).xyz; + vec3 F2 = texture2D(uTex, tex +dx-0.25*dx -0.25*dy).xyz; + vec3 F3 = texture2D(uTex, tex +dx-0.25*dx +0.25*dy).xyz; + + vec3 H0 = texture2D(uTex, tex +0.25*dx +0.25*dy+dy).xyz; + vec3 H1 = texture2D(uTex, tex +0.25*dx -0.25*dy+dy).xyz; + vec3 H2 = texture2D(uTex, tex -0.25*dx -0.25*dy+dy).xyz; + vec3 H3 = texture2D(uTex, tex -0.25*dx +0.25*dy+dy).xyz; + + float f0 = reduce(F0); + float f1 = reduce(F1); + float f2 = reduce(F2); + float f3 = reduce(F3); + + float h0 = reduce(H0); + float h1 = reduce(H1); + float h2 = reduce(H2); + float h3 = reduce(H3); + + bool block_3d = ((f0==f1)&&(f1==f2)&&(f2==f3)&&(h0==h1)&&(h1==h2)&&(h2==h3)); + + +#ifdef ANTI_RINGING + // Get min/max samples + vec3 min_sample = min(min(c01,c11), min(c02,c12)); + vec3 max_sample = max(max(c01,c11), max(c02,c12)); +// vec3 min_sample = min(min(c01,c11), min(c02,c12)) + (c10-c11)*(c12-c13); +// vec3 max_sample = max(max(c01,c11), max(c02,c12)) - (c10-c11)*(c12-c13); +#endif + + mat4 color_matrix0 = mat4(vec4(c00,1.0), vec4(c01,1.0), vec4(c02,1.0), vec4(c03,1.0)); + mat4 color_matrix1 = mat4(vec4(c10,1.0), vec4(c11,1.0), vec4(c12,1.0), vec4(c13,1.0)); + + vec4 lobes = vec4(fp.x*fp.x*fp.x, fp.x*fp.x, fp.x, 1.0); + + vec4 invX_Px = invX * lobes; + vec3 color0 = (color_matrix0 * invX_Px).xyz; + vec3 color1 = (color_matrix1 * invX_Px).xyz; + + +/* + vec4 invX_Px = vec4(dot(invX[0], poli), dot(invX[1], poli), dot(invX[2], poli), dot(invX[3], poli)); + vec3 color0 = vec3(dot(color_matrix0[0], invX_Px), dot(color_matrix0[1], invX_Px), dot(color_matrix0[2], invX_Px)); + vec3 color1 = vec3(dot(color_matrix1[0], invX_Px), dot(color_matrix1[1], invX_Px), dot(color_matrix1[2], invX_Px)); +*/ + +/* + float4x3 color_matrix0 = float4x3(c00, c01, c02, c03); + float4x3 color_matrix1 = float4x3(c10, c11, c12, c13); + + float4 invX_Px = mul(invX, float4(fp.x*fp.x*fp.x, fp.x*fp.x, fp.x, 1.0)); + float3 color0 = mul(invX_Px, color_matrix0); + float3 color1 = mul(invX_Px, color_matrix1); +*/ + +#ifdef ANTI_RINGING + // Anti-ringing + color0 = clamp(color0, min_sample, max_sample); + color1 = clamp(color1, min_sample, max_sample); +#endif + + float pos0 = fp.y; + float pos1 = 1.0 - fp.y; + + vec3 lum0 = mix(vec3(BEAM_MIN_WIDTH), vec3(BEAM_MAX_WIDTH), color0); + vec3 lum1 = mix(vec3(BEAM_MIN_WIDTH), vec3(BEAM_MAX_WIDTH), color1); + + vec3 d0 = clamp(pos0/(lum0+0.0000001), 0.0, 1.0); + vec3 d1 = clamp(pos1/(lum1+0.0000001), 0.0, 1.0); + + d0 = exp(-10.0*SCANLINES_STRENGTH*d0*d0); + d1 = exp(-10.0*SCANLINES_STRENGTH*d1*d1); + + color = clamp(color0*d0+color1*d1, 0.0, 1.0); + + color *= COLOR_BOOST; + +#ifdef RED_GREEN_CONTROL + color.rgb *= vec3(RED_BOOST, GREEN_BOOST, CRT_TV_BLUE_TINT); +#else + color.b *= CRT_TV_BLUE_TINT; +#endif + +#ifdef PHOSPHOR + float mod_factor = VAR.texCoord.x * IN.output_size.x * IN.texture_size.x / IN.video_size.x; + + vec3 dotMaskWeights = mix( + vec3(1.0, 0.7, 1.0), + vec3(0.7, 1.0, 0.7), + floor(fmod(mod_factor, 2.0)) + ); + + color.rgb *= dotMaskWeights; +#endif + + color = block_3d ? color : E; + + color = GAMMA_OUT(color); + + // final sum and weight normalization + gl_FragColor.xyz = color; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.vsh b/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.vsh new file mode 100644 index 00000000..5b834308 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/CRT-Hyllian.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.fsh b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.fsh new file mode 100644 index 00000000..e6733afd --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.fsh @@ -0,0 +1,31 @@ +precision mediump float; +uniform sampler2D uTex; +uniform lowp float resX; +uniform lowp float resY; +varying vec2 vTexCoord; +void main() +{ + const float th = 0.10; + const float bb = 0.50; + const float pp = 1.50; + vec2 stp0 = vec2(resX, 0.); + vec2 st0p = vec2(0., resY); + vec2 stpp = vec2(resX, resY); + vec2 stpm = vec2(resX, -resY); + vec3 c11 = texture2D(uTex, vTexCoord).rgb; + vec3 c00 = texture2D(uTex, vTexCoord-stpp).rgb; + vec3 c22 = texture2D(uTex, vTexCoord+stpp).rgb; + vec3 c20 = texture2D(uTex, vTexCoord-stpm).rgb; + vec3 c02 = texture2D(uTex, vTexCoord+stpm).rgb; + vec3 c01 = texture2D(uTex, vTexCoord-stp0).rgb; + vec3 c21 = texture2D(uTex, vTexCoord+stp0).rgb; + vec3 c10 = texture2D(uTex, vTexCoord-st0p).rgb; + vec3 c12 = texture2D(uTex, vTexCoord+st0p).rgb; + vec3 dt = vec3(1.0,1.0,1.0); + float d1=dot(abs(c00-c22),dt); + float d2=dot(abs(c20-c02),dt); + float hl=dot(abs(c01-c21),dt); + float vl=dot(abs(c10-c12),dt); + float d = bb*pow(max(d1+d2+hl+vl-th,0.0),pp)/(dot(c11,dt)+0.25); + gl_FragColor = vec4((1.1-d)*c11, 1.); +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.vsh b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.vsh new file mode 100644 index 00000000..2afc49b8 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_A.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.fsh b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.fsh new file mode 100644 index 00000000..2df01112 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.fsh @@ -0,0 +1,30 @@ +precision mediump float; +uniform sampler2D uTex; +uniform lowp float resX; +uniform lowp float resY; +varying vec2 vTexCoord; +const float th = 0.15; +const float bb = 1.50; +const float pp = 1.55; +const float cl = 7.00; +void main() +{ + vec2 stp0 = vec2(resX, 0.); + vec2 st0p = vec2(0., resY); + vec3 ct = texture2D(uTex, vTexCoord).rgb; + vec3 lx = texture2D(uTex, vTexCoord-stp0).rgb; + vec3 rx = texture2D(uTex, vTexCoord+stp0).rgb; + vec3 uy = texture2D(uTex, vTexCoord-st0p).rgb; + vec3 dy = texture2D(uTex, vTexCoord+st0p).rgb; + vec3 dt = vec3(1.0,1.0,1.0); + float d1 = 2.5*dot(abs(lx-rx),dt)/(dot(lx+rx,dt)+0.50); + float d2 = 2.5*dot(abs(uy-dy),dt)/(dot(uy+dy,dt)+0.50); + float d = d1 + d2; + float l = cl*length(ct)/1.73; + float p = floor(l); + float v = fract(l); + float t = (p==0.0)?0.6:0.33; + v = 0.6*(max(v-1.0+t,0.0))/t; + v = 1.73*(p+v)/cl + 0.05; + gl_FragColor = vec4(clamp((1.12-bb*pow(max(d-th,0.0),pp))*v*normalize(ct),0.,1.), 1.); +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.vsh b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.vsh new file mode 100644 index 00000000..2afc49b8 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Cartoon_B.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Dot.fsh b/bios/Other/fpse-ng/FPse64/shaders/Dot.fsh new file mode 100644 index 00000000..5b16a14b --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Dot.fsh @@ -0,0 +1,46 @@ +precision highp float; +precision highp int; +uniform sampler2D uTex; +uniform highp float resX; +uniform highp float resY; +varying highp vec2 vTexCoord; + +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec2 v_texcoord5; +varying vec2 v_texcoord6; +float dist(vec2 coord, vec2 source) +{ + vec2 delta = coord - source; + return sqrt(dot(delta, delta)); +} +float color_bloom(vec3 color) +{ + const vec3 gray_coeff = vec3(0.30, 0.59, 0.11); + float bright = dot(color, gray_coeff); + return mix(1.0 + 0.05, 1.0 - 0.05, bright); +} +vec3 lookup(vec2 pixel_no, float offset_x, float offset_y, vec3 color) +{ + vec2 offset = vec2(offset_x, offset_y); + float delta = dist(fract(pixel_no), offset + vec2(0.5, 0.5)); + return color * exp(-2.4 * delta * color_bloom(color)); +} +void main() +{ + vec3 mid_color = lookup(v_texcoord6, 0.0, 0.0, texture2D(uTex, v_texcoord5).rgb); + vec3 color = vec3(0.0, 0.0, 0.0); + color += lookup(v_texcoord6, -1.0, -1.0, texture2D(uTex, v_texcoord1.xy).rgb); + color += lookup(v_texcoord6, 0.0, -1.0, texture2D(uTex, v_texcoord1.zw).rgb); + color += lookup(v_texcoord6, 1.0, -1.0, texture2D(uTex, v_texcoord2.xy).rgb); + color += lookup(v_texcoord6, -1.0, 0.0, texture2D(uTex, v_texcoord2.zw).rgb); + color += mid_color; + color += lookup(v_texcoord6, 1.0, 0.0, texture2D(uTex, v_texcoord3.xy).rgb); + color += lookup(v_texcoord6, -1.0, 1.0, texture2D(uTex, v_texcoord3.zw).rgb); + color += lookup(v_texcoord6, 0.0, 1.0, texture2D(uTex, v_texcoord4.xy).rgb); + color += lookup(v_texcoord6, 1.0, 1.0, texture2D(uTex, v_texcoord4.zw).rgb); + vec3 out_color = mix(1.2 * mid_color, color, 0.65); + gl_FragColor = vec4(out_color, 1.0); +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Dot.vsh b/bios/Other/fpse-ng/FPse64/shaders/Dot.vsh new file mode 100644 index 00000000..d203fe54 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Dot.vsh @@ -0,0 +1,24 @@ +uniform highp float outX; +uniform highp float outY; +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying highp vec2 vTexCoord; +varying vec4 v_texcoord1; +varying vec4 v_texcoord2; +varying vec4 v_texcoord3; +varying vec4 v_texcoord4; +varying vec2 v_texcoord5; +varying vec2 v_texcoord6; +void main() +{ + vTexCoord = aTexCoord; + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + float dx = 1.0 / 1280.0; + float dy = 1.0 / 720.0; + v_texcoord1 = vec4(vTexCoord + vec2(-dx, -dy), vTexCoord + vec2(0.0, -dy)); + v_texcoord2 = vec4(vTexCoord + vec2(dx, -dy), vTexCoord + vec2(-dx, 0.0)); + v_texcoord3 = vec4(vTexCoord + vec2(dx, 0.0), vTexCoord + vec2(-dx, dy)); + v_texcoord4 = vec4(vTexCoord + vec2(0.0, dy), vTexCoord + vec2(dx, dy)); + v_texcoord5 = vTexCoord; + v_texcoord6 = vTexCoord * (vec2(1280.0,720.0)); +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/FXAA.fsh b/bios/Other/fpse-ng/FPse64/shaders/FXAA.fsh new file mode 100644 index 00000000..de1e23b5 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/FXAA.fsh @@ -0,0 +1,38 @@ +precision mediump float; +uniform sampler2D uTex; +uniform lowp float resX; +uniform lowp float resY; +varying vec2 vTexCoord; +void main() { + float FXAA_SPAN_MAX = 8.0; + float FXAA_REDUCE_MUL = 1.0/8.0; + float FXAA_REDUCE_MIN = (1.0/128.0); + vec3 rgbNW = texture2D(uTex, vTexCoord + (vec2(-1.0, -1.0) * vec2(resX, resY))).xyz; + vec3 rgbNE = texture2D(uTex, vTexCoord + (vec2(+1.0, -1.0) * vec2(resX, resY))).xyz; + vec3 rgbSW = texture2D(uTex, vTexCoord + (vec2(-1.0, +1.0) * vec2(resX, resY))).xyz; + vec3 rgbSE = texture2D(uTex, vTexCoord + (vec2(+1.0, +1.0) * vec2(resX, resY))).xyz; + vec3 rgbM = texture2D(uTex, vTexCoord).xyz; + vec3 luma = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma); + float lumaNE = dot(rgbNE, luma); + float lumaSW = dot(rgbSW, luma); + float lumaSE = dot(rgbSE, luma); + float lumaM = dot(rgbM, luma); + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) * vec2(resX, resY); + vec3 rgbA = (1.0/2.0) * (texture2D(uTex, vTexCoord + dir * (1.0/3.0 - 0.5)).xyz +texture2D(uTex, vTexCoord + dir * (2.0/3.0 - 0.5)).xyz); + vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (texture2D(uTex, vTexCoord + dir * (0.0/3.0 - 0.5)).xyz +texture2D(uTex, vTexCoord + dir * (3.0/3.0 - 0.5)).xyz); + float lumaB = dot(rgbB, luma); + if((lumaB < lumaMin) || (lumaB > lumaMax)){ + gl_FragColor.xyz=rgbA; + }else{ + gl_FragColor.xyz=rgbB; + } + gl_FragColor.a = 1.0; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/FXAA.vsh b/bios/Other/fpse-ng/FPse64/shaders/FXAA.vsh new file mode 100644 index 00000000..2afc49b8 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/FXAA.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.fsh b/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.fsh new file mode 100644 index 00000000..8d62791b --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.fsh @@ -0,0 +1,55 @@ +precision mediump float; // Set the default precision to medium. We don't need as high of a +uniform sampler2D uTex; // The input texture. +uniform lowp float resX; +uniform lowp float resY; +varying vec2 vTexCoord; // Interpolated texture coordinate per fragment +const mat3 RGBtoYIQ = mat3(0.299, 0.596, 0.212, + 0.587,-0.275,-0.523, + 0.114,-0.321, 0.311); +const mat3 YIQtoRGB = mat3(1.0, 1.0, 1.0, + 0.95568806036115671171,-0.27158179694405859326,-1.1081773266826619523, + 0.61985809445637075388,-0.64687381613840131330, 1.7050645599191817149); +const vec3 val00 = vec3( 1.2, 1.2, 1.2); +void main() { + float FXAA_SPAN_MAX = 8.0; + float FXAA_REDUCE_MUL = 1.0/8.0; + float FXAA_REDUCE_MIN = (1.0/128.0); + vec3 rgbNW = texture2D(uTex, vTexCoord + (vec2(-1.0, -1.0) * vec2(resX, resY))).xyz; + vec3 rgbNE = texture2D(uTex, vTexCoord + (vec2(+1.0, -1.0) * vec2(resX, resY))).xyz; + vec3 rgbSW = texture2D(uTex, vTexCoord + (vec2(-1.0, +1.0) * vec2(resX, resY))).xyz; + vec3 rgbSE = texture2D(uTex, vTexCoord + (vec2(+1.0, +1.0) * vec2(resX, resY))).xyz; + vec3 rgbM = texture2D(uTex, vTexCoord).xyz; + vec3 luma = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma); + float lumaNE = dot(rgbNE, luma); + float lumaSW = dot(rgbSW, luma); + float lumaSE = dot(rgbSE, luma); + float lumaM = dot(rgbM, luma); + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), + max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) * vec2(resX, resY); + vec3 rgbA = (1.0/2.0) * ( + texture2D(uTex, vTexCoord + dir * (1.0/3.0 - 0.5)).xyz + + texture2D(uTex, vTexCoord + dir * (2.0/3.0 - 0.5)).xyz); + vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * ( + texture2D(uTex, vTexCoord + dir * (0.0/3.0 - 0.5)).xyz + + texture2D(uTex, vTexCoord + dir * (3.0/3.0 - 0.5)).xyz); + float lumaB = dot(rgbB, luma); + if((lumaB < lumaMin) || (lumaB > lumaMax)) + { + rgbM = RGBtoYIQ*rgbA; + rgbM = vec3(pow(rgbM.x,val00.x),rgbM.yz*val00.yz); + gl_FragColor.xyz=YIQtoRGB*rgbM; + } else { + rgbM = RGBtoYIQ*rgbB; + rgbM = vec3(pow(rgbM.x,val00.x),rgbM.yz*val00.yz); + gl_FragColor.xyz=YIQtoRGB*rgbM; + } + gl_FragColor.a = 1.0; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.vsh b/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.vsh new file mode 100644 index 00000000..2afc49b8 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/FXAA_natural_vision.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/Grayscale.fsh b/bios/Other/fpse-ng/FPse64/shaders/Grayscale.fsh new file mode 100644 index 00000000..d1b2fa34 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Grayscale.fsh @@ -0,0 +1,9 @@ +precision mediump float; +varying vec2 vTexCoord; +uniform sampler2D uTex; + +void main() +{ + vec4 fragColor = texture2D(uTex, vTexCoord); + gl_FragColor = vec4(dot(fragColor, vec4(0.299, 0.587, 0.114, 0.0))); +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/Grayscale.vsh b/bios/Other/fpse-ng/FPse64/shaders/Grayscale.vsh new file mode 100644 index 00000000..5b834308 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/Grayscale.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/MangaToon.fsh b/bios/Other/fpse-ng/FPse64/shaders/MangaToon.fsh new file mode 100644 index 00000000..ab555650 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/MangaToon.fsh @@ -0,0 +1,80 @@ +precision mediump float; +varying vec2 vTexCoord; +uniform sampler2D uTex; +uniform float resX; +uniform float resY; + +float CLength(vec4 c) +{ +float rmean = c.x*0.5; +c*= c; +return sqrt((2.0+rmean)*c.x+4.0*c.y+(3.0-rmean)*c.z)/3.0; +} + +vec3 rgb_to_hsv(vec3 RGB) +{ + float minVal = min(min(RGB.x,RGB.y),RGB.z); + float maxVal = max(max(RGB.x,RGB.y),RGB.z); + float delta = maxVal - minVal; //Delta RGB value + vec3 HSV; + HSV.z = maxVal; + if (delta != 0.0) { // If gray, leave H & S at zero + HSV.y = delta / maxVal; + vec3 delRGB; + delRGB = (((vec3(maxVal) - RGB)/6.0)+(delta/2.0))/delta; + if (RGB.x == maxVal) HSV.x = delRGB.z - delRGB.y; + else if (RGB.y == maxVal) HSV.x = (1.0/3.0) + delRGB.x - delRGB.z; + else if (RGB.z == maxVal) HSV.x = (2.0/3.0) + delRGB.y - delRGB.x; + if (HSV.x < 0.0) { HSV.x += 1.0; } + if (HSV.x > 1.0) { HSV.x -= 1.0; } + } + return HSV; +} + +vec3 hsv_to_rgb(vec3 HSV) +{ + vec3 RGB = vec3(HSV.z); + if ( HSV.y != 0.0 ) { + float var_h = HSV.x * 6.0; + float var_i = floor(var_h); + float var_1 = HSV.z * (1.0 - HSV.y); + float var_2 = HSV.z * (1.0 - HSV.y * (var_h-var_i)); + float var_3 = HSV.z * (1.0 - HSV.y * (1.0-(var_h-var_i))); + if (var_i == 0.0) { RGB = vec3(HSV.z, var_3, var_1); } + else if (var_i == 1.0) { RGB = vec3(var_2, HSV.z, var_1); } + else if (var_i == 2.0) { RGB = vec3(var_1, HSV.z, var_3); } + else if (var_i == 3.0) { RGB = vec3(var_1, var_2, HSV.z); } + else if (var_i == 4.0) { RGB = vec3(var_3, var_1, HSV.z); } + else { RGB = vec3(HSV.z, var_1, var_2); } + } + return RGB; +} + +void main (void) +{ +vec2 OGL2Param = vec2(resX, resY); +vec4 c0 = texture2D(uTex, vTexCoord.xy); +vec4 c1 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2( 0.0, 1.0)); +vec4 c2 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2(-1.0, 1.0)); +vec4 c3 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2(-1.0, 0.0)); +vec4 c4 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2(-1.0,-1.0)); +vec4 c5 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2( 0.0,-1.0)); +vec4 c6 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2( 1.0,-1.0)); +vec4 c7 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2( 1.0, 0.0)); +vec4 c8 = texture2D(uTex, vTexCoord.xy + OGL2Param * vec2( 1.0, 1.0)); + +vec4 a0 = c8 - c4; +vec4 a1 = a0 - c2 - 2.0 * c3 + c6 + 2.0 * c7; +a0 = a0 + c2 + c1 * 2.0 - 2.0 * c5 - c6; + +a0 = a0 * a0 + a1 * a1; + +float toon = CLength(a0); + +c0.rgb = rgb_to_hsv(c0.rgb); +c0.b = min(1.0,2.0*c0.b); +c0.rgb = hsv_to_rgb(c0.rgb); + +gl_FragColor = c0 - vec4(toon); +} + diff --git a/bios/Other/fpse-ng/FPse64/shaders/MangaToon.vsh b/bios/Other/fpse-ng/FPse64/shaders/MangaToon.vsh new file mode 100644 index 00000000..5b834308 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/MangaToon.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} diff --git a/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.fsh b/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.fsh new file mode 100644 index 00000000..9f48d313 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.fsh @@ -0,0 +1,17 @@ +precision mediump float; +varying vec2 vTexCoord; +uniform sampler2D uTex; +uniform float resX; +uniform float resY; + + +void main() +{ + vec4 rgb = texture2D(uTex, vTexCoord.xy); + + vec4 intens = smoothstep(0.2,0.8,rgb) + normalize(vec4(rgb.xyz,1.0)); + + if (fract(gl_FragCoord.y*0.5) > 0.5) intens = rgb * 0.8; + + gl_FragColor = intens; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.vsh b/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.vsh new file mode 100644 index 00000000..2afc49b8 --- /dev/null +++ b/bios/Other/fpse-ng/FPse64/shaders/TV_HDR.vsh @@ -0,0 +1,7 @@ +attribute highp vec2 aVertex; +attribute highp vec2 aTexCoord; +varying mediump vec2 vTexCoord; +void main(){ + gl_Position = vec4(aVertex.x, aVertex.y, 0.0, 1.0); + vTexCoord = aTexCoord; +} \ No newline at end of file diff --git a/bios/Other/fpse-ng/bios/kanji.rom b/bios/Other/fpse-ng/bios/kanji.rom new file mode 100644 index 00000000..0b2f29ff Binary files /dev/null and b/bios/Other/fpse-ng/bios/kanji.rom differ diff --git a/bios/Other/fpse-ng/libneon.so b/bios/Other/fpse-ng/libneon.so new file mode 100644 index 00000000..deb2b9b3 Binary files /dev/null and b/bios/Other/fpse-ng/libneon.so differ diff --git a/bios/Other/fpse-ng/libnfsplugin.so b/bios/Other/fpse-ng/libnfsplugin.so new file mode 100644 index 00000000..721f4dd5 Binary files /dev/null and b/bios/Other/fpse-ng/libnfsplugin.so differ diff --git a/bios/Other/fpse-ng/libopengl.so b/bios/Other/fpse-ng/libopengl.so new file mode 100644 index 00000000..a529827a Binary files /dev/null and b/bios/Other/fpse-ng/libopengl.so differ diff --git a/bios/Other/fpse-ng/libsdl.so b/bios/Other/fpse-ng/libsdl.so new file mode 100644 index 00000000..0c9038e4 Binary files /dev/null and b/bios/Other/fpse-ng/libsdl.so differ diff --git a/bios/Other/fpse-ng/libsoft1.so b/bios/Other/fpse-ng/libsoft1.so new file mode 100644 index 00000000..af643d89 Binary files /dev/null and b/bios/Other/fpse-ng/libsoft1.so differ diff --git a/bios/Other/fpse-ng/libspuplugin.so b/bios/Other/fpse-ng/libspuplugin.so new file mode 100644 index 00000000..dbf5eb05 Binary files /dev/null and b/bios/Other/fpse-ng/libspuplugin.so differ diff --git a/bios/Other/fpse-ng/libuncompress.so b/bios/Other/fpse-ng/libuncompress.so new file mode 100644 index 00000000..921aba3f Binary files /dev/null and b/bios/Other/fpse-ng/libuncompress.so differ diff --git a/bios/Other/mastergear/changelog.html b/bios/Other/mastergear/changelog.html new file mode 100644 index 00000000..8f9490bb --- /dev/null +++ b/bios/Other/mastergear/changelog.html @@ -0,0 +1,1636 @@ + + + +What's New in MasterGear + + + + + +

+Get Help |  +Discuss |  +Windows App |  +More Apps |  +Twitter |  +Privacy +

+ +

+If you like MasterGear and would like to see it updated, +please, don't forget to rate it! Press the "Rate Me!" +button at the bottom to leave feedback. +

+ +

MasterGear 4.9 (Apr 01 2021)

+ +
+ +

MasterGear 4.8 (Mar 11 2021)

+ +
+ +

MasterGear 4.7.3 (Jan 18 2021)

+ +
+ +

MasterGear 4.7.2 (Jan 04 2021)

+ +
+ +

MasterGear 4.7.1 (Dec 21 2020)

+ +
+ +

MasterGear 4.7 (Oct 12 2020)

+ +
+ +

MasterGear 4.6.11 (Aug 26 2020)

+ +
+ +

MasterGear 4.6.10 (Jul 29 2020)

+ +
+ +

MasterGear 4.6.9 (Jul 01 2020)

+ +
+ +

MasterGear 4.6.8 (Jun 01 2020)

+ +
+ +

MasterGear 4.6.7 (Feb 06 2020)

+ +
+ +

MasterGear 4.6.6 (Jan 15 2020)

+ +
+ +

MasterGear 4.6.5 (Dec 12 2019)

+ +
+ +

MasterGear 4.6.4 (Nov 28 2019)

+ +
+ +

MasterGear 4.6.3 (Oct 28 2019)

+ +
+ +

MasterGear 4.6.1 (Oct 10 2019)

+ +
+ +

MasterGear 4.6 (Sep 25 2019)

+ +
+ +

MasterGear 4.5.4 (Jun 12 2019)

+ +
+ +

MasterGear 4.5.3 (May 06 2019)

+ +
+ +

MasterGear 4.5.2 (Apr 03 2019)

+ +
+ +

MasterGear 4.5.1 (Mar 16 2019)

+ +
+ +

MasterGear 4.4 (Dec 20 2018)

+ +
+ +

MasterGear 4.2.7 (Nov 19 2018)

+ +
+ +

MasterGear 4.2.6 (Oct 31 2018)

+ +
+ +

MasterGear 4.2.5 (Oct 15 2018)

+ +
+ +

MasterGear 4.2.4 (Sep 17 2018)

+ +
+ +

MasterGear 4.2.3 (Jun 11 2018)

+ +
+ +

MasterGear 4.2.2 (Apr 25 2018)

+ +
+ +

MasterGear 4.2.1 (Mar 28 2018)

+ +
+ +

MasterGear 4.2 (Feb 20 2018)

+ +
+ +

MasterGear 4.1.4 (Jan 22 2018)

+ +
+ +

MasterGear 4.1.3 (Jan 01 2018)

+ +
+ +

MasterGear 4.1.2 (Dec 11 2017)

+ +
+ +

MasterGear 4.1.1 (Nov 21 2017)

+ +
+ +

MasterGear 4.1 (Oct 12 2017)

+ +
+ +

MasterGear 4.0.3 (Sep 18 2017)

+ +
+ +

MasterGear 4.0.2 (Jul 31 2017)

+ +
+ +

MasterGear 4.0.1 (Jun 19 2017)

+ +
+ +

MasterGear 4.0 (Jun 01 2017)

+ +
+ +

MasterGear 3.7.1 (Apr 27 2017)

+ +
+ +

MasterGear 3.7 (Apr 18 2017)

+ +
+ +

MasterGear 3.6.11 (Apr 03 2017)

+ +
+ +

MasterGear 3.6.10 (Mar 17 2017)

+ +
+ +

MasterGear 3.6.8 (Feb 09 2017)

+ +
+ +

MasterGear 3.6.7 (Jan 12 2017)

+ +
+ +

MasterGear 3.6.6 (Dec 15 2016)

+ +
+ +

MasterGear 3.6.5 (Nov 17 2016)

+ +
+ +

MasterGear 3.6.4 (Oct 24 2016)

+ +
+ +

MasterGear 3.6.3 (Oct 05 2016)

+ +
+ +

MasterGear 3.6.2 (Sep 12 2016)

+ +
+ +

MasterGear 3.6.1 (Aug 17 2016)

+ +
+ +

MasterGear 3.6 (Jul 29 2016)

+ +
+ +

MasterGear 3.5.9 (Jul 07 2016)

+ +
+ +

MasterGear 3.5.8 (Jun 30 2016)

+ +
+ +

MasterGear 3.5.7 (Jun 13 2016)

+ +
+ +

MasterGear 3.5.6 (May 18 2016)

+ +
+ +

MasterGear 3.5.5 (Apr 28 2016)

+ +
+ +

MasterGear 3.5.4 (Apr 04 2016)

+ +
+ +

MasterGear 3.5.3 (Mar 18 2016)

+ +
+ +

MasterGear 3.5.2 (Mar 04 2016)

+ +
+ +

MasterGear 3.5.1 (Feb 08 2016)

+ +
+ +

MasterGear 3.5 (Jan 07 2016)

+ +
+ +

MasterGear 3.4.6 (Dec 21 2015)

+ +
+ +

MasterGear 3.4.5 (Nov 20 2015)

+ +
+ +

MasterGear 3.4.4 (Oct 30 2015)

+ +
+ +

MasterGear 3.4.3 (Sep 30 2015)

+ +
+ +

MasterGear 3.4.2 (Sep 11 2015)

+ +
+ +

MasterGear 3.4.1 (Aug 24 2015)

+ +
+ +

MasterGear 3.4 (Aug 04 2015)

+ +
+ +

MasterGear 3.3.3 (Jul 08 2015)

+ +
+ +

MasterGear 3.3.2 (Jun 12 2015)

+ +
+ +

MasterGear 3.3.1 (May 28 2015)

+ +
+ +

MasterGear 3.3 (May 07 2015)

+ +
+ +

MasterGear 3.2.5 (Apr 17 2015)

+ +
+ +

MasterGear 3.2.4 (Mar 23 2015)

+ +
+ +

MasterGear 3.2.3 (Mar 12 2015)

+ +
+ +

MasterGear 3.2 (Feb 16 2015)

+ +
+ +

MasterGear 3.1.9 (Jan 29 2015)

+ +
+ +

MasterGear 3.1.8 (Jan 27 2015)

+ +
+ +

MasterGear 3.1.7 (Jan 06 2015)

+ +
+ +

MasterGear 3.1.6 (Dec 21 2014)

+ +
+ +

MasterGear 3.1.5 (Dec 05 2014)

+ +
+ +

MasterGear 3.1.4 (Nov 15 2014)

+ +
+ +

MasterGear 3.1.2 (Oct 29 2014)

+ +
+ +

MasterGear 3.1 (Oct 13 2014)

+ +
+ +

MasterGear 3.0.2 (Sep 29 2014)

+ +
+ +

MasterGear 3.0.1 (Sep 15 2014)

+ +
+ +

MasterGear 3.0 (Sep 01 2014)

+ +
+ +

MasterGear 2.9.15 (Aug 18 2014)

+ +
+ +

MasterGear 2.9.14 (Aug 05 2014)

+ +
+ +

MasterGear 2.9.13 (Jul 21 2014)

+ +
+ +

MasterGear 2.9.12 (Jul 07 2014)

+ +
+ +

MasterGear 2.9.11 (Jun 23 2014)

+ +
+ +

MasterGear 2.9.10 (Jun 09 2014)

+ +
+ +

MasterGear 2.9.9 (May 27 2014)

+ +
+ +

MasterGear 2.9.7 (May 12 2014)

+ +
+ +

MasterGear 2.9.6 (Apr 28 2014)

+ +
+ +

MasterGear 2.9.5 (Apr 14 2014)

+ +
+ +

MasterGear 2.9.4 (Apr 05 2014)

+ +
+ +

MasterGear 2.9.3 (Mar 31 2014)

+ +

KITKAT NOTE: +The /storage/sdcard1/Android/data/com.fms.mg/files folder is +deleted when you uninstall the app. To avoid losing your saved +states when storing games on the external SD card, manually create +the /storage/sdcard0/MasterGear folder in your internal +storage. +

+
+ +

MasterGear 2.9.2 (Mar 17 2014)

+ +
+ +

MasterGear 2.9.1 (Mar 03 2014)

+ +
+ +

MasterGear 2.9 (Feb 17 2014)

+ +
+ +

MasterGear 2.8.17 (Feb 05 2014)

+ +
+ +

MasterGear 2.8.16 (Feb 03 2014)

+ +
+ +

MasterGear 2.8.15 (Jan 20 2014)

+ +
+ +

MasterGear 2.8.14 (Jan 07 2014)

+ +
+ +

MasterGear 2.8.13 (Dec 24 2013)

+ +
+ +

MasterGear 2.8.12 (Dec 10 2013)

+ +
+ +

MasterGear 2.8.11 (Nov 29 2013)

+ +
+ +

MasterGear 2.8.10 (Nov 14 2013)

+ +
+ +

MasterGear 2.8.9 (Oct 31 2013)

+ +
+ +

MasterGear 2.8.8 (Oct 17 2013)

+ +
+ +

MasterGear 2.8.7 (Oct 03 2013)

+ +
+ +

MasterGear 2.8.5 (Sep 17 2013)

+ +
+ +

MasterGear 2.8.4 (Sep 02 2013)

+ +
+ +

MasterGear 2.8.3 (Aug 13 2013)

+ +
+ +

MasterGear 2.8.2 (Jul 30 2013)

+ +
+ +

MasterGear 2.8.1 (Jul 16 2013)

+ +
+ +

MasterGear 2.7.20 (Jun 10 2013)

+ +
+ +

MasterGear 2.7.19 (May 22 2013)

+ +
+ +

MasterGear 2.7.18 (May 07 2013)

+ +
+ +

MasterGear 2.7.17 (Apr 15 2013)

+ +
+ +

MasterGear 2.7.16 (Apr 05 2013)

+ +
+ +

MasterGear 2.7.14 (Mar 11 2013)

+ +
+ +

MasterGear 2.7.13 (Feb 28 2013)

+ +
+ +

MasterGear 2.7.12 (Feb 12 2013)

+ +
+ +

MasterGear 2.7.11 (Jan 31 2013)

+ +
+ +

MasterGear 2.7.10 (Jan 09 2013)

+ +
+ +

MasterGear 2.7.9 (Dec 27 2012)

+ +
+ +

MasterGear 2.7.8 (Dec 06 2012)

+ +
+ +

MasterGear 2.7.6 (Nov 28 2012)

+ +
+ +

MasterGear 2.7.5 (Nov 15 2012)

+ +
+ +

MasterGear 2.7.4 (Oct 29 2012)

+ +
+ +

MasterGear 2.7.2 (Oct 16 2012)

+ +
+ +

MasterGear 2.7.1 (Sep 26 2012)

+ +
+ +

MasterGear 2.7 (Aug 31 2012)

+ +
+ + + \ No newline at end of file diff --git a/bios/Other/mastergear/names.dat b/bios/Other/mastergear/names.dat new file mode 100644 index 00000000..90c7eab7 --- /dev/null +++ b/bios/Other/mastergear/names.dat @@ -0,0 +1,753 @@ +# SC3000 + +SMS-0274179A: Basic 2.10 +SMS-8CC35177: Basic 3.10 +SMS-A1BB9533: Music Editor +SMS-67A72170: Music Editor +SMS-3D36FFBA: Nihonshi Nenpyou +SMS-676D1EF9: Tanoshii Sansuu + +# SF7000 + +SMS-B44024B4: 102 Programs for Yeno +SMS-4C62E6A0: Board Games +SMS-7D7F46D9: Crocky +SMS-EDB3ADA4: Disk BASIC +SMS-ED201C54: Educational +SMS-2545DE44: Games 1 +SMS-FA905FB6: Games 2 +SMS-EDB3ADA4: Graphics +SMS-7139E375: Kamikaze +SMS-FF3154DC: Music +SMS-EDB3ADA4: Olympics +SMS-1B4AB585: Poseidon Space +SMS-EDB3ADA4: Programming +SMS-EDB3ADA4: System +SMS-5994FB34: Utils DAO +SMS-EDB3ADA4: Yeno Demo +SMS-EDB3ADA4: Yeno Draw 1 +SMS-1264D53B: Yeno Draw 2 +SMS-922F3E10: Yeno Super Games + +# GameGear + +GG-E5A00815: 4-in-1 +GG-34645DAB: 5-in-1 +GG-D14AD8D6: Aerial Assault +GG-600A43D7: Aladdin +GG-600A43D7: Aladdin +GG-92883E2B: Aleste +GG-6A8D3874: Aleste 2 +GG-9E6C75CE: Alien 3 +GG-5002A558: Alien Syndrome +GG-FE927A98: Andre Agassi Tennis +GG-4CBEA8CE: Arcade Classics +GG-4C24CA06: Arch Rivals +GG-E53F42A5: Arena +GG-A69FFC77: Asterix Great Rescue +GG-7E256149: Ax Battler +GG-E8D6C1CD: Ax Battler +GG-C9E73AB5: Baku Baku Animal +GG-8567CDFF: Baseball '91 +GG-291521EA: Batman and Robin +GG-64D128F5: Batman Forever +GG-23242473: Batman Returns +GG-4FCC613C: Batter Up +GG-AD35B38E: Battle Ship +GG-2C3C293B: Battletoads +GG-F0D71343: Beavis and Butthead +GG-E860B271: Berlin Wall +GG-BCFE1DEB: Bonkers Wax Up +GG-8B85A184: Bubble Bobble +GG-A5CD4E3C: Bugs Bunny Double Trouble +GG-E34B9EAA: Bust a Move +GG-F72A96AA: Buster Ball +GG-3D6DC66C: Buster Fight +GG-87514CD3: Captain America +GG-B833EF21: Casino +GG-EB229B19: Chakan +GG-8CDA710B: Chessmaster +GG-FC56E19A: Chicago Syndicate +GG-F15432FC: Chuck Rock +GG-C4F83772: Chuck Rock 2 +GG-B8F1C273: Clutch Hitter +GG-255AA0D6: Coca Cola Kids +GG-387118DA: Columns +GG-31EC7137: Cool Spot +GG-D209EF29: Crash Dummies +GG-6E0DE72F: Crystal Warriors +GG-7A88AA43: Cut Throat Island +GG-7A88AA43: Cut Throat Island +GG-C6ABEC57: Daffy Duck +GG-D15A7199: Deep Duck Trouble +GG-D7BDE00E: Defenders of Oasis +GG-D7BDE00E: Defenders of Oasis +GG-3E4C78BD: Desert Speedtrap +GG-273669D8: Desert Strike +GG-175FC339: Devilish +GG-08C43F46: Doraemon +GG-428E6528: Double Dragon +GG-BD1EDCA0: Dracula +GG-81CEA900: Dragon +GG-F06C38AE: Dragon Crystal +GG-9814ADB8: Dragon Crystal +GG-FC4D4A75: Dream 11 Soccer +GG-49A4DCD4: Dunk Kids +GG-FE0FD6E3: Dynamite Headdy +GG-D5F067DE: Earthworm Jim +GG-607E0092: Ecco Dolphin +GG-20EA9CAB: Ecco Tides of Time +GG-7EEFABB4: Eternal Legend +GG-2CD08031: Evander Holyfield Boxing +GG-F1B7E052: F1 +GG-FB98F938: F15 Strike Eagle +GG-F7F08FD4: FIFA International Soccer +GG-C40AD91D: FIFA Soccer '96 +GG-8A6688ED: Face Ball 2000 +GG-68E6A5FF: Factory Panic +GG-0F12E62C: Factory Panic +GG-8685A064: Fantasy Zone +GG-0EE626E8: Fatal Fury Special +GG-554F3F9F: Foreman for Real +GG-BACB70BD: Frank Thomas Big Hurt Baseball +GG-F3C1DB29: Fred Couples Golf +GG-B0702E0E: GLoc Air Battle +GG-3E129A3D: GLoc Air Battle +GG-40F2667E: GLoc Air Battle +GG-8D1659E1: GP Rider +GG-5584BEF5: Galaga 91 +GG-3FF119DB: Games Part 2 +GG-2BD72848: Gear Stadium Heiseiban +GG-1E5F7151: Gear Stadium +GG-04E043C6: Gear Works +GG-C2E54AA9: George Foreman Boxing +GG-3432CD9E: Godzilla +GG-264BD84C: Greendog +GG-678B0561: Griffin +GG-04B828B9: Gunstar Heroes +GG-D6907642: Halley Wars +GG-E069DD7F: Hao Pai +GG-F66C754A: Head Buster +GG-90889275: Home Alone +GG-150B600A: Hook +GG-B0040194: House of Tarot +GG-AFD25B5C: Incredible Hulk +GG-211E10CD: Indiana Jones +GG-8EAE787D: Iron Man and Manowar +GG-E0BD3B6D: Itchy and Scratchy Game +GG-CCB4FD4A: Jeopardy +GG-88BA0882: Jeopardy Sports +GG-7838D891: Joe Montana Football +GG-F7D07FDA: Judge Dredd +GG-E856BEFF: Junction +GG-CBB8F95B: Jungle Book +GG-7FF40B54: Jurassic Park +GG-2C95B01C: Kinetic Connection +GG-7B335196: Krustys Fun House +GG-B8D220F6: Last Action Hero +GG-A8CA8BE7: Last Bible 2 +GG-C98E268D: Last Bible +GG-0CE9B7AD: Lemmings +GG-62F04AC8: Lemmings +GG-62F04AC8: Lemmings +GG-7D791642: Lillehammer '94 +GG-F1298278: Lion King +GG-28DEF1D3: Little Mermaid +GG-6D1C85A6: Lucky Dime +GG-6D1C85A6: Lucky Dime +GG-5B1888BD: Lunar +GG-5CE9B363: Madden '96 +GG-48230FB0: Madden NFL '95 +GG-5FA93289: Magical Taruru to Kun +GG-E29A261D: Mah Jong +GG-938FAB1C: Majors Pro Baseball +GG-EC433472: Mappy +GG-78CB84C2: Marble Madness +GG-EC8CBD76: Markos Magic Football +GG-47A5FD38: Mean Bean Machine +GG-FA1E3E04: Megaman +GG-1B32C3FC: Mick and Mack +GG-86A1D3D9: Mickey Land of Illusion +GG-E08C4910: Mickey Legend of Illusion +GG-74B8BC1D: Mickey Magical Kingdom +GG-3ED7D23A: Mickeys Ultimate Challenge +GG-30A2FDB7: Monster Truck Wars +GG-0957B6CD: Mortal Kombat +GG-76203566: Mortal Kombat 2 +GG-5DD26F3A: Mortal Kombat 3 +GG-58940629: Ms Pacman +GG-062301C0: NBA Action +GG-F7D4AF2A: NBA Jam +GG-95E72C68: NBA Jam Tournament +GG-72476239: NFL '95 +GG-F8069F32: NFL Quarterback Club '96 +GG-8F1BA221: NHL All Star Hockey +GG-C656FAAE: NHL Hockey +GG-7F28E71F: Nazo Puyo +GG-3B9335F1: Ninja Gaiden +GG-424242D5: Ninja Gaiden +GG-737ABE10: Ninku +GG-8725C4D9: Ottifants +GG-A433C4F6: Outrun +GG-FC582218: PGA Tour '96 +GG-C1872E30: PGA Tour Golf 2 +GG-9254B56D: Pac Attack +GG-9B0CCC37: Pacman +GG-0E957CD0: Paperboy +GG-54CC8034: Paul's Blackjack +GG-BF988548: Paul's Poker +GG-83B89174: Paul's Solitaire +GG-20214F74: Pengo +GG-FFD7FD2D: Phantasy Star Adventure +GG-51B3D341: Phantasy Star +GG-2584A84F: Phantom 2040 +GG-0115CFD9: Pop Breaker +GG-E013AC9C: Popeye Beach Volleyball +GG-D41CF642: Popils +GG-A88D10B1: Power Rangers +GG-6948D542: Power Rangers Movie +GG-87AD08E3: Primal Rage +GG-40A32344: Psychic World +GG-861ECF73: Puyo Puyo 2 +GG-3F9FC809: Puzlow Kids +GG-323489E0: Quiz Gear +GG-5B5B8BEF: RBI Baseball '94 +GG-5B5B8BEF: RBI Baseball '94 +GG-5F518F21: Ray Earth 2 +GG-1D6EB8DD: Ray Earth +GG-DF55BBCA: Ren and Stimpy +GG-9A19C81E: Revenge of Drancon +GG-D0B035C1: Riddick Bowe Boxing +GG-C34CAEB8: Ristar +GG-32597488: Road Of Magic 2 +GG-210C237D: Road Of Magic 3 +GG-325BB911: Road Of Magic +GG-CCF0E19D: Road Rash +GG-77F6773B: Robocop 3 +GG-60F52E6C: Robocop vs Terminator +GG-FA1E7714: Ronald in Magical World +GG-70C1A950: Royal Stone +GG-5E0E67A8: Ryu Kyu +GG-D239C688: SD Gundam Winners History +GG-EB5BCDB4: Sailor Moon +GG-1421A863: Saint +GG-7E57002C: Samurai Shodown +GG-AF96E5B7: Samurai Spirits +GG-C7FA78E8: Scratch Golf +GG-DB184610: Shanghai 2 +GG-A64AE214: Shaq Fu +GG-1A9867E5: Shikin Castle +GG-70C791B2: Shining Force 2 +GG-70C791B2: Shining Force 2 +GG-70C791B2: Shining Force 3 +GG-B42F5443: Shining Force +GG-4868AF97: Shinobi +GG-02CDBFD5: Shinobi 2 +GG-4868AF97: Shinobi +GG-E081AEAB: Simpsons: Bart vs Mutants +GG-C513070B: Simpsons: Bart vs World +GG-44C49734: Simpsons: Bartman Meets Radioactive Man +GG-DF62839A: Skweek +GG-60BD0530: Slamdunk +GG-FE85E4D0: Slider +GG-1B6AD71A: Smash TV +GG-1CFF4419: Smurfs +GG-AB6A3283: Solitaire Fun Pak +GG-7F487400: Solitaire Poker +GG-462FDCE1: Sonic and Tails +GG-6D667E74: Sonic and Tails 2 +GG-1167F6F2: Sonic Blast +GG-303D4CC6: Sonic Chaos +GG-9FB491AC: Sonic Drift +GG-9595442C: Sonic Drift 2 +GG-412662EC: Sonic Hedgehog +GG-7CB94632: Sonic Hedgehog 2 +GG-032E890C: Sonic Labyrinth +GG-28022178: Sonic Spinball +GG-3FC35B3C: Sonic Triple Trouble +GG-F63BDDDC: Soukoban +GG-5B34BBDC: Space Harrier +GG-FFD17781: Spiderman +GG-3745479C: Spiderman vs XMen +GG-60F3BFEC: Sports Illustrated Football and Baseball +GG-35B44CCD: Sports Trivia +GG-0E95AD8C: Sports Trivia Championship Edition +GG-8CE0D025: Star Wars +GG-1C7F4E00: Stargate +GG-B6279003: Streets of Rage +GG-37FF4A07: Streets of Rage 2 +GG-ECE30A2F: Strider Returns +GG-7BFE73CC: Super Columns +GG-5752F009: Super Golf +GG-B38C0DD5: Super Monaco GP +GG-57C0F784: Super Monaco GP 2 +GG-B9E9EABC: Super Off Road +GG-EDE3ACF8: Super Return of Jedi +GG-53EBABE4: Super Space Invaders +GG-B801A283: Super Wagan Land +GG-CC237DFD: Super Wars +GG-3C714539: Surfing Ninjas +GG-FEC55D11: Sylvan Tale +GG-75C5B7CC: T2Arcade Game +GG-52C14765: Tails Adventures +GG-19FCFD53: Tails Sky Patrol +GG-7F0446E7: Talespin +GG-C67260C2: Tama and Friends Olympics +GG-7E606200: Taz Escape from Mars +GG-43CFECCD: Tazmania +GG-5F5BE6C4: Tempo Jr +GG-32CDF9FE: Terminator +GG-6B9F80DC: Terminator 2 +GG-0FF55C69: Tesserae +GG-559908DC: Tin Tin in Tibet +GG-0196A0D1: Tom and Jerry +GG-A9E62EAE: True Lies +GG-BD600BFF: Ultimate Soccer +GG-830422EB: VR Troopers +GG-579F0CD6: Vampire (SEGA) +GG-579F0CD6: Vampire (SIMS) +GG-4DBA836D: Virtua Fighter +GG-D40F76FA: Virtua Fighters Akira +GG-A53071DE: Virtua Fighters Pai Chan +GG-6C57F553: Volleyball +GG-C9907760: Voyage of Hyoutanjima +GG-42FD07F0: WWF Raw +GG-6295D408: Wizard Pinball +GG-49F26E0C: Wonder Boy +GG-183D4E26: Wonder Boy 3 +GG-81E1D7B4: Wonder Boy 3 +GG-AA6175EF: Woody Pop +GG-02ED2F29: World Class Leader Board Golf +GG-EBC0E24C: World Cup '94 +GG-B38C0DD5: World GP +GG-C4CFA593: World Series Baseball +GG-4AA1C5F8: World Series Baseball +GG-8234C1C2: World Series Baseball '95 +GG-FEC28F0A: XMen +GG-89482EF0: XMen Gamemaster's Legacy +GG-2529A965: XMen in Mojo World +GG-7CB2B470: Yaiba +GG-3F23F78C: Yogi Bears Gold Rush +GG-5FA2D398: Yu Yu Hakusho 2 +GG-0C40C460: Yu Yu Hakusho +GG-76F3268F: Zan Gear +GG-D40CA2E9: Zool +GG-E4842114: Zoop + +# SG1000 + +SMS-7E733101: Bank Panic +SMS-894ABB0A: Bomb Jack +SMS-066977F5: Borderline +SMS-2DF2E506: C-47 +SMS-41D4ABE8: CSo +SMS-240D88EA: Castle +SMS-7569EEFF: Chack and Pop +SMS-E854AEEA: Champion Baseball +SMS-083AC52D: Champion Billiards +SMS-E152D16B: Champion Boxing +SMS-B4DA4E18: Champion Boxing +SMS-5A718F40: Champion Golf +SMS-5A718F40: Champion Golf +SMS-5AFD0539: Champion Ice Hockey +SMS-3EB2F398: Champion Pro Wrestling +SMS-C271E59F: Champion Soccer +SMS-7E744C66: Champion Tennis +SMS-DED6E279: Choplifter +SMS-98E58D21: Dragon Wang +SMS-2A5D58EC: Drol +SMS-DF0F1194: Elevator Action +SMS-8A7C7DA2: Exerion +SMS-6D022E3D: Flicky +SMS-DC5C8E60: GP World +SMS-F32BC995: Girls Garden +SMS-712CCE24: Golgo 13 +SMS-894931FF: Gulkave +SMS-29B1909B: Guzzler +SMS-2B184269: Hang On 2 +SMS-F2BD3DA2: Hero +SMS-2C8D3EA3: Hustle Chumy +SMS-602EE204: Hyper Sports +SMS-00901472: James Bond 007 +SMS-20A22C16: Lode Runner +SMS-3AE47C9D: Lode Runner Championship +SMS-D46173E3: Monaco GP +SMS-9909FF02: Ninja +SMS-3B5F14F0: Orguss +SMS-FDCE4391: Pacar +SMS-184BA811: Pachinko 2 +SMS-7FE3E65D: Penguin Egg +SMS-464FF4DA: Pop Flamer +SMS-37678738: QBert +SMS-BB7B1735: Rock and Bolt +SMS-E83023AB: Safari Hunting +SMS-1E3B67A8: Safari Race +SMS-C9DB366C: Sega Galaga +SMS-5D793949: Soukoban +SMS-F59FC1CB: Space Invaders +SMS-A89E022C: Star Force +SMS-1FDCA87D: Star Jacker +SMS-B165C080: Star Jacker +SMS-BD6FC22B: Super Tank +SMS-384339BB: Sword Fight +SMS-7CC5BE6A: Wonder Boy +SMS-C652BE2C: Yamato +SMS-C9EB9C6C: Zaxxon +SMS-BE551992: Zippy Race + +# MasterSystem + +SMS-BDD13CB6: ALF +SMS-B3341812: Ace of Aces +SMS-8391EB14: Action Fighter +SMS-C13645D5: Addams Family +SMS-75D66E6D: Aerial Assault +SMS-36DB262B: After Burner +SMS-34CC7833: Air Rescue +SMS-42FE34A4: Aladdin +SMS-0079B2BD: Aleste +SMS-CC76175F: Aleste 2 +SMS-60A9475D: Aleste +SMS-7AED96C5: Alex in Hitech World +SMS-0F084CDE: Alex in Miracle World +SMS-83EE2949: Alex in Shinobi World +SMS-36134B51: Alex Kidd BMX Trial +SMS-BD555E2C: Alex Lost Stars +SMS-EC30F5D5: Alien 3 +SMS-F2745B7E: Alien Storm +SMS-33E2D518: Alien Syndrome +SMS-58CA1BC1: Altered Beast +SMS-0DD199EC: American Baseball +SMS-22C6E438: American Pro Football +SMS-23A7D99D: Andre Agassi Tennis +SMS-D8F47118: Anmitsu Hime +SMS-1B619CCF: Arcade Hits +SMS-75235957: Ashura +SMS-B0E473DD: Asterix +SMS-9D631A24: Asterix Great Rescue +SMS-96DF1F67: Asterix Secret Mission +SMS-8CC13EF4: Astro Flash +SMS-9AE94EF7: Astro Warrior +SMS-B3397C20: Aztec Adventure +SMS-A5F44AE6: Back to the Future 2 +SMS-383121F2: Back to the Future 3 +SMS-33B2F22F: Baku Baku Animal +SMS-A848DF63: Bank Panic +SMS-CD54CB05: Barcelona '92 +SMS-C9DA0600: Barcelona '92 +SMS-AE56C45B: Basketball Nightmare +SMS-30007801: Batman Returns +SMS-17D09D7B: Battle Outrun +SMS-361A3DEE: Black Belt +SMS-46E8C4B1: Blade Eagle 3D +SMS-01BD8596: Bomber Raid +SMS-7B297369: Bonanza Brothers +SMS-89643C05: Borgman +SMS-BEC3B600: Bubble Bobble +SMS-BEC3B600: Bubble Bobble Final +SMS-F0E732FD: Buggy Run +SMS-14FB8953: California Games +SMS-61C27870: California Games 2 +SMS-94824644: California Games 2 +SMS-177FA54D: Captain Silver (1988) +SMS-4BB639B9: Captain Silver (1989) +SMS-D19FA102: Carmen San Diego +SMS-D60A3BD4: Casino Games +SMS-3E7EF412: Castelo Ra Tim Bum +SMS-F74187EF: Champions of Europe +SMS-60A28756: Championship Hockey +SMS-D0B6557C: Chapolim X Dracula +SMS-2696955F: Chase HQ +SMS-29F677C7: Cheese Catastrophe +SMS-17289447: Choplifter +SMS-C91A88EA: Chuck Rock +SMS-B2B80CDD: Chuck Rock 2 +SMS-DFA7B8E7: Cloud Master +SMS-BE25530E: Columns +SMS-E6896DC3: Cool Spot +SMS-EC360D84: Crash Dummies +SMS-E5BC2A78: Cyber Shinobi +SMS-0365330C: Cyborg Hunter +SMS-0AC3EC2F: Daffy Duck +SMS-199FE655: Danan Jungle Fighter +SMS-AF22619F: Dead Angle +SMS-413707E6: Deep Duck Trouble +SMS-E583951B: Desert Speedtrap +SMS-84DBEF12: Desert Strike +SMS-2D707BC0: Dick Tracy +SMS-A2E204EE: Double Dragon +SMS-06C42559: Double Hawk +SMS-FAB83EDC: Double Target +SMS-87A29AFB: Dracula +SMS-5C3C27CC: Dragon +SMS-236B08D8: Dragon Crystal +SMS-B131B172: Dynamite Duke +SMS-167F6369: Dynamite Dux +SMS-2E7B1F40: ESWAT +SMS-131E2D7A: ESWAT +SMS-7F5DD956: Ecco Dolphin +SMS-3B696950: Enduro Racer +SMS-FE2F06ED: F1 +SMS-BBCF84AA: F16 Fighter +SMS-528FF84D: F16 Fighting Falcon +SMS-35D86A2C: Fantasy Zone +SMS-9C7C0A81: Fantasy Zone 2 +SMS-90260BEC: Fantasy Zone 2 +SMS-198B83D7: Fantasy Zone Maze +SMS-DA8B3063: Fire and Forget 2 +SMS-79D5C87B: Flash +SMS-9068D00F: Flintstones +SMS-68069DFD: Forgotten Worlds +SMS-72825350: GLoc Air Battle +SMS-733E589C: Gain Ground +SMS-7DCECFB4: Galactic Protector +SMS-C8C250D6: Galaxy Force +SMS-53FBB6B4: Game Box Esportes Radicais +SMS-48C86F02: Gangster Town +SMS-E5459863: Gauntlet +SMS-69256E75: George Foreman's Boxing +SMS-8D00AD02: Geraldinho +SMS-F14A3CC9: Ghost Busters +SMS-89849FBB: Ghost House +SMS-45504E03: Ghost House +SMS-6B6F3E4E: Ghouls and Ghosts +SMS-B8239443: Global Defense +SMS-CEAD6B89: Golden Axe +SMS-402B6A9C: Golden Axe Warrior +SMS-13CA704A: Golfmania +SMS-FD292E2C: Golfmania +SMS-2A841174: Golvellius +SMS-A2753BBC: Golvellius +SMS-40FD4426: Great Baseball +SMS-362CDD04: Great Baseball +SMS-D8C55506: Great Basketball +SMS-D3B477B5: Great Football +SMS-70BDB6FA: Great Golf +SMS-F616E67F: Great Golf +SMS-F37818ED: Great Ice Hockey +SMS-FF2E335F: Great Volleyball +SMS-6D15F4AD: Great Volleyball +SMS-D17C7DD7: Haja No Fuuin +SMS-81BDAFC8: Hang On and Safari Hunt +SMS-ED51C618: Hang On +SMS-0DEF7892: Hang On +SMS-51DA2540: Heavyweight Champ +SMS-94D5E609: Heroes of the Lance +SMS-FD2F3FDB: High School Kimengumi +SMS-4EDA3F89: Hokutoboken +SMS-4EDA3F89: Hokutoboken +SMS-C4FBEEBB: Home Alone +SMS-F4ABE06D: Hook +SMS-4571E6C3: Impossible Mission +SMS-956D46B0: Incredible Hulk +SMS-E4ED7339: Indiana Jones +SMS-8725269C: James Bond the Duel +SMS-F403A94C: James Pond 2 +SMS-2CAC0668: Joe Montana Football +SMS-9CA33633: Jungle Book +SMS-7B552650: Jurassic Park +SMS-28F350C4: Kenseiden +SMS-6F729C16: Kenseiden +SMS-E6B61F94: Kings Quest +SMS-996FA827: Krustys Fun House +SMS-B298ACCC: Kungfu Kid +SMS-5D8067B9: Kungfu Kid +SMS-361CDAE9: Laser Ghost +SMS-0455F44B: Leader Board +SMS-7611A307: Lemmings +SMS-17CEFA6D: Lemmings +SMS-A9BC5E7C: Lillehammer '94 +SMS-F398CA95: Line of Fire +SMS-664DC276: Lord of Sword +SMS-32A0DA0D: Lord of Sword +SMS-2269847F: Lucky Dime +SMS-C6653417: Machine Gun Joe +SMS-2F3440F1: Marble Madness +SMS-BDCC64F8: Master of Darkness +SMS-E100A494: Masters of Combat +SMS-08DF3C7B: Maze Hunter 3D +SMS-A6C5B0F2: Maze Walker 3D +SMS-39BA2AED: Mean Bean Machine +SMS-C5412E49: Megumi Rescue +SMS-B71AFB92: Mercs +SMS-3752D965: Mick and Mack +SMS-4946A6F3: Mickey Castle of Illusion +SMS-83764742: Mickey Castle of Illusion +SMS-6ED20CE8: Mickey Legend of Illusion +SMS-BF3A92C5: Mickey Magical Kingdom +SMS-F615C8DD: Miracle Warriors +SMS-FFB4D45F: Missile Defense 3D +SMS-031D490A: Monopoly +SMS-56C8BB97: Monopoly +SMS-E06EEF3E: Montezuma's Revenge +SMS-55704D2B: Moon Walker +SMS-702BDB3F: Mortal Kombat +SMS-ABE82847: Mortal Kombat 2 +SMS-4CFC5067: Mortal Kombat 3 +SMS-C81D8C9B: Ms Pacman +SMS-EDC031E3: My Hero +SMS-DD6F9AAC: My Hero +SMS-8EFBB405: Nekyuu Kousien +SMS-C83D1D88: New Zealand Story +SMS-3F3FBE04: Ninja +SMS-C8B2A530: Ninja Gaiden +SMS-C8B2A530: Ninja Gaiden +SMS-FF6A5ED6: Operation Wolf +SMS-D6600138: Ottifants +SMS-B71FECA2: Outrun +SMS-7874A1C2: Outrun 3D +SMS-72000C56: Outrun Europa +SMS-91DD2839: Pacmania +SMS-3B6FDDE6: Paperboy +SMS-24C15B82: Parlour Games +SMS-24C15B82: Party Games +SMS-43A392C0: Penguin Land +SMS-BE1FC612: Penguin Land +SMS-3BDDFA3A: Phantasy Star +SMS-5A96953C: Phantasy Star +SMS-3BDDFA3A: Phantasy Star +SMS-F6FDB60F: Pit Pot and Astro Warrior +SMS-BA5D6A25: Pit Pot +SMS-6DA3D782: Populous +SMS-8313AABE: Poseidon Wars 3D +SMS-4B2E4114: Predator 2 +SMS-88C649F6: Prince of Persia +SMS-79A0DD9C: Pro Wrestling +SMS-E250B101: Psychic World +SMS-A0B2B541: Psycho Fox +SMS-29518ED3: Put and Putter +SMS-597F4310: Put and Putter +SMS-E316E2D2: Quartet +SMS-B09882AD: RC Grand Prix +SMS-226E05B2: RC Grand Prix +SMS-47746E5B: RType +SMS-C7ECCB75: Rainbow Islands +SMS-0CDFDB02: Rambo +SMS-4FDBC406: Rambo 3 +SMS-14420564: Rampage +SMS-381AEF60: Rampart +SMS-FF13B093: Rastan +SMS-0DD199EC: Reggie Jackson Baseball +SMS-55ACF04D: Ren and Stimpy +SMS-63CE06D7: Renegade +SMS-77A9CA80: Rescue Mission +SMS-6E8C96C2: Road Rash +SMS-7A298AD3: Robocop 3 +SMS-B9F2FAE2: Robocop vs Terminator +SMS-E193C554: Rocky +SMS-840F3F43: Running Battle +SMS-ED6EA166: Rygar +SMS-FDCDD2A8: Rygar +SMS-C4C4CBF3: SDI +SMS-C8EC02CD: SOS Lagoa Poluida +SMS-9F08AFE7: Sagaia +SMS-5A9CD0BC: Sapo Xule O Mestre Do Kung Fu +SMS-A0B2B541: Sapo Xule Os Invasores Do Brejo +SMS-DCDFF7FC: Satellite 7 +SMS-61BF0CE8: Scramble Spirits +SMS-C4E804EA: Secret Commando +SMS-1CF80D81: Sega Chess +SMS-D84B8E35: Sengoku Jidai +SMS-CC0E834B: Sensible Soccer +SMS-92158110: Shadow Dancer +SMS-CEC60800: Shadow of the Beast +SMS-2EFBA21E: Shanghai +SMS-294F665B: Sherlock Holmes +SMS-31E9AA08: Shinobi +SMS-08988F8D: Shooting Gallery +SMS-7B25AF6C: Simpsons: Bart vs Mutants +SMS-3A184EE3: Simpsons: Bart vs World +SMS-E12945D1: Sitio Do Picapau Amarelo +SMS-CD49F209: Slap Shot +SMS-1FEC3A32: Smash TV +SMS-1157557C: Smurfs +SMS-D31A01DD: Smurfs 2 +SMS-D47A6061: Solomon Key +SMS-ABA7D590: Sonic Blast +SMS-9A4C2C17: Sonic Chaos +SMS-3C24A124: Sonic Hedgehog +SMS-59631B6B: Sonic Hedgehog 2 +SMS-C5249C58: Sonic Spinball +SMS-F2282126: Space Harrier +SMS-BF3AF302: Space Harrier 3D +SMS-F4FE3FDF: Space Harrier +SMS-BE94015C: Special Criminal Investigation +SMS-06D76A6D: Speed Ball +SMS-380E2509: Speed Ball 2 +SMS-C7ADE045: Spellcaster +SMS-864CD012: Spellcaster +SMS-FFD17781: Spiderman +SMS-6ABF8373: Spiderman vs Kingpin +SMS-A5981D01: Sports Pad Soccer +SMS-1E244102: Spy vs Spy +SMS-22373C00: Spy vs Spy +SMS-2555BD8F: Star Wars +SMS-0B5DBCD8: Story of Mio +SMS-C4A8DFD2: Street Fighter 2 +SMS-DB14819A: Streets of Rage +SMS-5583E316: Streets of Rage 2 +SMS-2EF1811A: Strider +SMS-4271C0EA: Strider 2 +SMS-B200F770: Submarine Attack +SMS-E614F356: Sukeban Deka 2 +SMS-DDE22B56: Summer Games +SMS-C1994DC5: Super Kick Off +SMS-5BB43B8B: Super Kick Off +SMS-A84F6622: Super Monaco GP +SMS-AA343BA1: Super Monaco GP 2 +SMS-4731942C: Super Off Road +SMS-755AFD1F: Super Racing +SMS-72A44AD8: Super Space Invaders +SMS-0BEBAB91: Super Tennis +SMS-A6F4F61B: Super Tetris +SMS-905C2069: Super Wrestlemania +SMS-FD847F03: Superman +SMS-C8CAF262: T2 Arcade Game +SMS-EC7389DD: Tazmania +SMS-BED01ABD: Tazmania +SMS-715D5443: Tecmo World Cup '93 +SMS-8D00AD02: Teddy Boy +SMS-0E58FCCA: Teddy Boy Blues +SMS-856A134B: Tennis Ace +SMS-0E3E75BF: Tensai Bakabon +SMS-F4C6D0FD: Terminator +SMS-13FE9578: Terminator 2 +SMS-2B8C3140: Thunder Blade +SMS-C8517CF5: Thunder Blade +SMS-D3CBE09C: Time Soldiers +SMS-460BE806: Tom and Jerry +SMS-C9B8DFDB: Tom and Jerry +SMS-14424F3F: Transbot +SMS-65087064: Trap Marksman Safari Shooting +SMS-73F8AF8B: Tri Formation +SMS-F64C5B76: Trivial Pursuit +SMS-E9A4DA39: Turma Da Monica 2 +SMS-F126CFE9: Turma Da Monica +SMS-E79A79B0: Ultima 4 (1989) +SMS-8FB08EE4: Ultima 4 (1990) +SMS-1FC91F99: Ultimate Soccer +SMS-F618C7B7: Vampire +SMS-BF53E90C: Vigilante +SMS-C7851C8D: Virtua Fighter Animation +SMS-AF213933: Wimbledon +SMS-4DBDEFD8: Wolf Child +SMS-2451C59F: Wonder Boy +SMS-E9A4DA39: Wonder Boy 3 +SMS-F126CFE9: Wonder Boy in Monster Land +SMS-5F2F6888: Wonder Boy in Monster World (Beta) +SMS-537D07C0: Wonder Boy in Monster World +SMS-564D1817: Woody Pop +SMS-62C95070: World Cup '90 +SMS-9FD1A204: World Cup '92 +SMS-23E2D5C3: World Cup '94 +SMS-6D527091: World GP +SMS-790638F3: World GP +SMS-64FE313E: World Games +SMS-C7CF22E2: World Soccer +SMS-8219CB62: XMen in Mojo World +SMS-67ABEEB1: Xenon 2 +SMS-B8ED368E: Ys +SMS-CF9FAE2A: Zaxxon 3D +SMS-E4DFBC4B: Zillion +SMS-3A92402B: Zillion +SMS-69F05047: Zool diff --git a/bios/Sony/PlayStation/LibPS.exe b/bios/Sony/PlayStation/LibPS.exe new file mode 100644 index 00000000..2968f439 Binary files /dev/null and b/bios/Sony/PlayStation/LibPS.exe differ diff --git a/emulators/fpse-ng.yml b/emulators/fpse-ng.yml index f1a89545..92215e6e 100644 --- a/emulators/fpse-ng.yml +++ b/emulators/fpse-ng.yml @@ -145,7 +145,6 @@ files: path: bios/kanji.rom required: false bundled: true - unsourceable: "ships inside the paid application package" size: 238586 md5: 040d9dcbad83388c14d2628ac69ce88b sha1: 915880f8bb04de39fd5132b92dfb99872f54fa47 @@ -156,7 +155,6 @@ files: - name: libsoft1.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "software renderer plugin" note: "Named by System.loadLibrary(\"soft1\") outside any catch and listed in DT_NEEDED by the core. Also holds the VR background loader." @@ -165,7 +163,6 @@ files: - name: libspuplugin.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "sound plugin" note: "Named by System.loadLibrary(\"spuplugin\") outside any catch and listed in DT_NEEDED." @@ -174,7 +171,6 @@ files: - name: libopengl.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data aliases: ["libopengl1.so"] description: "OpenGL renderer plugin" @@ -184,7 +180,6 @@ files: - name: libnfsplugin.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "NFS client plugin, for discs read from a network share" note: "Named by System.loadLibrary(\"nfsplugin\") outside any catch and listed in DT_NEEDED. Backs the isnfsbios and copyfromnfs entry points." @@ -193,7 +188,6 @@ files: - name: libsdl.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "SDL audio backend" note: "Named by System.loadLibrary(\"sdl\") from a static block that catches UnsatisfiedLinkError, and listed in DT_NEEDED, so the core will not link without it." @@ -202,7 +196,6 @@ files: - name: libneon.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "NEON colour conversion routines" note: "Named by System.loadLibrary(\"neon\") from the same static block and listed in DT_NEEDED." @@ -211,31 +204,276 @@ files: - name: libuncompress.so required: true bundled: true - unsourceable: "ships inside the paid application package" category: game_data description: "archive extractor for .zip, .rar, .7z, .ape and .ecm images" note: "Named by System.loadLibrary(\"uncompress\") outside any catch, and the only one of the plugins the core does not list in DT_NEEDED." source_ref: "Main.java:27300, Main.java:25408, libfpse.so readelf -d" - - name: ".vsh" - path: "FPse64/shaders/.vsh" + # The Shaders setting walks FPse64/shaders and reads the selected pair, + # passing the bytes to setVSH and setFSH. The packaged set below is copied + # out of assets once storage access is granted, and a pair dropped in by + # hand joins the list. Cartoon_A, Cartoon_B, FXAA, FXAA_natural_vision and + # TV_HDR share one vertex shader, as do CRT-Hyllian, Grayscale and + # MangaToon; each pair is read by its own name. + - name: "4xhqglsl.vsh" + path: "FPse64/shaders/4xhqglsl.vsh" required: false bundled: true - unsourceable: "ships inside the paid application package" category: game_data - description: "vertex shader read whole and handed to the OpenGL renderer" - note: "The Shaders setting walks the directory and reads the selected pair, passing the bytes to setVSH. The packaged set is copied out of assets once storage access is granted, and a pair dropped in by hand joins the list." + size: 1048 + sha1: "4af25bc179d1b9b20d080feebc037f08181598d4" + description: "4xhqglsl vertex shader" source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" - - name: ".fsh" - path: "FPse64/shaders/.fsh" + - name: "4xhqglsl.fsh" + path: "FPse64/shaders/4xhqglsl.fsh" required: false bundled: true - unsourceable: "ships inside the paid application package" category: game_data - description: "fragment shader read whole and handed to the OpenGL renderer" - note: "Read from the same directory as the vertex shader of the same name and passed to setFSH." - source_ref: "Main.java:25983-25996, Main.java:35677-35691, Main.java:35829-35845" + size: 2159 + sha1: "cdf41e359264996a4ad973d852c9f1daca537e45" + description: "4xhqglsl fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "5xBR.vsh" + path: "FPse64/shaders/5xBR.vsh" + required: false + bundled: true + category: game_data + size: 1100 + sha1: "cf393a7e10bb4c31de0b59056f3a469aecfe6ccf" + description: "5xBR vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "5xBR.fsh" + path: "FPse64/shaders/5xBR.fsh" + required: false + bundled: true + category: game_data + size: 5595 + sha1: "bd2f44f82be53c94c69a20dc8d46019ee91dfc61" + description: "5xBR fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "5XBRZ.vsh" + path: "FPse64/shaders/5XBRZ.vsh" + required: false + bundled: true + category: game_data + size: 1373 + sha1: "92a3f7fdefe9e6ef7af0c37267a809695e9ae4aa" + description: "5XBRZ vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "5XBRZ.fsh" + path: "FPse64/shaders/5XBRZ.fsh" + required: false + bundled: true + category: game_data + size: 7985 + sha1: "abf7371da6b38205b5df861151e6510bc693522d" + description: "5XBRZ fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Aacolor.vsh" + path: "FPse64/shaders/Aacolor.vsh" + required: false + bundled: true + category: game_data + size: 856 + sha1: "548b2ebebaff89127b243ac8e96dc1243c934ac5" + description: "Aacolor vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Aacolor.fsh" + path: "FPse64/shaders/Aacolor.fsh" + required: false + bundled: true + category: game_data + size: 1865 + sha1: "e818588e8d5e01a73f45c2d596c6a9a8a9d029f8" + description: "Aacolor fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Cartoon_A.vsh" + path: "FPse64/shaders/Cartoon_A.vsh" + required: false + bundled: true + category: game_data + size: 195 + sha1: "363d817dadf81bb5ecdcb8675acf9e096dd66241" + description: "Cartoon_A vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Cartoon_A.fsh" + path: "FPse64/shaders/Cartoon_A.fsh" + required: false + bundled: true + category: game_data + size: 1081 + sha1: "74f54c5430e546c328a5226e068a4ea1e60f67bf" + description: "Cartoon_A fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Cartoon_B.vsh" + path: "FPse64/shaders/Cartoon_B.vsh" + required: false + bundled: true + category: game_data + size: 195 + sha1: "363d817dadf81bb5ecdcb8675acf9e096dd66241" + description: "Cartoon_B vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Cartoon_B.fsh" + path: "FPse64/shaders/Cartoon_B.fsh" + required: false + bundled: true + category: game_data + size: 1002 + sha1: "2d3a1cd8d94c6d4223f9ed0f2ae7431d2bd33fe9" + description: "Cartoon_B fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "CRT-Hyllian.vsh" + path: "FPse64/shaders/CRT-Hyllian.vsh" + required: false + bundled: true + category: game_data + size: 197 + sha1: "376fc334df812840ff9c1bf6d23e57574b64b618" + description: "CRT-Hyllian vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "CRT-Hyllian.fsh" + path: "FPse64/shaders/CRT-Hyllian.fsh" + required: false + bundled: true + category: game_data + size: 10670 + sha1: "02a5c9962b973619c31dc9674120c13c33636427" + description: "CRT-Hyllian fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Dot.vsh" + path: "FPse64/shaders/Dot.vsh" + required: false + bundled: true + category: game_data + size: 844 + sha1: "186fa21b02c96e3cbc84fcecd51b60e6305b2269" + description: "Dot vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Dot.fsh" + path: "FPse64/shaders/Dot.fsh" + required: false + bundled: true + category: game_data + size: 1744 + sha1: "eeb68f155918dbdcf5b3288173712fef36c259dd" + description: "Dot fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "FXAA.vsh" + path: "FPse64/shaders/FXAA.vsh" + required: false + bundled: true + category: game_data + size: 195 + sha1: "363d817dadf81bb5ecdcb8675acf9e096dd66241" + description: "FXAA vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "FXAA.fsh" + path: "FPse64/shaders/FXAA.fsh" + required: false + bundled: true + category: game_data + size: 1929 + sha1: "e3ebfd7a60030496925db8a621921d0a0e312731" + description: "FXAA fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "FXAA_natural_vision.vsh" + path: "FPse64/shaders/FXAA_natural_vision.vsh" + required: false + bundled: true + category: game_data + size: 195 + sha1: "363d817dadf81bb5ecdcb8675acf9e096dd66241" + description: "FXAA_natural_vision vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "FXAA_natural_vision.fsh" + path: "FPse64/shaders/FXAA_natural_vision.fsh" + required: false + bundled: true + category: game_data + size: 2786 + sha1: "7c18d8516b12a46c2d453f0403922ae0145a569f" + description: "FXAA_natural_vision fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Grayscale.vsh" + path: "FPse64/shaders/Grayscale.vsh" + required: false + bundled: true + category: game_data + size: 197 + sha1: "376fc334df812840ff9c1bf6d23e57574b64b618" + description: "Grayscale vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "Grayscale.fsh" + path: "FPse64/shaders/Grayscale.fsh" + required: false + bundled: true + category: game_data + size: 215 + sha1: "f679b5cb40646cd29afb2dea6467cf5527d29947" + description: "Grayscale fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "MangaToon.vsh" + path: "FPse64/shaders/MangaToon.vsh" + required: false + bundled: true + category: game_data + size: 197 + sha1: "376fc334df812840ff9c1bf6d23e57574b64b618" + description: "MangaToon vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "MangaToon.fsh" + path: "FPse64/shaders/MangaToon.fsh" + required: false + bundled: true + category: game_data + size: 2760 + sha1: "1e5200df1cd3c828bad5bededf0d357f137f9706" + description: "MangaToon fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "TV_HDR.vsh" + path: "FPse64/shaders/TV_HDR.vsh" + required: false + bundled: true + category: game_data + size: 195 + sha1: "363d817dadf81bb5ecdcb8675acf9e096dd66241" + description: "TV_HDR vertex shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" + + - name: "TV_HDR.fsh" + path: "FPse64/shaders/TV_HDR.fsh" + required: false + bundled: true + category: game_data + size: 358 + sha1: "6fb63828bd49afa86280b903d92a0e5e862d2e66" + description: "TV_HDR fragment shader" + source_ref: "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845" - name: vrback.raw path: "vrback.raw" diff --git a/emulators/mastergear.yml b/emulators/mastergear.yml index ea9b7dda..9c84f66e 100644 --- a/emulators/mastergear.yml +++ b/emulators/mastergear.yml @@ -115,7 +115,6 @@ files: - name: names.dat required: false bundled: true - unsourceable: "ships inside the paid application package" category: game_data size: 21161 description: "title database keyed by system and CRC32" @@ -125,7 +124,6 @@ files: - name: changelog.html required: false bundled: true - unsourceable: "ships inside the paid application package" category: game_data size: 68201 description: "release history shown from the Android menu"