mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
エラーチェック追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@442 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
29a9b3aab1
commit
adade89f29
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -41,7 +41,7 @@ System::Xml::XmlElement^ Form1::makeErrorListXmlElement(System::Xml::XmlDocument
|
|||||||
{
|
{
|
||||||
for each( RCMrcError ^err in this->hSrl->hErrorList )
|
for each( RCMrcError ^err in this->hSrl->hErrorList )
|
||||||
{
|
{
|
||||||
if( !err->IsEnableModify ) // 修正可能な情報は出力しない
|
if( !err->IsEnableModify && this->isDisplayOneGridErrorForPurpose( err ) ) // 修正可能な情報は出力しない
|
||||||
{
|
{
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, 0, "error", this->isJapanese()) );
|
list->AppendChild( CreateErrorListElement(doc, err, 0, "error", this->isJapanese()) );
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ System::Xml::XmlElement^ Form1::makeErrorListXmlElement(System::Xml::XmlDocument
|
|||||||
{
|
{
|
||||||
for each( RCMrcError ^err in this->hErrorList )
|
for each( RCMrcError ^err in this->hErrorList )
|
||||||
{
|
{
|
||||||
if( err->IsAffectRom ) // 書類上のエラーは出力しない
|
if( err->IsAffectRom && this->isDisplayOneGridErrorForPurpose( err ) ) // 書類上のエラーは出力しない
|
||||||
{
|
{
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, 1, "error", this->isJapanese()) );
|
list->AppendChild( CreateErrorListElement(doc, err, 1, "error", this->isJapanese()) );
|
||||||
}
|
}
|
||||||
@ -69,7 +69,10 @@ System::Xml::XmlElement^ Form1::makeErrorListXmlElement(System::Xml::XmlDocument
|
|||||||
{
|
{
|
||||||
errtype = 1;
|
errtype = 1;
|
||||||
}
|
}
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, errtype, "error", this->isJapanese()) );
|
if( this->isDisplayOneGridErrorForPurpose( err ) )
|
||||||
|
{
|
||||||
|
list->AppendChild( CreateErrorListElement(doc, err, errtype, "error", this->isJapanese()) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -86,7 +89,7 @@ System::Xml::XmlElement^ Form1::makeWarningListXmlElement(System::Xml::XmlDocume
|
|||||||
{
|
{
|
||||||
for each( RCMrcError ^err in this->hSrl->hWarnList )
|
for each( RCMrcError ^err in this->hSrl->hWarnList )
|
||||||
{
|
{
|
||||||
if( !err->IsEnableModify ) // 修正可能な情報は出力しない
|
if( !err->IsEnableModify && this->isDisplayOneGridErrorForPurpose( err ) ) // 修正可能な情報は出力しない
|
||||||
{
|
{
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, 0, "warning", this->isJapanese()) );
|
list->AppendChild( CreateErrorListElement(doc, err, 0, "warning", this->isJapanese()) );
|
||||||
}
|
}
|
||||||
@ -96,7 +99,7 @@ System::Xml::XmlElement^ Form1::makeWarningListXmlElement(System::Xml::XmlDocume
|
|||||||
{
|
{
|
||||||
for each( RCMrcError ^err in this->hWarnList )
|
for each( RCMrcError ^err in this->hWarnList )
|
||||||
{
|
{
|
||||||
if( err->IsAffectRom ) // 書類上のエラーは出力しない
|
if( err->IsAffectRom && this->isDisplayOneGridErrorForPurpose( err ) ) // 書類上のエラーは出力しない
|
||||||
{
|
{
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, 1, "warning", this->isJapanese()) );
|
list->AppendChild( CreateErrorListElement(doc, err, 1, "warning", this->isJapanese()) );
|
||||||
}
|
}
|
||||||
@ -114,7 +117,10 @@ System::Xml::XmlElement^ Form1::makeWarningListXmlElement(System::Xml::XmlDocume
|
|||||||
{
|
{
|
||||||
errtype = 1;
|
errtype = 1;
|
||||||
}
|
}
|
||||||
list->AppendChild( CreateErrorListElement(doc, err, errtype, "warning", this->isJapanese()) );
|
if( this->isDisplayOneGridErrorForPurpose( err ) )
|
||||||
|
{
|
||||||
|
list->AppendChild( CreateErrorListElement(doc, err, errtype, "warning", this->isJapanese()) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -143,11 +143,14 @@ bool Form1::isDisplayOneGridErrorForPurpose( RCMrcError ^err )
|
|||||||
{
|
{
|
||||||
is_display = true;
|
is_display = true;
|
||||||
}
|
}
|
||||||
if( ((err->Purpose & RCMrcError::PurposeType::DSStation) != (RCMrcError::PurposeType)0) &&
|
if( ((err->Purpose & RCMrcError::PurposeType::TouchTryDS) != (RCMrcError::PurposeType)0) &&
|
||||||
this->rPurposeCardTouchTryDS->Checked)
|
this->rPurposeCardTouchTryDS->Checked)
|
||||||
{
|
{
|
||||||
is_display = true;
|
is_display = true;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Zone と DSDownload Service は用途のラジオボタンが追加されていないので追加されるまで何もしない
|
||||||
|
*/
|
||||||
return is_display;
|
return is_display;
|
||||||
} //isDisplayOneGridErrorForPurpose()
|
} //isDisplayOneGridErrorForPurpose()
|
||||||
|
|
||||||
|
|||||||
@ -270,10 +270,12 @@ namespace MasterEditorTWL
|
|||||||
enum class PurposeType : System::UInt32 // 型指定
|
enum class PurposeType : System::UInt32 // 型指定
|
||||||
{
|
{
|
||||||
Production = 1 << 0, // 一般販売用(カード/NAND)
|
Production = 1 << 0, // 一般販売用(カード/NAND)
|
||||||
CardDistribution = 1 << 1, // データ配信用カード
|
TouchTryDS = 1 << 1, // TouchTryDS/DS CENTRE
|
||||||
CardKiosk = 1 << 2, // 店頭試遊台(単独型)
|
CardDistribution = 1 << 2, // データ配信用カード
|
||||||
DSStation = 1 << 3, // DS Station
|
CardKiosk = 1 << 3, // 店頭試遊台(単独型)
|
||||||
Zone = 1 << 4, // Nintendo Zone
|
DSiShop = 1 << 4, // DSiショップ配信用体験版
|
||||||
|
DSDownload = 1 << 5, // DSダウンロードサービス(& ニンテンドーチャンネル)
|
||||||
|
Zone = 1 << 6, // Nintendo Zone
|
||||||
|
|
||||||
Common = 0xFFFFFFFF, // すべての用途で共通のエラー
|
Common = 0xFFFFFFFF, // すべての用途で共通のエラー
|
||||||
};
|
};
|
||||||
|
|||||||
@ -220,7 +220,10 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp )
|
|||||||
}
|
}
|
||||||
if( i == 32 ) // 全部0
|
if( i == 32 ) // 全部0
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("Syscall") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution |
|
||||||
|
RCMrcError::PurposeType::DSiShop,
|
||||||
|
"Syscall") );
|
||||||
}
|
}
|
||||||
return ECSrlResult::NOERROR;
|
return ECSrlResult::NOERROR;
|
||||||
} // mrcNTR()
|
} // mrcNTR()
|
||||||
@ -284,26 +287,27 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp )
|
|||||||
u32 filesizeMb = (filesize / (1024*1024)) * 8; // 単位をMbitに直す
|
u32 filesizeMb = (filesize / (1024*1024)) * 8; // 単位をMbitに直す
|
||||||
if( romsize < filesizeMb )
|
if( romsize < filesizeMb )
|
||||||
{
|
{
|
||||||
|
// Touch!Try!DS用のROMを除く
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk, // Touch!Try!DS用のROMを除く
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"CapacityCardLess") );
|
"CapacityCardLess") );
|
||||||
}
|
}
|
||||||
else if( filesizeMb < romsize )
|
else if( filesizeMb < romsize )
|
||||||
{
|
{
|
||||||
this->hWarnList->Add( this->makeMrcError(
|
this->hWarnList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"CapacityCardWaste") );
|
"CapacityCardWaste") );
|
||||||
}
|
}
|
||||||
if( (romsize < METWL_ROMSIZE_MIN) || (METWL_ROMSIZE_MAX < romsize) )
|
if( (romsize < METWL_ROMSIZE_MIN) || (METWL_ROMSIZE_MAX < romsize) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"CapacityCardRange") );
|
"CapacityCardRange") );
|
||||||
}
|
}
|
||||||
if( (filesizeMb < 1) || (MasterEditorTWL::countBits(filesizeMb) != 1) ) // 立っているビットが1つかどうかでべき乗かどうかを調べる
|
if( (filesizeMb < 1) || (MasterEditorTWL::countBits(filesizeMb) != 1) ) // 立っているビットが1つかどうかでべき乗かどうかを調べる
|
||||||
{
|
{
|
||||||
this->hWarnList->Add( this->makeMrcError(
|
this->hWarnList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"FilesizeFraction") );
|
"FilesizeFraction") );
|
||||||
}
|
}
|
||||||
} //if( *(this->hIsNAND) == false )
|
} //if( *(this->hIsNAND) == false )
|
||||||
@ -312,7 +316,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp )
|
|||||||
if( (romsize < METWL_ROMSIZE_MIN_NAND) || (METWL_ROMSIZE_MAX_NAND < romsize) )
|
if( (romsize < METWL_ROMSIZE_MIN_NAND) || (METWL_ROMSIZE_MAX_NAND < romsize) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
"CapacityNandRange") );
|
"CapacityNandRange") );
|
||||||
}
|
}
|
||||||
//u32 allsize = filesize + this->pRomHeader->s.public_save_data_size + this->pRomHeader->s.private_save_data_size;
|
//u32 allsize = filesize + this->pRomHeader->s.public_save_data_size + this->pRomHeader->s.private_save_data_size;
|
||||||
@ -320,13 +324,13 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp )
|
|||||||
if( allsize > METWL_ALLSIZE_MAX_NAND )
|
if( allsize > METWL_ALLSIZE_MAX_NAND )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
"UsedNandSizeLimit") );
|
"UsedNandSizeLimit") );
|
||||||
}
|
}
|
||||||
if( (allsize > METWL_ALLSIZE_MAX_NAND_LIC) && this->IsAppUser ) // ユーザアプリのときのみ
|
if( (allsize > METWL_ALLSIZE_MAX_NAND_LIC) && this->IsAppUser ) // ユーザアプリのときのみ
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
"UsedNandSizeExceed") );
|
"UsedNandSizeExceed") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -343,7 +347,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp )
|
|||||||
if( !crcret || (crcseg3 != METWL_SEG3_CRC) )
|
if( !crcret || (crcseg3 != METWL_SEG3_CRC) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"Seg3CRC") );
|
"Seg3CRC") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -386,11 +390,15 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp )
|
|||||||
}
|
}
|
||||||
if( !this->IsMediaNand && this->IsNormalJump )
|
if( !this->IsMediaNand && this->IsNormalJump )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("NormalJumpCard") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
|
"NormalJumpCard") );
|
||||||
}
|
}
|
||||||
if( !this->IsMediaNand && this->IsTmpJump )
|
if( !this->IsMediaNand && this->IsTmpJump )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("TmpJumpCard") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
|
"TmpJumpCard") );
|
||||||
}
|
}
|
||||||
if( this->IsNormalJump && this->IsTmpJump )
|
if( this->IsNormalJump && this->IsTmpJump )
|
||||||
{
|
{
|
||||||
@ -694,7 +702,10 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.game_card_on != 0 )
|
if( this->pRomHeader->s.access_control.game_card_on != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("GameCardNormalAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution |
|
||||||
|
RCMrcError::PurposeType::DSiShop,
|
||||||
|
"GameCardNormalAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForLauncher != 0 )
|
if( this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForLauncher != 0 )
|
||||||
{
|
{
|
||||||
@ -702,7 +713,10 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.game_card_nitro_mode != 0 )
|
if( this->pRomHeader->s.access_control.game_card_nitro_mode != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("GameCardNTRAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution |
|
||||||
|
RCMrcError::PurposeType::DSiShop,
|
||||||
|
"GameCardNTRAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.hw_aes_slot_A_SSLClientCert != 0 )
|
if( this->pRomHeader->s.access_control.hw_aes_slot_A_SSLClientCert != 0 )
|
||||||
{
|
{
|
||||||
@ -710,11 +724,17 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.backup_access_read != 0 )
|
if( this->pRomHeader->s.access_control.backup_access_read != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("GameCardReadAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution |
|
||||||
|
RCMrcError::PurposeType::DSiShop,
|
||||||
|
"GameCardReadAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.backup_access_write != 0 )
|
if( this->pRomHeader->s.access_control.backup_access_write != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("GameCardWriteAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution |
|
||||||
|
RCMrcError::PurposeType::DSiShop,
|
||||||
|
"GameCardWriteAccessUser") );
|
||||||
}
|
}
|
||||||
|
|
||||||
// SDアクセスは 5.2RELEASE で特定のアプリには許可される
|
// SDアクセスは 5.2RELEASE で特定のアプリには許可される
|
||||||
@ -723,15 +743,21 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
// カードアプリはSDアクセス禁止
|
// カードアプリはSDアクセス禁止
|
||||||
if( this->pRomHeader->s.access_control.sd_card_access != 0 )
|
if( this->pRomHeader->s.access_control.sd_card_access != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
|
"SDAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDReadAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
|
"SDReadAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDWriteAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
|
"SDWriteAccessUser") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -742,15 +768,21 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
// 5.2 RELEASE以前は原則SDアクセス禁止
|
// 5.2 RELEASE以前は原則SDアクセス禁止
|
||||||
if( this->pRomHeader->s.access_control.sd_card_access != 0 )
|
if( this->pRomHeader->s.access_control.sd_card_access != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
|
"SDAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDReadAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
|
"SDReadAccessUser") );
|
||||||
}
|
}
|
||||||
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
if( this->pRomHeader->s.access_control.sdmc_access_read != 0 )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDWriteAccessUser") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
|
"SDWriteAccessUser") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -760,7 +792,9 @@ void RCSrl::mrcAccessControl(FILE *fp)
|
|||||||
(this->pRomHeader->s.access_control.sdmc_access_write == 0) && // アクセス権のフラグが下りている
|
(this->pRomHeader->s.access_control.sdmc_access_write == 0) && // アクセス権のフラグが下りている
|
||||||
(this->pRomHeader->s.access_control.sdmc_access_read == 0 ) )
|
(this->pRomHeader->s.access_control.sdmc_access_read == 0 ) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError("SDAccessPriv") );
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::DSiShop,
|
||||||
|
"SDAccessPriv") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //else
|
} //else
|
||||||
@ -872,7 +906,7 @@ void RCSrl::mrcPadding(FILE *fp)
|
|||||||
if( (offset + padsize) > filesize )
|
if( (offset + padsize) > filesize )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"PaddingRead", padstr) );
|
"PaddingRead", padstr) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -882,7 +916,7 @@ void RCSrl::mrcPadding(FILE *fp)
|
|||||||
if( padsize != fread( buf, 1, padsize, fp ) )
|
if( padsize != fread( buf, 1, padsize, fp ) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"PaddingRead", padstr) );
|
"PaddingRead", padstr) );
|
||||||
delete []buf;
|
delete []buf;
|
||||||
return;
|
return;
|
||||||
@ -900,7 +934,7 @@ void RCSrl::mrcPadding(FILE *fp)
|
|||||||
if( !bResult )
|
if( !bResult )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(
|
this->hErrorList->Add( this->makeMrcError(
|
||||||
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk,
|
RCMrcError::PurposeType::Production | RCMrcError::PurposeType::CardKiosk | RCMrcError::PurposeType::CardDistribution,
|
||||||
"PaddingValue", padstr, romstr) );
|
"PaddingValue", padstr, romstr) );
|
||||||
}
|
}
|
||||||
delete []buf;
|
delete []buf;
|
||||||
@ -1268,38 +1302,66 @@ void RCSrl::mrcTrialApp(FILE *fp)
|
|||||||
// 表示するときに振り分けをする
|
// 表示するときに振り分けをする
|
||||||
|
|
||||||
// Touch!Try!DS
|
// Touch!Try!DS
|
||||||
if( this->IsTmpJump )
|
|
||||||
{
|
|
||||||
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSStation, "DSStationTmpJump") );
|
|
||||||
}
|
|
||||||
fseek( fp, 0, SEEK_END );
|
|
||||||
u32 filesize = ftell(fp); // 実ファイルサイズ
|
|
||||||
if( filesize > (96 * 1024 * 1024) )
|
|
||||||
{
|
|
||||||
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::DSStation, "DSStationRomSize") );
|
|
||||||
}
|
|
||||||
bool use_nis = false;
|
bool use_nis = false;
|
||||||
for each( RCLicense ^lic in this->hLicenseList )
|
for each( RCLicense ^lic in this->hLicenseList )
|
||||||
{
|
{
|
||||||
if( lic->Publisher->Equals( "NINTENDO" ) && lic->Name->Equals( "NIS_FOR_TWLSDK" ) )
|
if( lic->Publisher->Equals( "NINTENDO" ) && lic->Name->StartsWith( "NIS_FOR_TWLSDK" ) )
|
||||||
{
|
{
|
||||||
use_nis = true;
|
use_nis = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( !use_nis )
|
if( !use_nis )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSStation, "DSStationLib") );
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSLib") );
|
||||||
|
}
|
||||||
|
if( this->IsMediaNand )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSMedia") );
|
||||||
|
}
|
||||||
|
if( this->IsNormalJump )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSNormalJump") );
|
||||||
|
}
|
||||||
|
if( this->IsTmpJump )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSTmpJump") );
|
||||||
|
}
|
||||||
|
if( this->IsSD )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSSDCard") );
|
||||||
|
}
|
||||||
|
fseek( fp, 0, SEEK_END );
|
||||||
|
u32 filesize = ftell(fp); // 実ファイルサイズ
|
||||||
|
if( filesize > (96 * 1024 * 1024) )
|
||||||
|
{
|
||||||
|
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSRomSize") );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nintendo Zone
|
// システムコール
|
||||||
if( !this->IsTmpJump )
|
u8 syscall[32];
|
||||||
|
u32 offset = this->pRomHeader->s.main_rom_offset;
|
||||||
|
fseek( fp, offset, SEEK_SET );
|
||||||
|
if( 32 != fread( syscall, 1, 32, fp ) )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneTmpJump") );
|
return;
|
||||||
}
|
}
|
||||||
if( filesize > (5 * 1024 * 1024 / 2) )
|
int i;
|
||||||
|
for( i=0; i < 32; i++ )
|
||||||
{
|
{
|
||||||
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneRomSize") );
|
if( syscall[i] != 0x00 )
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
if( i == 32 ) // 全部0
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::TouchTryDS, "TouchTryDSSyscall") ); // SDK付属のときダメ
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadSyscall") ); // SDK付属でないとダメ
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneSyscall") );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zone or DS Download Service
|
||||||
if( this->pRomHeader->s.platform_code == PLATFORM_CODE_TWL_HYBLID )
|
if( this->pRomHeader->s.platform_code == PLATFORM_CODE_TWL_HYBLID )
|
||||||
{
|
{
|
||||||
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneHybrid") );
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneHybrid") );
|
||||||
@ -1307,5 +1369,30 @@ void RCSrl::mrcTrialApp(FILE *fp)
|
|||||||
if( this->pRomHeader->s.platform_code == PLATFORM_CODE_TWL_LIMITED )
|
if( this->pRomHeader->s.platform_code == PLATFORM_CODE_TWL_LIMITED )
|
||||||
{
|
{
|
||||||
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneLimited") );
|
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneLimited") );
|
||||||
|
this->hWarnList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadLimited") );
|
||||||
|
}
|
||||||
|
if( filesize > (5 * 1024 * 1024 / 2) )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneRomSize") );
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadRomSize") );
|
||||||
|
}
|
||||||
|
if( !this->HasDSDLPlaySign )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadCloneBoot") );
|
||||||
|
}
|
||||||
|
if( this->IsGameCardOn || this->IsGameCardNitro )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneCardAccess") );
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadCardAccess") );
|
||||||
|
}
|
||||||
|
if( !this->IsMediaNand )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneMedia") );
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadMedia") );
|
||||||
|
}
|
||||||
|
if( !this->IsTmpJump )
|
||||||
|
{
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::Zone, "ZoneTmpJump") );
|
||||||
|
this->hErrorList->Add( this->makeMrcError(RCMrcError::PurposeType::DSDownload, "DSDownloadTmpJump") );
|
||||||
}
|
}
|
||||||
} //mrcTrialApp()
|
} //mrcTrialApp()
|
||||||
Binary file not shown.
@ -60,11 +60,11 @@
|
|||||||
<begin>1b4</begin><end>1b7</end><modify>False</modify><affect>True</affect>
|
<begin>1b4</begin><end>1b7</end><modify>False</modify><affect>True</affect>
|
||||||
</TouchTryDSSDCard>
|
</TouchTryDSSDCard>
|
||||||
|
|
||||||
<TouchTryDSSDK>
|
<TouchTryDSSyscall>
|
||||||
<name>Touch!Try!DS体験版対応</name>
|
<name>Touch!Try!DS体験版対応</name>
|
||||||
<sentence>Touch!Try!DS体験版では、SDK付属のシステムコールライブラリを使用せず、弊社より体験版専用に提供されたライブラリを使用してください。</sentence>
|
<sentence>Touch!Try!DS体験版では、SDK付属のシステムコールライブラリを使用せず、弊社より体験版専用に提供されたライブラリを使用してください。</sentence>
|
||||||
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
||||||
</TouchTryDSSDK>
|
</TouchTryDSSyscall>
|
||||||
|
|
||||||
<TouchTryDSRomSize>
|
<TouchTryDSRomSize>
|
||||||
<name>Touch!Try!DS体験版対応</name>
|
<name>Touch!Try!DS体験版対応</name>
|
||||||
@ -97,11 +97,11 @@
|
|||||||
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
||||||
</ZoneCardAccess>
|
</ZoneCardAccess>
|
||||||
|
|
||||||
<ZoneLib>
|
<ZoneSyscall>
|
||||||
<name>Nintendo Zone対応</name>
|
<name>Nintendo Zone対応</name>
|
||||||
<sentence>Nintendo ZoneソフトではSDK付属のシステムコールライブラリを使用する必要があります。</sentence>
|
<sentence>Nintendo ZoneソフトではSDK付属のシステムコールライブラリを使用する必要があります。</sentence>
|
||||||
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
||||||
</ZoneLib>
|
</ZoneSyscall>
|
||||||
|
|
||||||
<ZoneMedia>
|
<ZoneMedia>
|
||||||
<name>Nintendo Zone対応</name>
|
<name>Nintendo Zone対応</name>
|
||||||
@ -140,11 +140,11 @@
|
|||||||
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
||||||
</DSDownloadCardAccess>
|
</DSDownloadCardAccess>
|
||||||
|
|
||||||
<DSDownloadLib>
|
<DSDownloadSyscall>
|
||||||
<name>DSダウンロードサービス/ニンテンドーチャンネル対応</name>
|
<name>DSダウンロードサービス/ニンテンドーチャンネル対応</name>
|
||||||
<sentence>DSダウンロードサービスもしくはみんなのニンテンドーチャンネル向けソフトではSDK付属のシステムコールライブラリを使用する必要があります。</sentence>
|
<sentence>DSダウンロードサービスもしくはみんなのニンテンドーチャンネル向けソフトではSDK付属のシステムコールライブラリを使用する必要があります。</sentence>
|
||||||
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
<begin>0</begin><end>0</end><modify>False</modify><affect>True</affect>
|
||||||
</DSDownloadLib>
|
</DSDownloadSyscall>
|
||||||
|
|
||||||
<DSDownloadMedia>
|
<DSDownloadMedia>
|
||||||
<name>DSダウンロードサービス/ニンテンドーチャンネル対応</name>
|
<name>DSダウンロードサービス/ニンテンドーチャンネル対応</name>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user