Author Topic: Loading savestate triggers Guru Meditation #C0000005.012016F5 error  (Read 4450 times)

Offline ggaclassics

  • New Member
  • *
  • Posts: 9
  • Karma: +0/-0
I have this old savestate which was created by FBA v0.2.96.74 (ANSI version) and that I want to load into the newest version of FBA (in my case v0.2.97.38).

I have modified the insides of this savestate to match the recent file specification of a savestate like so :

(starting from offset 0)
At offset 0x0000000C (after 12 bytes) : 04 bytes : Version of FBA that this file was saved from
At offset 0x00000010 (after 16 bytes) : 04 bytes : Min version of FBA that NV data will work with
At offset 0x00000014 (after 20 bytes) : 04 bytes : Min version of FBA that All data will work with

Now when I try to load the modified savestate into FBA, it gives me an error of Guru Meditation #C0000005.012016F5 before it crashes. Below is the log of that error, the old savestate file, and the modified savestate file.

This also happens when I try it in a slightly older version of FBA like v0.2.97.xx.
« Last Edit: July 06, 2016, 07:25:36 PM by _Shepherd »

Offline dink

  • Administrator
  • *****
  • Posts: 5014
  • Karma: +449/-1
  • pie? I nearly bought one!
Re: Loading savestate triggers Guru Meditation #C0000005.012016F5 error
« Reply #1 on: July 06, 2016, 07:34:29 PM »
there's no way savestates will work from the old fba with the new without severe and hardcore re-organization of the data.

Offline ggaclassics

  • New Member
  • *
  • Posts: 9
  • Karma: +0/-0
Re: Loading savestate triggers Guru Meditation #C0000005.012016F5 error
« Reply #2 on: July 06, 2016, 08:07:28 PM »
But everything else is the exact same!

There's a header in the start consisting of two identifier strings, then there is a "size of" field, followed by some meta-data about FBA, another "size of" field, a 32 byte ASCII string, a frame count field, a 12 bytes block of 0s, and finally, the compressed state of machine at save moment. The last chunk varies in size according to numerous factors (entropy, bios settings, in-game state...etc) but will always be the same if these factors are the same as well, after all, it's using the same zlib algorithm for its compression.

I deduced this by comparing savestates of the same game at the same in-game moment
of different versions of FBA. Now, you might ask how could I recreate the savestates when games run at 60fps. Simple, use the same bios, pause game at start, advance using shot factory to a very specific frame that you can easily identify, then make your save.

Compare the savestates and the only fields that will differ are the ones I described in the original post. At least this is how I see it.

Offline dink

  • Administrator
  • *****
  • Posts: 5014
  • Karma: +449/-1
  • pie? I nearly bought one!
Re: Loading savestate triggers Guru Meditation #C0000005.012016F5 error
« Reply #3 on: July 06, 2016, 08:36:14 PM »
the cpu cores and sound cores have been radically altered over the past several versions and the savestate formats for each have changed a bit, this is why it won't work. fyi: each core has its own savestate settings
« Last Edit: July 06, 2016, 08:37:30 PM by dink »