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

  • Thread starter d0k3
  • Start date
  • Views 307,584
  • Replies 1,143
  • Likes 105

Larsenv

Dr. Wii, Ph.D
Member
Joined
Sep 28, 2013
Messages
870
Trophies
2
Website
larsenv.xyz
XP
3,283
Country
United States
Are you sure you've selected the right kind of file? Do you have correct support files? You may need a seedb.bin, and/or enc/decTitleKeys.bin to decypt stuff. Grab an aeskeydb.bin for good measure, too.

Yes, I have all of those.

@d0k3 Could you please help? I've read the README, and it says "Press A on the file you want decrypted". I did that, no option to decrypt it (the .app file with the data) shows up.
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
Yes, I have all of those.

@d0k3 Could you please help? I've read the README, and it says "Press A on the file you want decrypted". I did that, no option to decrypt it (the .app file with the data) shows up.
You need to provide more info if you want help. Did you rename the files? Not provide all files you downloaded? You need a .tmd or .cetk file, not only the content file. What is the file you want to decrypt called, and what else is in the folder?
 
  • Like
Reactions: SirNapkin1334

Kazuma77

Well-Known Member
Member
Joined
May 11, 2008
Messages
1,035
Trophies
1
XP
904
Country
United States
Normally, yes. But we can't be sure what version of tar $PATH points to. Even gnu-tar is wonky enough as is.

@Kazuma77 - I need your help again. With the last commit of my if-else branch, the if-else-goto handling should be ready to be merged into master. The code is also written in a way that will allow me to add 'for' and 'labelsel' to the existing system. Can you test it? It will go into master once you say it's ready, not anytime sooner.

Maybe that helps... here's a small testing script I did when reviewing the code:
Code:
# if-else-end-goto testing

@hello
echo "Hello World"

if ask "Do this again?"
    goto hello
else
    @forbidden
    echo "Canceled"
    if ask "Last chance, want to go back?"
        @more_forbidden
        goto hello
        @moremoreforbidden
    else
        if ask "Okay, want to shutdown then?"
            poweroff
        end
    end
    @moremoremore
end

@outside
goto -o forbidden
goto -o more_forbidden
goto -o moremoreforbidden
goto -o moremoremore

if ask "Goto outside?"
    goto outside
end

if ask "Skip bugs?"
    goto skipbugs
end

if lalala
    echo "We shouldn't be able to reach here"
else
    echo "Neither here"
end

echo "...and not here!"

@skipbugs
echo "End reached"

EDIT: I just now noticed how nicely .gm9 scripts are formatted by GBAtemp. As if it was made for it ^_^.

OK, I'm on it. Should have started two hours ago. I knew better. I had already seen Fox ruin "Rocky Horror" after all. One of the biggest punch lines in everyone's favorite holiday movie got pulled for political correctness, argh. No "Deck the Harrs" in A Christmas Story? They might as well have redone Caddy Shack without the pool scene.
 
Last edited by Kazuma77,

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
OK, I'm on it. Should have started two hours ago. I knew better. I had already seen Fox ruin "Rocky Horror" after all. One of the biggest punch lines in everyone's favorite holiday movie got pulled for political correctness, argh. No "Deck the Harrs" in A Christmas Story? They might as well have redone Caddy Shack without the pool scene.

Alright, thanks a lot! Planning to add elif after this commit makes it into master. labelsel is also in grasp.

And, maybe the recursive for can be a thing, too. A word of warning for that, though. There is basically no system in existance that can do dir recursion to an unlimited depth. It will be enough so that the limit is not reached on a normal system, though. Unsure what to do when that limit is hit (error message?).

Also,another idea I had - you disabled preview in your scripts, leaving the upper screen in the ugly "preview off" state. What about being able to customize the text there, or even display graphics from a PCX image instead? I'll still need to look into the possibilities (PCX may again mean a slowdown), but is that something you'd use?
 

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
Alright, thanks a lot! Planning to add elif after this commit makes it into master. labelsel is also in grasp.

And, maybe the recursive for can be a thing, too. A word of warning for that, though. There is basically no system in existance that can do dir recursion to an unlimited depth. It will be enough so that the limit is not reached on a normal system, though. Unsure what to do when that limit is hit (error message?).

Also,another idea I had - you disabled preview in your scripts, leaving the upper screen in the ugly "preview off" state. What about being able to customize the text there, or even display graphics from a PCX image instead? I'll still need to look into the possibilities (PCX may again mean a slowdown), but is that something you'd use?
If the preview was disabled, I'd like it to just show where you were in the filesystem, like in older GM9. (The only version I can think of is 2.7.0(or 2.7.3, can't remember which))
A small animation would be cool, like for his new settings script it could be a few cogs turning, or for his swap chainloaders it could show Luma turning into Rei, etc.
 
