Homebrew Official [Release] GodMode9 - All Access File Browser for the 3DS

  • Thread starter d0k3
  • Start date
  • Views 305,411
  • Replies 1,143
  • Likes 105

deSSy2724

Well-Known Member
Member
Joined
Sep 11, 2015
Messages
452
Trophies
0
Age
33
XP
1,168
Country
Germany
I want to dump some updates and dlcs but godmode9 1.7.1 only lists the title IDs and not the actual title name (human readable) but on some tutorials the name is next to the title ID?
 

noctis90210

Well-Known Member
Member
Joined
Dec 24, 2013
Messages
969
Trophies
0
Age
36
XP
1,625
Country
@d0k3 hello, just want to ask if aeskeydb, enctitlekeys and seeddb is still mandatory on gm9/support/ folder?

If i delete those 3 files, are there any function of gm9 that will cease to work?

Thanks and have a nice day...
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
aeskeydb is not required by most. Just for some obscure special functions and if you want to use GM9 as bootloader (but not even then it's actually required). The other two, well, they're needed to decrypt certain CIAs and .3DS files. If that's important to you, leave it in.
 

wrsg

Well-Known Member
Member
Joined
Feb 19, 2012
Messages
105
Trophies
1
XP
525
Country
United States
Should gm9 1.8.0 (the stable branch) work OK on the latest OFW? I'm having trouble accessing the usual per-file options
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
GodMode9 v1.9.0 was just released. Get it at the usual place!
If you followed the behind the scenes progress you knew: GodMode9 development may be a bit slower than what you're used to, but it's everything but dead. Thanks to the help of numerous contributors and the tireless work of @Wolfvak (who actually did most of the hard lifting for this release), we present you a major new release today, including several long wanted features. This is new:

  • [new] Touchscreen support, used for keyboard (manual calibration is possible, but not required)
  • [new] LED support, signaling finished operations when the shell is closed
  • [new] Detecting shell opened/closed, turn off display to save battery
  • [new] Brightness configuration (in HOME menu)
  • [new] Support for mounting, reading and writing DISA and DIFF (.db) files (thanks @aspargas2!)
  • [new] Allow setting attributes for directories
  • [new] Read and write support for gamecart saves (thanks @dratini0)
  • [improved] Completely rewritten ARM11 core
  • [improved] Countless under-the-hood improvements thanks to @Wolfvak
  • [fixed] A metric fuckton of bugfixes (quoting @Wolfvak here)
  • [scripting] Allow game icons as preview
Did you know?
A lot (= almost all?) of the common user questions are already answered by the accompanying Readme.md file. If your question is about setting up GodMode9, for example, it may wise to give the Quick Setup Guide a quick peek. By the way: Unless you use GodMode9 as a bootloader, you don't actually need the aeskeydb.bin or any other additional support files (you may want the seeddb.bin and encTitleKeys.bin, though).

"I get a black screen when booting GodMode9"
That was the most common issue with the previous version (v1.8.0), and it only happened when chainloading GodMode9 via the Luma 3DS chainloader (maybe also only on N3DS, we don't know). Both the Luma 3DS and GodMode9 development teams tried to stop this from happening. You actually may not see this happen at all in this release, but we can't guarantee it. If you turn out to be one of the unlucky ones, there's a tried and true solution: Switch to fastboot3DS and let it handle that for you. The installation is quick and painless via OpenFirmInstaller. After the transition, everything will work exactly the way you were used to (you may hold HOME at boot and delve into fastboot3DS customization if you want to).

Credits
Admittably, writing that section has become harder and harder with every release, simply because more and more people got involved and helped with stuff like development, bug reports, feature requests, file hosting, channel moderation, etc... So, here's a big thank you to everyone who was involved with GodMode9 over the years. You all helped make this piece of software possible. As for this release, I can't thank my codeveloper @Wolfvak enough - he wrote almost all of the new features you see above. I also thank @aspargas2 for adding DISA/DIFF write support and @dratini0 for finally giving us the long awaited gamecart save reader/writer support. Among those reporting bugs, @TurdPooCharger and @Validusername16 stood out by doing thorough testing and sending in helpful and detailed bug reports - thank you, it's highly appreciated!
 

nl255

Well-Known Member
Member
Joined
Apr 9, 2004
Messages
2,999
Trophies
1
XP
2,761
Country
GodMode9 v1.9.0 was just released. Get it at the usual place!
If you followed the behind the scenes progress you knew: GodMode9 development may be a bit slower than what you're used to, but it's everything but dead. Thanks to the help of numerous contributors and the tireless work of @Wolfvak (who actually did most of the hard lifting for this release), we present you a major new release today, including several long wanted features. This is new:

  • [new] Touchscreen support, used for keyboard (manual calibration is possible, but not required)
  • [new] LED support, signaling finished operations when the shell is closed
  • [new] Detecting shell opened/closed, turn off display to save battery
  • [new] Brightness configuration (in HOME menu)
  • [new] Support for mounting, reading and writing DISA and DIFF (.db) files (thanks @aspargas2!)
  • [new] Allow setting attributes for directories
  • [new] Read and write support for gamecart saves (thanks @dratini0)
  • [improved] Completely rewritten ARM11 core
  • [improved] Countless under-the-hood improvements thanks to @Wolfvak
  • [fixed] A metric fuckton of bugfixes (quoting @Wolfvak here)
  • [scripting] Allow game icons as preview
Did you know?
A lot (= almost all?) of the common user questions are already answered by the accompanying Readme.md file. If your question is about setting up GodMode9, for example, it may wise to give the Quick Setup Guide a quick peek. By the way: Unless you use GodMode9 as a bootloader, you don't actually need the aeskeydb.bin or any other additional support files (you may want the seeddb.bin and encTitleKeys.bin, though).

"I get a black screen when booting GodMode9"
That was the most common issue with the previous version (v1.8.0), and it only happened when chainloading GodMode9 via the Luma 3DS chainloader (maybe also only on N3DS, we don't know). Both the Luma 3DS and GodMode9 development teams tried to stop this from happening. You actually may not see this happen at all in this release, but we can't guarantee it. If you turn out to be one of the unlucky ones, there's a tried and true solution: Switch to fastboot3DS and let it handle that for you. The installation is quick and painless via OpenFirmInstaller. After the transition, everything will work exactly the way you were used to (you may hold HOME at boot and delve into fastboot3DS customization if you want to).

Credits
Admittably, writing that section has become harder and harder with every release, simply because more and more people got involved and helped with stuff like development, bug reports, feature requests, file hosting, channel moderation, etc... So, here's a big thank you to everyone who was involved with GodMode9 over the years. You all helped make this piece of software possible. As for this release, I can't thank my codeveloper @Wolfvak enough - he wrote almost all of the new features you see above. I also thank @aspargas2 for adding DISA/DIFF write support and @dratini0 for finally giving us the long awaited gamecart save reader/writer support. Among those reporting bugs, @TurdPooCharger and @Validusername16 stood out by doing thorough testing and sending in helpful and detailed bug reports - thank you, it's highly appreciated!

It looks like your nightly/hourly site is broken as the last godmode9 nightly/hourly build is from October 2019 (20191028220838).
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
GodMode9 v1.9.1 was just released. Get it at the usual place.

Time for a new GodMode9 release. The last major release, v1.9.0, was a pretty solid release to begin with, but as always there is room for improvement. This one focuses on bugfixes, fixing stuff that v1.9.0 did not do right. This is new:
  • [new] On verification, offer fixing for badly decrypted NCCH/NCSD
  • [improved] Much faster scrolling speeds in wordwrapped text view
  • [improved] Largely improved method of GBA VC save injection (thanks @TurdPooCharger)
  • [fixed] Fixed the .BPS code in scripting (thanks @Wolfvak)
  • [fixed] Fixed a crash in the DISA/DIFF handling code (thanks @aspargas2)
  • [fixed] Actually allow decrypting N3DS NATIVE_FIRM on O3DS
  • [fixed] Last search drive is back again
  • [fixed] Cart drive checking (don't show empty when it isn't
  • [fixed] Notification light handling
Did you know?
This marks the 40th release of GodMode9, with a whopping 1260 commits leading up to here. GodMode9 is now in it's fourth year of development and still going strong, thanks to all of my fellow developers, bug reporters and feature requesters.

Tsktsktsk
We've been seeing a lot of bug reports these days with people telling us they can't convert their NCSD (".3DS") files to CIA in GodMode9. It can be assumed that all of them got their badly decrypted .3DS files from some shady source. Shady source: please at least provide proper decrypted files. @citra-emu: maybe stop supporting these files or at least give a warning to users? We, for our part, now properly detect these files and offer fixing. To use the new fixer, just verify your files.

Credits
As always this wouldn't have been possible without some help. Thanks go to @Wolfvak, @aspargas2 and @TurdPooCharger for actively contributing to development. I also thank everyone submitting bug reports and feature requests. A special mention goes to @HIDE810 who finally pointed out that text viewer scrolling is awfully slow in some cases and needs some work. Thanks, all of you!
 

nl255

Well-Known Member
Member
Joined
Apr 9, 2004
Messages
2,999
Trophies
1
XP
2,761
Country
Can godmode9 install a .3ds format file without having to convert the entire thing to a .cia file first? Similar to how the cartinstall fork works except with .3ds files as well as physical carts.
 

Wolfvak

nyaa~
Member
Joined
Oct 25, 2015
Messages
918
Trophies
1
XP
3,386
Country
Uruguay
Can godmode9 install a .3ds format file without having to convert the entire thing to a .cia file first? Similar to how the cartinstall fork works except with .3ds files as well as physical carts.
CartInstall is technically a forked GM9 - aspargas could always rebase against the latest version and build a GM9 1.9.1 with the extra feature. Currently, GM9 itself can't do this.
 
  • Like
Reactions: DSoryu

c4388354

Well-Known Member
Member
Joined
Jan 23, 2015
Messages
142
Trophies
0
XP
622
Country
United States
When building a CIA file from a TMD (I am using the 'Standard' Option)
there seems to be some bytes of junk data right after the TmdContentChunk? section.

I am trying to get hash-matching CIA files from two different 3DS systems that have the exact same title and version of
that title installed. In the created CIA file. Offsets 0x3924 to 393F are always different, but the rest of the CIA files always match.

It appears to happen right after the 'TMD Content Chunks' part is written to the CIA file?

Screenshot below shows the difference between the two CIA files dumped from two different systems.
gLBVbtR.jpg


From 3DBrew:
Code:
Content chunk records
There is one of these for each content contained in this title.
(Determined by "Content Count" in the TMD Header)

Offset	Size	Description
0x00	4	Content id
0x04	2	Content index
0x06	2	Content type
0x08	8	Content size
0x10	0x20	SHA-256 hash

in screenshot above, offset 0x38F4 is the Content ID (00000002) then its the index (0001) and type (0000) then size (00000000 0032A000)
then the SHA256 hash of the Content File (A8674C74 E647DFF0 4018FD97 76E5767E 941FB87A BF1F895D DBAC44D8 31294280)
which then ends the 'tmd content records' section, the next section then aligns to 64 bytes? so it will start at offset 0x3940.

edit: in between those sections is where the junk/random data is.

at offset 0x3940, is the NCCH Signature? of the first content file, which is 0x100 bytes in size, then at offset 0x3A40 is the NCCH header of the first content file.

Possibly the memory being used to store the 'tmd content chunks' before its written to the CIA is not initialized to 00's causing random junk data to be included in the written CIA file?

Would be great if the resulting dumped CIA can be the exact the same hash everytime
it means a database of SHA-1 hashes could be made so users can verify that the CIA
they built from their 3DS is good (provided they bought the content from the eShop)
like you can currently do with gamecard dumps.

Its not a big issue (the created CIAs install perfect) but maybe this can get looked into sometime in the future?
 
Last edited by c4388354,
  • Like
Reactions: Quantumcat

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
@c4388354 - thanks a lot, that's a well described issue. Guess that's some encrypted blank space there. I can look into scrubbing it. Can you open an issue on GitHub? You may just add a link pointing to your post here.
 
  • Like
Reactions: c4388354

c4388354

Well-Known Member
Member
Joined
Jan 23, 2015
Messages
142
Trophies
0
XP
622
Country
United States
I don't have a github account (but might make one later)
I'm not a coder, I can sort read code and follow along and have a general idea
of what the code does, but don't have the knowledge to write code from scratch :(.

I may have found the reason for the junk data.


File: /arm9/source/game/cia.c
Line #19: u32 GetCiaInfo(CiaInfo* info, CiaHeader* header) {
https://github.com/d0k3/GodMode9/bl...2f2c4b190cf8739c68/arm9/source/game/cia.c#L19

This section builds the CIA header and puts it into a buffer.


File: /arm9/source/utils/gameutil.c
Line #253: GetCiaInfo(&info, &(stub->header));
https://github.com/d0k3/GodMode9/bl...d5fcf4b29df/arm9/source/utils/gameutil.c#L253

This line calls the build CIA header above and puts into a 'stub' buffer?


File: /arm9/source/utils/gameutil.c
Line #259: if ((fvx_write(&file, stub, info.offset_content, &btw) != FR_OK) || (btw != info.offset_content)) {
https://github.com/d0k3/GodMode9/bl...d5fcf4b29df/arm9/source/utils/gameutil.c#L259

The 'Info.offset_content' variable contains the offset of where the content files start (the NCCH)
Its writing the 'stub' buffer to the CIA file, but using the size of the "info.offset_content" variable.
The junk data is just the contents of memory that is after the 'stub' buffer?


PS: The junk Bytes in the right part of the image i posted above is
00 01 00 04 2E A6 6C 66 etc
its the first couple of bytes from the "TMD Certificate Chain", which is what lead me
to think that data past the end of a buffer is being written to the CIA as decrypting a
CIA built from CTRCDNFetch didn't leave any junk data so it didn't seem to be a crypto issue.
 
Last edited by c4388354,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @salazarcosplay, Morning