diff --git a/build/libraries/aes/ARM7/aes_init.c b/build/libraries/aes/ARM7/aes_init.c index b0ac0218..a75cc71e 100644 --- a/build/libraries/aes/ARM7/aes_init.c +++ b/build/libraries/aes/ARM7/aes_init.c @@ -114,19 +114,18 @@ void AESi_ResetAesKey( void ) Returns: None *---------------------------------------------------------------------------*/ -void AESi_RecvSeed( void ) +void AESi_RecvSeed( BOOL developer_encrypt ) { AESKey seed; // PXI_RecvDataByFifo( PXI_FIFO_TAG_DATA, &seed, AES_BLOCK_SIZE ); PXI_RecvStream( &seed, AES_BLOCK_SIZE ); AESi_WaitKey(); - AESi_SetKeySeedA((AESKeySeed*)&seed); // APP - //AESi_WaitKey(); - //AESi_SetKeySeedB((AESKeySeed*)&seed); // APP & HARD - //AESi_WaitKey(); - //AESi_SetKeySeedC((AESKeySeed*)&seed); // - //AESi_WaitKey(); - //AESi_SetKeySeedD((AESKeySeed*)&seed); // HARD - AESi_WaitKey(); - AESi_SetKeyC(&seed); // Direct + if ( developer_encrypt ) + { + AESi_SetKeyA(&seed); // Direct + } + else + { + AESi_SetKeySeedA((AESKeySeed*)&seed); // APP + } } diff --git a/build/libraries/fatfs/ARM7/src/fatfs_loader.c b/build/libraries/fatfs/ARM7/src/fatfs_loader.c index b462a827..9cebe4a3 100644 --- a/build/libraries/fatfs/ARM7/src/fatfs_loader.c +++ b/build/libraries/fatfs/ARM7/src/fatfs_loader.c @@ -379,7 +379,7 @@ BOOL FATFS_LoadHeader( void ) // set id depends on game_code and seed to use (or all?) AESi_InitKeysForApp((u8*)rh->s.game_code); - AESi_RecvSeed(); + AESi_RecvSeed( rh->s.developer_encrypt ); return TRUE; } @@ -443,14 +443,7 @@ static u32 FATFSi_SetupAES( u32 offset, u32 size ) size = aes_end - offset; } AESi_WaitKey(); - if (rh->s.developer_encrypt) - { - AESi_LoadKey( AES_KEY_SLOT_C ); - } - else - { - AESi_LoadKey( AES_KEY_SLOT_A ); - } + AESi_LoadKey( AES_KEY_SLOT_A ); FATFS_EnableAES( FATFSi_GetCounter( offset ) ); } else diff --git a/build/libraries/fs/ARM7/src/fs_firm.c b/build/libraries/fs/ARM7/src/fs_firm.c index 580eba71..73d2613c 100644 --- a/build/libraries/fs/ARM7/src/fs_firm.c +++ b/build/libraries/fs/ARM7/src/fs_firm.c @@ -155,14 +155,7 @@ static u32 GetTransferSize( u32 offset, u32 size ) { size = aes_end - offset; } - if (rh->s.developer_encrypt) - { - AESi_LoadKey( AES_KEY_SLOT_C ); - } - else - { - AESi_LoadKey( AES_KEY_SLOT_A ); - } + AESi_LoadKey( AES_KEY_SLOT_A ); EnableAes( offset ); } else diff --git a/build/nandfirm/menu-launcher/ARM7/main.c b/build/nandfirm/menu-launcher/ARM7/main.c index 7764ea75..5fe49242 100644 --- a/build/nandfirm/menu-launcher/ARM7/main.c +++ b/build/nandfirm/menu-launcher/ARM7/main.c @@ -33,7 +33,7 @@ PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ) FINALROM版でもコードが残るので注意してください。 */ -#define PRINT_MEMORY_ADDR 0x02000400 +#define PRINT_MEMORY_ADDR 0x02000600 #ifdef PROFILE_ENABLE @@ -57,9 +57,8 @@ static u8 step = 0x80; #ifdef PRINT_MEMORY_ADDR static char* debugPtr = (char*)PRINT_MEMORY_ADDR; #undef OS_TPrintf -#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) -#undef OS_Panic -#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate()) +//#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) +#define OS_TPrintf(...) (debugPtr += STD_TSPrintf(debugPtr, __VA_ARGS__)) #endif #define THREAD_PRIO_FATFS 8 @@ -67,6 +66,8 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR; extern void* SDNandContext; /* NAND初期化パラメータ */ +static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF; + /*************************************************************** PreInit @@ -216,7 +217,7 @@ SetDebugLED(0x02); PM_BackLightOn( FALSE ); AESi_InitKeysFIRM(); - AESi_RecvSeed(); + AESi_RecvSeed( rh->s.developer_encrypt ); // 8: after AESi_RecvSeed PUSH_PROFILE(); diff --git a/build/nandfirm/menu-launcher/ARM9/main.c b/build/nandfirm/menu-launcher/ARM9/main.c index e5ff0c45..9648c1a1 100644 --- a/build/nandfirm/menu-launcher/ARM9/main.c +++ b/build/nandfirm/menu-launcher/ARM9/main.c @@ -53,7 +53,7 @@ static SVCSignHeapContext acPool; PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ) FINALROM版でもコードが残るので注意してください。 */ -#define PRINT_MEMORY_ADDR 0x02000000 +#define PRINT_MEMORY_ADDR 0x02000200 //#ifdef SDK_FINALROM // FINALROMで無効化 //#undef PROFILE_ENABLE @@ -71,10 +71,10 @@ u32 pf_cnt = 0; #ifdef PRINT_MEMORY_ADDR static char* debugPtr = (char*)PRINT_MEMORY_ADDR; #undef OS_TPrintf -#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) -#undef OS_Panic -#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate()) +//#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) +#define OS_TPrintf(...) (debugPtr += STD_TSPrintf(debugPtr, __VA_ARGS__)) #endif + /*************************************************************** PreInit diff --git a/build/nandfirm/menu-launcher2/ARM7/main.c b/build/nandfirm/menu-launcher2/ARM7/main.c index aad4f02c..68bb853e 100644 --- a/build/nandfirm/menu-launcher2/ARM7/main.c +++ b/build/nandfirm/menu-launcher2/ARM7/main.c @@ -34,7 +34,7 @@ PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ) FINALROM版でもコードが残るので注意してください。 */ -#define PRINT_MEMORY_ADDR 0x02000400 +#define PRINT_MEMORY_ADDR 0x02000600 #ifdef PROFILE_ENABLE @@ -59,8 +59,6 @@ static u8 step = 0x80; static char* debugPtr = (char*)PRINT_MEMORY_ADDR; #undef OS_TPrintf #define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) -#undef OS_Panic -#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate()) #endif #define THREAD_PRIO_FATFS 8 @@ -68,6 +66,8 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR; extern void* SDNandContext; /* NAND初期化パラメータ */ +static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF; + /*************************************************************** PreInit @@ -194,7 +194,7 @@ SetDebugLED(0x02); PM_BackLightOn( FALSE ); AESi_InitKeysFIRM(); - AESi_RecvSeed(); + AESi_RecvSeed( rh->s.developer_encrypt ); // 8: after AESi_RecvSeed PUSH_PROFILE(); diff --git a/build/nandfirm/menu-launcher2/ARM9/main.c b/build/nandfirm/menu-launcher2/ARM9/main.c index 3a5759b5..759c7028 100644 --- a/build/nandfirm/menu-launcher2/ARM9/main.c +++ b/build/nandfirm/menu-launcher2/ARM9/main.c @@ -54,7 +54,7 @@ static SVCSignHeapContext acPool; PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ) FINALROM版でもコードが残るので注意してください。 */ -#define PRINT_MEMORY_ADDR 0x02000000 +#define PRINT_MEMORY_ADDR 0x02000200 //#ifdef SDK_FINALROM // FINALROMで無効化 //#undef PROFILE_ENABLE @@ -73,9 +73,8 @@ u32 pf_cnt = 0; static char* debugPtr = (char*)PRINT_MEMORY_ADDR; #undef OS_TPrintf #define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) -#undef OS_Panic -#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate()) #endif + /*************************************************************** PreInit diff --git a/include/firm/aes/ARM7/aes_init.h b/include/firm/aes/ARM7/aes_init.h index dd6df55c..efa5e370 100644 --- a/include/firm/aes/ARM7/aes_init.h +++ b/include/firm/aes/ARM7/aes_init.h @@ -83,11 +83,11 @@ static inline void AESi_InitKeysFIRM( void ) Description: set SEED/KEY from ARM9 via PXI. - Arguments: None + Arguments: developer_encrypt set TRUE if received key is using as direct key Returns: None *---------------------------------------------------------------------------*/ -void AESi_RecvSeed( void ); +void AESi_RecvSeed( BOOL developer_encrypt ); #ifdef __cplusplus } /* extern "C" */