Access SRAM with libnds?

NotImpLife

Member
OP
Newcomer
Joined
Mar 9, 2021
Messages
8
Trophies
0
Age
21
Website
github.com
XP
56
Country
Romania
I was writing some homebrew game and once had the need to save the game progress and I wonder how can I do that in the way commercial games do. I mean, in order to make my game run fine on both hardware and emulators, I want to save 'directly to the card' instead of using the SD card. (this translates to having a "*.sav" file created by the emulator)

I learned that libnds has a predefined SRAM address and tried to follow the steps from the double.nz tutorial to access it, but I didn't manage to make it work. Then I tried the indications in this post which suggest using fatInitDefault(), but as excpected I received the "Failed to initialize FAT driver" error.

Last but not least, I tried the examples\nds\card\eeprom demo which gave me the following result: EEPROM: Type: -1 Size: 0.

I came to the conclusion that (correct me if I'm wrong) the NDS header (or any part of the file) must be configured in order to support SRAM, but I have no idea what or how could I achieve that. Can ndstool do the job or I need to find/write another tool that enables SRAM for my DS game?
 

ghjfdtg

Well-Known Member
Member
Joined
Jul 13, 2014
Messages
843
Trophies
0
XP
1,949
Country
You probably have no choice other than creating a file on the flashcart microSD. How it usually works is the flashcart kernel patches the game according to a database of save types or it tries to guess the save type based on code. The patch makes the game write the savegame directly to pre-allocated microSD sectors through the flashcart's DLDI. Or in other words DS flashcarts don't even support real EEPROM/flash savegames.
 

NotImpLife

Member
OP
Newcomer
Joined
Mar 9, 2021
Messages
8
Trophies
0
Age
21
Website
github.com
XP
56
Country
Romania
Is this also available for emulators? Also, couldn't we 'trick' the kernel into recognizing the homebrew as a well-known ROM (e.g Zelda Spirit Tracks) and make use of its saving system?
 
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Well he was a boy....