diff --git a/source/common.h b/source/common.h index e53baa6..c23f206 100644 --- a/source/common.h +++ b/source/common.h @@ -42,7 +42,7 @@ #define BUFFER_MAX_SIZE ((u32) (1 * 1024 * 1024)) // info / log file name -#define VERSION_NAME "Hourglass9 v1.22" +#define VERSION_NAME "Hourglass9 v1.30" #define LOG_FILE "Hourglass9.log" // hacky handling of D9 game dir stuff diff --git a/source/main.c b/source/main.c index cc4d2d7..9239bc2 100644 --- a/source/main.c +++ b/source/main.c @@ -9,6 +9,8 @@ #include "decryptor/nand.h" #include "decryptor/nandfat.h" #include "decryptor/game.h" +#include "decryptor/xorpad.h" +#include "decryptor/selftest.h" #include "bottomlogo_bgr.h" #define SUBMENU_START 1 @@ -17,14 +19,15 @@ MenuInfo menu[] = { { #ifndef VERSION_NAME - "Hourglass9 Main Menu", 4, + "Hourglass9 Main Menu", 5, #else - VERSION_NAME, 4, + VERSION_NAME, 5, #endif { { "SysNAND Backup/Restore...", NULL, SUBMENU_START + 0 }, { "EmuNAND Backup/Restore...", NULL, SUBMENU_START + 1 }, { "Gamecart Dumper...", NULL, SUBMENU_START + 2 }, + { "Miscellaneous...", NULL, SUBMENU_START + 3 }, { "Validate NAND Dump", &ValidateNandDump, 0 } } }, @@ -57,6 +60,17 @@ MenuInfo menu[] = { "Dump Private Header", &DumpPrivateHeader, 0 } } }, + { + "Miscellaneous Options", 6, // ID 3 + { + { "SysNAND title to CIA", &ConvertSdToCia, 0 }, + { "EmuNAND title to CIA", &ConvertSdToCia, N_EMUNAND }, + { "GBA VC Save Dump", &DumpGbaVcSave, 0 }, + { "GBA VC Save Inject", &InjectGbaVcSave, N_NANDWRITE }, + { "NCCH Padgen", &NcchPadgen, 0 }, + { "System Info", &SystemInfo, 0 } + } + }, { NULL, 0, { { 0 } } // empty menu to signal end } @@ -125,6 +139,8 @@ u32 InitializeH9() errorlevel = (errorlevel < 1) ? 1 : errorlevel; if (LoadKeyFromFile(0x1B, 'X', NULL)) // NCCH Secure4 KeyX errorlevel = (errorlevel < 1) ? 1 : errorlevel; + if (SetupAgbCmacKeyY0x24()) // AGBSAVE CMAC KeyY + errorlevel = (errorlevel < 1) ? 1 : errorlevel; Debug("Finalizing Initialization..."); RemainingStorageSpace(); } else {