aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/menu.c10
-rw-r--r--libpcsxcore/misc.c8
2 files changed, 15 insertions, 3 deletions
diff --git a/frontend/menu.c b/frontend/menu.c
index b14f195..05f5481 100644
--- a/frontend/menu.c
+++ b/frontend/menu.c
@@ -123,8 +123,16 @@ static int emu_save_load_game(int load, int sram)
if (ret != 0)
return 0;
- if (load)
+ if (load) {
ret = LoadState(fname);
+
+ // reflect hle/bios mode from savestate
+ if (Config.HLE)
+ bios_sel = 0;
+ else if (bios_sel == 0 && bioses[1] != NULL)
+ // XXX: maybe find the right bios instead
+ bios_sel = 1;
+ }
else
ret = SaveState(fname);
diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c
index 4a70b2f..1fa763f 100644
--- a/libpcsxcore/misc.c
+++ b/libpcsxcore/misc.c
@@ -534,10 +534,14 @@ int LoadState(const char *file) {
gzread(f, &version, sizeof(u32));
gzread(f, &hle, sizeof(boolean));
- if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion || hle != Config.HLE) {
+ if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion) {
gzclose(f);
return -1;
}
+ Config.HLE = hle;
+
+ if (Config.HLE)
+ psxBiosInit();
psxCpu->Reset();
gzseek(f, 128 * 96 * 3, SEEK_CUR);
@@ -590,7 +594,7 @@ int CheckState(const char *file) {
gzclose(f);
- if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion || hle != Config.HLE)
+ if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion)
return -1;
return 0;