mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-06 23:28:04 -04:00
32x and sms savestates. Core-independent z80 state. SS bugfixing/refactoring.
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@868 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
1ed480497a
commit
d227571356
2 changed files with 17 additions and 30 deletions
|
@ -25,13 +25,13 @@ endif
|
||||||
|
|
||||||
# === Pico core ===
|
# === Pico core ===
|
||||||
# Pico
|
# Pico
|
||||||
OBJS += pico/area.o pico/cart.o pico/memory.o pico/pico.o pico/sek.o pico/z80if.o \
|
OBJS += pico/state.o pico/cart.o pico/memory.o pico/pico.o pico/sek.o pico/z80if.o \
|
||||||
pico/videoport.o pico/draw2.o pico/draw.o pico/mode4.o pico/sms.o \
|
pico/videoport.o pico/draw2.o pico/draw.o pico/mode4.o pico/sms.o \
|
||||||
pico/misc.o pico/eeprom.o pico/patch.o pico/debug.o
|
pico/misc.o pico/eeprom.o pico/patch.o pico/debug.o
|
||||||
# CD
|
# CD
|
||||||
OBJS += pico/cd/pico.o pico/cd/memory.o pico/cd/sek.o pico/cd/LC89510.o \
|
OBJS += pico/cd/pico.o pico/cd/memory.o pico/cd/sek.o pico/cd/LC89510.o \
|
||||||
pico/cd/cd_sys.o pico/cd/cd_file.o pico/cd/cue.o pico/cd/gfx_cd.o \
|
pico/cd/cd_sys.o pico/cd/cd_file.o pico/cd/cue.o pico/cd/gfx_cd.o \
|
||||||
pico/cd/area.o pico/cd/misc.o pico/cd/pcm.o pico/cd/buffering.o
|
pico/cd/misc.o pico/cd/pcm.o pico/cd/buffering.o
|
||||||
# 32X
|
# 32X
|
||||||
OBJS += pico/32x/32x.o pico/32x/memory.o pico/32x/draw.o pico/32x/pwm.o
|
OBJS += pico/32x/32x.o pico/32x/memory.o pico/32x/draw.o pico/32x/pwm.o
|
||||||
# Pico
|
# Pico
|
||||||
|
@ -62,11 +62,6 @@ OBJS += cpu/fame/famec.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# --- Z80 ---
|
# --- Z80 ---
|
||||||
ifeq "$(use_mz80)" "1"
|
|
||||||
DEFINES += _USE_MZ80
|
|
||||||
OBJS += cpu/mz80/mz80.o
|
|
||||||
endif
|
|
||||||
#
|
|
||||||
ifeq "$(use_drz80)" "1"
|
ifeq "$(use_drz80)" "1"
|
||||||
DEFINES += _USE_DRZ80
|
DEFINES += _USE_DRZ80
|
||||||
OBJS += cpu/DrZ80/drz80.o
|
OBJS += cpu/DrZ80/drz80.o
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <revision.h>
|
#include <revision.h>
|
||||||
|
|
||||||
#include <pico/pico_int.h>
|
#include <pico/pico.h>
|
||||||
#include <pico/patch.h>
|
#include <pico/patch.h>
|
||||||
|
|
||||||
static char static_buff[64];
|
static char static_buff[64];
|
||||||
|
@ -1039,34 +1039,22 @@ static void state_check_slots(void)
|
||||||
|
|
||||||
static void draw_savestate_bg(int slot)
|
static void draw_savestate_bg(int slot)
|
||||||
{
|
{
|
||||||
struct PicoVideo tmp_pv;
|
|
||||||
unsigned short tmp_cram[0x40];
|
|
||||||
unsigned short tmp_vsram[0x40];
|
|
||||||
void *tmp_vram;
|
|
||||||
const char *fname;
|
const char *fname;
|
||||||
|
void *tmp_state;
|
||||||
|
|
||||||
fname = emu_get_save_fname(1, 0, slot);
|
fname = emu_get_save_fname(1, 0, slot);
|
||||||
if (!fname) return;
|
if (!fname)
|
||||||
|
return;
|
||||||
|
|
||||||
tmp_vram = malloc(sizeof(Pico.vram));
|
tmp_state = PicoTmpStateSave();
|
||||||
if (tmp_vram == NULL) return;
|
|
||||||
|
|
||||||
memcpy(tmp_vram, Pico.vram, sizeof(Pico.vram));
|
PicoStateLoadGfx(fname);
|
||||||
memcpy(tmp_cram, Pico.cram, sizeof(Pico.cram));
|
|
||||||
memcpy(tmp_vsram, Pico.vsram, sizeof(Pico.vsram));
|
|
||||||
memcpy(&tmp_pv, &Pico.video, sizeof(Pico.video));
|
|
||||||
|
|
||||||
PicoStateLoadVDP(fname);
|
|
||||||
|
|
||||||
/* do a frame and fetch menu bg */
|
/* do a frame and fetch menu bg */
|
||||||
pemu_forced_frame(POPT_EN_SOFTSCALE);
|
pemu_forced_frame(POPT_EN_SOFTSCALE);
|
||||||
menu_enter(1);
|
menu_enter(1);
|
||||||
|
|
||||||
memcpy(Pico.vram, tmp_vram, sizeof(Pico.vram));
|
PicoTmpStateRestore(tmp_state);
|
||||||
memcpy(Pico.cram, tmp_cram, sizeof(Pico.cram));
|
|
||||||
memcpy(Pico.vsram, tmp_vsram, sizeof(Pico.vsram));
|
|
||||||
memcpy(&Pico.video, &tmp_pv, sizeof(Pico.video));
|
|
||||||
free(tmp_vram);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_savestate_menu(int menu_sel, int is_loading)
|
static void draw_savestate_menu(int menu_sel, int is_loading)
|
||||||
|
@ -1105,6 +1093,7 @@ static int menu_loop_savestate(int is_loading)
|
||||||
static int menu_sel = 10;
|
static int menu_sel = 10;
|
||||||
int menu_sel_max = 10;
|
int menu_sel_max = 10;
|
||||||
unsigned long inp = 0;
|
unsigned long inp = 0;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
state_check_slots();
|
state_check_slots();
|
||||||
|
|
||||||
|
@ -1134,15 +1123,18 @@ static int menu_loop_savestate(int is_loading)
|
||||||
state_slot = menu_sel;
|
state_slot = menu_sel;
|
||||||
if (emu_save_load_game(is_loading, 0)) {
|
if (emu_save_load_game(is_loading, 0)) {
|
||||||
me_update_msg(is_loading ? "Load failed" : "Save failed");
|
me_update_msg(is_loading ? "Load failed" : "Save failed");
|
||||||
return 0;
|
break;
|
||||||
}
|
}
|
||||||
return 1;
|
ret = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
break;
|
||||||
}
|
}
|
||||||
if (inp & PBTN_MBACK)
|
if (inp & PBTN_MBACK)
|
||||||
return 0;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------- key config --------------
|
// -------------- key config --------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue