forked from Mirror/GodMode9
Fix installer system CMD handling
This commit is contained in:
parent
e744be504b
commit
829880994f
@ -21,8 +21,10 @@ CmdHeader* BuildAllocCmdData(TitleMetaData* tmd) {
|
||||
proto.n_entries = max_cnt_idx + 1;
|
||||
proto.n_cmacs = content_count;
|
||||
proto.unknown = 1;
|
||||
memset(proto.cmac, 0x00, 0x10);
|
||||
cmd = (CmdHeader*) malloc(CMD_SIZE(&proto));
|
||||
if (!cmd) return NULL;
|
||||
memset(cmd, 0x00, CMD_SIZE(&proto));
|
||||
memcpy(cmd, &proto, sizeof(CmdHeader));
|
||||
cmd->unknown = 0x0; // this means no CMACs, only valid for NAND
|
||||
|
||||
@ -52,10 +54,9 @@ CmdHeader* BuildAllocCmdData(TitleMetaData* tmd) {
|
||||
}
|
||||
}
|
||||
|
||||
// set CMACs to 0xFF
|
||||
// set CMACs to 0x00
|
||||
u8* cnt_cmac = (u8*) (cnt_id_2nd + cmd->n_cmacs);
|
||||
memset(cmd->cmac, 0xFF, 0x10);
|
||||
memset(cnt_cmac, 0xFF, 0x10 * cmd->n_entries);
|
||||
memset(cnt_cmac, 0x00, 0x10 * cmd->n_entries);
|
||||
|
||||
// we still need to fix / set the CMACs inside the CMD file!
|
||||
return cmd;
|
||||
|
@ -1361,11 +1361,13 @@ u32 InstallCiaSystemData(CiaStub* cia, const char* drv) {
|
||||
TicketCommon* ticket = &(cia->ticket);
|
||||
TitleMetaData* tmd = &(cia->tmd);
|
||||
TmdContentChunk* content_list = cia->content_list;
|
||||
bool syscmd = ((*drv == '1') || (*drv == '4'));
|
||||
bool sdtie = ((*drv == 'A') || (*drv == 'B'));
|
||||
u32 content_count = getbe16(tmd->content_count);
|
||||
u8* title_id = ticket->title_id;
|
||||
|
||||
bool sdtie = ((*drv == 'A') || (*drv == 'B'));
|
||||
bool syscmd = (((*drv == '1') || (*drv == '4')) ||
|
||||
(((*drv == '2') || (*drv == '5')) && (title_id[3] != 0x04)));
|
||||
|
||||
char path_titledb[32];
|
||||
char path_ticketdb[32];
|
||||
char path_tmd[64];
|
||||
@ -1404,7 +1406,6 @@ u32 InstallCiaSystemData(CiaStub* cia, const char* drv) {
|
||||
// build the cmd
|
||||
cmd = BuildAllocCmdData(tmd);
|
||||
if (!cmd) return 1;
|
||||
cmd->unknown = 0xFFFFFFFE; // mark this as custom built
|
||||
|
||||
// generate all the paths
|
||||
snprintf(path_titledb, 32, "%2.2s/dbs/title.db",
|
||||
@ -1489,7 +1490,10 @@ u32 InstallCiaSystemData(CiaStub* cia, const char* drv) {
|
||||
InitImgFS(path_bak);
|
||||
|
||||
// fix CMACs where required
|
||||
if (!syscmd) FixFileCmac(path_cmd, true);
|
||||
if (!syscmd) {
|
||||
cmd->unknown = 0xFFFFFFFE; // mark this as custom built
|
||||
FixFileCmac(path_cmd, true);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user