Google-Code-Fork / snes9x-gtk

Automatically exported from code.google.com/p/snes9x-gtk
0 stars 0 forks source link

Snes9x crashes when loading a save state on amd64 #1

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
No more information about this issue as of yet.

Original issue reported on code.google.com by bear...@gmail.com on 12 Feb 2009 at 10:07

GoogleCodeExporter commented 9 years ago
The first is the save state that crashes (Yoshi's Island European version)
The second file is created when the save state doesn't load (but it's not always
created).

- Ezekiel000

Original comment by nights...@gmail.com on 19 Feb 2009 at 5:49

Attachments:

GoogleCodeExporter commented 9 years ago
I've been able to produce a crash with this (on x86). It looks like the SuperFX
registers are being clobbered, which is probably a fault of the save state. I'll
first have to see if gocha's snapshot changes affect the SuperFX, and, if not, 
figure
out which registers aren't being saved properly. 

Ezekiel000, have you run NSRT on the rom? I know the PAL dumps of Yoshi's 
Island were
the first to be widely available, and many of them were bad copies.

Original comment by bear...@gmail.com on 19 Feb 2009 at 6:38

GoogleCodeExporter commented 9 years ago
An addendum: the crash on x86 was produced using the C++ SuperFX core, not the 
ZSNES
asm one. I can't produce the crash using save states that I create, which leads 
me to
believe that it is the fault of either the ROM, or the SuperFX snapshot code not
being 64-bit compatible.

Original comment by bear...@gmail.com on 19 Feb 2009 at 7:03

GoogleCodeExporter commented 9 years ago
---------------------Internal ROM Info----------------------
       File: Super Mario World 2 - Yoshi's Island.sfc
       Name: YOSHI'S ISLAND           Company: Nintendo
     Header: None                        Bank: LoROM
Interleaved: None                        SRAM: 256 Kb
       Type: Super FX2 + Batt             ROM: 16 Mb
    Country: Euro/Asia/Oceania          Video: PAL
  ROM Speed: 200ns (SlowROM)         Revision: 1.0
   Checksum: Good 0xE10B            Game Code: YI  
---------------------------Hashes---------------------------
      CRC32: 857980B2
--------------------------Database--------------------------
       Name: Super Mario World 2 - Yoshi's Island
    Country: Europe                  Revision: 1.0
     Port 1: Gamepad                   Port 2: Gamepad
    Genre 1: Platform                 Genre 2: Side Scrolling

Is that ok?

Original comment by nights...@gmail.com on 19 Feb 2009 at 8:31

GoogleCodeExporter commented 9 years ago
Your ROM looks fine. That means the bug is likely in the snapshot creation 
process.

Original comment by bear...@gmail.com on 20 Feb 2009 at 12:02

GoogleCodeExporter commented 9 years ago
The crash was produced using the ZSNES asm core.

---------------------Internal ROM Info----------------------
       File: Super Mario World 2 - Yoshi's Island (USA) (Rev A).sfc
       Name: YOSHI'S ISLAND           Company: Nintendo
     Header: None                        Bank: LoROM
Interleaved: None                        SRAM: 256 Kb
       Type: Super FX2 + Batt             ROM: 16 Mb
    Country: USA                        Video: NTSC
  ROM Speed: 200ns (SlowROM)         Revision: 1.1
   Checksum: Good 0x5E32            Game Code: YI  
---------------------------Hashes---------------------------
      CRC32: CF98DDAA
--------------------------Database--------------------------
       Name: Super Mario World 2 - Yoshi's Island
    Country: USA                     Revision: 1.1
     Port 1: Gamepad                   Port 2: Gamepad
    Genre 1: Platform                 Genre 2: Side Scrolling

Original comment by slack4li...@gmail.com on 20 Feb 2009 at 1:23

Attachments:

GoogleCodeExporter commented 9 years ago
Are you sure you're running the ZSNES core? It won't build or run on anything 
but
32bit x86 (even if you try to compile it in, it'll be silently excluded). Your 
save
state looks like it has C++ SuperFX registers saved in it, meaning it was 
created
with the C++ core. If you're saying it's crashing on an x86, with the save 
created on
x86, then let me know.

For Ezekiel000's save state crash, I've isolated the bug and produced a hack 
that
lets it run, but a real fix probably needs a save state format change. The 
current
Snes9x snapshot code makes a int32<-->pointer assumption, and that code is only 
used
for storing several SFX offsets. I could change things up and only store the 
offset,
which would be small enough to fit in an integer, but it would break 
compatibility. 

Original comment by bear...@gmail.com on 20 Feb 2009 at 2:07

GoogleCodeExporter commented 9 years ago
Sorry, I assumed (you know what that means) that since I forced 
--with-assembler that
it was using the asm core.  I'll be sure to pay closer attention from now on.

Original comment by slack4li...@gmail.com on 20 Feb 2009 at 2:59

GoogleCodeExporter commented 9 years ago
I've committed a hack to SVN that "fixes" the issue by sanity checking a couple 
of
SuperFX pointers when loading a save state. Slack, would you mind testing to 
see if
it still crashes?

Original comment by bear...@gmail.com on 20 Feb 2009 at 4:53

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
So far everything seems to be working, I've saved up to 1-3 without a crash.

Original comment by slack4li...@gmail.com on 20 Feb 2009 at 6:49

GoogleCodeExporter commented 9 years ago

Original comment by bear...@gmail.com on 3 Jul 2009 at 12:55