mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-05 14:57:46 -04:00
improved game vidmode change detection; some iface changes
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@803 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
d6c1b65bce
commit
6c026031a8
2 changed files with 23 additions and 17 deletions
39
common/emu.c
39
common/emu.c
|
@ -41,9 +41,11 @@ int pico_pen_x = 320/2, pico_pen_y = 240/2;
|
|||
int pico_inp_mode = 0;
|
||||
int engineState = PGS_Menu;
|
||||
|
||||
/* tmp buff to reduce stack usage for plats with small stack */
|
||||
static char static_buff[512];
|
||||
/* TODO: len checking */
|
||||
char rom_fname_reload[512] = { 0, };
|
||||
char rom_fname_loaded[512] = { 0, };
|
||||
char rom_fname_reload[512];
|
||||
char rom_fname_loaded[512];
|
||||
int rom_loaded = 0;
|
||||
int reset_timing = 0;
|
||||
static unsigned int notice_msg_time; /* when started showing */
|
||||
|
@ -113,7 +115,6 @@ static const char * const biosfiles_jp[] = { "jp_mcd1_9112", "jp_mcd1_9111" };
|
|||
|
||||
static int find_bios(int region, char **bios_file)
|
||||
{
|
||||
static char bios_path[1024];
|
||||
int i, count;
|
||||
const char * const *files;
|
||||
FILE *f = NULL;
|
||||
|
@ -133,26 +134,27 @@ static int find_bios(int region, char **bios_file)
|
|||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
emu_make_path(bios_path, files[i], sizeof(bios_path) - 4);
|
||||
strcat(bios_path, ".bin");
|
||||
f = fopen(bios_path, "rb");
|
||||
emu_make_path(static_buff, files[i], sizeof(static_buff) - 4);
|
||||
strcat(static_buff, ".bin");
|
||||
f = fopen(static_buff, "rb");
|
||||
if (f) break;
|
||||
|
||||
bios_path[strlen(bios_path) - 4] = 0;
|
||||
strcat(bios_path, ".zip");
|
||||
f = fopen(bios_path, "rb");
|
||||
static_buff[strlen(static_buff) - 4] = 0;
|
||||
strcat(static_buff, ".zip");
|
||||
f = fopen(static_buff, "rb");
|
||||
if (f) break;
|
||||
}
|
||||
|
||||
if (f) {
|
||||
lprintf("using bios: %s\n", bios_path);
|
||||
lprintf("using bios: %s\n", static_buff);
|
||||
fclose(f);
|
||||
if (bios_file) *bios_file = bios_path;
|
||||
if (bios_file)
|
||||
*bios_file = static_buff;
|
||||
return 1;
|
||||
} else {
|
||||
sprintf(bios_path, "no %s BIOS files found, read docs",
|
||||
sprintf(static_buff, "no %s BIOS files found, read docs",
|
||||
region != 4 ? (region == 8 ? "EU" : "JAP") : "USA");
|
||||
me_update_msg(bios_path);
|
||||
me_update_msg(static_buff);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -560,6 +562,7 @@ int emu_reload_rom(char *rom_fname)
|
|||
}
|
||||
|
||||
menu_romload_prepare(used_rom_name); // also CD load
|
||||
used_rom_name = NULL; // uses static_buff
|
||||
|
||||
ret = PicoCartLoad(rom, &rom_data, &rom_size, (PicoAHW & PAHW_SMS) ? 1 : 0);
|
||||
pm_close(rom);
|
||||
|
@ -594,7 +597,8 @@ int emu_reload_rom(char *rom_fname)
|
|||
if (!ret) emu_read_config(0, 0);
|
||||
}
|
||||
|
||||
if (PicoCartInsert(rom_data, rom_size)) {
|
||||
emu_make_path(static_buff, "carthw.cfg", sizeof(static_buff));
|
||||
if (PicoCartInsert(rom_data, rom_size, static_buff)) {
|
||||
me_update_msg("Failed to load ROM.");
|
||||
goto fail;
|
||||
}
|
||||
|
@ -700,6 +704,7 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
|
|||
if (ext) strcat(dst, ext);
|
||||
}
|
||||
|
||||
// <base dir><end>
|
||||
void emu_make_path(char *buff, const char *end, int size)
|
||||
{
|
||||
int pos, end_len;
|
||||
|
@ -907,7 +912,7 @@ static int try_ropen_file(const char *fname)
|
|||
|
||||
char *emu_get_save_fname(int load, int is_sram, int slot)
|
||||
{
|
||||
static char saveFname[512];
|
||||
char *saveFname = static_buff;
|
||||
char ext[16];
|
||||
|
||||
if (is_sram)
|
||||
|
@ -1482,7 +1487,7 @@ void emu_loop(void)
|
|||
pframes_done++; frames_done++;
|
||||
diff_lim += target_frametime;
|
||||
|
||||
if (!(currentConfig.EmuOpt & EOPT_NO_FRMLIMIT)) {
|
||||
if (!(currentConfig.EmuOpt & (EOPT_NO_FRMLIMIT|EOPT_EXT_FRMLIMIT))) {
|
||||
timestamp = get_ticks();
|
||||
diff = timestamp - timestamp_base;
|
||||
if (!reset_timing && diff < diff_lim) // we are too fast
|
||||
|
@ -1508,7 +1513,7 @@ void emu_loop(void)
|
|||
PicoFrame();
|
||||
|
||||
/* frame limiter */
|
||||
if (!reset_timing && !(currentConfig.EmuOpt & EOPT_NO_FRMLIMIT))
|
||||
if (!reset_timing && !(currentConfig.EmuOpt & (EOPT_NO_FRMLIMIT|EOPT_EXT_FRMLIMIT)))
|
||||
{
|
||||
timestamp = get_ticks();
|
||||
diff = timestamp - timestamp_base;
|
||||
|
|
|
@ -41,6 +41,7 @@ extern int g_screen_height;
|
|||
#define EOPT_SHOW_RTC (1<<17)
|
||||
#define EOPT_NO_FRMLIMIT (1<<18)
|
||||
#define EOPT_WIZ_TEAR_FIX (1<<19)
|
||||
#define EOPT_EXT_FRMLIMIT (1<<20) // no internal frame limiter (limited by snd, etc)
|
||||
|
||||
enum {
|
||||
EOPT_SCALE_NONE = 0,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue