#include "../common/arm_utils.h"\r
#include "../common/fonts.h"\r
#include "../common/emu.h"\r
+#include "../common/config.h"\r
#include "cpuctrl.h"\r
\r
#include <Pico/PicoInt.h>\r
}\r
\r
if (!(currentConfig.EmuOpt & 0x20)) {\r
- FILE *f = fopen(PicoConfigFile, "r+b");\r
- if (!f) emu_WriteConfig(0);\r
- else {\r
- // if we already have config, reload it, except last ROM\r
- fseek(f, sizeof(currentConfig.lastRomFile), SEEK_SET);\r
- fread(¤tConfig.EmuOpt, 1, sizeof(currentConfig) - sizeof(currentConfig.lastRomFile), f);\r
- fseek(f, 0, SEEK_SET);\r
- fwrite(¤tConfig, 1, sizeof(currentConfig), f);\r
- fflush(f);\r
- fclose(f);\r
+ config_writelrom(PicoConfigFile);\r
#ifndef NO_SYNC\r
- sync();\r
+ sync();\r
#endif\r
- }\r
}\r
\r
free(PicoDraw2FB);\r
set_gamma(100, 0);\r
}\r
\r
+void emu_prepareDefaultConfig(void)\r
+{\r
+ memset(&defaultConfig, 0, sizeof(defaultConfig));\r
+ defaultConfig.lastRomFile[0] = 0;\r
+ defaultConfig.EmuOpt = 0x1f | 0x600; // | confirm_save, cd_leds\r
+ defaultConfig.s_PicoOpt = 0x0f | 0xe00; // | use_940, cd_pcm, cd_cdda\r
+ defaultConfig.s_PsndRate = 44100;\r
+ defaultConfig.s_PicoRegion = 0; // auto\r
+ defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP\r
+ defaultConfig.s_PicoCDBuffers = 64;\r
+ defaultConfig.Frameskip = -1; // auto\r
+ defaultConfig.CPUclock = 200;\r
+ defaultConfig.volume = 50;\r
+ defaultConfig.KeyBinds[ 0] = 1<<0; // SACB RLDU\r
+ defaultConfig.KeyBinds[ 4] = 1<<1;\r
+ defaultConfig.KeyBinds[ 2] = 1<<2;\r
+ defaultConfig.KeyBinds[ 6] = 1<<3;\r
+ defaultConfig.KeyBinds[14] = 1<<4;\r
+ defaultConfig.KeyBinds[13] = 1<<5;\r
+ defaultConfig.KeyBinds[12] = 1<<6;\r
+ defaultConfig.KeyBinds[ 8] = 1<<7;\r
+ defaultConfig.KeyBinds[15] = 1<<26; // switch rend\r
+ defaultConfig.KeyBinds[10] = 1<<27; // save state\r
+ defaultConfig.KeyBinds[11] = 1<<28; // load state\r
+ defaultConfig.KeyBinds[23] = 1<<29; // vol up\r
+ defaultConfig.KeyBinds[22] = 1<<30; // vol down\r
+ defaultConfig.gamma = 100;\r
+ defaultConfig.scaling = 0;\r
+}\r
+\r
void emu_setDefaultConfig(void)\r
{\r
- memset(¤tConfig, 0, sizeof(currentConfig));\r
- currentConfig.lastRomFile[0] = 0;\r
- currentConfig.EmuOpt = 0x1f | 0x600; // | confirm_save, cd_leds\r
- currentConfig.PicoOpt = 0x0f | 0xe00; // | use_940, cd_pcm, cd_cdda\r
- currentConfig.PsndRate = 22050; // 44100;\r
- currentConfig.PicoRegion = 0; // auto\r
- currentConfig.PicoAutoRgnOrder = 0x184; // US, EU, JP\r
- currentConfig.Frameskip = -1; // auto\r
- currentConfig.CPUclock = 200;\r
- currentConfig.volume = 50;\r
- currentConfig.KeyBinds[ 0] = 1<<0; // SACB RLDU\r
- currentConfig.KeyBinds[ 4] = 1<<1;\r
- currentConfig.KeyBinds[ 2] = 1<<2;\r
- currentConfig.KeyBinds[ 6] = 1<<3;\r
- currentConfig.KeyBinds[14] = 1<<4;\r
- currentConfig.KeyBinds[13] = 1<<5;\r
- currentConfig.KeyBinds[12] = 1<<6;\r
- currentConfig.KeyBinds[ 8] = 1<<7;\r
- currentConfig.KeyBinds[15] = 1<<26; // switch rend\r
- currentConfig.KeyBinds[10] = 1<<27; // save state\r
- currentConfig.KeyBinds[11] = 1<<28; // load state\r
- currentConfig.KeyBinds[23] = 1<<29; // vol up\r
- currentConfig.KeyBinds[22] = 1<<30; // vol down\r
- currentConfig.gamma = 100;\r
- currentConfig.PicoCDBuffers = 64;\r
- currentConfig.scaling = 0;\r
+ memcpy(¤tConfig, &defaultConfig, sizeof(currentConfig));\r
+ PicoOpt = currentConfig.s_PicoOpt;\r
+ PsndRate = currentConfig.s_PsndRate;\r
+ PicoRegionOverride = currentConfig.s_PicoRegion;\r
+ PicoAutoRgnOrder = currentConfig.s_PicoAutoRgnOrder;\r
+ PicoCDBuffers = currentConfig.s_PicoCDBuffers;\r
}\r
\r
void osd_text(int x, int y, const char *text)\r