remove hle savestate restriction
authornotaz <notasas@gmail.com>
Fri, 14 Jan 2011 10:31:23 +0000 (12:31 +0200)
committernotaz <notasas@gmail.com>
Sat, 15 Jan 2011 22:03:53 +0000 (00:03 +0200)
we have enough data to load any savestate

frontend/menu.c
libpcsxcore/misc.c

index b14f195..05f5481 100644 (file)
@@ -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);
 
index 4a70b2f..1fa763f 100644 (file)
@@ -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;