diff --git a/build/buildtools/modulerules.firm b/build/buildtools/modulerules.firm index d0c0634d..79b3acc7 100644 --- a/build/buildtools/modulerules.firm +++ b/build/buildtools/modulerules.firm @@ -40,6 +40,12 @@ MAKEFIRM_DEFS += -DFIRM_ROOT='$(FIRM_ROOT)' \ -DMAKEFIRM_ARM7='$(basename $(MAKEFIRM_ARM7))' \ -DMAKEFIRM_RSA_PRVKEY='$(MAKEFIRM_RSA_PRVKEY)' \ +ifdef TWL_KEYSDIR +MAKEFIRM_FLAGS += -t'$(TWL_KEYSDIR)/blowfish/gcdfirm_header_twlj.template.sbin' +else +MAKEFIRM_FLAGS += -t'$(FIRM_ROOT)/build/tools/makegcdfirm/gcdfirm_header_twlj.template.sbin' +endif + FIRM_SDEPENDS_BIN = $(MAKEFIRM_RSA_PRVKEY) $(MAKEFIRM_ARM9) $(MAKEFIRM_ARM7) diff --git a/build/libraries/init/ARM9/crt0_firm.c b/build/libraries/init/ARM9/crt0_firm.c index bd051802..ac6bbda4 100644 --- a/build/libraries/init/ARM9/crt0_firm.c +++ b/build/libraries/init/ARM9/crt0_firm.c @@ -167,20 +167,6 @@ SDK_WEAK_SYMBOL asm void _start( void ) mov r2, #HW_DTCM_SIZE bl INITi_CpuClear32 -#if 0 - // BG/OBJ palette (1KB) - mov r0, #0 - ldr r1, =HW_PLTT - mov r2, #HW_PLTT_SIZE - bl INITi_CpuClear32 - - // OAM (1KB) - mov r0, #0x0200 - ldr r1, =HW_OAM - mov r2, #HW_OAM_SIZE - bl INITi_CpuClear32 -#endif - //---- load autoload block and initialize bss // bl INITi_DoAutoload #ifndef SDK_FINALROM // for IS-TWL-DEBUGGER diff --git a/build/tools/makegcdfirm/gcdfirm_header_twlj.template.sbin b/build/tools/makegcdfirm/gcdfirm_header_twlj.template.sbin index 60ed6b7f..06a88213 100644 Binary files a/build/tools/makegcdfirm/gcdfirm_header_twlj.template.sbin and b/build/tools/makegcdfirm/gcdfirm_header_twlj.template.sbin differ diff --git a/build/tools/makegcdfirm/makegcdfirm.c b/build/tools/makegcdfirm/makegcdfirm.c index 9afa68ad..887cc4c8 100644 --- a/build/tools/makegcdfirm/makegcdfirm.c +++ b/build/tools/makegcdfirm/makegcdfirm.c @@ -24,7 +24,7 @@ #include "defval.h" #include "version.h" -static int makegcdfirm(const char *specFile, const char *norFile); +static int makegcdfirm(const char *specFile, const char *norFile, const char *rhFile); //--------------------------------------------------------------------------- // Main @@ -35,10 +35,11 @@ int main(int argc, char *argv[]) int n; int narg; char *gcdfirmFile; + char *rhFile = NULL; InitAppName(argv[0]); - while ((n = getopt(argc, argv, "D:hvpd")) != -1) + while ((n = getopt(argc, argv, "D:hvt:pd")) != -1) { switch (n) { @@ -50,6 +51,10 @@ int main(int argc, char *argv[]) AddDefVal(optarg); break; + case 't': + rhFile = optarg; + break; + case 'p': PrintMode = TRUE; break; @@ -70,7 +75,7 @@ int main(int argc, char *argv[]) gcdfirmFile = strdup(narg > 1 ? argv[optind + 1] : ChangeSuffix(argv[optind], DEFAULT_NORFIRM_SUFFIX)); - return makegcdfirm(argv[optind], gcdfirmFile); + return makegcdfirm(argv[optind], gcdfirmFile, rhFile); } usage: @@ -80,7 +85,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "NITRO-SDK Development Tool - %s - Make gcdfirm file \n" "Build %lu\n\n" - "Usage: %s [-phv] [-DNAME=VALUE ...] SPECFILE [NORFIRMFILE]\n\n", + "Usage: %s [-phv] [-tROMHEADERFILE] [-DNAME=VALUE ...] SPECFILE [NORFIRMFILE]\n\n", makegcdfirm, SDK_DATE_OF_LATEST_FILE, makegcdfirm); } return 1; @@ -91,7 +96,7 @@ int main(int argc, char *argv[]) // makegcdfirm //--------------------------------------------------------------------------- -static int makegcdfirm(const char *specFile, const char *norFile) +static int makegcdfirm(const char *specFile, const char *norFile, const char *rhFile) { debug_printf("makegcdfirm(): '%s' -> '%s'\n", specFile, norFile); @@ -102,5 +107,5 @@ static int makegcdfirm(const char *specFile, const char *norFile) return 1; } - return OutputGcdfirmFile(specFile, norFile) ? 0 : 1; + return OutputGcdfirmFile(specFile, norFile, rhFile) ? 0 : 1; } diff --git a/build/tools/makegcdfirm/makegcdfirm.h b/build/tools/makegcdfirm/makegcdfirm.h index c38c14a8..803ce06f 100644 --- a/build/tools/makegcdfirm/makegcdfirm.h +++ b/build/tools/makegcdfirm/makegcdfirm.h @@ -19,6 +19,6 @@ #include "misc.h" -BOOL OutputGcdfirmFile(const char *specFile, const char *gcdFile); +BOOL OutputGcdfirmFile(const char *specFile, const char *gcdFile, const char *rhFile); #endif //MAKEGCDFIRM_H_ diff --git a/build/tools/makegcdfirm/out_gcdfirm.c b/build/tools/makegcdfirm/out_gcdfirm.c index b755fac5..d5a6ae53 100644 --- a/build/tools/makegcdfirm/out_gcdfirm.c +++ b/build/tools/makegcdfirm/out_gcdfirm.c @@ -83,7 +83,7 @@ static BOOL NandFirm_Command(char * line, int num); static BOOL ERROR_Command(char * line, int num); static BOOL InitializeAesKey(void); -static BOOL InitializeGcdfirmFile(void); +static BOOL InitializeGcdfirmFile(const char *rhFile); static BOOL FinalizeGcdfirmFile(const char *gcdFile); static s32 Offset; // Current offset @@ -101,7 +101,7 @@ tErrorFlags errFlags; // Output - gcdfirm File //--------------------------------------------------------------------------- -BOOL OutputGcdfirmFile(const char *specFile, const char *gcdFile) +BOOL OutputGcdfirmFile(const char *specFile, const char *gcdFile, const char *rhFile) { char *buffer; BOOL state; @@ -118,7 +118,7 @@ BOOL OutputGcdfirmFile(const char *specFile, const char *gcdFile) specFileName = specFile; - state = InitializeGcdfirmFile() && ConstructGcdfirmFile(buffer) && + state = InitializeGcdfirmFile( rhFile ) && ConstructGcdfirmFile(buffer) && FinalizeGcdfirmFile(gcdFile) && CloseFile(); if (!state) @@ -933,9 +933,14 @@ static BOOL InitializeAesKey(void) // Output - Initialize Gcdfirm File //--------------------------------------------------------------------------- -static BOOL InitializeGcdfirmFile(void) +static BOOL InitializeGcdfirmFile(const char *rhFile) { - ReadRomHeaderFile( GetSrcPath(GetAppBaseName(), DEFAULT_ROMHEADER_TEMPLATE) ); + if ( !rhFile ) + { + rhFile = GetSrcPath(GetAppBaseName(), DEFAULT_ROMHEADER_TEMPLATE); + } + + ReadRomHeaderFile( rhFile ); memset(&signedContext.hash[FIRM_SIGNED_HASH_IDX_HASH_TABLE], 0x00, sizeof(signedContext.hash[0])); gcdHeader.h.w = wram_regs_init; diff --git a/tools/bin/gcdfirm_header_twlj.template.sbin b/tools/bin/gcdfirm_header_twlj.template.sbin deleted file mode 100644 index 60ed6b7f..00000000 Binary files a/tools/bin/gcdfirm_header_twlj.template.sbin and /dev/null differ