Last edited by SirNapkin1334,

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
If the preview was disabled, I'd like it to just show where you were in the filesystem, like in older GM9. (The only version I can think of is 2.7.0(or 2.7.3, can't remember which))
A small animation would be cool, like for his new settings script it could be a few cogs turning, or for his swap chainloaders it could show Luma turning into Rei, etc.
Animated gfx? Very, very unlikely.

I've actually got something for you to test...
https://f.secretalgorithm.com/W9oAi/godmode9-v1.4.3-73-g671039b8-20171218155052.zip

This should hide all those crap files in your filesystem. Will not make it into the release, but it's activated via make HIDE_HIDDEN=1.
 
  • Like
Reactions: SirNapkin1334

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
Animated gfx? Very, very unlikely.

I've actually got something for you to test...
https://f.secretalgorithm.com/W9oAi/godmode9-v1.4.3-73-g671039b8-20171218155052.zip

This should hide all those crap files in your filesystem. Will not make it into the release, but it's activated via make HIDE_HIDDEN=1.
Actually, just about a week ago I built a windows pc. I don't need it, but I can test it. My recommendation is to add a button in the Home -> More... Menu to remove all hidden files currently on the SD.
Also, please add native EmuNand restore support, as well as native full SysNand restore support. I'd like to be able to select my EmuNand backups and simply press 'Restore EmuNand' instead of having to use a script that also for some reason shows SysNand backups as well. Along with that, I'd like the same thing, except for full SysNand restores.
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
Actually, just about a week ago I built a windows pc. I don't need it, but I can test it. My recommendation is to add a button in the Home -> More... Menu to remove all hidden files currently on the SD.
Also, please add native EmuNand restore support, as well as native full SysNand restore support. I'd like to be able to select my EmuNand backups and simply press 'Restore EmuNand' instead of having to use a script that also for some reason shows SysNand backups as well. Along with that, I'd like the same thing, except for full SysNand restores.
-_-

... were do I start....

I find it acceptable to have a script to remove these trash files, but I won't further clutter the GM9 menu for just that. An option like that will never make it into the menu. And that even ignores all the other things wrong with just indiscriminately deleting these files.

Also, what do you mean by "native"? A safe SysNAND restore is a special routine that protects critical areas of your SysNAND when restoring. An EmuNAND has no critical regions. A regular restore is just a copy of the NAND backup to the respective drive (S:/ for SysNAND, E:/ for EmuNAND).

If you want to make it work more like D9, that's what the script subsystem is for. Scripting is pretty basic, you can teach that to yourself easily. Good scripts that fulfill common needs can also be added to the official ones. Or you can build your own scriptrunner and even release that.

GM9 can't distinguish SysNAND and EmuNAND backups because there is no difference. This does not conflict with my previous statement about SysNAND having critical regions, but not EmuNAND - that's because these areas are only critical because they are on SysNAND.
 
Last edited by d0k3,

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
-_-

... were do I start....

I find it acceptable to have a script to remove these trash files, but I won't further clutter the GM9 menu for just that. An option like that will never make it into the menu. And that even ignores all the other things wrong with just indiscriminately deleting these files.

Also, what do you mean by "native"? A safe SysNAND restore is a special routine that protects critical areas of your SysNAND when restoring. An EmuNAND has no critical regions. A regular restore is just a copy of the NAND backup to the respective drive (S:/ for SysNAND, E:/ for EmuNAND).

If you want to make it work more like D9, that's what the script subsystem is for. Scripting is pretty basic, you can teach that to yourself easily. Good scripts that fulfill common needs can also be added to the official ones. Or you can build your own scriptrunner and even release that.

GM9 can't distinguish SysNAND and EmuNAND backups because there is no difference. This does not conflict with my previous statement about SysNAND having critical regions, but not EmuNAND - that's because these areas are only critical because they are on SysNAND.
Sorry, by native I meant without scripts. I.E. select your backup, and there is the Restore SysNand (Safe) and the Restore SysNand (Full). I understand scripts for making backups, but if you can do a safe restore of SysNand without scripts then why not a full restore? I hadn't realized that GM9 couldn't distinguish SysNand from EmuNand in backups, so I suppose that you should scrap that, since going simply by name is not the best idea.
Also, is it possible to install 'standard' sighax? Are there any advantages? Sighax.com is down so, I can't figure anything out.
 
