mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
メニュースキップフラグ立てツール:フラグを下ろすオプション-dを追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@297 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
894c3ce600
commit
5283954fa1
@ -47,6 +47,9 @@
|
|||||||
typedef struct _SContext
|
typedef struct _SContext
|
||||||
{
|
{
|
||||||
// オプション
|
// オプション
|
||||||
|
BOOL isDisable; // フラグを下ろすモード
|
||||||
|
|
||||||
|
// 入出力ファイル
|
||||||
FILE *ifp;
|
FILE *ifp;
|
||||||
FILE *ofp;
|
FILE *ofp;
|
||||||
}
|
}
|
||||||
@ -81,13 +84,14 @@ BOOL DebugMode = FALSE;
|
|||||||
void usage()
|
void usage()
|
||||||
{
|
{
|
||||||
printf( "-----------------------------------------------------------------------------\n" );
|
printf( "-----------------------------------------------------------------------------\n" );
|
||||||
printf( "Usage: MenuSkipFlagTool.exe input_file output_file flag\n" );
|
printf( "Usage: MenuSkipFlagTool.exe input_file output_file enable-flag\n" );
|
||||||
printf( " input_file : a ROM data file (generated by makerom.TWL).\n" );
|
printf( " input_file : a ROM data file (generated by makerom.TWL).\n" );
|
||||||
printf( " output_file : a destination file.\n" );
|
printf( " output_file : a destination file.\n" );
|
||||||
printf( " enable-flag : 1 or 0. If 1, menu-skip flag will be enabled.\n" );
|
printf( " enable-flag : 1 or 0. If 1, menu-skip flag will be enabled.\n" );
|
||||||
printf( "\nOption:\n" );
|
printf( "\nOption:\n" );
|
||||||
printf( "-h : print help only.\n" );
|
printf( "-h : print help only.\n" );
|
||||||
printf( "-f : force to overwrite a output_file.\n" );
|
printf( "-f : force to overwrite a output_file.\n" );
|
||||||
|
printf( "-d : disable the mesu-skip flag, when enable-flag is 1.\n" );
|
||||||
printf( "-----------------------------------------------------------------------------\n" );
|
printf( "-----------------------------------------------------------------------------\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +115,7 @@ int main(int argc, char *argv[])
|
|||||||
memset( &context, 0, sizeof(SContext) );
|
memset( &context, 0, sizeof(SContext) );
|
||||||
|
|
||||||
// オプション
|
// オプション
|
||||||
while( (opt = getopt(argc, argv, "hf")) >= 0 )
|
while( (opt = getopt(argc, argv, "hfd")) >= 0 )
|
||||||
{
|
{
|
||||||
switch( opt )
|
switch( opt )
|
||||||
{
|
{
|
||||||
@ -123,6 +127,10 @@ int main(int argc, char *argv[])
|
|||||||
case 'f':
|
case 'f':
|
||||||
bForceOverwrite = TRUE;
|
bForceOverwrite = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
context.isDisable = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
default: // オプション引数が指定されていないときにも実行される
|
default: // オプション引数が指定されていないときにも実行される
|
||||||
usage();
|
usage();
|
||||||
@ -259,20 +267,39 @@ static BOOL iEnableFlag( SContext *pContext )
|
|||||||
printf("\n*** Error: Illegal platform (%d). ***\n", rh.s.platform_code);
|
printf("\n*** Error: Illegal platform (%d). ***\n", rh.s.platform_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("InitialCode : %c%c%c%c\n", rh.s.game_code[0], rh.s.game_code[1], rh.s.game_code[2], rh.s.game_code[3]);
|
||||||
|
|
||||||
// TWLとNTRとで分岐
|
// TWLとNTRとで分岐
|
||||||
if( (rh.s.platform_code == 0) && (rh.s.enable_signature == 0) ) // enable_signature が立っている特殊なアプリを含む (PictoChatなど)
|
if( (rh.s.platform_code == 0) && (rh.s.enable_signature == 0) ) // enable_signature が立っている特殊なアプリはTWLとみなす (PictoChat/DS-download-play)
|
||||||
{
|
{
|
||||||
printf( "Platform(TWL/NTR): 0x%02X (NTR)\n", rh.s.platform_code );
|
printf( "Platform(TWL/NTR): 0x%02X (NTR)\n", rh.s.platform_code );
|
||||||
|
|
||||||
// フラグを立てる
|
// フラグを立てる
|
||||||
if( rh.s.inspect_card == 0 )
|
if( pContext->isDisable )
|
||||||
{
|
{
|
||||||
rh.s.inspect_card = 0x1;
|
// フラグを下ろすモード
|
||||||
printf( "Menu-skip flag : Disable -> Enable\n" );
|
if( rh.s.inspect_card != 0 )
|
||||||
|
{
|
||||||
|
rh.s.inspect_card = 0;
|
||||||
|
printf( "Menu-skip flag : Enable -> Disable\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( "Menu-skip flag : Already Disabled\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf( "Menu-skip flag : Already Enabled\n" );
|
// フラグを立てるモード(通常)
|
||||||
|
if( rh.s.inspect_card == 0 )
|
||||||
|
{
|
||||||
|
rh.s.inspect_card = 0x1;
|
||||||
|
printf( "Menu-skip flag : Disable -> Enable\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( "Menu-skip flag : Already Enabled\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヘッダCRC計算
|
// ヘッダCRC計算
|
||||||
@ -282,8 +309,26 @@ static BOOL iEnableFlag( SContext *pContext )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf( "Platform(TWL/NTR): 0x%02X (%s)\n",
|
switch(rh.s.platform_code)
|
||||||
rh.s.platform_code, (rh.s.platform_code == PLATFORM_CODE_TWL_HYBLID)?"TWL Hybrid":"TWL Limited" );
|
{
|
||||||
|
case PLATFORM_CODE_NTR: // PictoChat/DlPlay
|
||||||
|
printf( "Platform(TWL/NTR): 0x%02X (NTR for TWL, PictoChat or DS-Download-play)\n", rh.s.platform_code );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PLATFORM_CODE_TWL_HYBLID:
|
||||||
|
printf( "Platform(TWL/NTR): 0x%02X (TWL Hybrid)\n", rh.s.platform_code );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PLATFORM_CODE_TWL_LIMITED:
|
||||||
|
printf( "Platform(TWL/NTR): 0x%02X (TWL Limited)\n", rh.s.platform_code );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: // unreachable
|
||||||
|
printf( "Platform(TWL/NTR): 0x%02X (Illegal)\n", rh.s.platform_code );
|
||||||
|
printf("\n*** Error: Illegal platform (%d). ***\n", rh.s.platform_code);
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// 署名を外す
|
// 署名を外す
|
||||||
if( !DecryptSignRomHeader( &rh ) )
|
if( !DecryptSignRomHeader( &rh ) )
|
||||||
@ -294,14 +339,31 @@ static BOOL iEnableFlag( SContext *pContext )
|
|||||||
printf( "Decrypt the sign : Succeeded\n" );
|
printf( "Decrypt the sign : Succeeded\n" );
|
||||||
|
|
||||||
// フラグを立てる
|
// フラグを立てる
|
||||||
if( rh.s.inspect_card == 0 )
|
if( pContext->isDisable )
|
||||||
{
|
{
|
||||||
rh.s.inspect_card = 0x1;
|
// フラグを下ろすモード
|
||||||
printf( "Menu-skip flag : Disable -> Enable\n" );
|
if( rh.s.inspect_card != 0 )
|
||||||
|
{
|
||||||
|
rh.s.inspect_card = 0;
|
||||||
|
printf( "Menu-skip flag : Enable -> Disable\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( "Menu-skip flag : Already Disabled\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf( "Menu-skip flag : Already Enabled\n" );
|
// フラグを立てるモード(通常)
|
||||||
|
if( rh.s.inspect_card == 0 )
|
||||||
|
{
|
||||||
|
rh.s.inspect_card = 0x1;
|
||||||
|
printf( "Menu-skip flag : Disable -> Enable\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( "Menu-skip flag : Already Enabled\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヘッダCRC計算
|
// ヘッダCRC計算
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user