576 Commits

Author SHA1 Message Date
d0k3
e446bdbfa5 Update FatFS R0.13c -> R0.14 2020-01-02 21:08:44 +01:00
aspargas2
7729605f9a fix #563 2020-01-02 21:07:22 +01:00
d0k3
479fed35ef Further improvements to GBA VC save injection
... taking over @TurdPooChargers proposal.
2020-01-02 21:07:21 +01:00
d0k3
23a7ea7fd3 Beautified the GBA VC SD save handling code 2020-01-02 21:07:03 +01:00
d0k3
da412226be Fix #562 2020-01-02 21:07:03 +01:00
d0k3
cfae228bcf Disarm anti savegame restore on CTRtransfer 2019-10-28 22:31:21 +01:00
TurdPooCharger
a145e8d4a9 Add handling for SD GBA VC .sav CMAC.
When identifying a selected `00000001.sav`, cmac type testing is first attempted for 3DS saves with the **DISA** format. If a 3DS save data is not detected, the search continues at expected offsets for gba vc bottom slots in increasingly larger save sizes. For the GBA VC saves, this only calculates and corrects whichever of the two slots is newer or has the higher counter. There are five additional **CMAC_AGBSAVE_** types to differentiate the different gba save sizes. If a bottom slot was found but determined to be older based on comparing the counter values, the search defaults to **CMAC_AGBSAVE_SD**.

