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)
+
+- Please, read here if you are missing game cheats.
+
- Based on the latest MasterGear 4.9 sources.
+
- Fixed saving battery-back memory files (.SAV).
+
- Now only saving screenshot when saving state.
+
- Fixed saving states with a hardware key.
+
+
+
+MasterGear 4.8 (Mar 11 2021)
+
+- Based on the latest MasterGear 4.8 sources.
+
- Disabled querying content providers for auxiliary files to improve performance.
+
- Scrolling in File Selector has become much more responsive.
+
+
+
+MasterGear 4.7.3 (Jan 18 2021)
+
+- Fixed file selection UI on newer AndroidTV devices.
+
- Fixed opening files from File Managers and other apps.
+
- Enabled adding home screen shortcuts on newer devices.
+
+
+
+MasterGear 4.7.2 (Jan 04 2021)
+
+- Fixed several crash sources that popped up after refactoring.
+
- Fixed compatibility with Android 4.2/4.3.
+
- Fixed handling of spaces and parentheses in "content://" URIs.
+
- Fixed list of volumes in "Change Folder" dialog.
+
- Fixed "Change Folder" functionality.
+
- Fixed leaked dialog window on app exit.
+
- Added rounded corners to legacy icons.
+
+
+
+MasterGear 4.7.1 (Dec 21 2020)
+
+- Refactored app to comply with Google's latest ban on file I/O.
+
- On Android 10+, all file access is now done via content providers.
+
- Content is copied to a temporary folder for use, changes moved back on exit.
+
- You may have to give app separate permission to read each storage location.
+
- Please, report any found problems to the
+ support group
+ or email me directly.
+
+
+
+MasterGear 4.7 (Oct 12 2020)
+
+- Based on the latest MasterGear 4.7 sources.
+
- Refactored scaling and special effects framework.
+
- Added simple CPU-based linear interpolation algorithm.
+
+
+
+MasterGear 4.6.11 (Aug 26 2020)
+
+- Based on the latest MasterGear 4.6 sources.
+
- Added separate option for linear image interpolation.
+
+
+
+MasterGear 4.6.10 (Jul 29 2020)
+
+- When parent folder not available, showing storage devices instead.
+
- Fixed Box Art Downloader to use alternative storage location.
+
- Fixed Box Art Downloader to follow redirects.
+
- Added HTTPS support to Box Art Downloader.
+
+
+
+MasterGear 4.6.9 (Jul 01 2020)
+
+- Fixed stray crash on AndroidTV when obtaining the list of storage devices.
+
- Fixed State Exchange feature.
+
- Fixed Network Play feature.
+
- Fixed box art downloader.
+
+
+
+MasterGear 4.6.8 (Jun 01 2020)
+
+- Added list of available storage devices to "Change Folder" dialog.
+
- Added available storage devices to the top row in AndroidTV UI.
+
- Changed message indicating that Android denied a directory listing.
+
+
+
+MasterGear 4.6.7 (Feb 06 2020)
+
+- Fixed AndroidTV file browser getting stuck on unavailable folders.
+
- Fixed File Selector getting stuck on unavailable folders.
+
- AndroidTV browser will point to "Folders" row after changing folder.
+
- Toolbar now tries running paid apps before defaulting to free ones.
+
- Added a message dialog when directing users to Google Play.
+
+
+
+MasterGear 4.6.6 (Jan 15 2020)
+
+- Advanced Settings now switch to app folder when current folder unavailable.
+
- Advanced Settings will not allow to select unavailable folders.
+
+
+
+MasterGear 4.6.5 (Dec 12 2019)
+
+- Fixed double clicks starting two game instances on some devices.
+
- Fixed screen going blue on some Androids, such as Chromebooks.
+
+
+
+MasterGear 4.6.4 (Nov 28 2019)
+
+- Fixed screen going blue on some Androids, such as Chromebook.
+
- Added standard AndroidTV search functionality.
+
- Modified "Changes" dialog to keep Google approval drones happy.
+
- Enabled navigation with [DPAD_CENTER], [DELETE], and [ESCAPE] keys.
+
- Now ignoring repeated keypresses.
+
+
+
+MasterGear 4.6.3 (Oct 28 2019)
+
+- Virtual buttons now have same size on all devices.
+
- App now requires Android 4.1+ (Jelly Bean) to run.
+
- Changed Apache HTTP library linkage.
+
- Switched to "androidx.leanback.*" APIs.
+
- Switched to Firebase for reporting.
+
- Switched to Gradle 5.6.
+
+
+
+MasterGear 4.6.1 (Oct 10 2019)
+
+- Fixed virtual buttons getting too large or too small.
+
- Improved the new AndroidTV interface.
+
- Fixed rare division by zero when creating icon tiles.
+
- Fixed missing method crash in the new AndroidTV UI.
+
- Fixed null pointer crash when starting new AndroidTV UI.
+
+
+
+MasterGear 4.6 (Sep 25 2019)
+
+- Added completely new, modern AndroidTV interface.
+
- Please, email me if you encounter any issues with the new AndroidTV UI.
+
- Fixed gamepad button assignments.
+
- Completely refactored File Selector code.
+
- Made box art show immediately after download.
+
- Now properly wiping current screenshot when box art downloaded.
+
- Added 5ms and 10ms tactile feedback options.
+
- Added native 64bit Intel support.
+
+
+
+MasterGear 4.5.4 (Jun 12 2019)
+
+- Added new icons, including adaptive icons.
+
+
+
+MasterGear 4.5.3 (May 06 2019)
+
+- Automatically unzipping MasterGear-Cheats.zip, if found in Downloads.
+
- Now showing action bar when the BACK button is pressed once.
+
- Fixed saving files to /sdcard/MasterGear when current folder not writable.
+
- Fixed tilt joystick operation.
+
- Fixed screen rotation after disabling the tilt joystick.
+
- Switched to Android Pie SDK (Android-28).
+
- Fixed State Exchange and box art downloads on newer Androids.
+
- Fixed crashes due to missing libraries on Android Pie.
+
- Oldest supported OS is now Android-9 (Gingerbread).
+
+
+
+MasterGear 4.5.2 (Apr 03 2019)
+
+- Now able to show action bar with horizontal flings at screen top/bottom.
+
- Now searching for ROOT.chts in /sdcard/MasterGear and all its subfolders.
+
- Enabled native build for 64bit ARMv8 CPUs.
+
- Fixed saved state compatibility between 32bit and 64bit architectures.
+
- Fixed native OpenSLES sound on newer Androids.
+
- Fixed a possible crash in Java code.
+
- Fixed toolbar application links.
+
+
+
+MasterGear 4.5.1 (Mar 16 2019)
+
+- Had to remove the cheats, since Google Play no longer allows them
+ and bans apps containing cheats. Please, go and see the
+ help page
+ for details.
+
- Switched to Gradle build.
+
+
+
+MasterGear 4.4 (Dec 20 2018)
+
+- Synchronized version number with Windows/Linux releases.
+
- Now truncating all VRAM table addresses to 16kB boundary.
+
- Fixed accidental crashes when running SC-3000 programs.
+
- Added "Settings | General | Hide Dot Files" option.
+
- Enable hiding dot-files to ignore system files created by MacOS.
+
- Added "Settings | General | Prefer App Folder" option.
+
- Enable app folder preference to save new files to the application folder.
+
- Fixed "Completely Delete File" menu option.
+
+
+
+MasterGear 4.2.7 (Nov 19 2018)
+
+- Media keys can now be assigned to perform gamepad functions.
+
- Refactored "Settings | Input | Assign Joystick Keys" code.
+
- Fixed bug where button, used to close mapping dialog, was added to mappings.
+
- Added support for diagonal keypad buttons, present since Android-24.
+
- Fixed action bar stuck after using "Cheats | Cheat Hunter | Add Watch" dialog.
+
- Fixed desktop shortcuts not working on some filenames.
+
- Fixed starting some files from the Gallery.
+
+
+
+MasterGear 4.2.6 (Oct 31 2018)
+
+- Fixed crash when sharing information about the app.
+
- Now only hitting MIDI drums once per screen when recording.
+
+
+
+MasterGear 4.2.5 (Oct 15 2018)
+
+- Added "Settings | Input | Select Second Player" option.
+
- Now able to select input device for the second player.
+
- Fixed problems with non-working input devices on AndroidTV.
+
- Fixed problems with non-working analog joysticks.
+
- Added light and dark skins to the Cheat Editor.
+
- No longer skinning Settings background, since Android does not support it.
+
+
+
+MasterGear 4.2.4 (Sep 17 2018)
+
+- Fixed crash in Joystick Layout Editor when buttons become too small.
+
- Fixed crash when trying to share a screenshot on newer Androids.
+
- Fixed compatibility with Android Pie.
+
- Now skipping fake virtual "joystick" supplied by Archos Gamepad.
+
- Upgraded Google Analytics library to the latest compatible version.
+
- Switched to Android Build Tools 28.0.1.
+
+
+
+MasterGear 4.2.3 (Jun 11 2018)
+
+- Added ability to browse through paused replay.
+
- During replay, press [LEFT] and [RIGHT] keys to browse.
+
- Press [UP] to resume replay, any other key to continue.
+
- Press any other button to continue playing.
+
- Made replay save states approximately every 170ms.
+
- Made
RPLPlay() always return REPLAY_ENDED if no replay.
+ - Made
WaitJoystick() exit when window closed.
+
+
+
+MasterGear 4.2.2 (Apr 25 2018)
+
+- Fixed saved state compatibility between 32bit and 64bit systems.
+
- Recompiled sources with
"-Wall" and fixed warnings.
+ - Deprecated
-DNO_WAVE_INTERPOLATION compilation option.
+ - Deprecated
-DNEW_STATES compilation option.
+
+
+
+MasterGear 4.2.1 (Mar 28 2018)
+
+- Made sure first player always gets stock gamepad on Nvidia ShieldTV.
+
- Either player can open menu or exit emulation now.
+
+
+
+MasterGear 4.2 (Feb 20 2018)
+
+- Released free MasterGear 4.2 for Windows and Linux.
+
- Fixed Settings background on AndroidTV.
+
- Disabled DropBox on AndroidTV for now, since there is no browser.
+
- Added shadow underneath the replay time display.
+
- Stopping replay when emulation reset or state loaded.
+
+
+
+MasterGear 4.1.4 (Jan 22 2018)
+
+- Fixed replay rollover mechanism.
+
- Added remaining time display during replay.
+
- Settings activity now uses black/white UI setting.
+
- Switched Settings to Material Design on Lollipop+.
+
- Fixed native crash when saving state.
+
- Fixed several other possible sources of native crashes.
+
+
+
+MasterGear 4.1.3 (Jan 01 2018)
+
+- Fixed desktop icon placement.
+
- Fixed crash when passing "file://" URI via desktop icon.
+
- Fixed DropBox crash when app folder has subfolders.
+
+
+
+MasterGear 4.1.2 (Dec 11 2017)
+
+- Switched to the latest android-27 SDK.
+
- Now using Android build tools version 27.0.2.
+
- Fixed gamepad on Nvidia ShieldTV and other AndroidTV devices.
+
- Any input devices named as "virtual-*" are now ignored.
+
- Any virtual (android-16) and disabled (android-27) devices are ignored.
+
+
+
+MasterGear 4.1.1 (Nov 21 2017)
+
+- Released free MasterGear 4.1 for Windows and Linux.
+
- Fixed issue with backup save file being chosen over the normal one.
+
- Switched to DropBox APIv2. DropBox support works again.
+
- Use "Settings | General | Reset All Settings" to remove old DropBox token.
+
- Fixed upload dates on the DropBox files.
+
- Made DropBox worker queue more reliable.
+
- Renamed DropBox authorization activity.
+
- Fixed a few other bugs in the DropBox code.
+
+
+
+MasterGear 4.1 (Oct 12 2017)
+
+- Console model and other hardware options will now be saved.
+
- Greatly improved automatic hardware and language detection.
+
- Fixed video timings for both NTSC and PAL modes.
+
- Fixed scanline length to 228 CPU clocks.
+
- Fixed NTSC/PAL screen length to 262/313 scanlines.
+
- Fixed music speed in Sonic Chaos (GG).
+
- Greatly improved the Layout Editor, fixing many bugs.
+
- Layout Editor now lets you resize screen in both dimensions.
+
- Screen rectangle will stay centered while resizing.
+
- Buttons gravity will be restored when resetting layout.
+
- Made states/screenshots deletion more reliable.
+
- Fixed hangup on exit where Java code waits for non-existent native thread.
+
- Removed outdated features from the EMULib code.
+
+
+
+MasterGear 4.0.3 (Sep 18 2017)
+
+- Added "Change Folder" option to the File Selector for jumping between folders.
+
- Fixed File Selector getting stuck at unreadable folders.
+
- Made folder listing error a bit less threatening, since it has become the new normal in Android 7+.
+
- Fixed native crash when processing initial commands sent by Java side.
+
- Fixed crash when loading an invalid skin bitmap file.
+
- Fixed minor bug with YM2413 drum channels when loading state.
+
+
+
+MasterGear 4.0.2 (Jul 31 2017)
+
+- Released free MasterGear 4.0 for Windows and Linux.
+
- Hopefully fixed a crash in the native startup code.
+
- Hopefully fixed two native crashes when drawing screen.
+
- Fixed crash when parsing URI during startup.
+
- Fixed two Java crash sources when the emulation starts.
+
- Fixed crash when dismissing progress dialog in Cheatopedia.
+
- Fixed the order of calls in onPause() / onStop() / onDestroy().
+
+
+
+MasterGear 4.0.1 (Jun 19 2017)
+
+- Eliminated false directional events from analog gamepads (XBox360).
+
- Fixed multiple crashes reported by the new Google Play Console.
+
- Fixed crashes when showing or dismissing progress dialog in the File Selector.
+
- Fixed crash when blitting image to screen while exiting.
+
- Fixed crash when starting a game from the Gallery on Android Nougat.
+
- Fixed crash when exiting Palette Editor on Android Nougat.
+
- Hopefully fixed rare crash in the File Selector onCreate().
+
- Hopefully fixed rare crash in Palette Editor RGB dialog.
+
+
+
+MasterGear 4.0 (Jun 01 2017)
+
+- Added "Emulation | Model | MasterSystem 2" options.
+
- MasterSystem 2 is now the default hardware model.
+
- Implemented proper 224/240-line screen modes.
+
- Fixed Linus Spacehead (GG) flicker and offset screen.
+
- Fixed StarTrek Next Generation (GG) offset screen.
+
- Fixed Micro Machines (SMS/GG) scrolling problems.
+
- Fixed Madou Monogatari 2 (GG) by setting VDP[6]=0xFF on reset.
+
- Fixed missing "TM" letters in many title screens.
+
- Fixed World Series Baseball '95 (GG) hangup due to missing EEPROM.
+
- Fixed World Series Baseball (GG) hangup due to missing EEPROM.
+
- No longer asking for READ_PHONE_STATE permission.
+
- Application will use AndroidID rather than IMEI to identify users.
+
- When emailing for support, attach your AndroidID (dial
"*#*#8255#*#*").
+
+
+
+MasterGear 3.7.1 (Apr 27 2017)
+
+- Fixed and refactored screen updates synchronization.
+
- Fixed accidental crash when starting MG 3.7.
+
+
+
+MasterGear 3.7 (Apr 18 2017)
+
+- Fixed support for opening SMS/GG files from Astro File Manager.
+
- Added support for opening "content://" URIs.
+
- Refactored file type definitions in the manifest.
+
- Refactored EMULib library code.
+
- Moved virtual buttons implementation into OvrButton class.
+
- Moved file-specific utilities into FileInfo class.
+
+
+
+MasterGear 3.6.11 (Apr 03 2017)
+
+- Fixed CMY/RGB filter shaders on low-end GPUs (Mali-400).
+
- Fixed scanline simulation shaders on low-end GPUs (Mali-400).
+
- Removed text cues from joystick skins that have them already.
+
+
+
+MasterGear 3.6.10 (Mar 17 2017)
+
+- Fixed analog trigger assignments not working in MasterGear 3.6.9.
+
- Tap screen to toggle title bar in Layout Editor.
+
- Items no longer jump in Layout Editor when you start moving them.
+
- Analog gamepad triggers now mapped to L2/R2 buttons.
+
- Fixed MIDI drums option that simulates noise channel with drums.
+
- Added cheats for 3 more GameGear games.
+
- Added cheats for Incredible Crush Dummies.
+
- Added cheats for Indiana Jones And The Last Crusade.
+
- Added cheats for Itchy And Scratchy Game.
+
+
+
+MasterGear 3.6.8 (Feb 09 2017)
+
+- Added HQ4X scaling algorithm (GLES mode only).
+
- Select "Video | Interpolation Effect | HQ4X Interpolation" to enable.
+
- Added option to disable GLES linear filtering.
+
- Select "Video | Interpolation Effect | Disable Interpolation" to enable.
+
- Disabled GLES linear filtering when scaling algorithm selected.
+
- Further optimized GLES scaling algorithms.
+
- Made title bar transparent in Layout Editor, when "Hide Title Bar" enabled.
+
- Added effective waveform volume computation to the MIDI soundtrack recorder.
+
+
+
+MasterGear 3.6.7 (Jan 12 2017)
+
+- Added "Video | Scale Video | Stretch to 4:3 Ratio" option.
+
- Added cheats for 8 more GameGear games.
+
- Added cheats for Ariel: Little Mermaid.
+
- Added cheats for Super Monaco GP 2.
+
- Added cheats for Sailor Moon S.
+
- Added cheats for Captain America And The Avengers.
+
- Added cheats for Castle Of Illusion.
+
- Added cheats for Centipede.
+
- Added cheats for Chase HQ.
+
- Added cheats for Crystal Warriors.
+
+
+
+MasterGear 3.6.6 (Dec 15 2016)
+
+- Optimized OpenGLES shaders used in scaling algorithms and filters.
+
- Added "Audio | Sampling Rate | Automatic" option for best available sound.
+
- Added "Audio | Sampling Rate" options for 24kHz and 48kHz sound.
+
- Always using optimal rate and buffer size when "Automatic" selected.
+
- Made audio render without glitches at custom sampling rates.
+
+
+
+MasterGear 3.6.5 (Nov 17 2016)
+
+- Switched to NDK v13 and CLANG toolchain.
+
- Refactored all native code, fixing CLANG warnings.
+
- Now always hiding FAB buttons on devices with no touchscreen.
+
+
+
+MasterGear 3.6.4 (Oct 24 2016)
+
+- Switched to Android Nougat platform (android-25).
+
- Added split window support on Android Nougat.
+
- Added freeform window support for upcoming Androids.
+
- Switched to Java Development Kit 1.8, newest ANT and ProGuard.
+
- On Marshmallow+, app asks for permissions on startup.
+
- Fixed scalable images used for tiles in the File Selector.
+
+
+
+MasterGear 3.6.3 (Oct 05 2016)
+
+- Added CRT vignetting simulation effect.
+
- Enable "Video | Hardware Acceleration" to see new effect.
+
- Check "Video | Apply CRT Vignette" to enable vignetting.
+
- Special functions (freeze, restore, etc.) can be assigned to gamepad.
+
- See L1, L2, R1, R2, THUMBL, THUMBR under "Input | Assign Special Keys".
+
- Fixed code that selects app to run when opening a cart, tape, or disk.
+
- Fixed inconsistently initialized preferences.
+
- Fixed "Quit" option in the File Selector menu.
+
- Made "What's New" dialog fill the screen.
+
- Removed unused native code handling media keys.
+
+
+
+MasterGear 3.6.2 (Sep 12 2016)
+
+- Released free MasterGear 3.6 for Windows and Linux.
+
- Added 2xSAI and Scale2X scaling algorithms using GLES2 shaders.
+
- Enable "Video | Hardware Acceleration" to see new algorithms.
+
- Select scaling algorithm via "Video | Scale Video".
+
- Added Monochrome, Green, Amber, and Sepia color filters.
+
- Select your color filter via "Video | Color Filter".
+
- Renamed "Color Mask" option to "Color Filter".
+
- Added "In Android Gallery" option to File Selector menu.
+
- Uncheck it to stop Android Gallery from indexing the current folder.
+
- Automatically excluding /sdcard/MG from media indexing.
+
- Added CPU-only Scale2X algorithm implementation.
+
- Optimized EPX and EAGLE scaling shaders.
+
- Fixed TV scanlines and raster settings.
+
+
+
+MasterGear 3.6.1 (Aug 17 2016)
+
+- Added EPX and EAGLE scaling algorithms using GLES2 shaders.
+
- Enable "Video | Hardware Acceleration" to see new algorithms.
+
- Select scaling algorithm via "Video | Scale Video".
+
- You can combine scaling, scanline, and color raster effects.
+
+
+
+MasterGear 3.6 (Jul 29 2016)
+
+- Added high-quality scanline shader effects.
+
- Enable "Video | Hardware Acceleration" to see new effects.
+
- Select scanline effect via "Video | Scanline Effect".
+
- Added high-quality color raster effects.
+
- Select raster effect via "Video | Color Mask Effect".
+
+
+
+MasterGear 3.5.9 (Jul 07 2016)
+
+- Fixed GLES2 rendering on MTK and older Mali GPUs.
+
+
+
+MasterGear 3.5.8 (Jun 30 2016)
+
+- Switched to OpenGLES2 rendering for accelerated video.
+
- OpenGLES2 is faster and allows for future special effects.
+
- Press X to apply cheats, Y to discard them in Cheatopedia.
+
- Press X to apply changes, Y to reset them in Cheat Editor.
+
- Press X to apply changes, Y to reset them in Palette Editor.
+
- Now disabling Joystick Layout Editor on devices with no touchscreen.
+
+
+
+MasterGear 3.5.7 (Jun 13 2016)
+
+- Fixed button placement in Joystick Layout Editor.
+
- Buttons no longer shift from where you set them.
+
- Custom screen rectangle goes where it should go now.
+
- Button labels will not distort when custom screen selected.
+
- Fixed the menu on AndroidTV.
+
- Added a menu workaround for Google's political idiocy.
+
- Replaced options menu with context menu for AndroidTV.
+
- Added "Toggle cheats" special key function.
+
+
+
+MasterGear 3.5.6 (May 18 2016)
+
+- Added "General | Add Overscan Margins" option for AndroidTV.
+
- Fixed fast-scroll index in the File Selector.
+
- Fixed file search feature on newer Androids.
+
- Fixed missed item clicks in the File Selector.
+
- Declared emulation activities enabled for external use.
+
- Optimized default preferences update on startup.
+
+
+
+MasterGear 3.5.5 (Apr 28 2016)
+
+- Layout Editor has separate layouts for landscape and portrait modes.
+
- Adjusted portrait background image in the Layout Editor.
+
- Fixed dashed lines display in the Layout Editor.
+
- Removed dormant ChartBoost SDK library.
+
+
+
+MasterGear 3.5.4 (Apr 04 2016)
+
+- Fixed Layout Editor to always save changes before emulation resumes.
+
- Made Layout Editor always rotate when device rotated.
+
- Added "Input | Assign Special Keys" setting.
+
- Use new setting to assign functions (menu, ffwd, etc) to hardware keys.
+
- Removed "General | Use PLAY/RECORD Media Keys" option.
+
- Removed "General | Use FFWD/REWIND Media Keys" option.
+
- Removed outdated org.apache.http.* API from the State Exchange.
+
+
+
+MasterGear 3.5.3 (Mar 18 2016)
+
+- Fixed volume for high-frequency white noise.
+
- Added a "Rate Me" FAB button to the Settings (disappears when pressed).
+
- Cleaned up the Java side, removing deprecated code.
+
- Merged pre-Gingerbread and post-Gingerbread native code.
+
- Removed some debug messages from the native side.
+
+
+
+MasterGear 3.5.2 (Mar 04 2016)
+
+- Add home screen shortcuts via File Selector context menu.
+
- Long press to delete state in the State Selector.
+
- State Selector now starts with autosaved slot selected.
+
- Fixed error messages when screenshots not found in State Selector.
+
- Fixed individual slot heights in State Selector.
+
- Fixed State Selector crashes (reported on IUNI devices).
+
- Added option to hide FFWD button ("General | Show FFWD Button").
+
- Now disabling FAB button by default on AndroidTV devices.
+
- Fixed disappearing FAB button.
+
- Refactored and simplified all EMULib activities.
+
+
+
+MasterGear 3.5.1 (Feb 08 2016)
+
+- Released free MasterGear 3.5 for Windows and Linux.
+
- Disabled fixed top rows mode for GameGear.
+
- Fixed Dynamite Headdy screen flicker.
+
- Made line interrupt occur later inside a scanline.
+
- Fixed The Smurfs hangup problem.
+
- Added 224/240-pixel screen modes for GameGear.
+
- Fixed Micro Machines 1/2 GG screen artefacts.
+
- Fixed most Cosmic Spacehead issues.
+
- Fixed Star Trek GG screen shift.
+
- Added ability to periodically save gameplay.
+
- Added "General | Save Emulation State" selector.
+
- Removed "General | Save State on Exit" option.
+
+
+
+MasterGear 3.5 (Jan 07 2016)
+
+- Switched to the new VRAM/CRAM/VDP access mechanism.
+
- Added new CodeMasters mapper detection scheme.
+
- Fixed serial port status (CJ Elephant Fugitive GG).
+
- Fixed artefacts in Wolf Child.
+
- Added CodeMasters game CJ Elephant Fugitive GG.
+
- Added CodeMasters game Cosmic Spacehead GG.
+
- Added CodeMasters game Micro Machines GG.
+
- Added CodeMasters game Micro Machines 2 GG.
+
- Added CodeMasters game Pete Sampras Tennis GG.
+
+
+
+MasterGear 3.4.6 (Dec 21 2015)
+
+- Fixed Cheat Editor not finding .cht files in private SD card folders.
+
- Fixed BACK key on devices where it did not exit emulation.
+
- Fixed the first/second gamepad detection.
+
- Fixed a crash in the File Selector when showing grid.
+
- Returned gradient to the action bar (sorry, Material Design).
+
- Amplified pixel color raster effects.
+
- Switched to v2 authentication in DropBox.
+
- Upgraded to DropBox SDK 1.6.3.
+
- Improved the What's New dialog.
+
+
+
+MasterGear 3.4.5 (Nov 20 2015)
+
+- Released free MasterGear 3.4 for Windows and Linux.
+
- Added "Video | Interpolation Effect" selector.
+
- Added "EPX interpolation" and "EAGLE interpolation" effects.
+
- Renamed "Soften Video" to "2xSal interpolation".
+
- Switched to android-22 platform and tools (Android Lollipop 5.1.1).
+
+
+
+MasterGear 3.4.4 (Oct 30 2015)
+
+- Added "Video | Color Mask Effect" selector.
+
- Added "CMY pixels" and "RGB pixels" special effects.
+
- Merged "Scale Video" and "Stretch Video" into one selector.
+
- Fixed memory corruption bug in the instant replay recorder.
+
- Fixed instant replay not recording the initial state.
+
- Fixed instant replay not restoring successive states.
+
+
+
+MasterGear 3.4.3 (Sep 30 2015)
+
+- You can have custom backdrop for Game.sms in Game.sms.back.png.
+
- Typical backdrop size is 640x800, bottom part may go off-screen.
+
+
+
+MasterGear 3.4.2 (Sep 11 2015)
+
+- Added new background image, removing the gap.
+
- Now automatically creating /sdcard/MasterGear if missing.
+
- When MasterGear cannot write SD card, it will save to /sdcard/MasterGear.
+
+
+
+MasterGear 3.4.1 (Aug 24 2015)
+
+- Added joystick skins, place your own skin into /sdcard/MasterGear/Controls.png.
+
- Added "Input | Layout Editor | Shape | Custom Skin" option for choosing your skin.
+
- Sample joystick skin image available at http://fms.komkon.org/EmuAndroid/#Skin.
+
- Made action bar optional on devices with MENU button (off by default).
+
- Added "General | Enable Action Bar" option for devices with MENU button.
+
- Added exception for LG Optimus Zone 2 (does not show submenus).
+
+
+
+MasterGear 3.4 (Aug 04 2015)
+
+- Added light gun emulation (Operation Wolf, Safari Hunt, etc).
+
- Added beam position register (port 7Fh).
+
- Added "Emulation | Light Gun" option to the Settings.
+
- Fixed a crash in the State Exchange browser.
+
- Tested and optimized for Nvidia Shield AndroidTV box.
+
- On AndroidTV, press both thumbsticks down to invoke the menu.
+
- Reenabled action bar on devices with physical MENU key.
+
+
+
+MasterGear 3.3.3 (Jul 08 2015)
+
+- Released free MasterGear 3.3 for Windows and Linux.
+
- Fixed Joystick Layout Editor to properly show labels and gravity.
+
- Press BUTTON_L1+BACK or BUTTON_R1+BACK to open menu inside a game.
+
+
+
+MasterGear 3.3.2 (Jun 12 2015)
+
+- Added second player, if you have two gamepads connected.
+
- To play together, connect both gamepads before starting MasterGear.
+
- Added Material Design icons everywhere.
+
- Retouched virtual gamepad images.
+
+
+
+MasterGear 3.3.1 (May 28 2015)
+
+- Fixed clearing SRAM on reset (Lunar Legend, etc).
+
- Added "General | Reset All Settings" option.
+
- Pressing BUTTON_R1 now invokes File Selector context menu.
+
+
+
+MasterGear 3.3 (May 07 2015)
+
+- Removed waveform interpolation for more realistic sound.
+
- Optimized app for AndroidTV, tested on the ADT-1 box.
+
- Added overscan border on AndroidTV devices.
+
- Added hints to the emulator and key mapping dialog.
+
- Fixed crashes on devices with no web browser (e.g. ADT-1).
+
- Replaced AndroidTV banner image.
+
- Enabled gamepad-only emulation interface.
+
- Press BACK on gamepad to exit emulation.
+
- Press MODE or BUTTON_A+BACK to open menu.
+
- Press BUTTON_X if you have no SELECT button.
+
- Press BUTTON_Y if you have no START button.
+
- Xperia CIRCLE button now acts as BUTTON_B.
+
- Redesigned key mapping dialog.
+
- Press same key twice to remove it from assignments.
+
- Press same key three times to confirm key mappings.
+
- DPAD_CENTER key no longer confirms key mappings.
+
+
+
+MasterGear 3.2.5 (Apr 17 2015)
+
+- Added floating action button that starts the last played game.
+
- Added "Show Action Button" option to the Settings.
+
- Optimized controls for Nvidia SHIELD Portable and similar devices.
+
- FIRE-R, FIRE-Y, and SELECT buttons open File Selector main menu.
+
- FIRE-X button opens File Selector navigation menu.
+
- FIRE-L button opens Gallery from the File Selector.
+
- FIRE-B button now exits File Selector.
+
- Fixed crash when detecting an outdated version.
+
+
+
+MasterGear 3.2.4 (Mar 23 2015)
+
+- Fixed VRAM writes when VDP is in read mode.
+
- Fixed graphical glitches in Klax (both SMS and GG).
+
- Fixed title screen garbage in Wolf Child.
+
- Fixed corrupted explosion craters in AstroWarrior.
+
- Added 15 new GameGear games to the Cheatopedia.
+
- Added navigation menu to the File Selector.
+
- Added tile view to the File Selector.
+
- Added "up" button to the main emulator title bar.
+
- Made "grid view" and "tile view" options separate.
+
- Moved File Selector view toggles to the navigation menu.
+
- Enabled application-wide hardware acceleration.
+
- Improved "What's New" page formatting.
+
+
+
+MasterGear 3.2.3 (Mar 12 2015)
+
+- Fixed crash accidentally introduced in version 3.2.1. Sorry!
+
- Released free MasterGear 3.2 for Windows and Linux.
+
- When assigning keys, DPAD_CENTER button confirms assignments.
+
- You can add your own game names database in "/sdcard/MasterGear/names.dat".
+
- Fixed Emulation Settings not showing up from File Selector.
+
- Removed unnecessary group inside Emulation Settings.
+
- Added the "up" button to the main emulator title bar.
+
- Cleaned up and beautified the File Selector grid view.
+
- MasterGear now shows up in the Google Play for AndroidTV.
+
- Fixed multiple build warnings.
+
+
+
+MasterGear 3.2 (Feb 16 2015)
+
+- Added experimental AndroidTV support. Please, test!
+
- Added tiles to the File Selector grid view.
+
- Fixed screenshots and highlight in the State Selector.
+
- Fixed Moga library to work on Android Lollipop.
+
- Fixed LVL library to work on Android Lollipop.
+
- Fixed screenshot sizes in the State Exchange.
+
- Fixed black banding in the Palette Editor.
+
- Fixed text color in the Gallery.
+
- Switched to android-21 API, as required by AndroidTV.
+
+
+
+MasterGear 3.1.9 (Jan 29 2015)
+
+- Fixed Lollipop crashes by switching back to android-19 API.
+
- Switched to the Material Design theme on all platforms.
+
- Added "up" buttons to all title bars.
+
- Revised all menus, making them work uniformly.
+
- Removed application name from all title bars, to save space.
+
- Now defaulting to the "light UI" mode.
+
+
+
+MasterGear 3.1.8 (Jan 27 2015)
+
+- Now targeting Lollipop (android-21), Froyo+ still works.
+
- Now using Material theme on Lollipop.
+
- Updated all icons to the newest Lollipop versions.
+
- Retired some icons, replacing them with better fitting ones.
+
- Removed app name from all title bars, to save space.
+
- GBA link now redirects to VGBAnext.
+
+
+
+MasterGear 3.1.7 (Jan 06 2015)
+
+- Added "Show Box Art First" option to the File Selector.
+
- Fixed OpenGLES lockups on Mali GPUs (Samsung, RK, etc).
+
- Fixed running MasterGear in the lower half of split-screen.
+
- Fixed flickering border when simulating scanlines on x86 devices.
+
- Made screenshots and box art display bigger on large screens.
+
- Hiding the title bar is now the default behavior.
+
- Fixed premature hiding of the title bar.
+
+
+
+MasterGear 3.1.6 (Dec 21 2014)
+
+- Removed FIREL/FIRER buttons off the screen.
+
- Added split-screen and popup window modes on Samsung devices.
+
- Added searching by name to the File Selector Search.
+
- Added assembler scaling routines for 1280x1120+ screens.
+
- Fixed auto frame skip when OpenGLES video enabled.
+
- Fixed reenabling UI with a fling on Kitkat+ phones.
+
- Reenabled automatic frame skip by default.
+
- Reenabled accelerated video and audio by default.
+
- You can now fling from the top or the bottom to toggle UI.
+
- Removed deprecated code, settings, and resources.
+
+
+
+MasterGear 3.1.5 (Dec 05 2014)
+
+- Made system UI translucent when immersive mode is on.
+
- Fixed the File Selector Search to properly find storage.
+
- Added "Use PLAY/RECORD Media Keys" option.
+
- When enabled, RECORD saves, PLAY restores gameplay.
+
- Added "Use FFWD/REWIND Media Keys" option.
+
- When enabled, FFWD fast-forwards, REWIND replays.
+
- Built package with the latest Android SDK.
+
+
+
+MasterGear 3.1.4 (Nov 15 2014)
+
+- Fixed crash on Android 2.* devices, accidentally introduced in 3.1.3.
+
- Added accurate SN76489 noise channel emulation.
+
- Added configurable noise generator API to EMULib.
+
- Added Android immersive mode support.
+
- You must start or finish your fling at the top to toggle title bar.
+
- Added 12 new GameGear games to the Cheatopedia.
+
- Added Faceball 2000 and Frogger to the Cheatopedia.
+
- Added F15 Strike Eagle and Formula 1 to the Cheatopedia.
+
- Added Fatal Fury and Fantasy Zone to the Cheatopedia.
+
+
+
+MasterGear 3.1.2 (Oct 29 2014)
+
+- Fixed version number. Sorry for the messup.
+
- Now saving Hardware Model, no need to set it every time.
+
- Each game can have own backdrop. For Game.sms, place it into
+ Game.sms.back.png.
+
- Now aligning backdrop to the screen bottom, if it is too small.
+
- Added cheats for 24 more GameGear games.
+
- Added two Chuck Rock games to the Cheatopedia.
+
- Added Cool Spot and Cutthroat Island to the Cheatopedia.
+
- Added Double Dragon and Eternal Legend to the Cheatopedia.
+
- Added Defenders of Oasis game to the Cheatopedia.
+
- Added explanation messages to the Cheat Hunter.
+
- Added missing string translations.
+
+
+
+MasterGear 3.1 (Oct 13 2014)
+
+- Added Cheat Hunter tool for searching Action Replay cheats.
+
- Added cheats for 13 more GameGear games.
+
- Fixed cheats parsing, adding wrong cheats no longer possible.
+
- Fixed saving .CHT files from the emulator (was saving them GZIPped).
+
- Added three Bart Simpson games to the Cheatopedia.
+
- Added Battleship and Buster Fight to the Cheatopedia.
+
- Added Baseball'91 and Batter Up to the Cheatopedia.
+
- Added Beavis And Butthead and Berlin Wall to the Cheatopedia.
+
+
+
+MasterGear 3.0.2 (Sep 29 2014)
+
+- Added cheats for 50 GameGear games.
+
- Fixed default settings initialization.
+
- Removed unused and outdated code, resources and bitmaps.
+
- Added Dragon Crystal and two Phatntasy Star games to the Cheatopedia.
+
- Added Ninja Gaiden and two Shinobi games to the Cheatopedia.
+
- Added Megaman and two Wonder Boy games to the Cheatopedia.
+
- Added Alien Syndrome and Chakan to the Cheatopedia.
+
- Added Desert Strike and Lemmings to the Cheatopedia.
+
- Added five Sonic The Hedgehog games to the Cheatopedia.
+
- Added Ecco The Dolphin to the Cheatopedia.
+
+
+
+MasterGear 3.0.1 (Sep 15 2014)
+
+- Now killing zombie processes left by some activities.
+
- Games start faster, after optimizng the utility library.
+
- Reduced switch times between Settings, Exchange, etc.
+
- Only starting Google Analytics tracker when needed.
+
- Keeping just one instance of Google Analytics tracker.
+
- Added cheats for 25 more games to the Cheatopedia.
+
- Added Shinobi and Shadow Dancer to the Cheatopedia.
+
- Added Street Fighter 2 and Streets of Rage to the Cheatopedia.
+
- Added Sagaia and Scramble Spirits to the Cheatopedia.
+
- Added Shadow of the Beast to the Cheatopedia.
+
- Added Smash TV to the Cheatopedia.
+
+
+
+MasterGear 3.0 (Sep 01 2014)
+
+- Added support for GameGenie cheat codes in "DDA-AAA-RRR"
+ and "DDA-AAA" formats.
+
- Cheat Editor now accepts both GameGenie and Pro Action Replay cheats.
+
- Added cheats for another 28 games to the Cheatopedia.
+
- Added King's Quest: Quest for the Crown to the Cheatopedia.
+
- Added Heroes of the Lance to the Cheatopedia.
+
- Added Indiana Jones and Jurassic Park to the Cheatopedia.
+
- Added James Bond and James Pond 2 to the Cheatopedia.
+
- Added Kenseiden to the Cheatopedia.
+
- Added Lemmings to the Cheatopedia.
+
- Removed AdMob library, as the app is not running any ads.
+
+
+
+MasterGear 2.9.15 (Aug 18 2014)
+
+- Added cheats for 29 new games to the Cheatopedia.
+
- Added a few missing game IDs to detect Cheatopedia games.
+
- Now properly killing DropBox and BoxArt threads at exit.
+
- Fixed stale timer thread remaining after exiting a game.
+
- Fixed screenshots when using custom-positioned screen.
+
- Fixed crash when drawing custom-positioned screen.
+
- Fixed several faulty Cheatopedia entries.
+
+
+
+MasterGear 2.9.14 (Aug 05 2014)
+
+- Added screen resizing/positioning to the Joystick Editor.
+
- Added "Input | Ignore Fake KeyUp Events" option to make misbehaving keyboards work.
+
- Added 18 new games to the Cheatopedia.
+
- Added backdrop image to the Joystick Editor.
+
- Fixed joystick resizing/positioning in the Joystick Editor.
+
- Fixed backdrop image shifting down after rotation.
+
- Fixed accidental crash when drawing overlay.
+
- Removed some outdated code that is no longer relevant.
+
+
+
+MasterGear 2.9.13 (Jul 21 2014)
+
+- Now showing current key assignments in "Assign Keys".
+
- Replaced "Edit Layout" option with "Edit Virtual Joystick".
+
- Buttons can be individually resized in Joystick Editor.
+
- Added scale, shape, and transparency options to Joystick Editor.
+
- Added gravity indication with dotted lines to Joystick Editor.
+
- Added button labels to Joystick Editor.
+
- Added 17 new games to the Cheatopedia.
+
- Removed separate joystick size, shape, and opacity settings.
+
- Reordered items in the "Input" tab.
+
+
+
+MasterGear 2.9.12 (Jul 07 2014)
+
+- Painless Wiimote support with "Input | Wiimote Support" option.
+
- Gamepad BACK button fully usable and assignable.
+
- Tested MasterGear on real a x86-based Android device (Dell Venue 8).
+
- Fixed scanline effects on x86-based Android devices.
+
- Added 18 new games to the Cheatopedia.
+
- Moved "Keep Screen On" to the "Video" tab.
+
- Fixed crashes when downloading DropBox files.
+
- Fixed crash when setting backdrop location.
+
- Fixed some Russian translations.
+
+
+
+MasterGear 2.9.11 (Jun 23 2014)
+
+- LuckyPatcher use now accepted, by public demand, but you will see a warning.
+
- Fixed support for .ZIP files stored on Kitkat SD cards.
+
- Added custom key assignments for freezing, restoring, and replaying gameplay.
+
- Added "General | Confirm Freezing State" option for people who tend hitting "Freeze" by mistake.
+
- The "REWIND" hardware key now replays recent gameplay.
+
- The "RECORD" hardware key now freezes gameplay state.
+
- The "PLAY" hardware key now restores gameplay state.
+
- No longer showing box art for .ZIP files, as we cannot identify them.
+
- Moved "Screen Orientation" option to the "Video" tab.
+
- Reordered items in the "Video" tab.
+
+
+
+MasterGear 2.9.10 (Jun 09 2014)
+
+- Cheatopedia automatically selects cheats by game ID.
+
- Now allowing to remap the "O" button on Xperia Play gamepad.
+
- Added decorative backdrop image in the portrait mode.
+
- Made backdrop optional (see "General | Show Portrait Backdrop").
+
- You can now supply your own backdrop in /sdcard/MasterGear/Backdrop.png.
+
- Gallery now shows box art, as well as screenshots.
+
- Added cheats for 29 new games to the Cheatopedia.
+
- Added Alf, Addams Family, Astro Warrior to the Cheatopedia.
+
- Added Alex Kidd and Asterix games to the Cheatopedia.
+
+
+
+MasterGear 2.9.9 (May 27 2014)
+
+- Fixed Gallery, accidentally broken in version 2.9.8.
+
- Now automatically downloading box art images when on WiFi.
+
- Enable "Download Box Art" in File Selector main menu to download box art.
+
- Choose "Download Box Art" in context menu to find box art for one game only.
+
- DropBox no longer requires login every time you open it.
+
- Gameplay saved back to DropBox after you are done playing.
+
- Added Gallery support for SD card folders on Android Kitkat.
+
- Added DropBox upload from SD card folders on Android Kitkat.
+
- Hopefully fixed "O" button on Sony Xperia gamepads.
+
- Upgraded DropBox SDK to the latest version.
+
+
+
+MasterGear 2.9.7 (May 12 2014)
+
+- Improved SN76489 PSG emulation.
+
- Fixed directional pad activated by touching outside.
+
- Added tilt joystick sensitivity setting.
+
- Switched PSG to logarithmic volumes.
+
- Corrected PSG base frequency.
+
- Fixed File Selector crash, when deleting a file.
+
- Fixed auxillary files display in the File Selector.
+
- Fixed gameplay recording feature.
+
- Added 17 new games to the Cheatopedia.
+
- Added four Wonder Boy games to the Cheatopedia.
+
- Added three World Cup games to the Cheatopedia.
+
+
+
+MasterGear 2.9.6 (Apr 28 2014)
+
+- Fixed NetPlay for those who had problems with it.
+
- Improved audio quality, removing harmonics.
+
- Reenabled built-in debugger (see "Advanced | Debugger").
+
- Made sure audio updates after restoring state.
+
- Added cheats for 24 more games to the Cheatopedia.
+
- Added Terminator cheats to the Cheatopedia.
+
- Added Ultima 4 cheats to the Cheatopedia.
+
- Added Xenon cheats to the Cheatopedia.
+
- Added Zillion cheats to the Cheatopedia.
+
- Added Zool cheats to the Cheatopedia.
+
+
+
+MasterGear 2.9.5 (Apr 14 2014)
+
+- Fixed Cheatopedia on Kitkat, when running games from SD card.
+
- Added "Analog Joystick Blind Radius" setting for Moga and other analog joysticks.
+
- Added "Show File Selector Toolbar" option to show or hide toolbar in the File Selector.
+
- Added "Settings" menu option to the File Selector.
+
- Added Strider, Super Kickoff, Wonderboy, and 11 more games to the Cheatopedia.
+
- Removed the MENU button from the screen (use "Advanced | Settings" instead).
+
- Fixed sections navigation in the File Selector.
+
- Fixed scanline effects in Debugger, etc.
+
+
+
+MasterGear 2.9.4 (Apr 05 2014)
+
+- Fixed crash on startup, accidentally introduced in MasterGear 2.9.3.
+
+
+
+MasterGear 2.9.3 (Mar 31 2014)
+
+- Added slow-motion mode, combined with fast-forward mode.
+
- Fixed multitouch input in cases when it didn't work.
+
- Made a work-around for external SD card use on KitKat!
+
- If can't write to external SD card, saving states to /storage/sdcard0/MasterGear.
+
- If MasterGear folder doesn't exist, saving states to /storage/sdcard1/Android/data/com.fms.mg/files.
+
- Fixed fast-forwarding in automatic frame rate mode.
+
- Fixed a crash in Cheatopedia, when displaying the list.
+
- Fixed rare crashes in gesture detection.
+
+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)
+
+- Fixed left/top edge artefacts with accelerated video enabled.
+
- Switched to the newest NDK and compiler toolchain.
+
- Added 32 more games to the Cheatopedia.
+
- Added Ninja Gaiden cheats to the Cheatopedia.
+
- Added Penguin Land cheats to the Cheatopedia.
+
- Added Psycho Fox cheats to the Cheatopedia.
+
- Added Quartet cheats to the Cheatopedia.
+
- Added R-Type cheats to the Cheatopedia.
+
- Added Rainbow Islands cheats to the Cheatopedia.
+
- Added Rygar cheats to the Cheatopedia.
+
+
+
+MasterGear 2.9.1 (Mar 03 2014)
+
+- Fixed recognition of multiple file extensions.
+
- Added 26 more games to the Cheatopedia.
+
- Added five Sonic games to the Cheatopedia.
+
- Added three Outrun games to the Cheatopedia.
+
- Added Phantasy Star cheats to the Cheatopedia.
+
- Added Prince of Persia cheats to the Cheatopedia.
+
+
+
+MasterGear 2.9 (Feb 17 2014)
+
+- Added Pro Action Replay cheats support!
+
- Added Cheatopedia with cheats for most popular games.
+
- Added Cheat Editor interface for entering your own cheat codes.
+
- Added "Hide Title Bar" option to hide status/action bar on startup.
+
- Custom Cheatopedia entries can be added to
/sdcard/MG/custom.chts.
+
+
+
+MasterGear 2.8.17 (Feb 05 2014)
+
+- Fixed physical key assignments.
+
+
+
+MasterGear 2.8.16 (Feb 03 2014)
+
+- Added ability to assign Moga buttons via "Assign Keys".
+
- Fixed battery drain when MasterGear is running in background.
+
- Added arrow keys navigation to the tabbed Settings.
+
- Added Moga controller navigation to the tabbed Settings.
+
+
+
+MasterGear 2.8.15 (Jan 20 2014)
+
+- Added automatic hardware selection for some games.
+
- CodeMasters' Micro Machines works out of the box now.
+
- MLB Majors Pro Baseball works out of the box now.
+
- Settings are now tabbed, for easier navigation.
+
- Added Emulation section to the Settings.
+
- Made "Scanline Effect" a list selector, to accommodate multiple effects.
+
- Removed "93c44 Serial EEPROM Chip" option, as it is now automatic.
+
- Removed "CodeMasters Memory Mapper" option, as it is now automatic.
+
- Moved some options from Input and Video sections to General.
+
- Reordered Settings by importance.
+
+
+
+MasterGear 2.8.14 (Jan 07 2014)
+
+- Added "Simulate LCD Scanlines" option, for vertical scanlines.
+
- Added raster effect when both vertical and horizontal scanlines enabled.
+
- Fixed a crash when surface gets destroyed during display update.
+
- Fixed a crash when deleting files with special characters in their names.
+
- Fixed a crash when showing sections in File Selector.
+
+
+
+MasterGear 2.8.13 (Dec 24 2013)
+
+- Added "Hardware Model" screen to the Settings.
+
- You can choose SMS, GG, SG-1000, SC-3000, or SF-7000 hardware.
+
- Merged PAL/NTSC selection with hardware model selection.
+
- Now limiting frame rate to 50fps when emulating PAL hardware.
+
+
+
+MasterGear 2.8.12 (Dec 10 2013)
+
+- Added support for Android devices based on Intel x86 CPUs.
+
- Now properly building shared library for each architecture.
+
- Added new-styled action bar, consistent with toolbar.
+
- Added proper icon for the parent directory ("..") entry.
+
- Added DropBox application icons.
+
+
+
+MasterGear 2.8.11 (Nov 29 2013)
+
+- Added "Hardware Options" screen to the Settings.
+
- Added "Show All Sprites" option to the Settings.
+
- Added "Delay VRAM Reads" option to the Settings.
+
- Added "Show PAL Video" option to the Settings.
+
- Added "YM2413 (OPLL) Sound Chip" option to the Settings.
+
- Added "93c44 Serial EEPROM Chip" option to the Settings.
+
- Added "CDMasters Memory Mapper" option to the Settings.
+
- Added missing string translations.
+
- Added DropBox application icons.
+
+
+
+MasterGear 2.8.10 (Nov 14 2013)
+
+- Added DropBox support to the File Selector.
+
- Added "Upload to DropBox" menu option to save game to DropBox.
+
- Added "Download from DropBox" menu option to load game from DropBox.
+
- Added "Browse DropBox" menu option to browse DropBox contents.
+
- Now also deleting main screenshot when "Delete All" selected.
+
- Now allowing to become NetPlay server even if can't register with global directory.
+
+
+
+MasterGear 2.8.9 (Oct 31 2013)
+
+- MasterGear now runs on GoogleTVs updated to Android 4.x (LG G2/G3).
+
- Now defaulting to OpenSLES native audio, for minimal latency.
+
- Now recycling bitmaps to prevent Bitmap.nativeCreate() crashes.
+
- Added optional grid view to the File Selector, default for GoogleTVs.
+
- Added extra folder and cartridge icons to the File Selector.
+
- Added "Audio Rate" setting, for controlling sampling rate.
+
- Added "Native Audio" setting, for disabling OpenSLES, if needed.
+
- No longer requiring touchscreen support from the Android device.
+
- Fixed icons not being shown for File Selector entries with real names.
+
- Fixed audio initialization always setting 100ms latency.
+
- Fixed audio pause/resume when activity pauses or resumes.
+
- Fixed inconsistencies during replay.
+
- Refactored audio control between Java and native code.
+
- Removed logging code from record/replay.
+
+
+
+MasterGear 2.8.8 (Oct 17 2013)
+
+- Gameplay recording now always enabled. Select "Replay" at any time!
+
- Added new "contour" joystick shape (see "Virtual Joystick Shape" setting).
+
- Fixed stutter during NetPlay connection process (NetPlay still slow though).
+
- Made replay play all records to the current recording position.
+
- Made recording pause when replay is on.
+
- Fixed many corner cases in record/replay.
+
+
+
+MasterGear 2.8.7 (Oct 03 2013)
+
+- Fixed game state not being restored.
+
- Added accurate R register emulation.
+
- Added accurate LDIR/LDDR emulation.
+
- Added configurable auto-fire function (see "Auto Fire Settings" option).
+
- Added new "light" theme throughout the app (see "Light UI Theme" option).
+
- Added shadows to screenshots throughout the app.
+
- Added default mappings for generic joystick buttons #1..#10.
+
- Fixed screenshot sizes in the File Selector.
+
+
+
+MasterGear 2.8.5 (Sep 17 2013)
+
+- Added support for directional pad on iPega gamepads.
+
- Switched to hardware accelerated video by default, for fast video.
+
- Switched to automatic frameskipping by default, for smooth video.
+
- Existing users should manually enable the "Hardware Video
+ Acceleration" option and set "Draw Frames" to "Automatic".
+
- Fixed initial parameter passing to the native code.
+
- Fixed automatic frame skip computation based on frame rate.
+
- Added explicit "Quit" menu option, for people who cannot find BACK key.
+
- No longer hiding action bar when MENU pressed, to retain access to items.
+
- Ordered initial dialogs by importance (About, Change Log, Progress).
+
- Added Twitter link to the change log, use it to keep track of updates.
+
- Fixed a nasty crash in the Record/Replay icon display.
+
+
+
+MasterGear 2.8.4 (Sep 02 2013)
+
+- Now exiting emulation when user presses BACK twice (not once as before).
+
- Uncheck "Press BACK Twice to Quit" setting to restore original behavior.
+
- Added "Completely Delete File" to the File Selector context menu.
+
- Added "Report Non-Working File" to the File Selector context menu.
+
- Fixed a license verification crash when no network available.
+
- Fixed several bugs in the Record/Replay functionality.
+
+
+
+MasterGear 2.8.3 (Aug 13 2013)
+
+- Added configurable fast-forward speed (x2, x4, x8, or maximal).
+
- Added working automatic frame-skip option (set "Draw Frames" to "auto").
+
- Moga analog directional pad works now.
+
- Now checking "/storage", then "/mnt" when searching for files.
+
- Now also searching for .ZIP files.
+
- Added even/odd entry shading to File Selector, for better navigation.
+
- Added background to State Exchange and NetPlay selectors.
+
- Added entry shading to State Exchange and NetPlay selectors.
+
+
+
+MasterGear 2.8.2 (Jul 30 2013)
+
+- Finally fixed accelerated video when Android 2.x device rotated!
+
- Added support for analog controls found on generic Bluetooth gamepads.
+
- Now also showing status bar when action bar enabled.
+
- Flick finger down to enable status bar.
+
- Fixed "Other Apps" link in the "What's New" dialog.
+
+
+
+MasterGear 2.8.1 (Jul 16 2013)
+
+- Fixed FFWD button.
+
- Added Record/Replay feature letting you go back in time.
+
- Merged Freeze and Restore into single Freeze/Restore dialog.
+
- Added State Exchange access to the Freeze/Restore dialog.
+
- Collapsed all advanced menu items into single Advanced submenu.
+
- Made NetPlay a single checkable menu item.
+
- Now only showing File Selector progress dialog for large folders.
+
- Optimized File Selector labels and screenshots for smoother scrolling.
+
- Optimized communications from native code to Java code.
+
- Fixed NetPlay crash when own IP address cannot be detected.
+
- Fixed problem with NAT IP being reported to NetPlay instead of local IP.
+
+
+
+MasterGear 2.7.20 (Jun 10 2013)
+
+- Added "Search Files" function to search for files when lost in File Selector.
+
- Pressing SEARCH key in File Selector now invokes file search.
+
- Added a new, better looking toolbar that now includes AlmostTI.
+
- Fixed possible crash in Settings.
+
+
+
+MasterGear 2.7.19 (May 22 2013)
+
+- Fixed File Selector toolbar at the bottom of the screen.
+
- Fixed situation where some people got empty file lists in File Selector.
+
- Fixed a rare crash when reporting failed license check.
+
+
+
+MasterGear 2.7.18 (May 07 2013)
+
+- Added option to hide virtual gamepad when using the real one (enabled by default).
+
- Optimized "Soften Video" algorithm in assembler and gained +15fps.
+
- Added Android menu and action items to the Gallery.
+
- Added sort-by-date mode to the File Selector.
+
+
+
+MasterGear 2.7.17 (Apr 15 2013)
+
+- Added undocumented opcode 71h to the Z80 emulation.
+
- Added more realistic "LD R,A" opcode to the Z80 emulation.
+
- Fixed rare crash when exiting from emulator to the File Selector.
+
- Fixed default iCade button assignments.
+
- iCade buttons can now be assigned via "Assign Keys" in Settings.
+
- Added iCade support to File Selector, Gallery, and Settings.
+
+
+
+MasterGear 2.7.16 (Apr 05 2013)
+
+- Now showing real game names in File Selector, whenever possible.
+
- Fixed file ID computation to include all eight CRC32 digits.
+
- MOGA buttons can now be assigned via "Assign Keys" in Settings.
+
- Added MOGA gamepad support to the File Selector and Gallery.
+
- Added standard gamepad support to File Selector, Gallery, and Settings.
+
- Added optional iCade joystick support (see Settings).
+
- Added "Show Real Names" menu option to the File Selector.
+
- Optimized File Selector by not rescanning folder after running emulation.
+
- Fixed Android 2.2 crash accidentally introduced in MasterGear 2.7.15.
+
+
+
+MasterGear 2.7.14 (Mar 11 2013)
+
+- EMERGENCY RELEASE: Fixing crashes introduced in 2.7.13!
+
- Added progress dialog to the File Selector.
+
- Added full-screen virtual joystick mode (see Settings).
+
- Now locking screen orientation when tilt joystick being used.
+
+
+
+MasterGear 2.7.13 (Feb 28 2013)
+
+- Added native MOGA controller support.
+
- Fixed occassional crash when rotating device.
+
- Fixed crash when scrolling Settings with Japanese locale.
+
- Now showing current values of all list preferences.
+
- File Selector no longer resets when device is rotated.
+
- You can now share the latest list of changes from the Change Log.
+
- Gallery has got a new background.
+
+
+
+MasterGear 2.7.12 (Feb 12 2013)
+
+- Optimized File Selector to show large directories faster and without crashing.
+
- Now showing more file information when there is no screenshot.
+
- Fixed alphabetical index in the File Selector.
+
- Fixed licensing check problem where app tried checking license on every run.
+
+
+
+MasterGear 2.7.11 (Jan 31 2013)
+
+- Added CoverFlow-like 3D screenshot browser to the File Selector.
+
- Fixed hangups on Android 2.x device rotation with OpenGLES enabled.
+
- Added Change Log dialog showing up after each upgrade.
+
- Added "Rate Me" option to the change log dialog.
+
+
+
+MasterGear 2.7.10 (Jan 09 2013)
+
+- Added "Share" menu item for letting others know what you are playing.
+
- Added "Help" menu item to the file selector.
+
- Fixed button labels and keyboard display on Android 2.x devices.
+
- Fixed screenshots quality.
+
- Removed extra text line from NetPlay and StateExchange lists.
+
- Made all "Help" menus point to the FAQ web site section.
+
- Switched all URLs from market.android.com to play.google.com.
+
+
+
+MasterGear 2.7.9 (Dec 27 2012)
+
+- Added configurable joystick shapes, with two alternative shapes.
+
- Moved invisible and wireframe joystick settings to "Virtual Joystick Shape".
+
- Added more options under "Virtual Joystick Opacity".
+
- File selector now shows hardware information, if found in a file.
+
- Localized all NetPlay messages.
+
+
+
+MasterGear 2.7.8 (Dec 06 2012)
+
+- Added NetPlay feature for playing over local network or Internet.
+
+
+
+MasterGear 2.7.6 (Nov 28 2012)
+
+- Added State Exchange feature letting users swap their gameplay states.
+
- Localized all prompts in the State Exchange feature.
+
- Now stopping native thread on startup, in case previous instance has been running.
+
- Fixed screen updates in Advanced Settings and Debugger.
+
+
+
+MasterGear 2.7.5 (Nov 15 2012)
+
+- Made virtual controls resizable via "Virtual Joystick Size" option.
+
- Added automatic skip rate control via "Frames to Draw" option.
+
- Removed garbage at screen edges in accelerated OpenGLES mode.
+
- Added file selector labels for new files and MIDI records
+
- Made display updates even faster by skipping unchanged areas.
+
- Made directional joypad easier to control.
+
- Fixed tactile feedback feature.
+
+
+
+MasterGear 2.7.4 (Oct 29 2012)
+
+- Fixed a Layout Editor problem where a button could go off-screen.
+
- Made buttons stick to the nearest screen edges.
+
- Made button cues solid.
+
- Fixed legacy wire-frame joystick display.
+
- Fixed a few bugs in the license verification code.
+
- Fixed handling of the FILL patch chunks inside .IPS files.
+
- Switched to surfaces for faster and smoother non-accelerated video.
+
- Further optimized synchronization between Java and native code.
+
- Made file selector load directory listings faster.
+
+
+
+MasterGear 2.7.2 (Oct 16 2012)
+
+- Improved non-accelerated video, making it faster and smoother.
+
- Added .IPS patch support. For "mygame.sms", name your patch file "mygame.ips".
+
- Added labels for CHT/SAV/IPS files to the file selector.
+
- Now showing button labels with OpenGLES acceleration enabled.
+
- No longer deleting buttons layout on each upgrade.
+
- Added fast navigation with sections to the file selector.
+
- Improved the file selector UI look and feel.
+
- Enlarged screenshots in the file selector and Freeze/Restore.
+
+
+
+MasterGear 2.7.1 (Sep 26 2012)
+
+- Fixed duplicated images/labels in Freeze/Restore.
+
- The action bar can now be toggled with a vertical fling gesture.
+
- Added autosaved state and two more slots to the Freeze/Restore.
+
- Added screenshots to Freeze/Restore slots.
+
- Added Italian translation.
+
+
+
+MasterGear 2.7 (Aug 31 2012)
+
+- Audio quality significantly improved.
+
- Switched to the new, fully configurable virtual joystick.
+
- Optimized screen updates sync, for better framerates.
+
- Fixed cut-off landscape display on Nexus7.
+
- Added two more Freeze/Restore slots.
+
- File selector now memorizes the last selected position.
+
- Added option for keeping screen on at all times.
+
- Fixed support for Sixaxis gamepads.
+
- Fixed a bug in the Z80 CPDR instruction.
+
- Added support for opening files directly from file managers.
+
+
+
+
+
\ 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"