Views: 1,526,011 Main | Rules/FAQ | Memberlist | Active users | Last posts | Calendar | Stats | Online users | Search 07-20-24 08:00 PM

Main - Posts by TuxSH

Posted on 12-27-15 08:33 PM, in Reading/Writing NDS save files through ARCHIVE_CARD_SPIFS Link | #845
I'm currently developping an homebrew for dumping/writing back save files from/to NDS cartridges (which needs to be in the CIA format, as it requires some additionnal permissions).

What I've been able to do:
- Dump a save file of a "normal" NDS cartridge (Pokémon Platinum, 512KB) successfully

The issues I'm encountering:
- Get the save file size in a reliable way. According to FSFILE_GetSize, cardspi:/ is ~256 MB iirc)
- Write a modified save file back
- Read the save file from a cartridge with an infrared chip (e.g Pokémon HG)

Does anybody know how to solve these issues?

Posted on 01-20-16 12:00 PM, in Reading NDS save files (pxi:dev 0x000D0688) Link | #891
PokéTransporter uses pxi:dev 0x000D0688 to read/write to NDS save files.

However this function have no less than 33 args, and I can't find its backend implementation (which should be more or less documented by savegame-manager).

I know I can just RE PokéTransporter, but I'd prefer to know how this function exactly works.

Any help or advice would be greatly appreciated ;).

Posted on 01-21-16 11:48 AM, in Reading NDS save files (pxi:dev 0x000D0688) (rev. 3 of 01-21-16 09:31 PM) Link | #895
Wow, this is just amazing :D.

This will definitely help when I'm on my computer this evening.

Edit: Started looking at the function. One argument seems to be missing.

Posted on 01-22-16 09:56 PM, in Reading NDS save files (pxi:dev 0x000D0688) (rev. 2 of 01-22-16 10:34 PM) Link | #897
Yeah, sorry, it just seems that the function sending the sync. request has unused parameters.

EDIT: no, it's just ida having problems with the calling conventions, since I've labeled each of its stack variables/params.

Posted on 01-28-16 09:24 PM, in Reading NDS save files (pxi:dev 0x000D0688) (rev. 2 of 01-29-16 08:14 PM) Link | #922
I've managed to get things working (https://github.com/TuxSH/TWLSaveTool/blob/master/source/SPI.cpp) , except for a few things:

* Chips whose JEDEC ID is 0x204013 seem to reject every single PW or SE command, even though WEL=1. This chip is sometimes used for example for Zelda:PH, Pokémon Black2 (maybe the chip used is not the same for everyone, but I doubt it). In fact, even after WEL to 1, it reverts back to 0.

* 512-byte EEPROM chips seem to get stuck in an endless loop waiting for WEL to be 1.

Any idea why?

Posted on 02-13-16 10:31 PM, in SPI Service? Link | #943
Done some RE of the SPI, I know what each function does, but I don't know which devices are controlled through that service. Probably the microphone, wifi firmware, and the NVRAM (DS profile settings), most likely.

Game card SPI = pxi:dev SPIMultiWriteRead (see TWLSaveTool's source code) with "Use card SPI" arm9 flag.

Main - Posts by TuxSH

Page rendered in 0.017 seconds. (2048KB of memory used)
MySQL - queries: 22, rows: 71/71, time: 0.008 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.