For the save counters, there are two scenarios where the value `00` is considered bigger than `FF` depending which slot has what value. If clarification is required, I will post a diagram at [issue #494](https://github.com/d0k3/GodMode9/issues/494) explaining what is meant by `00` bigger than `FF`.

Please make corrections and improvements to the coding as you see fit in your review. I am not well versed or efficient in the C/C++ programming language.
2019-10-28 21:47:43 +01:00
Wolfvak
499e301b7b - fix #555
- remove useless free(NULL) check
2019-10-28 14:16:55 -03:00
d0k3
624ac571e4 Improve GBA VC save injection
... see #548
2019-10-28 14:16:55 -03:00
d0k3
1889f4fd57 Simplify fsdrive code 2019-10-28 14:16:55 -03:00
d0k3
f184ad5701 Fix #554 2019-10-28 14:16:55 -03:00
d0k3
cfe535f20b Fix #551 2019-10-28 14:16:55 -03:00
Wolfvak
cf7fa9e401 Fix #549 2019-10-28 14:16:55 -03:00
Bálint Kovács
2e463c6b84 Change timeout on CardSPIWaitWriteEnd (#557)
Allows long waits for erase on things like Art Academy, but fails faster
elsewhere. In particular initialization fails almost instantly.
2019-10-26 09:12:18 -03:00
d0k3
2b05453685 Increase splash duration
Partial fix for #550
2019-10-20 22:57:36 +02:00
d0k3
ae583300e6 Don't show the JEDECID file on carts that have none 2019-10-17 19:51:05 +02:00
d0k3
9e72c098b9 Make gamecart handling a little less annoying 2019-10-15 23:08:06 +02:00
d0k3
c847618048 Some minor cleanup 2019-10-14 23:48:15 +02:00
d0k3
422e54dca4 FIRMInstaller: Remove crypto check
... this interfered with installation to corrupted partitions and is no more required anyways.
2019-10-14 22:18:00 +02:00
Wolfvak
0f42426115 Fix unaligned crypto buffers 2019-10-14 13:11:23 -03:00
d0k3
f24db1442e Fix #543 2019-10-12 17:14:16 +02:00
d0k3
0ec73520e6 Rewrote the dir/file/drive info dialogue 2019-10-12 17:10:33 +02:00
Balint Kovacs
c1b04d85d4 Fix jedecid_and_sreg.bin offset reads 2019-10-11 16:24:08 +02:00
Balint Kovacs
2f24f37e7b Temporarily disable IR carts
And massively simplify chip detection
2019-10-11 16:24:08 +02:00
Balint Kovacs
c51d8a7191 Fix Art Academy save writing
Apparently, at least in my copy, the flash chip has a chance to fail a
PP command, and just never complete it. So we just try again.
2019-10-11 16:24:08 +02:00
Balint Kovacs
0308dfdebc Get rid of card_eeprom.c for real
Rebase brought it back
2019-10-11 16:24:08 +02:00
Balint Kovacs
f624850465 Handle errors when reading JEDEC ID vfile 2019-10-11 16:24:08 +02:00
Balint Kovacs
aea79aa634 Cut back on card definitions
Saves 400 - 440 bytes of .data
2019-10-11 16:24:08 +02:00
Balint Kovacs
bef427dfdb Code formatting for card_spi.c 2019-10-11 16:24:08 +02:00
Balint Kovacs
84d5f800a9 Get rid of card_eeprom.c, move spi.c to card_spi.c
It was bugging me that there was two spi.c's
2019-10-11 16:24:08 +02:00
Balint Kovacs
d2f596e7a3 Merge ARM11 spi and ARM9 spicard drivers
Also centralize device IDs into SPI.h
2019-10-11 16:24:08 +02:00
Balint Kovacs
48d8c48d12 Completely refactor SPI.h, write CTR flash
Also (hopefully?) write Art Academy, and also implement sector-based
write on Sanyo 256K chips.
2019-10-11 16:24:08 +02:00
Balint Kovacs
004341e1ef Add a little utility to test gamecard flash chips 2019-10-11 16:24:08 +02:00
Balint Kovacs
fa741b265b Write support for NTR saves
Why does this work? We are writing flash memories without erasing them,
and writing pages without regard to alignment. Yet it works?
2019-10-11 16:24:08 +02:00
Balint Kovacs
38d9a23427 Minor cleanup of gamecart.c 2019-10-11 16:24:07 +02:00
Balint Kovacs
7b0a101f13 Add read support for CTR cartridge saves
I have done nothing, however, to decrypt them. There is also no write
support.
2019-10-11 16:24:07 +02:00
Balint Kovacs
f60a4c1f63 Add a vfile to show the JEDEC id for the inserted cart
This is meant to replace the Prompt I was using previously.
Fun fact: WarioWare DIY seems to have *something* on the SPI bus, as it
returns an ID of 0x000001 consistently. Or am I just glitching the
parallel flash? Or did I get a fake?
2019-10-11 16:24:07 +02:00
Balint Kovacs
fd48c95deb Add a timeout to SPIWaitWriteEnd
Solves the WarioWare issue
2019-10-11 16:24:07 +02:00
Balint Kovacs
556c75c337 Fix many bugs by simplifying SPICARD init
* Fixed card reading (I didn't notice I broke it)
* Fixed cart swapping
* Still unsupported: CTR carts
* Still hangs if cart has no SPI flash (see WarioWare DIY)

The initialization code was simplified to only enable the SPICARD
interface, which assumes the *TRCARD interface has been initialized
beforehand.
To keep things simple, I just wrapped SPIWriteRead with SPICARD_Init and
SPICARD_deinit (which does the exact opposite)
2019-10-11 16:24:07 +02:00
Balint Kovacs
ac4ec6ee90 spicard.h: use void* pointers
First initialized cart reads correctly now, and cardswap just hangs.
2019-10-11 16:24:07 +02:00
Balint Kovacs
2ceafc545b First viable(-ish) prototype
For some reason (messed up memory access?) the first two time I read the
status register, I get garbage.

Also:
* Reinserting card breaks SPI (everything reads 0xff
* No support for CTR carts for now
2019-10-11 16:24:07 +02:00
d0k3
a3cc272e63 Try to fix the infloop
Debug output (revert this later)
2019-10-11 16:24:07 +02:00
d0k3
01bc082ca0 Initial support of cartridge savegame reads 2019-10-11 16:24:07 +02:00
Wolfvak
beb2a881cd fix compilation warning due to ternary operator results having differing signedness 2019-10-09 22:31:09 -03:00
d0k3
2372340e6d Updated touchscreen playground 2019-10-06 22:28:57 +02:00
d0k3
392b59976b Got rid of the Testing menu
... (hint) also hiding a secret here
2019-10-06 14:02:05 +02:00
d0k3
00c0dac479 Fix notification LED color 2019-10-05 20:00:14 +02:00
d0k3
5799d99c4c Fix installing FIRMs 2019-10-04 18:26:08 +02:00
d0k3
760052f20d Fix #541 2019-10-03 17:04:35 -03:00
d0k3
e7948d9a2f Fix entering the boot menu in bootloader 2019-10-03 17:04:35 -03:00