Last edited by SirNapkin1334,

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
There's no such thing as "standard" sighax. Sighax is sighax.
(quoted from 3ds.guide):
'The benefits of boot9strap over other Custom Firmware launch methods are numerous, and as such it is recommended to use this guide over any other that relies on outdated software (such as menuhax + rxTools, arm9loaderhax, or even normal sighax).'
Okay, I didn't realize that B9S was better than 'normal' sighax, but it's there (apparently).
 

lone_wolf323

Well-Known Member
Member
Joined
May 27, 2011
Messages
5,485
Trophies
2
XP
4,928
Country
Canada
(quoted from 3ds.guide):
'The benefits of boot9strap over other Custom Firmware launch methods are numerous, and as such it is recommended to use this guide over any other that relies on outdated software (such as menuhax + rxTools, arm9loaderhax, or even normal sighax).'
Okay, I didn't realize that B9S was better than 'normal' sighax, but it's there (apparently).
To myself. I always found there was B9S and sighax. B9S would be more the normal everyday install process as to where I found the term of sighax always meant the dev install of the process.
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
(quoted from 3ds.guide):
'The benefits of boot9strap over other Custom Firmware launch methods are numerous, and as such it is recommended to use this guide over any other that relies on outdated software (such as menuhax + rxTools, arm9loaderhax, or even normal sighax).'
Okay, I didn't realize that B9S was better than 'normal' sighax, but it's there (apparently).
Sighax actually only refers to the signature of the FIRM. We can't really create signatures that Nintendos FW will accept, except with sighax. Thus sighax allows us to run homebrew firmwares from FIRM0 (which would otherwise not be possible). B9S is a bootloader, a homebrew firm that controls the boot process of your console and is installed to FIRM0. GodMode9 is a bootloader, too, and even Luma CFW can act as a bootloader.

You have some reading to do, @SirNapkin1334 & others.
 
  • Like
Reactions: SirNapkin1334

windows_server_2003

Well-Known Member
Newcomer
Joined
Jul 13, 2017
Messages
84
Trophies
0
Age
44
XP
379
Country
Japan
Alright, thanks a lot! Planning to add elif after this commit makes it into master. labelsel is also in grasp.

And, maybe the recursive for can be a thing, too. A word of warning for that, though. There is basically no system in existance that can do dir recursion to an unlimited depth. It will be enough so that the limit is not reached on a normal system, though. Unsure what to do when that limit is hit (error message?).

Also,another idea I had - you disabled preview in your scripts, leaving the upper screen in the ugly "preview off" state. What about being able to customize the text there, or even display graphics from a PCX image instead? I'll still need to look into the possibilities (PCX may again mean a slowdown), but is that something you'd use?
Also allowing to show raw image data(used as Luma's splash screen) is nice.

Raw image maker :
https://xem.github.io/3DShomebrew/tools/image-to-bin.html
 

Wolfvak

nyaa~
Member
Joined
Oct 25, 2015
Messages
918
Trophies
1
XP
3,386
Country
Uruguay

That's a dumb thing to do when you could just do
Code:
ffmpeg -i <input file> -f rawvideo -pix_fmt bgr24 -vf transpose=1 <output file>
without relying on any web service... just sayin'

The whole point of PCX was to save space on the initial RAM disk, and I suggest everyone to do the same - in any case, I could add support for multi plane PCX files, even if their compression isn't the best it's still better than having raw framebuffer dumps.
 

Kazuma77

Well-Known Member
Member
Joined
May 11, 2008
Messages
1,035
Trophies
1
XP
904
Country
United States
Alright, thanks a lot! Planning to add elif after this commit makes it into master. labelsel is also in grasp.

And, maybe the recursive for can be a thing, too. A word of warning for that, though. There is basically no system in existance that can do dir recursion to an unlimited depth. It will be enough so that the limit is not reached on a normal system, though. Unsure what to do when that limit is hit (error message?).

Also,another idea I had - you disabled preview in your scripts, leaving the upper screen in the ugly "preview off" state. What about being able to customize the text there, or even display graphics from a PCX image instead? I'll still need to look into the possibilities (PCX may again mean a slowdown), but is that something you'd use?

Well, I've tried the latest versions of my scripts, including the ones for the two installers. I have added more if nesting to include most of the filesel, find, and ask commands since I last compiled them (I also added a Friends save backup option to the Activity Log Manager, so, it's the Activity Log & Friends Manager now -- it only had 6 options, and it's a one digit difference from the location of the PTM save, so, it just seemed like a natural fit). Even with all that extra nesting, I'm not seeing any issues. Everything seems to be working correctly, and the jumps occur practically instantly. I think it's good to go.

I disable the preview because it shows even the parts that aren't getting run. The preview is great for pinpointing typos, but it shows every comment, every ERRORMSG, and now every potential branch-off, relevant or not. A nice centered app title would be an improvement (especially with the option to pick font and size). For that matter, a blank screen would be better than the current message. It almost makes it look like I'm trying to hide something. I just don't want people getting distracted or confused by comments, error messages, and skipped lines. Though speed also became a factor when I started merging things.

Images might be nice, but I don't want to slow things down noticeably. Also, I am not really known for my artwork skills (but you can give me a tape that's mostly hiss, and what you get back will sound like a studio recording). I asked Eix about making some splash screens since you've switched to .pcx now, but I haven't heard back yet. If any graphic artists out there want to design some splash screens for my SSRs and/or the swap card, it would be greatly appreciated.

