\r
#include <stdio.h>\r
#include <stdlib.h>\r
-#include <ctype.h> // tolower\r
#ifndef NO_SYNC\r
#include <unistd.h>\r
#endif\r
#include "fonts.h"\r
#include "lprintf.h"\r
#include "config.h"\r
-#include "common.h"\r
#include "plat.h"\r
\r
#include <pico/pico_int.h>\r
char noticeMsg[64] = { 0, };\r
int state_slot = 0;\r
int config_slot = 0, config_slot_current = 0;\r
-int kb_combo_keys = 0, kb_combo_acts = 0; // keys and actions which need button combos\r
int pico_inp_mode = 0;\r
int engineState = PGS_Menu;\r
\r
static int movie_size = 0;\r
\r
\r
-// utilities\r
+/* don't use tolower() for easy old glibc binary compatibility */\r
static void strlwr_(char *string)\r
{\r
char *p;\r
for (p = string; *p; p++)\r
- *p = (char)tolower(*p);\r
+ if ('A' <= *p && *p <= 'Z')\r
+ *p += 'a' - 'A';\r
}\r
\r
static int try_rfn_cut(char *fname)\r
}\r
}\r
\r
+ plat_validate_config();\r
+\r
// some sanity checks\r
- if (currentConfig.CPUclock < 10 || currentConfig.CPUclock > 4096) currentConfig.CPUclock = 200;\r
#ifdef PSP\r
+ /* TODO: mv to plat_validate_config() */\r
+ if (currentConfig.CPUclock < 10 || currentConfig.CPUclock > 4096) currentConfig.CPUclock = 200;\r
if (currentConfig.gamma < -4 || currentConfig.gamma > 16) currentConfig.gamma = 0;\r
if (currentConfig.gamma2 < 0 || currentConfig.gamma2 > 2) currentConfig.gamma2 = 0;\r
-#else\r
- if (currentConfig.gamma < 10 || currentConfig.gamma > 300) currentConfig.gamma = 100;\r
#endif\r
- if (currentConfig.volume < 0 || currentConfig.volume > 99) currentConfig.volume = 50;\r
-#ifdef __GP2X__\r
- // if volume keys are unbound, bind them to volume control\r
- if (!currentConfig.KeyBinds[23] && !currentConfig.KeyBinds[22]) {\r
- currentConfig.KeyBinds[23] = 1<<29; // vol up\r
- currentConfig.KeyBinds[22] = 1<<30; // vol down\r
- }\r
-#endif\r
- if (ret == 0) config_slot_current = config_slot;\r
+ if (currentConfig.volume < 0 || currentConfig.volume > 99)\r
+ currentConfig.volume = 50;\r
+\r
+ if (ret == 0)\r
+ config_slot_current = config_slot;\r
+\r
return (ret == 0);\r
}\r
\r
\r
#undef mk_text_out\r
\r
-#ifdef PSP\r
-#define MAX_COMBO_KEY 23\r
-#else\r
-#define MAX_COMBO_KEY 31\r
-#endif\r
-\r
-// FIXME\r
-void emu_findKeyBindCombos(void)\r
-{\r
- int act, u;\r
-\r
- // find out which keys and actions are combos\r
- kb_combo_keys = kb_combo_acts = 0;\r
- for (act = 0; act < 32; act++)\r
- {\r
- int keyc = 0, keyc2 = 0;\r
- if (act == 16 || act == 17) continue; // player2 flag\r
- if (act > 17)\r
- {\r
- for (u = 0; u <= MAX_COMBO_KEY; u++)\r
- if (currentConfig.KeyBinds[u] & (1 << act)) keyc++;\r
- }\r
- else\r
- {\r
- for (u = 0; u <= MAX_COMBO_KEY; u++)\r
- if ((currentConfig.KeyBinds[u] & 0x30000) == 0 && // pl. 1\r
- (currentConfig.KeyBinds[u] & (1 << act))) keyc++;\r
- for (u = 0; u <= MAX_COMBO_KEY; u++)\r
- if ((currentConfig.KeyBinds[u] & 0x30000) == 1 && // pl. 2\r
- (currentConfig.KeyBinds[u] & (1 << act))) keyc2++;\r
- if (keyc2 > keyc) keyc = keyc2;\r
- }\r
- if (keyc > 1)\r
- {\r
- // loop again and mark those keys and actions as combo\r
- for (u = 0; u <= MAX_COMBO_KEY; u++)\r
- {\r
- if (currentConfig.KeyBinds[u] & (1 << act)) {\r
- kb_combo_keys |= 1 << u;\r
- kb_combo_acts |= 1 << act;\r
- }\r
- }\r
- }\r
- }\r
-\r
- // printf("combo keys/acts: %08x %08x\n", kb_combo_keys, kb_combo_acts);\r
-}\r
-\r
\r
void emu_updateMovie(void)\r
{\r