From 502b8f3a3e42feff36679cd686070c2244effd1f Mon Sep 17 00:00:00 2001 From: softtwo <52133149+softtwo@users.noreply.github.com> Date: Sun, 23 Jun 2019 22:29:34 -0500 Subject: [PATCH] libretro: load user palette --- src/libretro/FSNodeLIBRETRO.cxx | 17 ++++++++++++++++- src/libretro/OSystemLIBRETRO.cxx | 22 +++++++--------------- src/libretro/StellaLIBRETRO.cxx | 5 ++++- src/libretro/libretro.cxx | 3 ++- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/libretro/FSNodeLIBRETRO.cxx b/src/libretro/FSNodeLIBRETRO.cxx index c5735ea52..c504e424a 100644 --- a/src/libretro/FSNodeLIBRETRO.cxx +++ b/src/libretro/FSNodeLIBRETRO.cxx @@ -17,6 +17,12 @@ #include "FSNodeLIBRETRO.hxx" +#ifdef _WIN32 + const string slash = "\\"; +#else + const string slash = "/"; +#endif + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FilesystemNodeLIBRETRO::FilesystemNodeLIBRETRO() : _name("rom"), @@ -24,11 +30,20 @@ FilesystemNodeLIBRETRO::FilesystemNodeLIBRETRO() _isFile(true), _isValid(true) { + _path = "." + slash; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FilesystemNodeLIBRETRO::FilesystemNodeLIBRETRO(const string& p) + : _name(p), + _path(p), + _isDirectory(false), + _isFile(true), + _isValid(true) { + // TODO: use retro_vfs_mkdir_t (file) or RETRO_MEMORY_SAVE_RAM (stream) or libretro save path + if(p == "." + slash + "nvram") + _path = "." + slash; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -52,7 +67,7 @@ bool FilesystemNodeLIBRETRO::isWritable() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string FilesystemNodeLIBRETRO::getShortPath() const { - return ""; + return "."; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/libretro/OSystemLIBRETRO.cxx b/src/libretro/OSystemLIBRETRO.cxx index e63de6e96..49e9ded0e 100644 --- a/src/libretro/OSystemLIBRETRO.cxx +++ b/src/libretro/OSystemLIBRETRO.cxx @@ -18,24 +18,16 @@ #include "FSNode.hxx" #include "OSystemLIBRETRO.hxx" +#ifdef _WIN32 + const string slash = "\\"; +#else + const string slash = "/"; +#endif + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void OSystemLIBRETRO::getBaseDirAndConfig(string& basedir, string& cfgfile, string& savedir, string& loaddir, bool useappdir, const string& usedir) { - basedir = "."; - -#if 0 - // Check to see if basedir overrides are active - if(useappdir) - cout << "ERROR: base dir in app folder not supported" << endl; - else if(usedir != "") - { - basedir = FilesystemNode(usedir).getPath(); - savedir = loaddir = basedir; - } -#endif - - FilesystemNode desktop("."); - savedir = "."; + loaddir = savedir = cfgfile = basedir = "." + slash; } diff --git a/src/libretro/StellaLIBRETRO.cxx b/src/libretro/StellaLIBRETRO.cxx index 87dbfaa9f..65f5f362f 100644 --- a/src/libretro/StellaLIBRETRO.cxx +++ b/src/libretro/StellaLIBRETRO.cxx @@ -68,6 +68,9 @@ bool StellaLIBRETRO::create(bool logging) myOSystem = make_unique(); myOSystem->create(); + Settings::Options options; + myOSystem->loadConfig(options); + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Settings& settings = myOSystem->settings(); @@ -375,7 +378,7 @@ void StellaLIBRETRO::setVideoPalette(uInt32 mode) { case 0: video_palette = "standard"; break; case 1: video_palette = "z26"; break; - case 2: video_palette = "custom"; break; + case 2: video_palette = "user"; break; } if (system_ready) diff --git a/src/libretro/libretro.cxx b/src/libretro/libretro.cxx index 490df61c3..6d1dc0f89 100644 --- a/src/libretro/libretro.cxx +++ b/src/libretro/libretro.cxx @@ -279,6 +279,7 @@ static void update_variables(bool init = false) if(!strcmp(var.value, "standard")) value = 0; else if(!strcmp(var.value, "z26")) value = 1; + else if(!strcmp(var.value, "user")) value = 2; if(setting_palette != value) { @@ -493,7 +494,7 @@ void retro_set_environment(retro_environment_t cb) static struct retro_variable variables[] = { // Adding more variables and rearranging them is safe. { "stella_console", "Console display; auto|ntsc|pal|secam|ntsc50|pal60|secam60" }, - { "stella_palette", "Palette colors; standard|z26" }, + { "stella_palette", "Palette colors; standard|z26|user" }, { "stella_filter", "TV effects; disabled|composite|s-video|rgb|badly adjusted" }, { "stella_ntsc_aspect", "NTSC aspect %; par|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|50|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99" }, { "stella_pal_aspect", "PAL aspect %; par|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|50|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99" },