Sorry, by native I meant without scripts. I.E. select your backup, and there is the Restore SysNand (Safe) and the Restore SysNand (Full). I understand scripts for making backups, but if you can do a safe restore of SysNand without scripts then why not a full restore? I hadn't realized that GM9 couldn't distinguish SysNand from EmuNand in backups, so I suppose that you should scrap that, since going simply by name is not the best idea.
Also, is it possible to install 'standard' sighax? Are there any advantages? Sighax.com is down so, I can't figure anything out.

I could make you a version that will only restore backups to where they were taken from. As d0k3 said, though, there are no genuine differences between the two. Just as there are no genuine differences between an audio-only .mp4 file and an .m4a file. I didn't do that by default because some people might want to transfer from one to the other. Still, it's only 3 lines to change (the ones with "*nand_???.bin" -- all they would need is an "emu" or "sys" after the star).

Also, an exploit by itself does nothing. The B9S bootloader did expand on the original exploit by adding an additional exploit that provides further elevated access. I think what may be confusing you (and many others) is that this exploit was never really given a proper name (if anyone wants to start a vote to name it, I nominate "StrapHax"). I apologize if my switch to generalizing as Sighax had something to do with it. But it seemed like it would be even more confusing to keep referring to it as B9S with that no longer being the only bootloader available. As far as I know, GM9 and Luma are using the unnamed exploit as well, so, there's no "Sighax-only" payload for you to try if you wanted to (you would have to patch a CFW and install it manually, and it may not work, since most CFWs expect the full StrapHax environment).

That's a dumb thing to do when you could just do
Code:
ffmpeg -i <input file> -f rawvideo -pix_fmt bgr24 -vf transpose=1 <output file>
without relying on any web service... just sayin'

The whole point of PCX was to save space on the initial RAM disk, and I suggest everyone to do the same - in any case, I could add support for multi plane PCX files, even if their compression isn't the best it's still better than having raw framebuffer dumps.

I hear you (or should I say, I read you ;) ). I like how the switch to .pcx has reduced the size of GM9 builds. Having a more commonly-used format is nice as well, of course. So, thanks for that. I want my SSRs to look nice, but I don't want them getting too bloated. So, if I was going to consider animations, they'd have to be small and have a minimal impact on performance.
 
Last edited by Kazuma77,
  • Like
Reactions: Ryccardo

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
I could make you a version that will only restore backups to where they were taken from. As d0k3 said, though, there are no genuine differences between the two. Just as there are no genuine differences between an audio-only .mp4 file and an .m4a file. I didn't do that by default because some people might want to transfer from one to the other. Still, it's only 3 lines to change (the ones with "*nand_???.bin" -- all they would need is an "emu" or "sys" after the star).

Also, an exploit by itself does nothing. The B9S bootloader did expand on the original exploit by adding an additional exploit that provides further elevated access. I think what may be confusing you (and many others) is that this exploit was never really given a proper name (if anyone wants to start a vote to name it, I nominate "StrapHax"). I apologize if my switch to generalizing as Sighax had something to do with it. But it seemed like it would be even more confusing to keep referring to it as B9S with that no longer being the only bootloader available. As far as I know, GM9 and Luma are using the unnamed exploit as well, so, there's no "Sighax-only" payload for you to try if you wanted to (you would have to patch a CFW and install it manually, and it may not work, since most CFWs expect the full StrapHax environment).
So, if Luma is installed to a FIRM partition, then you could use it like GM9? I didn't know that. Also, is .firm the format that the 3DS uses for firmwares, or is it just what sighax uses?
Also, please tell me what SSR means.
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
@Kazuma77 and @windows_server_2003 - thanks a ton!!!

@windows_server_2003 - if you want to, you can now do a pull request for that partial string extractor command.

