diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb index 9194ae7..3479e38 100644 Binary files a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb and b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb differ diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo index 98b8cf2..4854332 100644 Binary files a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo and b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo differ diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Debug/BuildLog.htm b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Debug/BuildLog.htm index 9acb6c9..6ab3a1e 100644 Binary files a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Debug/BuildLog.htm and b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Debug/BuildLog.htm differ diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp index d8e8e6f..48524f8 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp @@ -17,6 +17,8 @@ System::Int32 parseOption( array ^args, SheetCheckerContext ^c System::Boolean readRomHeader( System::String ^srlfile, ROM_Header *rh ); System::Boolean readSheet( System::String ^sheetfile, SheetItem ^item ); System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ); +void printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ); // ------------------------------------------------------------------ @@ -26,6 +28,9 @@ System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpa int main(array ^args) { SheetCheckerContext ^hContext = gcnew SheetCheckerContext; + ROM_Header rh; + memset( (void*)&rh, 0, sizeof(ROM_Header) ); + SheetItem ^hItem = gcnew SheetItem; // getopt int argc = parseOption( args, hContext ); @@ -34,96 +39,127 @@ int main(array ^args) if( argc != 2 ) { hContext->ErrorCode = SheetCheckerError::ERROR_ARG; - Console::WriteLine( "error arguments" ); - return 0; + printResult( hContext, &rh, hItem, nullptr, nullptr, 0 ); + return -1; } System::String ^hSrlFile = args[0]; System::String ^hSheetFile = args[1]; // ROMヘッダの読み込み - ROM_Header rh; - memset( (void*)&rh, 0, sizeof(ROM_Header) ); if( !readRomHeader( hSrlFile, &rh ) ) { hContext->ErrorCode = SheetCheckerError::ERROR_READ_SRL; + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, 0 ); + return -1; } System::UInt16 crc; getWholeCRCInFile( hSrlFile, &crc ); // 提出確認書の読み込み - SheetItem ^hItem = gcnew SheetItem; if( !readSheet( hSheetFile, hItem ) ) { hContext->ErrorCode = SheetCheckerError::ERROR_READ_SHEET; + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); + return -1; } // 一致判定 - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( memcmp( rh.s.game_code, hItem->GameCode, 4 ) != 0 ) { - if( memcmp( rh.s.game_code, hItem->GameCode, 4 ) != 0 ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_GAME_CODE; - } - else if( rh.s.rom_version != hItem->RomVersion ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_ROM_VERSION; - } - else if( crc != hItem->FileCRC ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_CRC; - } + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_GAME_CODE; + } + else if( rh.s.rom_version != hItem->RomVersion ) + { + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_ROM_VERSION; + } + else if( crc != hItem->FileCRC ) + { + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_CRC; } - // 通常の表示 - if( !hContext->bSubmitVersion && !hContext->bResult ) - { + // 結果表示 + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); + return 0; +} + +// ------------------------------------------------------------------ +// 結果表示 +// ------------------------------------------------------------------ + +void printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ) +{ + System::UInt16 tadver = item->RomVersion; + tadver = (tadver << 8) | item->SubmitVersion; + + // 通常の表示 + if( !context->bSubmitVersion && !context->bResult && !context->bTadVersion ) + { Console::WriteLine( "" ); - Console::WriteLine( "SRL: " + hSrlFile ); - Console::WriteLine( "Sheet: " + hSheetFile ); + Console::WriteLine( "SRL: " + srlfile ); + Console::WriteLine( "Sheet: " + sheetfile ); Console::WriteLine( "" ); printf( " SRL Sheet\n" ); printf( "------------------------------------\n" ); printf( "InitialCode: %c%c%c%c %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], - hItem->GameCode[0], hItem->GameCode[1], hItem->GameCode[2], hItem->GameCode[3] ); - printf( "RemasterVersion: %02X %02X\n", rh.s.rom_version, hItem->RomVersion ); - printf( "File CRC: %04X %04X\n", crc, hItem->FileCRC ); + rh->s.game_code[0], rh->s.game_code[1], rh->s.game_code[2], rh->s.game_code[3], + item->GameCode[0], item->GameCode[1], item->GameCode[2], item->GameCode[3] ); + printf( "RemasterVersion: %02X %02X\n", rh->s.rom_version, item->RomVersion ); + printf( "File CRC: %04X %04X\n", srlcrc, item->FileCRC ); printf( "------------------------------------\n" ); - printf( "SubmitVersion: - %d (%02X)\n", hItem->SubmitVersion, hItem->SubmitVersion ); + printf( "SubmitVersion: - %d (%02X)\n", item->SubmitVersion, item->SubmitVersion ); + if( item->Media->Equals("NAND") ) + { + printf( "TAD Version: %d (%04X)\n", tadver, tadver ); + } printf( "------------------------------------\n" ); printf( "Result: " ); - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( context->ErrorCode == SheetCheckerError::NOERROR ) { printf( "OK\n" ); } else { - printf( "NG (%d)\n", hContext->ErrorCode ); + printf( "NG (%d)\n", context->ErrorCode ); } } // オプションのときの表示 - if( hContext->bSubmitVersion ) + if( context->bSubmitVersion ) { - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( context->ErrorCode == SheetCheckerError::NOERROR ) { - printf( "%d\n", hItem->SubmitVersion ); + printf( "%d\n", item->SubmitVersion ); } else { - printf( "%d\n", hContext->ErrorCode ); // エラーのときはエラーコード + printf( "%d\n", context->ErrorCode ); // エラーのときはエラーコード } } - if( hContext->bResult ) + if( context->bTadVersion ) { - printf( "%d\n", hContext->ErrorCode ); + if( !item->Media->Equals("NAND") ) + { + context->ErrorCode = SheetCheckerError::ERROR_ARG; + } + if( context->ErrorCode == SheetCheckerError::NOERROR ) + { + printf( "%d\n", tadver ); + } + else + { + printf( "%d\n", context->ErrorCode ); + } + } + if( context->bResult ) + { + printf( "%d\n", context->ErrorCode ); } - - return 0; } + // ------------------------------------------------------------------ // ROMヘッダの読み込み // ------------------------------------------------------------------ @@ -192,6 +228,8 @@ System::Boolean readSheet( System::String ^sheetfile, SheetItem ^item ) System::String ^text; try { + item->Media = getXPathText( root, "/Sheet/Media" ); + text = getXPathText( root, "/Sheet/GameCode" ); char code[4]; int i; @@ -269,6 +307,11 @@ System::Int32 parseOption( array ^args, SheetCheckerContext ^c context->bResult = true; numopt++; } + else if( args[i]->StartsWith( "-t" ) ) + { + context->bTadVersion = true; + numopt++; + } else if( !args[i]->StartsWith( "-" ) ) // オプションでない引数のindexを記録 { indexList->Add(i); diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h index da775ca..11ba604 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h @@ -16,7 +16,7 @@ enum class SheetCheckerError ERROR_VERIFY_ROM_VERSION = -3, ERROR_READ_SRL = -8, ERROR_READ_SHEET = -9, - ERROR_ARG = -0xA, + ERROR_ARG = -10, }; // 実行Context @@ -25,12 +25,14 @@ ref class SheetCheckerContext private: System::Boolean ^hbSubmitVersion; // オプションフラグ System::Boolean ^hbResult; + System::Boolean ^hbTadVersion; SheetCheckerError ^hErrorCode; // エラー情報 public: SheetCheckerContext() { this->hbSubmitVersion = gcnew System::Boolean(false); this->hbResult = gcnew System::Boolean(false); + this->hbTadVersion = gcnew System::Boolean(false); this->hErrorCode = gcnew SheetCheckerError( SheetCheckerError::NOERROR ); } property System::Boolean bSubmitVersion @@ -43,6 +45,11 @@ public: void set( System::Boolean flg ){ this->hbResult = gcnew System::Boolean(flg); } System::Boolean get(){ return *this->hbResult; } }; + property System::Boolean bTadVersion + { + void set( System::Boolean flg ){ this->hbTadVersion = gcnew System::Boolean(flg); } + System::Boolean get(){ return *this->hbTadVersion; } + }; property SheetCheckerError ErrorCode { void set( SheetCheckerError code ){ this->hErrorCode = gcnew SheetCheckerError(code); } @@ -58,6 +65,8 @@ private: System::Byte ^hRomVersion; System::UInt16 ^hFileCRC; System::Byte ^hSubmitVersion; +public: + System::String ^hMedia; public: SheetItem() { @@ -66,6 +75,7 @@ public: this->hRomVersion = gcnew System::Byte(0xFF); this->hFileCRC = gcnew System::UInt16(0); this->hSubmitVersion = gcnew System::Byte(0xFF); + this->hMedia = gcnew System::String(""); } ~SheetItem() { @@ -91,4 +101,15 @@ public: void set( System::Byte v ){ *this->hSubmitVersion = v; } System::Byte get(){ return *this->hSubmitVersion; } } + property System::String ^Media + { + void set( System::String ^str ) + { + if( str != nullptr ) + this->hMedia = System::String::Copy(str); + else + this->hMedia = gcnew System::String(""); + } + System::String^ get(){ return System::String::Copy( this->hMedia ); } + } }; diff --git a/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl b/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl index 3859138..2952996 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl +++ b/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl @@ -30,6 +30,9 @@ + + +