I recently got a Supercard DS One, and was trying to get ScummVM 0.9.1a to work on my DS, but it seems to produce corrupt savegames, and is later unable to load them (crash with "illegal glob type 0").
I'm using the correct DLDI driver, and it is able to write on the SD card (the ini file where the settings are kept works, the saves exist on the card). What's more, it only happens for Scumm games with scummvmA (I've tried Loom, MI2, FOA). BASS, FOTAQ (with scummvmB) and Simon 1 (with ScummvmC) save and load fine.
The problem is related to saving, not loading, since I can put savegames made on the Win32 version of scummvm on the SD card and they load fine on the DS, whereas the savegames made on the DS generate the same crash when I tried to load them from Windows (that's only for the savegames made with scummvmA, obviously). I've, obviously, tried to re-patch scummvmA with the DLDI driver, to no avail.
Any idea? ScummVM on the DS is a great project, and I'd love to get the Scumm games to work on it.
Corrupt saves (Supercard DS One)
Moderator: ScummVM Team
-
- Posts: 2
- Joined: Sat Apr 21, 2007 11:30 am
The Ninjapass X9 driver doesn't have finished write support, according to this page: http://home.comcast.net/~c1284j/x9sd.html
As for the Supercard DS One, it has a bug when supporting unaligned address which causes the corrupted save. This is a problem with the DLDI and needs to be fixed by the author of the driver.
As for the Supercard DS One, it has a bug when supporting unaligned address which causes the corrupted save. This is a problem with the DLDI and needs to be fixed by the author of the driver.
-
- Posts: 2
- Joined: Sat Apr 21, 2007 11:30 am
Your information is out of date, the X9 has a definitively complete DLDI driver, wich supports read AND write perfectly, on all micro SD. This driver is made by the official ninjapass programmers.
The dldi driver, with sources, is avalaible on the home page of their website : http://ninjapass.com/
And why are the saves of scummvm-b ok, while the scummvm-a saves are bad ? There is a logical reason ?
The dldi driver, with sources, is avalaible on the home page of their website : http://ninjapass.com/
And why are the saves of scummvm-b ok, while the scummvm-a saves are bad ? There is a logical reason ?
I looked at the scDS1 dldi source code too in order to try to fix the problem by myself, but I'm afraid I don't have the knowledge enough.agentq wrote:I've looked at the source code on the site in your post and the X9 driver has the same unaligned data bug as the SCSD one. They need to fix this before scummvm will run properly.
The reason scummvm-b works most of the time is that those games tend not to use unaligned data writes.
Where is exactly the problem and how i could fix it?
You've probably worked this out by now by now, but the problem lies with the CPU requiring certain alignment for data. 16-bit data requires 2 byte alignment (the address must be even), and 32-bit data requires 4-byte alignment.
The quickest way to get over this problem is to copy the data into a global static buffer inside the DLDI. You will only need 512 bytes if you only write a sector at a time, but this will be slower than writing the whole block at once. But a slow write speed is probably not going to worry anyone.
If you've fixed the DLDI, you should definately contact chishm and get him to update his page here: http://chishm.drunkencoders.com/index.html
The quickest way to get over this problem is to copy the data into a global static buffer inside the DLDI. You will only need 512 bytes if you only write a sector at a time, but this will be slower than writing the whole block at once. But a slow write speed is probably not going to worry anyone.
If you've fixed the DLDI, you should definately contact chishm and get him to update his page here: http://chishm.drunkencoders.com/index.html