diff options
28 files changed, 1628 insertions, 69 deletions
@@ -48,6 +48,12 @@ namespace com.clusterrr.hakchi_gui {
if (rawRomData == null)
rawRomData = File.ReadAllBytes(fdsFileName);
+ if (Encoding.ASCII.GetString(rawRomData, 0, 3) == "FDS") // header? cut it!
+ {
+ var fdsDataNoHeader = new byte[rawRomData.Length - 0x10];
+ Array.Copy(rawRomData, 0x10, fdsDataNoHeader, 0, fdsDataNoHeader.Length);
+ rawRomData = fdsDataNoHeader;
+ }
var crc32 = CRC32(rawRomData);
var code = GenerateCode(crc32, prefixCode);
var gamePath = Path.Combine(GamesDirectory, code);
diff --git a/ImageGooglerForm.cs b/ImageGooglerForm.cs index db1cf819..0e66503d 100644 --- a/ImageGooglerForm.cs +++ b/ImageGooglerForm.cs @@ -25,22 +25,23 @@ namespace com.clusterrr.hakchi_gui get { return result; }
}
- public ImageGooglerForm(string query, NesMiniApplication app)
+ public ImageGooglerForm(NesMiniApplication app)
{
InitializeComponent();
+ Text = "Google Images - " + app.Name ?? "";
+ searchThread = new Thread(SearchThread);
+ searchThread.Start(app);
+ }
+
+ public static string[] GetImageUrls(NesMiniApplication app)
+ {
+ string query = app.Name ?? "";
if (app is NesGame)
query += " nes|famicom box art";
else if (app is FdsGame)
query += " fds box art";
else
- query += " box art";
- Text = "Google Images - " + query;
- searchThread = new Thread(SearchThread);
- searchThread.Start(query);
- }
-
- public static string[] GetImageUrls(string query)
- {
+ query += " game (box|vover) art";
var url = string.Format("https://www.google.com/search?q={0}&source=lnms&tbm=isch", HttpUtility.UrlEncode(query));
Debug.WriteLine("Web request: " + url);
var request = WebRequest.Create(url);
@@ -80,7 +81,7 @@ namespace com.clusterrr.hakchi_gui {
try
{
- var urls = GetImageUrls(o as string);
+ var urls = GetImageUrls(o as NesMiniApplication);
foreach (var url in urls)
{
//new Thread(DownloadImageThread).Start(url);
diff --git a/MainForm.cs b/MainForm.cs index c025f41f..e327bf47 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -333,7 +333,7 @@ namespace com.clusterrr.hakchi_gui var selected = checkedListBoxGames.SelectedItem;
if (selected == null || !(selected is NesMiniApplication)) return;
var game = (selected as NesMiniApplication);
- var googler = new ImageGooglerForm(game.Name, game);
+ var googler = new ImageGooglerForm(game);
if (googler.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
game.Image = googler.Result;
@@ -586,25 +586,19 @@ namespace com.clusterrr.hakchi_gui else
needOriginal = true;
}
- if (needOriginal)
- for (int i = 0; i < checkedListBoxDefaultGames.Items.Count; i++)
- {
- if (checkedListBoxDefaultGames.CheckedIndices.Contains(i))
- workerForm.Games.Add((NesDefaultGame)checkedListBoxDefaultGames.Items[i]);
- else
- hiddenGames.Add(((NesDefaultGame)checkedListBoxDefaultGames.Items[i]).Code);
- }
+ for (int i = 0; i < checkedListBoxDefaultGames.Items.Count; i++)
+ {
+ if (needOriginal && checkedListBoxDefaultGames.CheckedIndices.Contains(i))
+ workerForm.Games.Add((NesDefaultGame)checkedListBoxDefaultGames.Items[i]);
+ else
+ hiddenGames.Add(((NesDefaultGame)checkedListBoxDefaultGames.Items[i]).Code);
+ }
workerForm.Config["disable_armet"] = (ConfigIni.AntiArmetLevel > 0) ? "y" : "n";
workerForm.Config["nes_extra_args"] = ConfigIni.ExtraCommandLineArguments;
- if (needOriginal)
- workerForm.HiddenGames = hiddenGames.ToArray();
- else
- workerForm.HiddenGames = null;
+ workerForm.HiddenGames = hiddenGames.ToArray();
workerForm.FoldersMode = ConfigIni.FoldersMode;
workerForm.MaxGamesPerFolder = ConfigIni.MaxGamesPerFolder;
-
workerForm.MainForm = this;
-
workerForm.Start();
return workerForm.DialogResult == DialogResult.OK;
}
@@ -944,15 +938,7 @@ namespace com.clusterrr.hakchi_gui private void checkedListBoxGames_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
- {
- var files = (string[])e.Data.GetData(DataFormats.FileDrop);
- foreach (var file in files)
- {
- var ext = Path.GetExtension(file).ToLower();
- if (ext == ".nes" || ext == ".fds")
- e.Effect = DragDropEffects.Copy;
- }
- }
+ e.Effect = DragDropEffects.Copy;
}
private void checkedListBoxGames_DragDrop(object sender, DragEventArgs e)
diff --git a/NesMiniApplication.cs b/NesMiniApplication.cs index 31f964f9..ae8e9345 100644 --- a/NesMiniApplication.cs +++ b/NesMiniApplication.cs @@ -133,11 +133,12 @@ namespace com.clusterrr.hakchi_gui application = "/bin/gb";
break;
case ".gba":
- prefixCode = 'G';
+ prefixCode = 'A';
application = "/bin/gba";
- break;
- case ".z64":
+ break;
case ".n64":
+ case ".z64":
+ case ".v64":
prefixCode = 'F';
application = "/bin/n64";
break;
@@ -155,7 +156,7 @@ namespace com.clusterrr.hakchi_gui application = "/bin/sms";
break;
default:
- prefixCode = '0';
+ prefixCode = 'Z';
application = "/bin/path-to-your-app";
break;
}
@@ -309,23 +310,26 @@ namespace com.clusterrr.hakchi_gui // Just keep aspect ratio
const int maxX = 204;
const int maxY = 204;
- if (image.Width / image.Height > maxX / maxY)
- outImage = new Bitmap(maxX, maxY * image.Height / image.Width);
+ if ((double)image.Width / (double)image.Height > (double)maxX / (double)maxY)
+ outImage = new Bitmap(maxX, (int)((double)maxY * (double)image.Height / (double)image.Width));
else
- outImage = new Bitmap(maxX * image.Width / image.Height, maxY);
- const int maxXsmall = 40;
- const int maxYsmall = 40;
- if (image.Width / image.Height > maxXsmall / maxYsmall)
- outImageSmall = new Bitmap(maxXsmall, maxYsmall * image.Height / image.Width);
+ outImage = new Bitmap((int)(maxX * (double)image.Width / (double)image.Height), maxY);
+
+ int maxXsmall = 40;
+ int maxYsmall = 40;
+ if ((double)image.Width / (double)image.Height > (double)maxXsmall / (double)maxYsmall)
+ outImageSmall = new Bitmap(maxXsmall, (int)((double)maxYsmall * (double)image.Height / (double)image.Width));
else
- outImageSmall = new Bitmap(maxXsmall * image.Width / image.Height, maxYsmall);
+ outImageSmall = new Bitmap((int)(maxXsmall * (double)image.Width / (double)image.Height), maxYsmall);
gr = Graphics.FromImage(outImage);
+ gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gr.DrawImage(image, new Rectangle(0, 0, outImage.Width, outImage.Height),
new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
gr.Flush();
outImage.Save(IconPath, ImageFormat.Png);
gr = Graphics.FromImage(outImageSmall);
+ gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gr.DrawImage(outImage, new Rectangle(0, 0, outImageSmall.Width, outImageSmall.Height),
new Rectangle(0, 0, outImage.Width, outImage.Height), GraphicsUnit.Pixel);
gr.Flush();
diff --git a/SelectModsForm.Designer.cs b/SelectModsForm.Designer.cs index a6fb2c1e..ae8f8c2b 100644 --- a/SelectModsForm.Designer.cs +++ b/SelectModsForm.Designer.cs @@ -33,6 +33,7 @@ this.textBoxReadme.Location = new System.Drawing.Point(276, 12);
this.textBoxReadme.Multiline = true;
this.textBoxReadme.Name = "textBoxReadme";
+ this.textBoxReadme.ReadOnly = true;
this.textBoxReadme.Size = new System.Drawing.Size(271, 334);
this.textBoxReadme.TabIndex = 1;
//
diff --git a/SelectModsForm.cs b/SelectModsForm.cs index af721084..a0beaf7f 100644 --- a/SelectModsForm.cs +++ b/SelectModsForm.cs @@ -9,6 +9,7 @@ using System.Drawing; using System.IO;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Windows.Forms;
namespace com.clusterrr.hakchi_gui
@@ -50,15 +51,20 @@ namespace com.clusterrr.hakchi_gui private void checkedListBoxMods_SelectedIndexChanged(object sender, EventArgs e)
{
+ if (checkedListBoxMods.SelectedItem != null)
+ new Thread(loadReadMe).Start(checkedListBoxMods.SelectedItem.ToString());
+ else
+ {
+ textBoxReadme.Text = "";
+ textBoxReadme.Enabled = false;
+ }
+ }
+
+ void loadReadMe(object obj)
+ {
try
{
- if (checkedListBoxMods.SelectedItem == null)
- {
- textBoxReadme.Text = "";
- textBoxReadme.Enabled = false;
- return;
- }
- var selected = checkedListBoxMods.SelectedItem.ToString();
+ var selected = obj as string;
var text = "";
var dir = Path.Combine(usermodsDirectory, selected + ".hmod");
if (Directory.Exists(dir))
@@ -99,14 +105,20 @@ namespace com.clusterrr.hakchi_gui }
}
}
-
- textBoxReadme.Text = text;
- textBoxReadme.Enabled = text.Length > 0;
+ Invoke(new Action<string, string>(showReadMe), new object[] { selected, text });
+ }
+ catch
+ {
}
- catch (Exception ex)
+ }
+
+ void showReadMe(string mod, string readme)
+ {
+ if (checkedListBoxMods.SelectedItem != null &&
+ checkedListBoxMods.SelectedItem.ToString() == mod)
{
- Debug.WriteLine(ex.Message + ex.StackTrace);
- MessageBox.Show(this, ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ textBoxReadme.Text = readme;
+ textBoxReadme.Enabled = readme.Length > 0;
}
}
}
diff --git a/WorkerForm.cs b/WorkerForm.cs index e4b0c8fd..e52d38f3 100644 --- a/WorkerForm.cs +++ b/WorkerForm.cs @@ -682,7 +682,7 @@ namespace com.clusterrr.hakchi_gui {
try
{
- urls = ImageGooglerForm.GetImageUrls(game.Name);
+ urls = ImageGooglerForm.GetImageUrls(game);
break;
}
catch (Exception ex)
diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj index 18db7e3e..949468bc 100644 --- a/hakchi_gui.csproj +++ b/hakchi_gui.csproj @@ -511,6 +511,44 @@ <None Include="user_mods\music_hack.hmod\uninstall">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+ <None Include="user_mods\retroarch.hmod\bin\fbgrab" />
+ <None Include="user_mods\retroarch.hmod\bin\gb" />
+ <None Include="user_mods\retroarch.hmod\bin\gba" />
+ <None Include="user_mods\retroarch.hmod\bin\md" />
+ <None Include="user_mods\retroarch.hmod\bin\n64" />
+ <None Include="user_mods\retroarch.hmod\bin\nes" />
+ <None Include="user_mods\retroarch.hmod\bin\retroarch" />
+ <None Include="user_mods\retroarch.hmod\bin\retroarch-clover" />
+ <None Include="user_mods\retroarch.hmod\bin\retroarch-mini" />
+ <None Include="user_mods\retroarch.hmod\bin\retroarch-watchdog" />
+ <None Include="user_mods\retroarch.hmod\bin\sms" />
+ <None Include="user_mods\retroarch.hmod\bin\snes" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\bsnes_cplusplus98_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\bsnes_mercury_accuracy_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\bsnes_mercury_performance_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\emux_sms_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\fceumm_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\gambatte_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\genesis_plus_gx_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\mednafen_gba_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\nestopia_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\core\snes9x2010_libretro.so" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\joypad_autoconf\clovercon1.cfg" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\joypad_autoconf\clovercon2.cfg" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\retroarch.cfg" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\5xbr-retro.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\bead.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\blinky.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\pixellate.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\quilez.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\retro-v2.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\scanline.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\scanline.glslp" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\sharp-bilinear.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\libretro\shaders\stock.glsl" />
+ <None Include="user_mods\retroarch.hmod\etc\preinit.d\pe9af_retroarch" />
+ <None Include="user_mods\retroarch.hmod\install" />
+ <None Include="user_mods\retroarch.hmod\usr\bin\clover-kachikachi" />
</ItemGroup>
<ItemGroup>
<Content Include="data\GameGenieDB.xml">
@@ -612,6 +650,8 @@ <Content Include="user_mods\music_hack.hmod\readme.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
+ <Content Include="user_mods\retroarch.hmod\etc\libretro\bios\NstDatabase.xml" />
+ <Content Include="user_mods\retroarch.hmod\readme.txt" />
<None Include="folder_images\README.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
@@ -673,6 +713,11 @@ </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PreBuildEvent>cd $(ProjectDir)user_mods\retroarch.hmod
+$(ProjectDir)tools\tar.exe -czvf retroarch.hmod *
+move /Y $(ProjectDir)user_mods\retroarch.hmod\retroarch.hmod $(TargetDir)user_mods\</PreBuildEvent>
+ </PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
diff --git a/mods/mod_hakchi/hakchi/init b/mods/mod_hakchi/hakchi/init index 88e2bb4f..ac0ebf1f 100644 --- a/mods/mod_hakchi/hakchi/init +++ b/mods/mod_hakchi/hakchi/init @@ -24,7 +24,7 @@ else mount_base fi -if [ -d "$preinit" ]; then +if [ -f "$preinit" ]; then source "$preinit" preinit else diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit b/mods/mod_hakchi/hakchi/rootfs/etc/preinit index 45aeccfe..1753621d 100644 --- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit +++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit @@ -7,7 +7,9 @@ source_parts(){ mkdir -p "$temppath" local script=$temppath/script_$(rand) rm -f "$script" - for i in $(find $(dirname "$1") -maxdepth 1 -path "$1" | sort); do + local searchpath=$(dirname "$1") + [ -d "$searchpath" ] || return 1 + for i in $(find "$searchpath" -maxdepth 1 -path "$1" | sort); do cat "$i" >> "$script" done dos2unix -u "$script" diff --git a/mods/mod_hakchi/hakchi/script/transfer b/mods/mod_hakchi/hakchi/script/transfer index 240bf41f..485d28ea 100644 --- a/mods/mod_hakchi/hakchi/script/transfer +++ b/mods/mod_hakchi/hakchi/script/transfer @@ -30,10 +30,8 @@ if [ -d "$transferpath/firmware" ]; then fi # if we're running modified firmware, mount it now -if [ -d "$preinitpath" ]; then - source_parts "$preinitpath/p????_*firmware*" - source_parts "$modpath/rootfs/etc/preinit.d/p????_*firmware*" -fi +source_parts "$preinitpath/p????_*firmware*" +source_parts "$modpath/rootfs/etc/preinit.d/p????_*firmware*" # now we can do install/repair if [ -d "$preinitpath" ]; then diff --git a/tools/tar.exe b/tools/tar.exe Binary files differnew file mode 100644 index 00000000..b5408c71 --- /dev/null +++ b/tools/tar.exe diff --git a/user_mods/retroarch.hmod/etc/libretro/core/bsnes_cplusplus98_libretro.so b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_cplusplus98_libretro.so Binary files differnew file mode 100644 index 00000000..a46ad3a2 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_cplusplus98_libretro.so diff --git a/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_accuracy_libretro.so b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_accuracy_libretro.so Binary files differnew file mode 100644 index 00000000..90d2dc73 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_accuracy_libretro.so diff --git a/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_performance_libretro.so b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_performance_libretro.so Binary files differnew file mode 100644 index 00000000..0a5501f7 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/core/bsnes_mercury_performance_libretro.so diff --git a/user_mods/retroarch.hmod/etc/libretro/core/mednafen_gba_libretro.so b/user_mods/retroarch.hmod/etc/libretro/core/mednafen_gba_libretro.so Binary files differnew file mode 100644 index 00000000..7b3a5c95 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/core/mednafen_gba_libretro.so diff --git a/user_mods/retroarch.hmod/etc/libretro/retroarch.cfg b/user_mods/retroarch.hmod/etc/libretro/retroarch.cfg index 151eddc4..93bd7db9 100644 --- a/user_mods/retroarch.hmod/etc/libretro/retroarch.cfg +++ b/user_mods/retroarch.hmod/etc/libretro/retroarch.cfg @@ -1,4 +1,4 @@ -system_directory = "/usr/share/kachikachi" +system_directory = "/tmp" input_driver = "udev" input_joypad_driver = "udev" input_autodetect_enable = "true" @@ -17,7 +17,7 @@ content_image_history_path = "~/content_image_history.lpl" cursor_directory = "~/.config/retroarch/database/cursors" screenshot_directory = "/var/cache" input_remapping_directory = "~/.config/retroarch/config/remaps" -video_shader_dir = "~/shaders/crt" +video_shader_dir = "~/shaders" video_filter_dir = "/" core_assets_directory = "~/.config/retroarch/downloads" assets_directory = "~/.config/retroarch/assets" diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/5xbr-retro.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/5xbr-retro.glsl new file mode 100644 index 00000000..9c678deb --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/5xbr-retro.glsl @@ -0,0 +1,287 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec4 _t1; +COMPAT_VARYING vec2 _texCoord2; +COMPAT_VARYING vec4 _position1; +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +struct out_vertex { + vec4 _position1; + vec2 _texCoord2; + vec4 _t1; +}; +out_vertex _ret_0; +input_dummy _IN1; +vec4 _r0008; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec4 TEX1; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + out_vertex _OUT; + vec2 _ps; + vec2 _texCoord; + _r0008 = VertexCoord.x*MVPMatrix[0]; + _r0008 = _r0008 + VertexCoord.y*MVPMatrix[1]; + _r0008 = _r0008 + VertexCoord.z*MVPMatrix[2]; + _r0008 = _r0008 + VertexCoord.w*MVPMatrix[3]; + _ps = vec2(1.00000000E+00/TextureSize.x, 1.00000000E+00/TextureSize.y); + _texCoord = TexCoord.xy + vec2( 1.00000001E-07, 1.00000001E-07); + _OUT._t1.xy = vec2(0.00000000E+00, -_ps.y); + _OUT._t1.zw = vec2(-_ps.x, 0.00000000E+00); + _ret_0._position1 = _r0008; + _ret_0._texCoord2 = _texCoord; + _ret_0._t1 = _OUT._t1; + gl_Position = _r0008; + TEX0.xy = _texCoord; + TEX1 = _OUT._t1; + return; + TEX0.xy = _ret_0._texCoord2; + TEX1 = _ret_0._t1; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec4 _t1; +COMPAT_VARYING vec2 _texCoord; +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +struct out_vertex { + vec2 _texCoord; + vec4 _t1; +}; +vec4 _ret_0; +vec3 _TMP18; +vec3 _TMP19; +float _TMP15; +float _TMP14; +float _TMP13; +vec4 _TMP12; +vec4 _TMP11; +vec4 _TMP10; +vec4 _TMP9; +vec4 _TMP8; +vec4 _TMP7; +vec4 _TMP6; +vec4 _TMP5; +vec4 _TMP4; +vec4 _TMP3; +vec4 _TMP2; +vec4 _TMP1; +vec2 _TMP0; +uniform sampler2D Texture; +input_dummy _IN1; +vec2 _x0032; +vec2 _val0034; +vec2 _c0036; +vec2 _c0038; +vec2 _c0040; +vec2 _c0044; +vec2 _c0046; +vec2 _c0048; +vec2 _c0050; +vec2 _c0052; +vec2 _c0054; +vec2 _c0056; +vec2 _c0058; +float _TMP59; +float _TMP63; +float _TMP67; +float _TMP71; +float _TMP75; +float _TMP79; +float _TMP83; +float _TMP87; +float _TMP91; +float _TMP95; +float _TMP99; +float _TMP103; +float _TMP111; +float _a0114; +float _TMP115; +float _a0118; +float _TMP119; +float _a0122; +float _TMP123; +float _a0126; +float _TMP127; +float _a0130; +float _TMP133; +float _a0136; +float _TMP137; +float _a0140; +float _TMP141; +float _a0144; +float _TMP145; +float _a0148; +float _TMP149; +float _a0152; +float _TMP153; +float _a0156; +float _TMP157; +float _a0160; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec4 TEX1; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + bool _edr; + bool _px; + bool _interp_restriction_lv1; + bool _nc; + bool _fx; + vec2 _pos; + vec2 _dir; + vec2 _g1; + vec2 _g2; + _x0032 = TEX0.xy*TextureSize; + _TMP0 = fract(_x0032); + _pos = _TMP0 - vec2( 5.00000000E-01, 5.00000000E-01); + _val0034 = vec2(float((_pos.x > 0.00000000E+00)), float((_pos.y > 0.00000000E+00))); + _dir = _val0034 - vec2(float((_pos.x < 0.00000000E+00)), float((_pos.y < 0.00000000E+00))); + _g1 = _dir*TEX1.xy; + _g2 = _dir*TEX1.zw; + _c0036 = TEX0.xy + _g1; + _TMP1 = COMPAT_TEXTURE(Texture, _c0036); + _c0038 = (TEX0.xy + _g1) - _g2; + _TMP2 = COMPAT_TEXTURE(Texture, _c0038); + _c0040 = TEX0.xy + _g2; + _TMP3 = COMPAT_TEXTURE(Texture, _c0040); + _TMP4 = COMPAT_TEXTURE(Texture, TEX0.xy); + _c0044 = TEX0.xy - _g2; + _TMP5 = COMPAT_TEXTURE(Texture, _c0044); + _c0046 = (TEX0.xy - _g1) + _g2; + _TMP6 = COMPAT_TEXTURE(Texture, _c0046); + _c0048 = TEX0.xy - _g1; + _TMP7 = COMPAT_TEXTURE(Texture, _c0048); + _c0050 = (TEX0.xy - _g1) - _g2; + _TMP8 = COMPAT_TEXTURE(Texture, _c0050); + _c0052 = TEX0.xy - 2.00000000E+00*_g2; + _TMP9 = COMPAT_TEXTURE(Texture, _c0052); + _c0054 = (TEX0.xy - _g1) - 2.00000000E+00*_g2; + _TMP10 = COMPAT_TEXTURE(Texture, _c0054); + _c0056 = TEX0.xy - 2.00000000E+00*_g1; + _TMP11 = COMPAT_TEXTURE(Texture, _c0056); + _c0058 = (TEX0.xy - 2.00000000E+00*_g1) - _g2; + _TMP12 = COMPAT_TEXTURE(Texture, _c0058); + _TMP59 = dot(_TMP1.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP63 = dot(_TMP2.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP67 = dot(_TMP3.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP71 = dot(_TMP4.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP75 = dot(_TMP5.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP79 = dot(_TMP6.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP83 = dot(_TMP7.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP87 = dot(_TMP8.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP91 = dot(_TMP10.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP95 = dot(_TMP12.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP99 = dot(_TMP11.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP103 = dot(_TMP9.xyz, vec3( 1.43519993E+01, 2.81760006E+01, 5.47200012E+00)); + _TMP13 = dot(_dir, _pos); + _fx = _TMP13 > 7.50000000E-01; + _interp_restriction_lv1 = _TMP71 != _TMP75 && _TMP71 != _TMP83; + _a0114 = _TMP71 - _TMP63; + _TMP111 = abs(_a0114); + _a0118 = _TMP71 - _TMP79; + _TMP115 = abs(_a0118); + _a0122 = _TMP87 - _TMP99; + _TMP119 = abs(_a0122); + _a0126 = _TMP87 - _TMP103; + _TMP123 = abs(_a0126); + _a0130 = _TMP83 - _TMP75; + _TMP127 = abs(_a0130); + _TMP14 = _TMP111 + _TMP115 + _TMP119 + _TMP123 + 4.00000000E+00*_TMP127; + _a0136 = _TMP83 - _TMP67; + _TMP133 = abs(_a0136); + _a0140 = _TMP83 - _TMP95; + _TMP137 = abs(_a0140); + _a0144 = _TMP75 - _TMP91; + _TMP141 = abs(_a0144); + _a0148 = _TMP75 - _TMP59; + _TMP145 = abs(_a0148); + _a0152 = _TMP71 - _TMP87; + _TMP149 = abs(_a0152); + _TMP15 = _TMP133 + _TMP137 + _TMP141 + _TMP145 + 4.00000000E+00*_TMP149; + _edr = _TMP14 < _TMP15 && _interp_restriction_lv1; + _nc = _edr && _fx; + _a0156 = _TMP71 - _TMP75; + _TMP153 = abs(_a0156); + _a0160 = _TMP71 - _TMP83; + _TMP157 = abs(_a0160); + _px = _TMP153 <= _TMP157; + if (_nc) { + if (_px) { + _TMP19 = _TMP5.xyz; + } else { + _TMP19 = _TMP7.xyz; + } + _TMP18 = _TMP19; + } else { + _TMP18 = _TMP4.xyz; + } + _ret_0 = vec4(_TMP18.x, _TMP18.y, _TMP18.z, 1.00000000E+00); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/bead.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/bead.glsl new file mode 100644 index 00000000..ce070e33 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/bead.glsl @@ -0,0 +1,158 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec2 _pixel_no; +COMPAT_VARYING vec2 _c11; +struct tex_coord { + vec2 _c11; + vec2 _pixel_no; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _oPosition1; +input_dummy _IN1; +vec4 _r0006; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_VARYING vec4 COL0; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX1; +COMPAT_VARYING vec4 TEX2; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _oColor; + tex_coord _coords; + _r0006 = VertexCoord.x*MVPMatrix[0]; + _r0006 = _r0006 + VertexCoord.y*MVPMatrix[1]; + _r0006 = _r0006 + VertexCoord.z*MVPMatrix[2]; + _r0006 = _r0006 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0006; + _oColor = COLOR; + _coords._c11 = TexCoord.xy; + _coords._pixel_no = TexCoord.xy*TextureSize; + gl_Position = _r0006; + COL0 = COLOR; + TEX1.xy = TexCoord.xy; + TEX2.xy = _coords._pixel_no; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec2 _pixel_no1; +COMPAT_VARYING vec2 _c11; +struct tex_coord { + vec2 _c11; + vec2 _pixel_no1; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _ret_0; +vec4 _TMP0; +vec2 _TMP1; +float _TMP4; +float _TMP5; +uniform sampler2D Texture; +vec3 _TMP10; +float _TMP14; +vec2 _delta0015; +float _len0023; +float _TMP24; +float _x0025; +float _len0029; +float _TMP30; +float _x0031; +COMPAT_VARYING vec4 TEX1; +COMPAT_VARYING vec4 TEX2; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + _TMP0 = COMPAT_TEXTURE(Texture, TEX1.xy); + _TMP1 = fract(TEX2.xy); + _delta0015 = _TMP1 - vec2( 5.00000000E-01, 5.00000000E-01); + _TMP4 = dot(_delta0015, _delta0015); + _TMP5 = inversesqrt(_TMP4); + _TMP14 = 1.00000000E+00/_TMP5; + if (_TMP14 > 2.00000003E-01 && _TMP14 < 3.49999994E-01) { + _TMP10 = _TMP0.xyz; + } else { + if (_TMP14 >= 3.49999994E-01) { + _len0023 = _TMP14 - 3.49999994E-01; + _x0025 = -6.00000000E+00*_len0023; + _TMP24 = pow(2.71828198E+00, _x0025); + _TMP10 = _TMP0.xyz*_TMP24; + } else { + if (_TMP14 <= 2.00000003E-01) { + _len0029 = 2.00000003E-01 - _TMP14; + _x0031 = -6.00000000E+00*_len0029; + _TMP30 = pow(2.71828198E+00, _x0031); + _TMP10 = _TMP0.xyz*_TMP30; + } else { + _TMP10 = vec3( 0.00000000E+00, 0.00000000E+00, 0.00000000E+00); + } + } + } + _ret_0 = vec4(_TMP10.x, _TMP10.y, _TMP10.z, 1.00000000E+00); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/blinky.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/blinky.glsl new file mode 100644 index 00000000..d82e4966 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/blinky.glsl @@ -0,0 +1,242 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec2 _tex_300; +COMPAT_VARYING vec2 _tex_240; +COMPAT_VARYING vec2 _tex_180; +COMPAT_VARYING vec2 _tex_120; +COMPAT_VARYING vec2 _tex_60; +COMPAT_VARYING vec2 _tex_0; +COMPAT_VARYING vec2 _tex_direct; +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +struct vert_out { + vec2 _tex_direct; + vec2 _tex_0; + vec2 _tex_60; + vec2 _tex_120; + vec2 _tex_180; + vec2 _tex_240; + vec2 _tex_300; +}; +vec4 _oPosition1; +float _TMP6; +float _TMP5; +float _TMP4; +float _TMP3; +float _TMP2; +input_dummy _TMP14; +input_dummy _IN1; +vec4 _r0019; +float _a0021; +vec2 _r0031; +vec2 _r0037; +vec2 _r0043; +vec2 _r0049; +vec2 _r0055; +vec2 _r0061; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX1; +COMPAT_VARYING vec4 TEX2; +COMPAT_VARYING vec4 TEX3; +COMPAT_VARYING vec4 TEX4; +COMPAT_VARYING vec4 TEX5; +COMPAT_VARYING vec4 TEX6; +COMPAT_VARYING vec4 TEX7; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vert_out _verts; + vec2 _one; + float _scale; + vec2 _TMP15[2]; + _r0019 = VertexCoord.x*MVPMatrix[0]; + _r0019 = _r0019 + VertexCoord.y*MVPMatrix[1]; + _r0019 = _r0019 + VertexCoord.z*MVPMatrix[2]; + _r0019 = _r0019 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0019; + _one = 1.00000000E+00/TextureSize; + _TMP14._frame_count = float(FrameCount)/2.00000000E+01; + _a0021 = 5.00000000E-01*_TMP14._frame_count; + _TMP2 = sin(_a0021); + _scale = 1.00000000E+00 + 2.00000003E-01*_TMP2; + _TMP3 = cos(_TMP14._frame_count); + _TMP4 = sin(_TMP14._frame_count); + _TMP5 = sin(_TMP14._frame_count); + _TMP6 = cos(_TMP14._frame_count); + _TMP15[0] = _scale*vec2(_TMP3, _TMP4); + _TMP15[1] = _scale*vec2(-_TMP5, _TMP6); + _verts._tex_direct = TexCoord.xy; + _r0031.x = dot(_TMP15[0], vec2( 1.00000000E+00, 0.00000000E+00)); + _r0031.y = dot(_TMP15[1], vec2( 1.00000000E+00, 0.00000000E+00)); + _verts._tex_0 = TexCoord.xy + _one*_r0031; + _r0037.x = dot(_TMP15[0], vec2( 5.00000000E-01, 6.99999988E-01)); + _r0037.y = dot(_TMP15[1], vec2( 5.00000000E-01, 6.99999988E-01)); + _verts._tex_60 = TexCoord.xy + _one*_r0037; + _r0043.x = dot(_TMP15[0], vec2( -5.00000000E-01, 6.99999988E-01)); + _r0043.y = dot(_TMP15[1], vec2( -5.00000000E-01, 6.99999988E-01)); + _verts._tex_120 = TexCoord.xy + _one*_r0043; + _r0049.x = dot(_TMP15[0], vec2( -1.00000000E+00, 0.00000000E+00)); + _r0049.y = dot(_TMP15[1], vec2( -1.00000000E+00, 0.00000000E+00)); + _verts._tex_180 = TexCoord.xy + _one*_r0049; + _r0055.x = dot(_TMP15[0], vec2( -5.00000000E-01, -6.99999988E-01)); + _r0055.y = dot(_TMP15[1], vec2( -5.00000000E-01, -6.99999988E-01)); + _verts._tex_240 = TexCoord.xy + _one*_r0055; + _r0061.x = dot(_TMP15[0], vec2( 5.00000000E-01, -6.99999988E-01)); + _r0061.y = dot(_TMP15[1], vec2( 5.00000000E-01, -6.99999988E-01)); + _verts._tex_300 = TexCoord.xy + _one*_r0061; + gl_Position = _r0019; + TEX1.xy = TexCoord.xy; + TEX2.xy = _verts._tex_0; + TEX3.xy = _verts._tex_60; + TEX4.xy = _verts._tex_120; + TEX5.xy = _verts._tex_180; + TEX6.xy = _verts._tex_240; + TEX7.xy = _verts._tex_300; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec2 _tex_300; +COMPAT_VARYING vec2 _tex_240; +COMPAT_VARYING vec2 _tex_180; +COMPAT_VARYING vec2 _tex_120; +COMPAT_VARYING vec2 _tex_60; +COMPAT_VARYING vec2 _tex_0; +COMPAT_VARYING vec2 _tex_direct; +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +struct vert_out { + vec2 _tex_direct; + vec2 _tex_0; + vec2 _tex_60; + vec2 _tex_120; + vec2 _tex_180; + vec2 _tex_240; + vec2 _tex_300; +}; +vec4 _ret_0; +float _TMP12; +float _TMP11; +float _TMP10; +float _TMP9; +vec4 _TMP7; +vec4 _TMP6; +vec4 _TMP5; +vec4 _TMP4; +vec4 _TMP3; +vec4 _TMP2; +vec4 _TMP1; +vec4 _TMP0; +uniform sampler2D Texture; +vec4 _TMP48; +vec4 _x0049; +COMPAT_VARYING vec4 TEX1; +COMPAT_VARYING vec4 TEX2; +COMPAT_VARYING vec4 TEX3; +COMPAT_VARYING vec4 TEX4; +COMPAT_VARYING vec4 TEX5; +COMPAT_VARYING vec4 TEX6; +COMPAT_VARYING vec4 TEX7; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _tex_mid; + vec4 _tex0; + vec4 _tex60; + vec4 _tex120; + vec4 _tex180; + vec4 _tex240; + vec4 _tex300; + vec4 _minimum; + vec4 _maximum; + vec4 _diff; + _tex_mid = COMPAT_TEXTURE(Texture, TEX1.xy); + _tex0 = COMPAT_TEXTURE(Texture, TEX2.xy); + _tex60 = COMPAT_TEXTURE(Texture, TEX3.xy); + _tex120 = COMPAT_TEXTURE(Texture, TEX4.xy); + _tex180 = COMPAT_TEXTURE(Texture, TEX5.xy); + _tex240 = COMPAT_TEXTURE(Texture, TEX6.xy); + _tex300 = COMPAT_TEXTURE(Texture, TEX7.xy); + _TMP0 = min(_tex0, _tex60); + _TMP1 = min(_tex120, _tex180); + _TMP2 = min(_TMP0, _TMP1); + _TMP3 = min(_tex240, _tex300); + _minimum = min(_TMP2, _TMP3); + _TMP4 = max(_tex0, _tex60); + _TMP5 = max(_tex120, _tex180); + _TMP6 = max(_TMP4, _TMP5); + _TMP7 = max(_tex240, _tex300); + _maximum = max(_TMP6, _TMP7); + _x0049 = -(_maximum - _minimum); + _TMP9 = pow(2.71828198E+00, _x0049.x); + _TMP10 = pow(2.71828198E+00, _x0049.y); + _TMP11 = pow(2.71828198E+00, _x0049.z); + _TMP12 = pow(2.71828198E+00, _x0049.w); + _TMP48 = vec4(_TMP9, _TMP10, _TMP11, _TMP12); + _diff = 1.00000000E+00 - _TMP48; + _ret_0 = _tex_mid + 8.99999976E-01*(_diff - _tex_mid); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/pixellate.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/pixellate.glsl new file mode 100644 index 00000000..48e3d0d7 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/pixellate.glsl @@ -0,0 +1,175 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _oPosition1; +vec4 _r0005; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec2 _oTex; + _r0005 = VertexCoord.x*MVPMatrix[0]; + _r0005 = _r0005 + VertexCoord.y*MVPMatrix[1]; + _r0005 = _r0005 + VertexCoord.z*MVPMatrix[2]; + _r0005 = _r0005 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0005; + _oTex = TexCoord.xy; + gl_Position = _r0005; + TEX0.xy = TexCoord.xy; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _ret_0; +vec2 _TMP11; +vec4 _TMP9; +vec2 _TMP8; +vec4 _TMP7; +vec2 _TMP6; +vec4 _TMP5; +vec2 _TMP4; +vec4 _TMP3; +vec2 _TMP2; +float _TMP1; +float _TMP0; +uniform sampler2D Texture; +input_dummy _IN1; +float _a0016; +float _a0018; +vec2 _x0020; +vec2 _c0022; +vec2 _x0024; +vec2 _c0026; +vec2 _x0028; +vec2 _c0030; +vec2 _x0032; +vec2 _c0034; +vec2 _TMP35; +vec2 _a0036; +vec2 _x0038; +vec2 _TMP39; +vec2 _b0040; +vec2 _x0040; +vec2 _a0040; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec2 _texelSize; + vec2 _range; + float _left; + float _top; + float _right; + float _bottom; + float _totalArea; + vec3 _averageColor; + _texelSize = 1.00000000E+00/TextureSize; + _a0016 = InputSize.x/(OutputSize.x*TextureSize.x); + _TMP0 = abs(_a0016); + _a0018 = InputSize.y/(OutputSize.y*TextureSize.y); + _TMP1 = abs(_a0018); + _range = vec2(_TMP0, _TMP1); + _range = (_range/2.00000000E+00)*9.99000013E-01; + _left = TEX0.x - _range.x; + _top = TEX0.y + _range.y; + _right = TEX0.x + _range.x; + _bottom = TEX0.y - _range.y; + _x0020 = vec2(_left, _top)/_texelSize; + _TMP2 = floor(_x0020); + _c0022 = (_TMP2 + 5.00000000E-01)*_texelSize; + _TMP3 = COMPAT_TEXTURE(Texture, _c0022); + _x0024 = vec2(_right, _bottom)/_texelSize; + _TMP4 = floor(_x0024); + _c0026 = (_TMP4 + 5.00000000E-01)*_texelSize; + _TMP5 = COMPAT_TEXTURE(Texture, _c0026); + _x0028 = vec2(_left, _bottom)/_texelSize; + _TMP6 = floor(_x0028); + _c0030 = (_TMP6 + 5.00000000E-01)*_texelSize; + _TMP7 = COMPAT_TEXTURE(Texture, _c0030); + _x0032 = vec2(_right, _top)/_texelSize; + _TMP8 = floor(_x0032); + _c0034 = (_TMP8 + 5.00000000E-01)*_texelSize; + _TMP9 = COMPAT_TEXTURE(Texture, _c0034); + _a0036 = TEX0.xy/_texelSize; + _x0038 = _a0036 + 5.00000000E-01; + _TMP35 = floor(_x0038); + _x0040 = _TMP35*_texelSize; + _a0040 = vec2(_left, _bottom); + _b0040 = vec2(_right, _top); + _TMP11 = min(_b0040, _x0040); + _TMP39 = max(_a0040, _TMP11); + _totalArea = 4.00000000E+00*_range.x*_range.y; + _averageColor = (((_TMP39.x - _left)*(_top - _TMP39.y))/_totalArea)*_TMP3.xyz; + _averageColor = _averageColor + (((_right - _TMP39.x)*(_TMP39.y - _bottom))/_totalArea)*_TMP5.xyz; + _averageColor = _averageColor + (((_TMP39.x - _left)*(_TMP39.y - _bottom))/_totalArea)*_TMP7.xyz; + _averageColor = _averageColor + (((_right - _TMP39.x)*(_top - _TMP39.y))/_totalArea)*_TMP9.xyz; + _ret_0 = vec4(_averageColor.x, _averageColor.y, _averageColor.z, 1.00000000E+00); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/quilez.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/quilez.glsl new file mode 100644 index 00000000..d34bdb4d --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/quilez.glsl @@ -0,0 +1,121 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec4 _color1; +struct output_dummy { + vec4 _color1; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _oPosition1; +vec4 _r0005; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _oColor; + vec2 _otexCoord; + _r0005 = VertexCoord.x*MVPMatrix[0]; + _r0005 = _r0005 + VertexCoord.y*MVPMatrix[1]; + _r0005 = _r0005 + VertexCoord.z*MVPMatrix[2]; + _r0005 = _r0005 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0005; + _oColor = COLOR; + _otexCoord = TexCoord.xy; + gl_Position = _r0005; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec4 _color; +struct output_dummy { + vec4 _color; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +input_dummy _IN1; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec2 _p; + vec2 _i; + vec2 _f; + output_dummy _OUT; + _p = TEX0.xy*TextureSize + vec2( 5.00000000E-01, 5.00000000E-01); + _i = floor(_p); + _f = _p - _i; + _f = _f*_f*_f*(_f*(_f*6.00000000E+00 - vec2( 1.50000000E+01, 1.50000000E+01)) + vec2( 1.00000000E+01, 1.00000000E+01)); + _p = _i + _f; + _p = (_p - vec2( 5.00000000E-01, 5.00000000E-01))/TextureSize; + _OUT._color = COMPAT_TEXTURE(Texture, _p); + FragColor = _OUT._color; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/retro-v2.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/retro-v2.glsl new file mode 100644 index 00000000..e4ac7e33 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/retro-v2.glsl @@ -0,0 +1,150 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec4 _color1; +struct output_dummy { + vec4 _color1; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; +}; +vec4 _oPosition1; +vec4 _r0005; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _oColor; + vec2 _otexCoord; + _r0005 = VertexCoord.x*MVPMatrix[0]; + _r0005 = _r0005 + VertexCoord.y*MVPMatrix[1]; + _r0005 = _r0005 + VertexCoord.z*MVPMatrix[2]; + _r0005 = _r0005 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0005; + _oColor = COLOR; + _otexCoord = TexCoord.xy; + gl_Position = _r0005; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING vec4 _color; +struct output_dummy { + vec4 _color; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; +}; +vec3 _TMP3; +vec3 _TMP9; +float _TMP7; +float _TMP6; +float _TMP5; +vec2 _TMP8; +vec4 _TMP0; +uniform sampler2D Texture; +input_dummy _IN1; +vec2 _x0024; +vec2 _TMP25; +vec2 _x0026; +vec2 _TMP31; +vec2 _x0032; +vec3 _a0040; +vec3 _b0040; +vec3 _TMP49; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec3 _E; + vec2 _fp; + vec2 _ps; + vec2 _f; + float _max_coord; + vec3 _res; + output_dummy _OUT; + _TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy); + _TMP5 = pow(_TMP0.x, 2.40000010E+00); + _TMP6 = pow(_TMP0.y, 2.40000010E+00); + _TMP7 = pow(_TMP0.z, 2.40000010E+00); + _E = vec3(_TMP5, _TMP6, _TMP7); + _x0024 = TEX0.xy*TextureSize; + _fp = fract(_x0024); + _ps = InputSize/OutputSize; + _x0026 = _fp + 5.00000000E-01*_ps; + _TMP8 = min(vec2( 1.00000000E+00, 1.00000000E+00), _x0026); + _TMP25 = max(vec2( 0.00000000E+00, 0.00000000E+00), _TMP8); + _x0032 = _TMP25 - 8.39999974E-01; + _TMP8 = min(_ps.xx, _x0032); + _TMP31 = max(vec2( 0.00000000E+00, 0.00000000E+00), _TMP8); + _f = _TMP31/_ps; + _max_coord = max(_f.x, _f.y); + _a0040 = _E*(1.03999996E+00 + _fp.x*_fp.y); + _b0040 = _E*3.60000014E-01; + _res = _a0040 + _max_coord*(_b0040 - _a0040); + _TMP5 = pow(_res.x, 4.54545438E-01); + _TMP6 = pow(_res.y, 4.54545438E-01); + _TMP7 = pow(_res.z, 4.54545438E-01); + _TMP3 = vec3(_TMP5, _TMP6, _TMP7); + _TMP9 = min(vec3( 1.00000000E+00, 1.00000000E+00, 1.00000000E+00), _TMP3); + _TMP49 = max(vec3( 0.00000000E+00, 0.00000000E+00, 0.00000000E+00), _TMP9); + _OUT._color = vec4(_TMP49.x, _TMP49.y, _TMP49.z, 1.00000000E+00); + FragColor = _OUT._color; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glsl new file mode 100644 index 00000000..eafd5743 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glsl @@ -0,0 +1,133 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec2 _omega; +struct sine_coord { + vec2 _omega; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _oPosition1; +input_dummy _IN1; +vec4 _r0006; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_VARYING vec4 COL0; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec4 TEX2; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _oColor; + vec2 _oTex; + sine_coord _coords; + _r0006 = VertexCoord.x*MVPMatrix[0]; + _r0006 = _r0006 + VertexCoord.y*MVPMatrix[1]; + _r0006 = _r0006 + VertexCoord.z*MVPMatrix[2]; + _r0006 = _r0006 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0006; + _oColor = COLOR; + _oTex = TexCoord.xy; + _coords._omega = vec2((3.14150000E+00*OutputSize.x*TextureSize.x)/InputSize.x, 6.28299999E+00*TextureSize.y); + gl_Position = _r0006; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; + TEX2.xy = _coords._omega; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec2 _omega; +struct sine_coord { + vec2 _omega; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _ret_0; +float _TMP2; +vec2 _TMP1; +float _TMP4; +float _TMP3; +vec4 _TMP0; +uniform sampler2D Texture; +vec2 _x0009; +vec2 _a0015; +COMPAT_VARYING vec4 TEX2; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec3 _scanline; + _TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy); + _x0009 = TEX0.xy*TEX2.xy; + _TMP3 = sin(_x0009.x); + _TMP4 = sin(_x0009.y); + _TMP1 = vec2(_TMP3, _TMP4); + _a0015 = vec2( 5.00000007E-02, 1.50000006E-01)*_TMP1; + _TMP2 = dot(_a0015, vec2( 1.00000000E+00, 1.00000000E+00)); + _scanline = _TMP0.xyz*(9.49999988E-01 + _TMP2); + _ret_0 = vec4(_scanline.x, _scanline.y, _scanline.z, 1.00000000E+00); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glslp b/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glslp new file mode 100644 index 00000000..7539ac42 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/scanline.glslp @@ -0,0 +1,13 @@ +shaders = "1" +feedback_pass = "0" +shader0 = "/etc/libretro/shaders/scanline.glsl" +filter_linear0 = "true" +wrap_mode0 = "clamp_to_border" +mipmap_input0 = "false" +alias0 = "" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "4.000000" +scale_type_y0 = "source" +scale_y0 = "4.000000" diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/sharp-bilinear.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/sharp-bilinear.glsl new file mode 100644 index 00000000..d62c0111 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/sharp-bilinear.glsl @@ -0,0 +1,109 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; +}; +vec4 _oPosition1; +vec4 _r0005; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec2 _otexCoord; + _r0005 = VertexCoord.x*MVPMatrix[0]; + _r0005 = _r0005 + VertexCoord.y*MVPMatrix[1]; + _r0005 = _r0005 + VertexCoord.z*MVPMatrix[2]; + _r0005 = _r0005 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0005; + _otexCoord = TexCoord.xy; + gl_Position = _r0005; + TEX0.xy = TexCoord.xy; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; +}; +vec4 _ret_0; +vec2 _TMP1; +uniform sampler2D Texture; +input_dummy _IN1; +vec2 _TMP6; +vec2 _TMP10; +vec2 _c0017; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec2 _texel; + vec2 _texel_floored; + vec2 _center_dist; + vec2 _f; + vec2 _mod_texel; + _texel = TEX0.xy*TextureSize; + _texel_floored = floor(_texel); + _TMP6 = fract(_texel); + _center_dist = _TMP6 - 5.00000000E-01; + _TMP1 = min(vec2( 3.75000000E-01, 3.75000000E-01), _center_dist); + _TMP10 = max(vec2( -3.75000000E-01, -3.75000000E-01), _TMP1); + _f = (_center_dist - _TMP10)*4.00000000E+00 + 5.00000000E-01; + _mod_texel = _texel_floored + _f; + _c0017 = _mod_texel/TextureSize; + _ret_0 = COMPAT_TEXTURE(Texture, _c0017); + FragColor = _ret_0; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/etc/libretro/shaders/stock.glsl b/user_mods/retroarch.hmod/etc/libretro/shaders/stock.glsl new file mode 100644 index 00000000..4b111410 --- /dev/null +++ b/user_mods/retroarch.hmod/etc/libretro/shaders/stock.glsl @@ -0,0 +1,111 @@ +// GLSL shader autogenerated by cg2glsl.py. +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec4 _color1; +struct output_dummy { + vec4 _color1; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +vec4 _oPosition1; +vec4 _r0005; +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + vec4 _oColor; + vec2 _otexCoord; + _r0005 = VertexCoord.x*MVPMatrix[0]; + _r0005 = _r0005 + VertexCoord.y*MVPMatrix[1]; + _r0005 = _r0005 + VertexCoord.z*MVPMatrix[2]; + _r0005 = _r0005 + VertexCoord.w*MVPMatrix[3]; + _oPosition1 = _r0005; + _oColor = COLOR; + _otexCoord = TexCoord.xy; + gl_Position = _r0005; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; +} +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif +COMPAT_VARYING float _frame_rotation; +COMPAT_VARYING vec4 _color; +struct output_dummy { + vec4 _color; +}; +struct input_dummy { + vec2 _video_size; + vec2 _texture_size; + vec2 _output_dummy_size; + float _frame_count; + float _frame_direction; + float _frame_rotation; +}; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +uniform int FrameDirection; +uniform int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +void main() +{ + output_dummy _OUT; + _OUT._color = COMPAT_TEXTURE(Texture, TEX0.xy); + FragColor = _OUT._color; + return; +} +#endif diff --git a/user_mods/retroarch.hmod/readme.txt b/user_mods/retroarch.hmod/readme.txt index 7920c128..cb7d6ea9 100644 --- a/user_mods/retroarch.hmod/readme.txt +++ b/user_mods/retroarch.hmod/readme.txt @@ -2,7 +2,8 @@ This module adds RetroArch emulator to your NES Mini.
-It will automatically detect unsupported NES games and run them instead of default emulator. Save states will work as usual but CRT filter will not work.
+It will automatically detect unsupported NES games and run them instead of default emulator.
+Save states will work as usual.
Also it can run games for other consoles. This pack already contains cores:
- emux_sms
@@ -27,6 +28,10 @@ Available executables and arguments: runs "emux_sms" core
- /bin/snes <rom> <clover_args>
runs "snes9x2010" core
+- /bin/n64 <rom> <clover_args>
+ runs "mupen64plus" core
+
+Sometimes default emulator of NES mini is not working with some games when it should. So you can just add "--retroarch" command line argument to use RetroArch.
NES Mini port by madmonkey
NES Mini shell integration by Cluster
|