I disable the preview because it shows even the parts that aren't getting run. The preview is great for pinpointing typos, but it shows every comment, every ERRORMSG, and now every potential branch-off, relevant or not. A nice centered app title would be an improvement (especially with the option to pick font and size). For that matter, a blank screen would be better than the current message. It almost makes it look like I'm trying to hide something. I just don't want people getting distracted or confused by comments, error messages, and skipped lines. Though speed also became a factor when I started merging things.

Images might be nice, but I don't want to slow things down noticeably. Also, I am not really known for my artwork skills (but you can give me a tape that's mostly hiss, and what you get back will sound like a studio recording). I asked Eix about making some splash screens since you've switched to .pcx now, but I haven't heard back yet. If any graphic artists out there want to design some splash screens for my SSRs and/or the swap card, it would be greatly appreciated.e.

Not entirely correct - you have apparently not tested PREVIEW_MODE full / quick in a while. "full" will skip over skipped blocks, "quick" will even only show commands. You may want a look at the latest commit though:
Code:
# elif / preview test

@begintest

# comment 1
# comment 2
# comment 3
# comment 4
# comment 5

if ask "?set PREVIEW_MODE off?"
    set PREVIEW_MODE off
elif ask "?set PREVIEW_MODE quick?"
    set PREVIEW_MODE quick
elif ask "?set PREVIEW_MODE full?"
    set PREVIEW_MODE full
elif ask "?set PREVIEW_MODE V:/GodMode9_splash.pcx?"
    set PREVIEW_MODE V:/GodMode9_splash.pcx
elif ask "?set PREVIEW_MODE 'No preview for you, sorry'?"
    set PREVIEW_MODE "No preview for you, sorry"
end

if ask "Try this again?"
    goto begintest
end
And, yes, I added elif.
 
  • Like
Reactions: GilgameshArcher

Larsenv

Dr. Wii, Ph.D
Member
Joined
Sep 28, 2013
Messages
870
Trophies
2
Website
larsenv.xyz
XP
3,283
Country
United States
You need to provide more info if you want help. Did you rename the files? Not provide all files you downloaded? You need a .tmd or .cetk file, not only the content file. What is the file you want to decrypt called, and what else is in the folder?

I figured.
  • I downloaded the game with Wii U USB Helper, in NUS format.
  • The game was Miitopia.
  • Yes, the .tmd and .cetk is in there, 00000000.app and 00000001.app.
  • I tried moving the game to other folders.
  • I have a seeddb.bin, encTitleKeys.bin, decTitleKeys.bin and aeskeydb.bin from good sources.
  • There are no special options when I select the biggest .app file (00000000.app), 00000001.app is just a small file.
  • If I try building a CIA when going on the TMD or ticket options (I forget which one that's under), it fails.
  • The keys are in the correct place, gm9/support.
  • I didn't rename the files.
  • All of the files are named as they were from NUS.
  • Nothing but the NUS contents are in the folder.
 

d0k3

3DS Homebrew Legend
OP
Member
Joined
Dec 3, 2004
Messages
2,786
Trophies
1
XP
3,896
Country
Germany
I figured.
  • I downloaded the game with Wii U USB Helper, in NUS format.
  • The game was Miitopia.
  • Yes, the .tmd and .cetk is in there, 00000000.app and 00000001.app.
  • I tried moving the game to other folders.
  • I have a seeddb.bin, encTitleKeys.bin, decTitleKeys.bin and aeskeydb.bin from good sources.
  • There are no special options when I select the biggest .app file (00000000.app), 00000001.app is just a small file.
  • If I try building a CIA when going on the TMD or ticket options (I forget which one that's under), it fails.
  • The keys are in the correct place, gm9/support.
  • I didn't rename the files.
  • All of the files are named as they were from NUS.
  • Nothing but the NUS contents are in the folder.
Ugh, new tools, new trouble. Try removing the extension from the app files. Also have [number].tmd / [number].cetk

@Kazuma77
Actually, here's a nicer way of doing spaghetti code:
Code:
# Spaghetti Code sample

goto chooser

@choices_Preview_off
set PREVIEW_MODE off
goto chooser

@choices_Preview_quick
set PREVIEW_MODE quick
goto chooser

@choices_Preview_full
set PREVIEW_MODE full
goto chooser

@choices_Preview_PCX
set PREVIEW_MODE V:/GodMode9_splash.pcx
goto chooser

@choices_Preview_custom
set PREVIEW_MODE "Your text can be here"
input "Enter anything:" PREVIEW_MODE
goto chooser

@choices_Leave_script
goto outside

@chooser
labelsel -o "Choose preview mode" choices_*
goto chooser

@outside
 
Last edited by d0k3,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @SylverReZ, lol +1