mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-05 14:57:46 -04:00
major menu unification, minor reorganization
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@639 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
24b24674ae
commit
049a6b3e80
21 changed files with 1638 additions and 500 deletions
175
common/config.c
175
common/config.c
|
@ -21,44 +21,8 @@ static char *mystrip(char *str);
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include <pico/pico.h>
|
#include <pico/pico.h>
|
||||||
|
|
||||||
extern menu_entry opt_entries[];
|
|
||||||
extern menu_entry opt2_entries[];
|
|
||||||
extern menu_entry cdopt_entries[];
|
|
||||||
extern menu_entry ctrlopt_entries[];
|
|
||||||
extern const int opt_entry_count;
|
|
||||||
extern const int opt2_entry_count;
|
|
||||||
extern const int cdopt_entry_count;
|
|
||||||
extern const int ctrlopt_entry_count;
|
|
||||||
#ifdef PSP
|
|
||||||
extern menu_entry opt3_entries[];
|
|
||||||
extern const int opt3_entry_count;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static menu_entry *cfg_opts[] =
|
|
||||||
{
|
|
||||||
opt_entries,
|
|
||||||
opt2_entries,
|
|
||||||
cdopt_entries,
|
|
||||||
ctrlopt_entries,
|
|
||||||
#ifdef PSP
|
|
||||||
opt3_entries,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
static const int *cfg_opt_counts[] =
|
|
||||||
{
|
|
||||||
&opt_entry_count,
|
|
||||||
&opt2_entry_count,
|
|
||||||
&cdopt_entry_count,
|
|
||||||
&ctrlopt_entry_count,
|
|
||||||
#ifdef PSP
|
|
||||||
&opt3_entry_count,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NL "\r\n"
|
#define NL "\r\n"
|
||||||
|
|
||||||
|
|
||||||
static int seek_sect(FILE *f, const char *section)
|
static int seek_sect(FILE *f, const char *section)
|
||||||
{
|
{
|
||||||
char line[128], *tmp;
|
char line[128], *tmp;
|
||||||
|
@ -82,79 +46,10 @@ static int seek_sect(FILE *f, const char *section)
|
||||||
|
|
||||||
static void custom_write(FILE *f, const menu_entry *me, int no_def)
|
static void custom_write(FILE *f, const menu_entry *me, int no_def)
|
||||||
{
|
{
|
||||||
char *str, str24[24];
|
char str24[24];
|
||||||
|
|
||||||
switch (me->id)
|
switch (me->id)
|
||||||
{
|
{
|
||||||
case MA_OPT_RENDERER:
|
|
||||||
if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&POPT_ALT_RENDERER) &&
|
|
||||||
!((defaultConfig.EmuOpt^currentConfig.EmuOpt)&0x80)) return;
|
|
||||||
if (PicoOpt&POPT_ALT_RENDERER)
|
|
||||||
str =
|
|
||||||
#ifndef PSP
|
|
||||||
"8bit "
|
|
||||||
#endif
|
|
||||||
"fast";
|
|
||||||
else if (currentConfig.EmuOpt&0x80)
|
|
||||||
str =
|
|
||||||
#ifndef PSP
|
|
||||||
"16bit "
|
|
||||||
#endif
|
|
||||||
"accurate";
|
|
||||||
else
|
|
||||||
str = "8bit accurate";
|
|
||||||
fprintf(f, "Renderer = %s", str);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MA_OPT_SCALING:
|
|
||||||
if (no_def && defaultConfig.scaling == currentConfig.scaling) return;
|
|
||||||
#ifdef __GP2X__
|
|
||||||
switch (currentConfig.scaling) {
|
|
||||||
default: str = "OFF"; break;
|
|
||||||
case 1: str = "hw horizontal"; break;
|
|
||||||
case 2: str = "hw horiz. + vert."; break;
|
|
||||||
case 3: str = "sw horizontal"; break;
|
|
||||||
}
|
|
||||||
fprintf(f, "Scaling = %s", str);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case MA_OPT_FRAMESKIP:
|
|
||||||
if (no_def && defaultConfig.Frameskip == currentConfig.Frameskip) return;
|
|
||||||
if (currentConfig.Frameskip < 0)
|
|
||||||
strcpy(str24, "Auto");
|
|
||||||
else sprintf(str24, "%i", currentConfig.Frameskip);
|
|
||||||
fprintf(f, "Frameskip = %s", str24);
|
|
||||||
break;
|
|
||||||
case MA_OPT_SOUND_QUALITY:
|
|
||||||
if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&POPT_EN_STEREO) &&
|
|
||||||
defaultConfig.s_PsndRate == PsndRate) return;
|
|
||||||
str = (PicoOpt&POPT_EN_STEREO)?"stereo":"mono";
|
|
||||||
fprintf(f, "Sound Quality = %i %s", PsndRate, str);
|
|
||||||
break;
|
|
||||||
case MA_OPT_REGION:
|
|
||||||
if (no_def && defaultConfig.s_PicoRegion == PicoRegionOverride &&
|
|
||||||
defaultConfig.s_PicoAutoRgnOrder == PicoAutoRgnOrder) return;
|
|
||||||
strncpy(str24, me_region_name(PicoRegionOverride, PicoAutoRgnOrder), 23); str24[23] = 0;
|
|
||||||
fprintf(f, "Region = %s", mystrip(str24));
|
|
||||||
break;
|
|
||||||
case MA_OPT_CONFIRM_STATES:
|
|
||||||
if (no_def && !((defaultConfig.EmuOpt^currentConfig.EmuOpt)&(5<<9))) return;
|
|
||||||
switch ((currentConfig.EmuOpt >> 9) & 5) {
|
|
||||||
default: str = "OFF"; break;
|
|
||||||
case 1: str = "writes"; break;
|
|
||||||
case 4: str = "loads"; break;
|
|
||||||
case 5: str = "both"; break;
|
|
||||||
}
|
|
||||||
fprintf(f, "Confirm savestate = %s", str);
|
|
||||||
break;
|
|
||||||
case MA_OPT_CPU_CLOCKS:
|
|
||||||
if (no_def && defaultConfig.CPUclock == currentConfig.CPUclock) return;
|
|
||||||
#ifdef __GP2X__
|
|
||||||
fprintf(f, "GP2X CPU clocks = %i", currentConfig.CPUclock);
|
|
||||||
#elif defined(PSP)
|
|
||||||
fprintf(f, "PSP CPU clock = %i", currentConfig.CPUclock);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case MA_OPT2_GAMMA:
|
case MA_OPT2_GAMMA:
|
||||||
if (no_def && defaultConfig.gamma == currentConfig.gamma) return;
|
if (no_def && defaultConfig.gamma == currentConfig.gamma) return;
|
||||||
fprintf(f, "Gamma correction = %.3f", (double)currentConfig.gamma / 100.0);
|
fprintf(f, "Gamma correction = %.3f", (double)currentConfig.gamma / 100.0);
|
||||||
|
@ -299,7 +194,7 @@ int config_writesect(const char *fname, const char *section)
|
||||||
FILE *fo = NULL, *fn = NULL; // old and new
|
FILE *fo = NULL, *fn = NULL; // old and new
|
||||||
int no_defaults = 0; // avoid saving defaults
|
int no_defaults = 0; // avoid saving defaults
|
||||||
menu_entry *me;
|
menu_entry *me;
|
||||||
int t, i, tlen, ret;
|
int t, tlen, ret;
|
||||||
char line[128], *tmp;
|
char line[128], *tmp;
|
||||||
|
|
||||||
if (section != NULL)
|
if (section != NULL)
|
||||||
|
@ -368,30 +263,34 @@ write:
|
||||||
if (section != NULL)
|
if (section != NULL)
|
||||||
fprintf(fn, "[%s]" NL, section);
|
fprintf(fn, "[%s]" NL, section);
|
||||||
|
|
||||||
for (t = 0; t < sizeof(cfg_opts) / sizeof(cfg_opts[0]); t++)
|
me = me_list_get_first();
|
||||||
|
while (me != NULL)
|
||||||
{
|
{
|
||||||
me = cfg_opts[t];
|
int dummy;
|
||||||
tlen = *(cfg_opt_counts[t]);
|
if (!me->need_to_save)
|
||||||
for (i = 0; i < tlen; i++, me++)
|
goto next;
|
||||||
{
|
if (me->beh == MB_OPT_ONOFF) {
|
||||||
if (!me->need_to_save) continue;
|
|
||||||
if ((me->beh != MB_ONOFF && me->beh != MB_RANGE) || me->name == NULL)
|
|
||||||
custom_write(fn, me, no_defaults);
|
|
||||||
else if (me->beh == MB_ONOFF) {
|
|
||||||
if (!no_defaults || ((*(int *)me->var ^ default_var(me)) & me->mask))
|
if (!no_defaults || ((*(int *)me->var ^ default_var(me)) & me->mask))
|
||||||
fprintf(fn, "%s = %i" NL, me->name, (*(int *)me->var & me->mask) ? 1 : 0);
|
fprintf(fn, "%s = %i" NL, me->name, (*(int *)me->var & me->mask) ? 1 : 0);
|
||||||
} else if (me->beh == MB_RANGE) {
|
} else if (me->beh == MB_OPT_RANGE) {
|
||||||
if (!no_defaults || (*(int *)me->var ^ default_var(me)))
|
if (!no_defaults || (*(int *)me->var ^ default_var(me)))
|
||||||
fprintf(fn, "%s = %i" NL, me->name, *(int *)me->var);
|
fprintf(fn, "%s = %i" NL, me->name, *(int *)me->var);
|
||||||
}
|
} else if (me->name != NULL && me->generate_name != NULL) {
|
||||||
}
|
strncpy(line, me->generate_name(0, &dummy), sizeof(line));
|
||||||
|
line[sizeof(line) - 1] = 0;
|
||||||
|
mystrip(line);
|
||||||
|
fprintf(fn, "%s = %s" NL, me->name, line);
|
||||||
|
} else
|
||||||
|
custom_write(fn, me, no_defaults);
|
||||||
|
next:
|
||||||
|
me = me_list_get_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* input: save device names */
|
/* input: save device names */
|
||||||
for (t = 0; t < IN_MAX_DEVS; t++)
|
for (t = 0; t < IN_MAX_DEVS; t++)
|
||||||
{
|
{
|
||||||
const int *binds = in_get_dev_binds(t);
|
const int *binds = in_get_dev_binds(t);
|
||||||
const char *name = in_get_dev_name(t, 0);
|
const char *name = in_get_dev_name(t, 0, 0);
|
||||||
if (binds == NULL || name == NULL)
|
if (binds == NULL || name == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -402,7 +301,7 @@ write:
|
||||||
for (t = 0; t < IN_MAX_DEVS; t++)
|
for (t = 0; t < IN_MAX_DEVS; t++)
|
||||||
{
|
{
|
||||||
const int *binds = in_get_dev_binds(t);
|
const int *binds = in_get_dev_binds(t);
|
||||||
const char *name = in_get_dev_name(t, 0);
|
const char *name = in_get_dev_name(t, 0, 0);
|
||||||
char strbind[16];
|
char strbind[16];
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
|
@ -449,7 +348,7 @@ int config_writelrom(const char *fname)
|
||||||
int size;
|
int size;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if (strlen(loadedRomFName) == 0) return -1;
|
if (strlen(rom_fname_loaded) == 0) return -1;
|
||||||
|
|
||||||
f = fopen(fname, "r");
|
f = fopen(fname, "r");
|
||||||
if (f != NULL)
|
if (f != NULL)
|
||||||
|
@ -482,7 +381,7 @@ int config_writelrom(const char *fname)
|
||||||
fwrite(old_data, 1, optr - old_data, f);
|
fwrite(old_data, 1, optr - old_data, f);
|
||||||
free(old_data);
|
free(old_data);
|
||||||
}
|
}
|
||||||
fprintf(f, "LastUsedROM = %s" NL, loadedRomFName);
|
fprintf(f, "LastUsedROM = %s" NL, rom_fname_loaded);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -513,9 +412,9 @@ int config_readlrom(const char *fname)
|
||||||
tmp++;
|
tmp++;
|
||||||
mystrip(tmp);
|
mystrip(tmp);
|
||||||
|
|
||||||
len = sizeof(loadedRomFName);
|
len = sizeof(rom_fname_loaded);
|
||||||
strncpy(loadedRomFName, tmp, len);
|
strncpy(rom_fname_loaded, tmp, len);
|
||||||
loadedRomFName[len-1] = 0;
|
rom_fname_loaded[len-1] = 0;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -773,7 +672,7 @@ static unsigned char input_dev_map[IN_MAX_DEVS];
|
||||||
static void parse(const char *var, const char *val)
|
static void parse(const char *var, const char *val)
|
||||||
{
|
{
|
||||||
menu_entry *me;
|
menu_entry *me;
|
||||||
int t, i, tlen, tmp, ret = 0;
|
int tmp, ret = 0;
|
||||||
|
|
||||||
if (strcasecmp(var, "LastUsedROM") == 0)
|
if (strcasecmp(var, "LastUsedROM") == 0)
|
||||||
return; /* handled elsewhere */
|
return; /* handled elsewhere */
|
||||||
|
@ -814,21 +713,20 @@ static void parse(const char *var, const char *val)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (t = 0; t < sizeof(cfg_opts) / sizeof(cfg_opts[0]) && ret == 0; t++)
|
me = me_list_get_first();
|
||||||
|
while (me != NULL && ret == 0)
|
||||||
{
|
{
|
||||||
me = cfg_opts[t];
|
if (!me->need_to_save)
|
||||||
tlen = *(cfg_opt_counts[t]);
|
goto next;
|
||||||
for (i = 0; i < tlen && ret == 0; i++, me++)
|
if (me->name != NULL && me->name[0] != 0) {
|
||||||
{
|
if (strcasecmp(var, me->name) != 0)
|
||||||
if (!me->need_to_save) continue;
|
goto next; /* surely not this one */
|
||||||
if (me->name != NULL) {
|
if (me->beh == MB_OPT_ONOFF) {
|
||||||
if (strcasecmp(var, me->name) != 0) continue; // surely not this one
|
|
||||||
if (me->beh == MB_ONOFF) {
|
|
||||||
tmp = atoi(val);
|
tmp = atoi(val);
|
||||||
if (tmp) *(int *)me->var |= me->mask;
|
if (tmp) *(int *)me->var |= me->mask;
|
||||||
else *(int *)me->var &= ~me->mask;
|
else *(int *)me->var &= ~me->mask;
|
||||||
return;
|
return;
|
||||||
} else if (me->beh == MB_RANGE) {
|
} else if (me->beh == MB_OPT_RANGE) {
|
||||||
tmp = atoi(val);
|
tmp = atoi(val);
|
||||||
if (tmp < me->min) tmp = me->min;
|
if (tmp < me->min) tmp = me->min;
|
||||||
if (tmp > me->max) tmp = me->max;
|
if (tmp > me->max) tmp = me->max;
|
||||||
|
@ -837,7 +735,8 @@ static void parse(const char *var, const char *val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = custom_read(me, var, val);
|
ret = custom_read(me, var, val);
|
||||||
}
|
next:
|
||||||
|
me = me_list_get_next();
|
||||||
}
|
}
|
||||||
if (!ret) lprintf("config_readsect: unhandled var: \"%s\"\n", var);
|
if (!ret) lprintf("config_readsect: unhandled var: \"%s\"\n", var);
|
||||||
}
|
}
|
||||||
|
|
25
common/emu.c
25
common/emu.c
|
@ -16,6 +16,7 @@
|
||||||
#include "lprintf.h"
|
#include "lprintf.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "plat.h"
|
||||||
|
|
||||||
#include <pico/pico_int.h>
|
#include <pico/pico_int.h>
|
||||||
#include <pico/patch.h>
|
#include <pico/patch.h>
|
||||||
|
@ -25,23 +26,21 @@
|
||||||
|
|
||||||
char *PicoConfigFile = "config.cfg";
|
char *PicoConfigFile = "config.cfg";
|
||||||
currentConfig_t currentConfig, defaultConfig;
|
currentConfig_t currentConfig, defaultConfig;
|
||||||
int rom_loaded = 0;
|
|
||||||
char noticeMsg[64] = { 0, };
|
char noticeMsg[64] = { 0, };
|
||||||
int state_slot = 0;
|
int state_slot = 0;
|
||||||
int config_slot = 0, config_slot_current = 0;
|
int config_slot = 0, config_slot_current = 0;
|
||||||
char loadedRomFName[512] = { 0, };
|
|
||||||
int kb_combo_keys = 0, kb_combo_acts = 0; // keys and actions which need button combos
|
int kb_combo_keys = 0, kb_combo_acts = 0; // keys and actions which need button combos
|
||||||
int pico_inp_mode = 0;
|
int pico_inp_mode = 0;
|
||||||
|
int engineState = PGS_Menu;
|
||||||
|
|
||||||
|
/* TODO: len checking */
|
||||||
|
char rom_fname_reload[512] = { 0, };
|
||||||
|
char rom_fname_loaded[512] = { 0, };
|
||||||
|
int rom_loaded = 0;
|
||||||
|
|
||||||
unsigned char *movie_data = NULL;
|
unsigned char *movie_data = NULL;
|
||||||
static int movie_size = 0;
|
static int movie_size = 0;
|
||||||
|
|
||||||
// provided by platform code:
|
|
||||||
extern void emu_noticeMsgUpdated(void);
|
|
||||||
extern int emu_getMainDir(char *dst, int len);
|
|
||||||
extern void menu_romload_prepare(const char *rom_name);
|
|
||||||
extern void menu_romload_end(void);
|
|
||||||
|
|
||||||
|
|
||||||
// utilities
|
// utilities
|
||||||
static void strlwr_(char *string)
|
static void strlwr_(char *string)
|
||||||
|
@ -492,8 +491,8 @@ int emu_ReloadRom(char *rom_fname)
|
||||||
if (currentConfig.EmuOpt & EOPT_USE_SRAM)
|
if (currentConfig.EmuOpt & EOPT_USE_SRAM)
|
||||||
emu_SaveLoadGame(1, 1);
|
emu_SaveLoadGame(1, 1);
|
||||||
|
|
||||||
strncpy(loadedRomFName, rom_fname, sizeof(loadedRomFName)-1);
|
strncpy(rom_fname_loaded, rom_fname, sizeof(rom_fname_loaded)-1);
|
||||||
loadedRomFName[sizeof(loadedRomFName)-1] = 0;
|
rom_fname_loaded[sizeof(rom_fname_loaded)-1] = 0;
|
||||||
rom_loaded = 1;
|
rom_loaded = 1;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -518,8 +517,8 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
|
||||||
int prefix_len = 0;
|
int prefix_len = 0;
|
||||||
|
|
||||||
// make save filename
|
// make save filename
|
||||||
p = loadedRomFName+strlen(loadedRomFName)-1;
|
p = rom_fname_loaded + strlen(rom_fname_loaded) - 1;
|
||||||
for (; p >= loadedRomFName && *p != PATH_SEP_C; p--); p++;
|
for (; p >= rom_fname_loaded && *p != PATH_SEP_C; p--); p++;
|
||||||
*dst = 0;
|
*dst = 0;
|
||||||
if (prefix) {
|
if (prefix) {
|
||||||
int len = emu_getMainDir(dst, 512);
|
int len = emu_getMainDir(dst, 512);
|
||||||
|
@ -527,7 +526,7 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
|
||||||
prefix_len = len + strlen(prefix);
|
prefix_len = len + strlen(prefix);
|
||||||
}
|
}
|
||||||
#ifdef UIQ3
|
#ifdef UIQ3
|
||||||
else p = loadedRomFName; // backward compatibility
|
else p = rom_fname_loaded; // backward compatibility
|
||||||
#endif
|
#endif
|
||||||
strncpy(dst + prefix_len, p, 511-prefix_len);
|
strncpy(dst + prefix_len, p, 511-prefix_len);
|
||||||
dst[511-8] = 0;
|
dst[511-8] = 0;
|
||||||
|
|
|
@ -50,11 +50,14 @@ extern char noticeMsg[64];
|
||||||
extern int state_slot;
|
extern int state_slot;
|
||||||
extern int config_slot, config_slot_current;
|
extern int config_slot, config_slot_current;
|
||||||
extern unsigned char *movie_data;
|
extern unsigned char *movie_data;
|
||||||
extern char loadedRomFName[512]; // last loaded ROM filename
|
|
||||||
extern int kb_combo_keys, kb_combo_acts; // keys and actions which need button combos
|
extern int kb_combo_keys, kb_combo_acts; // keys and actions which need button combos
|
||||||
extern int pico_inp_mode;
|
extern int pico_inp_mode;
|
||||||
|
|
||||||
|
extern char rom_fname_reload[512]; // ROM to try loading on next PGS_ReloadRom
|
||||||
|
extern char rom_fname_loaded[512]; // currently loaded ROM filename
|
||||||
|
|
||||||
// engine states
|
// engine states
|
||||||
|
extern int engineState;
|
||||||
enum TPicoGameState {
|
enum TPicoGameState {
|
||||||
PGS_Paused = 1,
|
PGS_Paused = 1,
|
||||||
PGS_Running,
|
PGS_Running,
|
||||||
|
|
|
@ -380,14 +380,14 @@ int in_menu_wait_any(int timeout_ms)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* wait for menu input, do autorepeat */
|
/* wait for menu input, do autorepeat */
|
||||||
int in_menu_wait(int interesting)
|
int in_menu_wait(int interesting, int autorep_delay_ms)
|
||||||
{
|
{
|
||||||
static int inp_prev = 0;
|
static int inp_prev = 0;
|
||||||
static int repeats = 0;
|
static int repeats = 0;
|
||||||
int ret, release = 0, wait = 666;
|
int ret, release = 0, wait = 666;
|
||||||
|
|
||||||
if (repeats)
|
if (repeats)
|
||||||
wait = 33;
|
wait = autorep_delay_ms;
|
||||||
|
|
||||||
ret = in_menu_wait_any(wait);
|
ret = in_menu_wait_any(wait);
|
||||||
if (ret == inp_prev)
|
if (ret == inp_prev)
|
||||||
|
@ -439,14 +439,22 @@ int in_get_dev_bind_count(int dev_id)
|
||||||
return in_bind_count(in_devices[dev_id].drv_id);
|
return in_bind_count(in_devices[dev_id].drv_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *in_get_dev_name(int dev_id, int must_be_active)
|
const char *in_get_dev_name(int dev_id, int must_be_active, int skip_pfix)
|
||||||
{
|
{
|
||||||
|
const char *name, *tmp;
|
||||||
|
|
||||||
if (dev_id < 0 || dev_id >= IN_MAX_DEVS)
|
if (dev_id < 0 || dev_id >= IN_MAX_DEVS)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (must_be_active && !in_devices[dev_id].probed)
|
if (must_be_active && !in_devices[dev_id].probed)
|
||||||
return NULL;
|
return NULL;
|
||||||
return in_devices[dev_id].name;
|
|
||||||
|
name = in_devices[dev_id].name;
|
||||||
|
tmp = strchr(name, ':');
|
||||||
|
if (tmp != NULL)
|
||||||
|
name = tmp + 1;
|
||||||
|
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* never returns NULL */
|
/* never returns NULL */
|
||||||
|
|
|
@ -31,7 +31,7 @@ int in_update(void);
|
||||||
void in_set_blocking(int is_blocking);
|
void in_set_blocking(int is_blocking);
|
||||||
int in_update_keycode(int *dev_id, int *is_down, int timeout_ms);
|
int in_update_keycode(int *dev_id, int *is_down, int timeout_ms);
|
||||||
int in_menu_wait_any(int timeout_ms);
|
int in_menu_wait_any(int timeout_ms);
|
||||||
int in_menu_wait(int interesting);
|
int in_menu_wait(int interesting, int autorep_delay_ms);
|
||||||
int in_get_dev_bind_count(int dev_id);
|
int in_get_dev_bind_count(int dev_id);
|
||||||
void in_config_start(void);
|
void in_config_start(void);
|
||||||
int in_config_parse_dev(const char *dev_name);
|
int in_config_parse_dev(const char *dev_name);
|
||||||
|
@ -42,5 +42,5 @@ void in_debug_dump(void);
|
||||||
|
|
||||||
const int *in_get_dev_binds(int dev_id);
|
const int *in_get_dev_binds(int dev_id);
|
||||||
const int *in_get_dev_def_binds(int dev_id);
|
const int *in_get_dev_def_binds(int dev_id);
|
||||||
const char *in_get_dev_name(int dev_id, int must_be_active);
|
const char *in_get_dev_name(int dev_id, int must_be_active, int skip_pfix);
|
||||||
const char *in_get_key_name(int dev_id, int keycode);
|
const char *in_get_key_name(int dev_id, int keycode);
|
||||||
|
|
1669
common/menu.c
1669
common/menu.c
File diff suppressed because it is too large
Load diff
|
@ -4,9 +4,6 @@
|
||||||
void menu_init(void);
|
void menu_init(void);
|
||||||
void text_out16(int x, int y, const char *texto, ...);
|
void text_out16(int x, int y, const char *texto, ...);
|
||||||
void smalltext_out16(int x, int y, const char *texto, int color);
|
void smalltext_out16(int x, int y, const char *texto, int color);
|
||||||
void smalltext_out16_lim(int x, int y, const char *texto, int color, int max);
|
|
||||||
void menu_draw_selection(int x, int y, int w);
|
|
||||||
void debug_menu_loop(void);
|
|
||||||
|
|
||||||
extern char menuErrorMsg[64];
|
extern char menuErrorMsg[64];
|
||||||
|
|
||||||
|
@ -15,7 +12,9 @@ typedef enum
|
||||||
MB_NONE = 1, /* no auto processing */
|
MB_NONE = 1, /* no auto processing */
|
||||||
MB_OPT_ONOFF, /* ON/OFF setting */
|
MB_OPT_ONOFF, /* ON/OFF setting */
|
||||||
MB_OPT_RANGE, /* [min-max] setting */
|
MB_OPT_RANGE, /* [min-max] setting */
|
||||||
MB_OPT_CUSTOM,
|
MB_OPT_CUSTOM, /* custom value */
|
||||||
|
MB_OPT_CUSTONOFF,
|
||||||
|
MB_OPT_CUSTRANGE,
|
||||||
} menu_behavior;
|
} menu_behavior;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -97,6 +96,8 @@ typedef enum
|
||||||
MA_CTRL_PLAYER2,
|
MA_CTRL_PLAYER2,
|
||||||
MA_CTRL_EMU,
|
MA_CTRL_EMU,
|
||||||
MA_CTRL_TURBO_RATE,
|
MA_CTRL_TURBO_RATE,
|
||||||
|
MA_CTRL_DEV_FIRST,
|
||||||
|
MA_CTRL_DEV_NEXT,
|
||||||
MA_CTRL_DONE,
|
MA_CTRL_DONE,
|
||||||
} menu_id;
|
} menu_id;
|
||||||
|
|
||||||
|
@ -107,22 +108,47 @@ typedef struct
|
||||||
menu_id id;
|
menu_id id;
|
||||||
void *var; /* for on-off/range settings */
|
void *var; /* for on-off/range settings */
|
||||||
int mask; /* bit to toggle for on/off */
|
int mask; /* bit to toggle for on/off */
|
||||||
signed char min; /* for ranged integer settings, to be sign-extended */
|
signed short min; /* for ranged integer settings, to be sign-extended */
|
||||||
signed char max;
|
signed short max;
|
||||||
char enabled;
|
int enabled:1;
|
||||||
char need_to_save;
|
int need_to_save:1;
|
||||||
int (*submenu_handler)(menu_id id);
|
int selectable:1;
|
||||||
const char * (*generate_name)(int is_left);
|
int (*handler)(menu_id id, int keys);
|
||||||
|
const char * (*generate_name)(menu_id id, int *offs);
|
||||||
} menu_entry;
|
} menu_entry;
|
||||||
|
|
||||||
#define mee_submenu_id(name, id, handler) \
|
#define mee_handler_id(name, id, handler) \
|
||||||
{ name, MB_NONE, id, NULL, 0, 0, 0, 1, 0, handler, NULL }
|
{ name, MB_NONE, id, NULL, 0, 0, 0, 1, 0, 1, handler, NULL }
|
||||||
|
|
||||||
#define mee_submenu(name, handler) \
|
#define mee_handler(name, handler) \
|
||||||
mee_submenu_id(name, MA_NONE, handler)
|
mee_handler_id(name, MA_NONE, handler)
|
||||||
|
|
||||||
|
#define mee_handler_mkname_id(id, handler, name_func) \
|
||||||
|
{ "", MB_NONE, id, NULL, 0, 0, 0, 1, 0, 1, handler, name_func }
|
||||||
|
|
||||||
|
#define mee_label(name) \
|
||||||
|
{ name, MB_NONE, MA_NONE, NULL, 0, 0, 0, 1, 0, 0, NULL, NULL }
|
||||||
|
|
||||||
|
#define mee_label_mk(id, name_func) \
|
||||||
|
{ "", MB_NONE, id, NULL, 0, 0, 0, 1, 0, 0, NULL, name_func }
|
||||||
|
|
||||||
|
#define mee_onoff(name, id, var, mask) \
|
||||||
|
{ name, MB_OPT_ONOFF, id, &(var), mask, 0, 0, 1, 1, 1, NULL, NULL }
|
||||||
|
|
||||||
|
#define mee_range(name, id, var, min, max) \
|
||||||
|
{ name, MB_OPT_RANGE, id, &(var), 0, min, max, 1, 1, 1, NULL, NULL }
|
||||||
|
|
||||||
|
#define mee_cust(name, id, handler, name_func) \
|
||||||
|
{ name, MB_OPT_CUSTOM, id, NULL, 0, 0, 0, 1, 1, 1, handler, name_func }
|
||||||
|
|
||||||
|
#define mee_onoff_cust(name, id, var, mask, name_func) \
|
||||||
|
{ name, MB_OPT_CUSTONOFF, id, &(var), mask, 0, 0, 1, 1, 1, NULL, name_func }
|
||||||
|
|
||||||
|
#define mee_range_cust(name, id, var, min, max, name_func) \
|
||||||
|
{ name, MB_OPT_CUSTRANGE, id, &(var), 0, min, max, 1, 1, 1, NULL, name_func }
|
||||||
|
|
||||||
#define mee_end \
|
#define mee_end \
|
||||||
{ NULL, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, NULL }
|
{ NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, NULL, NULL }
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -133,18 +159,8 @@ typedef struct
|
||||||
extern me_bind_action me_ctrl_actions[15];
|
extern me_bind_action me_ctrl_actions[15];
|
||||||
extern me_bind_action emuctrl_actions[]; // platform code
|
extern me_bind_action emuctrl_actions[]; // platform code
|
||||||
|
|
||||||
|
menu_entry *me_list_get_first(void);
|
||||||
typedef void (me_draw_custom_f)(const menu_entry *entry, int x, int y, void *param);
|
menu_entry *me_list_get_next(void);
|
||||||
|
|
||||||
/* TODO: move? */
|
|
||||||
int me_id2offset(const menu_entry *entries, menu_id id);
|
|
||||||
void me_enable(menu_entry *entries, menu_id id, int enable);
|
|
||||||
int me_count_enabled(const menu_entry *ent);
|
|
||||||
menu_id me_index2id(const menu_entry *entries, int index);
|
|
||||||
void me_draw(const menu_entry *entries, int count, int x, int y, me_draw_custom_f *cust_draw, void *param);
|
|
||||||
int me_process(menu_entry *entries, menu_id id, int is_next);
|
|
||||||
|
|
||||||
const char *me_region_name(unsigned int code, int auto_order);
|
|
||||||
|
|
||||||
void menu_darken_bg(void *dst, int pixels, int darker);
|
void menu_darken_bg(void *dst, int pixels, int darker);
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,32 @@
|
||||||
/* stuff to be implemented by platform code */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const char * const keyNames[];
|
/* stuff to be implemented by platform code */
|
||||||
|
/* TODO rename all these */
|
||||||
|
extern const char * const keyNames[]; // TODO rm
|
||||||
void emu_prepareDefaultConfig(void);
|
void emu_prepareDefaultConfig(void);
|
||||||
void emu_platformDebugCat(char *str);
|
void emu_platformDebugCat(char *str);
|
||||||
void emu_forcedFrame(int opts);
|
void emu_forcedFrame(int opts);
|
||||||
void emu_startSound(void);
|
void emu_startSound(void);
|
||||||
void emu_endSound(void);
|
void emu_endSound(void);
|
||||||
void emu_waitSound(void);
|
void emu_waitSound(void);
|
||||||
|
void emu_ResetGame(void); // TODO mv rm?
|
||||||
|
|
||||||
|
void emu_noticeMsgUpdated(void);
|
||||||
|
int emu_getMainDir(char *dst, int len);
|
||||||
|
void menu_romload_prepare(const char *rom_name);
|
||||||
|
void menu_romload_end(void);
|
||||||
|
|
||||||
/* menu: enter (switch bpp, etc), begin/end drawing */
|
/* menu: enter (switch bpp, etc), begin/end drawing */
|
||||||
void plat_video_menu_enter(int is_rom_loaded);
|
void plat_video_menu_enter(int is_rom_loaded);
|
||||||
void plat_video_menu_begin(void);
|
void plat_video_menu_begin(void);
|
||||||
void plat_video_menu_end(void);
|
void plat_video_menu_end(void);
|
||||||
|
|
||||||
|
int plat_is_dir(const char *path);
|
||||||
|
|
||||||
|
const char *plat_get_credits(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
13
common/posix.h
Normal file
13
common/posix.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/* define POSIX stuff: dirent, scandir, getcwd */
|
||||||
|
#if defined(__linux__)
|
||||||
|
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "must define dirent"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ else
|
||||||
use_cyclone = 1
|
use_cyclone = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
DEFINC = -I../.. -I. -DARM -D__GP2X__ # -DBENCHMARK
|
DEFINC = -I../.. -I. -DARM -D__GP2X__ -DIN_GP2X # -DBENCHMARK
|
||||||
COPT_COMMON = -static -Wall -Winline
|
COPT_COMMON = -static -Wall -Winline
|
||||||
ifeq ($(DEBUG),)
|
ifeq ($(DEBUG),)
|
||||||
COPT_COMMON += -O3 -ftracer -fstrength-reduce -fomit-frame-pointer -fstrict-aliasing -ffast-math
|
COPT_COMMON += -O3 -ftracer -fstrength-reduce -fomit-frame-pointer -fstrict-aliasing -ffast-math
|
||||||
|
@ -54,14 +54,15 @@ LD = $(CROSS)ld
|
||||||
OBJCOPY = $(CROSS)objcopy
|
OBJCOPY = $(CROSS)objcopy
|
||||||
|
|
||||||
# frontend
|
# frontend
|
||||||
OBJS += main.o menu.o gp2x.o emu.o squidgehack.o cpuctrl.o
|
OBJS += main.o gp2x.o emu.o in_gp2x.o squidgehack.o cpuctrl.o
|
||||||
# 940 core control
|
# 940 core control
|
||||||
OBJS += 940ctl.o
|
OBJS += 940ctl.o
|
||||||
|
|
||||||
# common
|
# common
|
||||||
OBJS += platform/common/emu.o platform/common/menu.o platform/common/fonts.o platform/common/config.o \
|
OBJS += platform/common/emu.o platform/common/menu.o platform/common/fonts.o platform/common/config.o \
|
||||||
platform/common/arm_utils.o platform/common/arm_linux.o platform/common/readpng.o \
|
platform/common/arm_utils.o platform/common/arm_linux.o platform/common/readpng.o \
|
||||||
platform/common/mp3_helix.o platform/linux/usbjoy.o platform/linux/sndout_oss.o
|
platform/common/mp3_helix.o platform/common/input.o platform/linux/usbjoy.o \
|
||||||
|
platform/linux/sndout_oss.o platform/linux/plat.o
|
||||||
|
|
||||||
# Pico
|
# Pico
|
||||||
ifeq "$(amalgamate)" "1"
|
ifeq "$(amalgamate)" "1"
|
||||||
|
|
25
gp2x/emu.c
25
gp2x/emu.c
|
@ -25,6 +25,7 @@
|
||||||
#include "../common/input.h"
|
#include "../common/input.h"
|
||||||
#include "../linux/sndout_oss.h"
|
#include "../linux/sndout_oss.h"
|
||||||
#include "cpuctrl.h"
|
#include "cpuctrl.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
#include <pico/pico_int.h>
|
#include <pico/pico_int.h>
|
||||||
#include <pico/patch.h>
|
#include <pico/patch.h>
|
||||||
|
@ -40,11 +41,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int engineState;
|
|
||||||
int select_exits = 0;
|
int select_exits = 0;
|
||||||
|
|
||||||
char romFileName[PATH_MAX];
|
|
||||||
|
|
||||||
extern int crashed_940;
|
extern int crashed_940;
|
||||||
|
|
||||||
static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
|
static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
|
||||||
|
@ -1065,3 +1063,24 @@ void emu_ResetGame(void)
|
||||||
reset_timing = 1;
|
reset_timing = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *plat_get_credits(void)
|
||||||
|
{
|
||||||
|
return "PicoDrive v" VERSION " (c) notaz, 2006-2009\n\n\n"
|
||||||
|
"Credits:\n"
|
||||||
|
"fDave: Cyclone 68000 core,\n"
|
||||||
|
" base code of PicoDrive\n"
|
||||||
|
"Reesy & FluBBa: DrZ80 core\n"
|
||||||
|
"MAME devs: YM2612 and SN76496 cores\n"
|
||||||
|
"rlyeh and others: minimal SDK\n"
|
||||||
|
"Squidge: squidgehack\n"
|
||||||
|
"Dzz: ARM940 sample\n"
|
||||||
|
"GnoStiC / Puck2099: USB joy code\n"
|
||||||
|
"craigix: GP2X hardware\n"
|
||||||
|
"ketchupgun: skin design\n"
|
||||||
|
"\n"
|
||||||
|
"special thanks (for docs, ideas):\n"
|
||||||
|
" Charles MacDonald, Haze,\n"
|
||||||
|
" Stephane Dallongeville,\n"
|
||||||
|
" Lordus, Exophase, Rokas,\n"
|
||||||
|
" Nemesis, Tasco Deluxe";
|
||||||
|
}
|
||||||
|
|
|
@ -4,14 +4,9 @@
|
||||||
// For commercial use, separate licencing terms must be obtained.
|
// For commercial use, separate licencing terms must be obtained.
|
||||||
|
|
||||||
|
|
||||||
extern char romFileName[];
|
|
||||||
extern int engineState;
|
|
||||||
|
|
||||||
|
|
||||||
void emu_Init(void);
|
void emu_Init(void);
|
||||||
void emu_Deinit(void);
|
void emu_Deinit(void);
|
||||||
void emu_Loop(void);
|
void emu_Loop(void);
|
||||||
void emu_ResetGame(void);
|
|
||||||
|
|
||||||
void osd_text(int x, int y, const char *text);
|
void osd_text(int x, int y, const char *text);
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,9 @@ static int in_gp2x_menu_translate(int keycode)
|
||||||
case BTN_RIGHT: return PBTN_RIGHT;
|
case BTN_RIGHT: return PBTN_RIGHT;
|
||||||
case BTN_B: return PBTN_MOK;
|
case BTN_B: return PBTN_MOK;
|
||||||
case BTN_X: return PBTN_MBACK;
|
case BTN_X: return PBTN_MBACK;
|
||||||
case BTN_START: return PBTN_MENU;
|
case BTN_SELECT:return PBTN_MENU;
|
||||||
|
case BTN_L: return PBTN_L;
|
||||||
|
case BTN_R: return PBTN_R;
|
||||||
default: return 0;
|
default: return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
gp2x/main.c
11
gp2x/main.c
|
@ -16,6 +16,7 @@
|
||||||
#include "../common/emu.h"
|
#include "../common/emu.h"
|
||||||
#include "../common/config.h"
|
#include "../common/config.h"
|
||||||
#include "../common/input.h"
|
#include "../common/input.h"
|
||||||
|
#include "../common/plat.h"
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "940ctl.h"
|
#include "940ctl.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
@ -61,9 +62,9 @@ void parse_cmd_line(int argc, char *argv[])
|
||||||
} else {
|
} else {
|
||||||
/* External Frontend: ROM Name */
|
/* External Frontend: ROM Name */
|
||||||
FILE *f;
|
FILE *f;
|
||||||
strncpy(romFileName, argv[x], PATH_MAX);
|
strncpy(rom_fname_reload, argv[x], PATH_MAX);
|
||||||
romFileName[PATH_MAX-1] = 0;
|
rom_fname_reload[PATH_MAX-1] = 0;
|
||||||
f = fopen(romFileName, "rb");
|
f = fopen(rom_fname_reload, "rb");
|
||||||
if (f) fclose(f);
|
if (f) fclose(f);
|
||||||
else unrecognized = 1;
|
else unrecognized = 1;
|
||||||
engineState = PGS_ReloadRom;
|
engineState = PGS_ReloadRom;
|
||||||
|
@ -122,7 +123,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
if (engineState == PGS_ReloadRom)
|
if (engineState == PGS_ReloadRom)
|
||||||
{
|
{
|
||||||
if (emu_ReloadRom(romFileName)) {
|
if (emu_ReloadRom(rom_fname_reload)) {
|
||||||
engineState = PGS_Running;
|
engineState = PGS_Running;
|
||||||
if (load_state_slot >= 0) {
|
if (load_state_slot >= 0) {
|
||||||
state_slot = load_state_slot;
|
state_slot = load_state_slot;
|
||||||
|
@ -140,7 +141,7 @@ int main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PGS_ReloadRom:
|
case PGS_ReloadRom:
|
||||||
if (emu_ReloadRom(romFileName))
|
if (emu_ReloadRom(rom_fname_reload))
|
||||||
engineState = PGS_Running;
|
engineState = PGS_Running;
|
||||||
else {
|
else {
|
||||||
printf("PGS_ReloadRom == 0\n");
|
printf("PGS_ReloadRom == 0\n");
|
||||||
|
|
|
@ -28,7 +28,7 @@ LDFLAGS += `pkg-config --libs gthread-2.0`
|
||||||
|
|
||||||
# frontend
|
# frontend
|
||||||
OBJS += platform/gp2x/main.o platform/gp2x/emu.o platform/gp2x/plat.o usbjoy.o blit.o \
|
OBJS += platform/gp2x/main.o platform/gp2x/emu.o platform/gp2x/plat.o usbjoy.o blit.o \
|
||||||
in_evdev.o sndout_oss.o gp2x.o 940ctl_ym2612.o log_io.o
|
in_evdev.o plat.o sndout_oss.o gp2x.o 940ctl_ym2612.o log_io.o
|
||||||
# platform/gp2x/menu.o
|
# platform/gp2x/menu.o
|
||||||
|
|
||||||
ifeq "$(fake_in_gp2x)" "1"
|
ifeq "$(fake_in_gp2x)" "1"
|
||||||
|
|
14
linux/plat.c
Normal file
14
linux/plat.c
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#include <dirent.h>
|
||||||
|
#include "../common/plat.h"
|
||||||
|
|
||||||
|
|
||||||
|
int plat_is_dir(const char *path)
|
||||||
|
{
|
||||||
|
DIR *dir;
|
||||||
|
if ((dir = opendir(path))) {
|
||||||
|
closedir(dir);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -42,11 +42,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int engineState;
|
|
||||||
int select_exits = 0;
|
int select_exits = 0;
|
||||||
|
|
||||||
char romFileName[PATH_MAX];
|
|
||||||
|
|
||||||
static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
|
static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
|
||||||
static struct timeval noticeMsgTime = { 0, 0 }; // when started showing
|
static struct timeval noticeMsgTime = { 0, 0 }; // when started showing
|
||||||
static int osd_fps_x;
|
static int osd_fps_x;
|
||||||
|
|
|
@ -50,9 +50,9 @@ void parse_cmd_line(int argc, char *argv[])
|
||||||
} else {
|
} else {
|
||||||
/* External Frontend: ROM Name */
|
/* External Frontend: ROM Name */
|
||||||
FILE *f;
|
FILE *f;
|
||||||
strncpy(romFileName, argv[x], PATH_MAX);
|
strncpy(rom_fname_reload, argv[x], PATH_MAX);
|
||||||
romFileName[PATH_MAX-1] = 0;
|
rom_fname_reload[PATH_MAX-1] = 0;
|
||||||
f = fopen(romFileName, "rb");
|
f = fopen(rom_fname_reload, "rb");
|
||||||
if (f) fclose(f);
|
if (f) fclose(f);
|
||||||
else unrecognized = 1;
|
else unrecognized = 1;
|
||||||
engineState = PGS_ReloadRom;
|
engineState = PGS_ReloadRom;
|
||||||
|
@ -96,7 +96,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
if (engineState == PGS_ReloadRom)
|
if (engineState == PGS_ReloadRom)
|
||||||
{
|
{
|
||||||
if (emu_ReloadRom(romFileName)) {
|
if (emu_ReloadRom(rom_fname_reload)) {
|
||||||
engineState = PGS_Running;
|
engineState = PGS_Running;
|
||||||
if (load_state_slot >= 0) {
|
if (load_state_slot >= 0) {
|
||||||
state_slot = load_state_slot;
|
state_slot = load_state_slot;
|
||||||
|
@ -114,7 +114,7 @@ int main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PGS_ReloadRom:
|
case PGS_ReloadRom:
|
||||||
if (emu_ReloadRom(romFileName))
|
if (emu_ReloadRom(rom_fname_reload))
|
||||||
engineState = PGS_Running;
|
engineState = PGS_Running;
|
||||||
else {
|
else {
|
||||||
printf("PGS_ReloadRom == 0\n");
|
printf("PGS_ReloadRom == 0\n");
|
||||||
|
|
|
@ -33,9 +33,8 @@ int sceAudio_E0727056(int volume, void *buffer); // blocking output
|
||||||
int sceAudioOutput2GetRestSample();
|
int sceAudioOutput2GetRestSample();
|
||||||
|
|
||||||
|
|
||||||
char romFileName[PATH_MAX];
|
|
||||||
unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword..
|
unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword..
|
||||||
int engineState = PGS_Menu, engineStateSuspend;
|
int engineStateSuspend;
|
||||||
|
|
||||||
static unsigned int noticeMsgTime = 0;
|
static unsigned int noticeMsgTime = 0;
|
||||||
int reset_timing = 0; // do we need this?
|
int reset_timing = 0; // do we need this?
|
||||||
|
@ -1127,13 +1126,13 @@ void emu_HandleResume(void)
|
||||||
// reopen first CD track
|
// reopen first CD track
|
||||||
if (Pico_mcd->TOC.Tracks[0].F != NULL)
|
if (Pico_mcd->TOC.Tracks[0].F != NULL)
|
||||||
{
|
{
|
||||||
char *fname = romFileName;
|
char *fname = rom_fname_reload;
|
||||||
int len = strlen(romFileName);
|
int len = strlen(rom_fname_reload);
|
||||||
cue_data_t *cue_data = NULL;
|
cue_data_t *cue_data = NULL;
|
||||||
|
|
||||||
if (len > 4 && strcasecmp(fname + len - 4, ".cue") == 0)
|
if (len > 4 && strcasecmp(fname + len - 4, ".cue") == 0)
|
||||||
{
|
{
|
||||||
cue_data = cue_parse(romFileName);
|
cue_data = cue_parse(rom_fname_reload);
|
||||||
if (cue_data != NULL)
|
if (cue_data != NULL)
|
||||||
fname = cue_data->tracks[1].fname;
|
fname = cue_data->tracks[1].fname;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,7 @@
|
||||||
// For commercial use, separate licencing terms must be obtained.
|
// For commercial use, separate licencing terms must be obtained.
|
||||||
|
|
||||||
|
|
||||||
|
extern int engineStateSuspend;
|
||||||
extern char romFileName[];
|
|
||||||
extern int engineState, engineStateSuspend;
|
|
||||||
|
|
||||||
|
|
||||||
void emu_Init(void);
|
void emu_Init(void);
|
||||||
void emu_Deinit(void);
|
void emu_Deinit(void);
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
void dummy(void)
|
void dummy(void)
|
||||||
{
|
{
|
||||||
engineState = atoi(romFileName);
|
engineState = atoi(rom_fname_reload);
|
||||||
setbuf(NULL, NULL);
|
setbuf(NULL, NULL);
|
||||||
getenv(NULL);
|
getenv(NULL);
|
||||||
}
|
}
|
||||||
|
@ -52,13 +52,13 @@ int pico_main(void)
|
||||||
#ifndef GPROF
|
#ifndef GPROF
|
||||||
menu_loop();
|
menu_loop();
|
||||||
#else
|
#else
|
||||||
strcpy(romFileName, loadedRomFName);
|
strcpy(rom_fname_reload, rom_fname_loaded);
|
||||||
engineState = PGS_ReloadRom;
|
engineState = PGS_ReloadRom;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PGS_ReloadRom:
|
case PGS_ReloadRom:
|
||||||
if (emu_ReloadRom(romFileName)) {
|
if (emu_ReloadRom(rom_fname_reload)) {
|
||||||
engineState = PGS_Running;
|
engineState = PGS_Running;
|
||||||
if (mp3_last_error != 0)
|
if (mp3_last_error != 0)
|
||||||
engineState = PGS_Menu; // send to menu to display mp3 error
|
engineState = PGS_Menu; // send to menu to display mp3 error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue