d0k3 / GodMode9

GodMode9 Explorer - A full access file browser for the Nintendo 3DS console :godmode:
GNU General Public License v3.0
2.15k stars 194 forks source link

Add options to override cart ROM heuristics #644

Closed mariomadproductions closed 3 years ago

mariomadproductions commented 4 years ago

For dumping prototype carts, I think it would be useful if GodMode9 could be forced to treat the cart as if the ROM size and ROM were different to what the ROM header reports. i.e. an option (when opening the GAMECART folder?) that allows you do choose the size of the ROM and ROM type (DS, DSi, DSi-enhanced(?, might be the same as DSi) or 3DS). I've seen reports of problems dumping ds/i prototypes due to misdetection of ROM type (although I can't remember from who exactly, unfortunately), and misdetection of ROM size is a common problem with dumping prototype carts for any system.

GerbilSoft commented 4 years ago

I have an in-progress test branch locally that uses the 32-bit chip ID to determine the ROM size instead of the header.

See here: https://problemkaputt.de/gbatek.htm#dscartridgeprotocol 9000000000000000h (4) - 1st Get ROM Chip ID

The second byte indicates the ROM size.

I will note that I have a 1 Gbit (128 MB) NDS dev cart that is labeled as 1 Gbit, but both the ROM header and chip ID indicate that it's 64 MB. I suspect the writer software might be setting this value when flashing a 64 MB ROM. Manually forcing the ROM size to 128 MB results in an overdumped 64 MB ROM. (Same contents in the first and second halves of the 128 MB dump, though the Secure Area in the second half is incorrect.)

mariomadproductions commented 4 years ago

I guess if the cart id/rom chip id is a more reliable way to detect size, then it should be used. However I think it'd still be good to allow manual overrides, especially as if what you say is true, and ROM writers can set the value to something that doesn't match the actual ROM chip size.

d0k3 commented 3 years ago

@GerbilSoft - any chance this test branch will lead to a pull request?

@mariomadproductions - if it makes sense, I'll provide advanced users with a way of manually overriding this stuff. I will not, however, confuse all users with additional prompts.

mariomadproductions commented 3 years ago

I think its reasonable to hide the options from the file prompt (at least by default), as this functionality won't normally be needed.

GerbilSoft commented 3 years ago

See #645.

d0k3 commented 3 years ago

@mariomadproductions - can you compile and test that pull request? Maybe it will already fix that issue.

d0k3 commented 3 years ago

I already compiled it, here's the test build: https://f.secretalgorithm.com/SPO0o/godmode9-v1.9.2pre1-21-titleman-devcartdump.zip

mariomadproductions commented 3 years ago

I'm afraid don't have any dev carts of my own to test. I could check to see if there are any errors when the cart init process for all my retail (and two kiosk demo) DS/3DS carts, but I'm not sure if that would be useful.

d0k3 commented 3 years ago

Feature request possibly made obsolete by #645 . Can you check and close if this is correct @mariomadproductions ?

d0k3 commented 3 years ago

Made obsolete by #645 .