diff --git a/build/tools/MasterEditor/MasterEditorTWL/DS-MasterROM_Submission_Sheet_2008_00_J.xls b/build/tools/MasterEditor/MasterEditorTWL/DS-MasterROM_Submission_Sheet_2008_00_J.xls new file mode 100644 index 0000000..5056c2b Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/DS-MasterROM_Submission_Sheet_2008_00_J.xls differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/Debug/MasterEditorTWL.ilk b/build/tools/MasterEditor/MasterEditorTWL/Debug/MasterEditorTWL.ilk new file mode 100644 index 0000000..e69de29 diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb new file mode 100644 index 0000000..882211e Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.resources.dll b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.resources.dll new file mode 100644 index 0000000..e0f27d2 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.resources.dll @@ -0,0 +1 @@ +Dummy diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.sln b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.sln new file mode 100644 index 0000000..86a0a99 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.sln @@ -0,0 +1,24 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MasterEditorTWL", "MasterEditorTWL\MasterEditorTWL.vcproj", "{F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "MasterEditorTWLSetup", "MasterEditorTWLSetup\MasterEditorTWLSetup.vdproj", "{D24711F8-41FF-4E3E-96BD-F4FFA6A2FB34}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}.Debug|Win32.ActiveCfg = Debug|Win32 + {F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}.Debug|Win32.Build.0 = Debug|Win32 + {F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}.Release|Win32.ActiveCfg = Release|Win32 + {F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}.Release|Win32.Build.0 = Release|Win32 + {D24711F8-41FF-4E3E-96BD-F4FFA6A2FB34}.Debug|Win32.ActiveCfg = Debug + {D24711F8-41FF-4E3E-96BD-F4FFA6A2FB34}.Release|Win32.ActiveCfg = Release + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo new file mode 100644 index 0000000..407fc4b Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/AssemblyInfo.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/AssemblyInfo.cpp new file mode 100644 index 0000000..6436450 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/AssemblyInfo.cpp @@ -0,0 +1,40 @@ +#include "stdafx.h" + +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// ƒAƒZƒ“ƒuƒŠ‚ÉŠÖ‚·‚éˆê”Êî•ñ‚͈ȉº‚Ì‘®«ƒZƒbƒg‚ð‚Æ‚¨‚µ‚ħŒä‚³‚ê‚Ü‚·B +// ƒAƒZƒ“ƒuƒŠ‚ÉŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚éî•ñ‚ð•ÏX‚·‚é‚É‚ÍA +// ‚±‚ê‚ç‚Ì‘®«’l‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢B +// +[assembly:AssemblyTitleAttribute("MasterEditorTWL")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("”C“V“°Š”Ž®‰ïŽÐ")]; +[assembly:AssemblyProductAttribute("MasterEditorTWL")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) ”C“V“°Š”Ž®‰ïŽÐ 2008")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// ƒAƒZƒ“ƒuƒŠ‚̃o[ƒWƒ‡ƒ“î•ñ‚ÍAˆÈ‰º‚Ì 4 ‚‚̒l‚Å\¬‚³‚ê‚Ä‚¢‚Ü‚·: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// ‚·‚ׂĂ̒l‚ðŽw’è‚·‚é‚©A‰º‚̂悤‚É '*' ‚ðŽg‚Á‚ÄƒŠƒrƒWƒ‡ƒ“‚¨‚æ‚уrƒ‹ƒh”Ô†‚ð +// Šù’è’l‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·: + +[assembly:AssemblyVersionAttribute("1.1.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm new file mode 100644 index 0000000..a36f1a3 Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h new file mode 100644 index 0000000..d1f5fe8 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -0,0 +1,3736 @@ +#pragma once + +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" + +namespace MasterEditorTWL { + + using namespace System; + using namespace System::ComponentModel; + using namespace System::Collections; + using namespace System::Windows::Forms; + using namespace System::Data; + using namespace System::Drawing; + + /// + /// Form1 ‚ÌŠT—v + /// + /// Œx: ‚±‚̃Nƒ‰ƒX‚Ì–¼‘O‚ð•ÏX‚·‚éê‡A‚±‚̃Nƒ‰ƒX‚ªˆË‘¶‚·‚é‚·‚×‚Ä‚Ì .resx ƒtƒ@ƒCƒ‹‚ÉŠÖ˜A•t‚¯‚ç‚ꂽ + /// ƒ}ƒl[ƒW ƒŠƒ\[ƒX ƒRƒ“ƒpƒCƒ‰ ƒc[ƒ‹‚ɑ΂µ‚Ä 'Resource File Name' ƒvƒƒpƒeƒB‚ð + /// •ÏX‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚Ì•ÏX‚ðs‚í‚È‚¢‚ÆA + /// ƒfƒUƒCƒi‚ÆA‚±‚̃tƒH[ƒ€‚ÉŠÖ˜A•t‚¯‚ç‚ꂽƒ[ƒJƒ‰ƒCƒYÏ‚ÝƒŠƒ\[ƒX‚Æ‚ªA + /// ³‚µ‚­‘ŠŒÝ‚É—˜—p‚Å‚«‚È‚­‚È‚è‚Ü‚·B + /// + public ref class Form1 : public System::Windows::Forms::Form + { + // “ÆŽ©’ljÁƒtƒB[ƒ‹ƒh + private: + // SRLî•ñ(ROMƒwƒbƒ_‚ðŠÜ‚Þ) + RCSrl ^hSrl; + + // ƒ}ƒXƒ^‘—Þ + RCDeliverable ^hDeliv; + + // ‘—Þo—̓‚[ƒh(ƒm[ƒ}ƒ‹XML or XML Spread Sheet) + System::Boolean ^hIsSpreadSheet; + + // ƒŠ[ƒhƒIƒ“ƒŠ[ƒ‚[ƒh + System::Boolean ^hIsReadOnly; + + // “ü—̓Gƒ‰[î•ñ + System::Collections::Generic::List ^hErrorList; + System::Collections::Generic::List ^hWarnList; + + // SRL‚É“o˜^‚³‚ê‚È‚¢ROMŽd—l‚ð“ǂݞ‚ÝŽž‚Ìó‘Ô‚É–ß‚¹‚éŽd‘g‚Ý + System::Boolean ^hIsCheckedUGC; // “ǂݞ‚ÝŽž‚Ƀ`ƒFƒbƒN‚³‚ê‚Ä‚¢‚½‚© + System::Boolean ^hIsCheckedPhotoEx; + + // VCŽ©“®’ljÁƒtƒB[ƒ‹ƒh + private: System::Windows::Forms::GroupBox^ gboxCRC; + private: System::Windows::Forms::TextBox^ tboxWholeCRC; + + private: System::Windows::Forms::Label^ labTitleName; + private: System::Windows::Forms::Label^ labGameCode; + private: System::Windows::Forms::TextBox^ tboxGameCode; + private: System::Windows::Forms::Label^ labMakerCode; + private: System::Windows::Forms::TextBox^ tboxMakerCode; + private: System::Windows::Forms::Label^ labRomType; + private: System::Windows::Forms::ComboBox^ combBackup; + private: System::Windows::Forms::Label^ labRomSize; + private: System::Windows::Forms::TextBox^ tboxRomLatency; + private: System::Windows::Forms::Label^ labBackup; + private: System::Windows::Forms::Label^ labPlatform; + private: System::Windows::Forms::Label^ labRomCRC; + private: System::Windows::Forms::Label^ labHeaderCRC; + private: System::Windows::Forms::TextBox^ tboxHeaderCRC; + private: System::Windows::Forms::TextBox^ tboxBackupOther; + private: System::Windows::Forms::Label^ labCaption; + private: System::Windows::Forms::TextBox^ tboxCaption; + + + + private: System::Windows::Forms::TextBox^ tboxRomSize; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private: System::Windows::Forms::Label^ labOFLC; + private: System::Windows::Forms::Label^ labPEGI_BBFC; + private: System::Windows::Forms::Label^ labPEGI_PRT; + private: System::Windows::Forms::Label^ labPEGI; + private: System::Windows::Forms::Label^ labUSK; + private: System::Windows::Forms::Label^ labESRB; + private: System::Windows::Forms::Label^ labCERO; + + + + + + + + private: System::Windows::Forms::ComboBox^ combOFLC; + private: System::Windows::Forms::ComboBox^ combPEGI_BBFC; + private: System::Windows::Forms::ComboBox^ combPEGI_PRT; + private: System::Windows::Forms::ComboBox^ combPEGI; + private: System::Windows::Forms::ComboBox^ combUSK; + private: System::Windows::Forms::ComboBox^ combESRB; + private: System::Windows::Forms::ComboBox^ combCERO; + + + + + + + + + private: System::Windows::Forms::Label^ labParentalRating; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private: System::Windows::Forms::CheckBox^ cboxIsEULA; + + + + + + + + + + + + + + + + + + + + + + + + + + + + private: System::Windows::Forms::CheckBox^ cboxIsInputPerson2; + private: System::Windows::Forms::GroupBox^ gboxPerson2; + private: System::Windows::Forms::Label^ labNTSC2Sur; + private: System::Windows::Forms::TextBox^ tboxNTSC2; + private: System::Windows::Forms::Label^ labNTSC2Pre; + private: System::Windows::Forms::TextBox^ tboxFax2; + private: System::Windows::Forms::TextBox^ tboxMail2; + private: System::Windows::Forms::TextBox^ tboxTel2; + private: System::Windows::Forms::TextBox^ tboxFurigana2; + private: System::Windows::Forms::TextBox^ tboxPerson2; + private: System::Windows::Forms::TextBox^ tboxDepart2; + private: System::Windows::Forms::Label^ labDepart2; + private: System::Windows::Forms::TextBox^ tboxCompany2; + private: System::Windows::Forms::Label^ labMail2; + private: System::Windows::Forms::Label^ labFax2; + private: System::Windows::Forms::Label^ labTel2; + private: System::Windows::Forms::Label^ labFurigana2; + private: System::Windows::Forms::Label^ labPerson2; + private: System::Windows::Forms::Label^ labCompany2; + private: System::Windows::Forms::GroupBox^ gboxPerson1; + private: System::Windows::Forms::Label^ labNTSC1Sur; + private: System::Windows::Forms::Label^ labNTSC1Pre; + private: System::Windows::Forms::TextBox^ tboxNTSC1; + private: System::Windows::Forms::TextBox^ tboxFax1; + private: System::Windows::Forms::TextBox^ tboxMail1; + private: System::Windows::Forms::TextBox^ tboxTel1; + private: System::Windows::Forms::TextBox^ tboxFurigana1; + private: System::Windows::Forms::TextBox^ tboxPerson1; + private: System::Windows::Forms::TextBox^ tboxDepart1; + private: System::Windows::Forms::Label^ labDepart1; + private: System::Windows::Forms::TextBox^ tboxCompany1; + private: System::Windows::Forms::Label^ labMail1; + private: System::Windows::Forms::Label^ labFax1; + private: System::Windows::Forms::Label^ labTel1; + private: System::Windows::Forms::Label^ labFurigana1; + private: System::Windows::Forms::Label^ labPerson1; + private: System::Windows::Forms::Label^ labCompany1; + + private: System::Windows::Forms::TextBox^ tboxRemasterVer; + private: System::Windows::Forms::TextBox^ tboxProductCode2; + + private: System::Windows::Forms::TextBox^ tboxProductCode1; + private: System::Windows::Forms::TextBox^ tboxProductName; + + + + + + + + + + private: System::Windows::Forms::Label^ labProductCode2; + private: System::Windows::Forms::Label^ labProductCode1; + private: System::Windows::Forms::DateTimePicker^ dateSubmit; + private: System::Windows::Forms::DateTimePicker^ dateRelease; + + private: System::Windows::Forms::CheckBox^ cboxRemasterVerE; + private: System::Windows::Forms::Label^ labCapSubmitVer; + private: System::Windows::Forms::NumericUpDown^ numSubmitVersion; + private: System::Windows::Forms::Label^ labSubmitVer; + private: System::Windows::Forms::Label^ labRemasterVer; + + + private: System::Windows::Forms::GroupBox^ gboxUsage; + private: System::Windows::Forms::TextBox^ tboxUsageOther; + private: System::Windows::Forms::RadioButton^ rUsageOther; + private: System::Windows::Forms::RadioButton^ rUsageDst; + private: System::Windows::Forms::RadioButton^ rUsageSample; + private: System::Windows::Forms::RadioButton^ rUsageSale; + + private: System::Windows::Forms::GroupBox^ gboxSubmitWay; + private: System::Windows::Forms::RadioButton^ rSubmitHand; + private: System::Windows::Forms::RadioButton^ rSubmitPost; + + private: System::Windows::Forms::Label^ labSubmiteDate; + private: System::Windows::Forms::Label^ labReleaseDate; + private: System::Windows::Forms::Label^ labProductCode; + private: System::Windows::Forms::Label^ labProductName; +private: System::Windows::Forms::ComboBox^ combRegion; + + + + + + + + + + + + + + + + + + + +private: System::Windows::Forms::Label^ labRegion; + + + + + + + + + +private: System::Windows::Forms::Label^ labProductCode2Foreign; +private: System::Windows::Forms::CheckBox^ cboxReleaseForeign; +private: System::Windows::Forms::Label^ labProductNameForeign; +private: System::Windows::Forms::TextBox^ tboxProductNameForeign; +private: System::Windows::Forms::Label^ labProductCode1Foreign; +private: System::Windows::Forms::TextBox^ tboxProductCode1Foreign; +private: System::Windows::Forms::Label^ labProductCodeForeign; +private: System::Windows::Forms::TextBox^ tboxProductCode2Foreign1; + + + + + + + + + + + + + + +private: System::Windows::Forms::GroupBox^ gboxShared2Size; +private: System::Windows::Forms::Label^ labShared2Size5; +private: System::Windows::Forms::Label^ labShared2Size4; +private: System::Windows::Forms::Label^ labShared2Size3; +private: System::Windows::Forms::Label^ labShared2Size2; +private: System::Windows::Forms::Label^ labShared2Size1; +private: System::Windows::Forms::Label^ labShared2Size0; + + + + + + +private: System::Windows::Forms::TextBox^ tboxShared2Size5; +private: System::Windows::Forms::TextBox^ tboxShared2Size4; +private: System::Windows::Forms::TextBox^ tboxShared2Size3; +private: System::Windows::Forms::TextBox^ tboxShared2Size2; +private: System::Windows::Forms::TextBox^ tboxShared2Size1; +private: System::Windows::Forms::TextBox^ tboxShared2Size0; +private: System::Windows::Forms::CheckBox^ cboxIsShared2; + +private: System::Windows::Forms::Label^ labLib; +private: System::Windows::Forms::TextBox^ tboxSDK; +private: System::Windows::Forms::Label^ labSDK; + +private: System::Windows::Forms::GroupBox^ gboxTWLExInfo; + + + +private: System::Windows::Forms::Label^ labByte1; +private: System::Windows::Forms::Label^ labHex4; +private: System::Windows::Forms::Label^ labHex3; +private: System::Windows::Forms::TextBox^ tboxIsCodec; +private: System::Windows::Forms::Label^ labIsCodec; +private: System::Windows::Forms::Label^ labNormalRomOffset; +private: System::Windows::Forms::TextBox^ tboxNormalRomOffset; +private: System::Windows::Forms::CheckBox^ cboxIsSubBanner; +private: System::Windows::Forms::Label^ labKeyTableRomOffset; +private: System::Windows::Forms::CheckBox^ cboxIsWL; +private: System::Windows::Forms::TextBox^ tboxPrivateSize; +private: System::Windows::Forms::Label^ labPrivateSize; +private: System::Windows::Forms::TextBox^ tboxKeyTableRomOffset; +private: System::Windows::Forms::CheckBox^ cboxIsNormalJump; +private: System::Windows::Forms::CheckBox^ cboxIsTmpJump; +private: System::Windows::Forms::Label^ labPublicSize; +private: System::Windows::Forms::TextBox^ tboxPublicSize; + + +private: System::Windows::Forms::GroupBox^ gboxAccess; +private: System::Windows::Forms::Label^ labAccessOther; +private: System::Windows::Forms::TextBox^ tboxAccessOther; +private: System::Windows::Forms::TextBox^ tboxIsGameCardOn; +private: System::Windows::Forms::Label^ labIsGameCardOn; +private: System::Windows::Forms::CheckBox^ cboxIsNAND; +private: System::Windows::Forms::CheckBox^ cboxIsSD; + + + +private: System::Windows::Forms::GroupBox^ gboxTitleID; +private: System::Windows::Forms::Label^ labHex2; + +private: System::Windows::Forms::TextBox^ tboxTitleIDLo; +private: System::Windows::Forms::Label^ labTitleIDLo; +private: System::Windows::Forms::Label^ labTitleIDHi; +private: System::Windows::Forms::TextBox^ tboxTitleIDHi; +private: System::Windows::Forms::TextBox^ tboxAppTypeOther; + +private: System::Windows::Forms::Label^ labAppTypeOther; + +private: System::Windows::Forms::Label^ labCaptionEx; +private: System::Windows::Forms::TextBox^ tboxCaptionEx; + + + +private: System::Windows::Forms::TextBox^ tboxProductCode2Foreign3; + +private: System::Windows::Forms::TextBox^ tboxProductCode2Foreign2; +private: System::Windows::Forms::Label^ labMultiForeign1; + + + +private: System::Windows::Forms::GroupBox^ gboxProd; + + + +private: System::Windows::Forms::MenuStrip^ menuStripAbove; + +private: System::Windows::Forms::ToolStripMenuItem^ stripFile; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemOpenRom; + +private: System::Windows::Forms::ToolStripMenuItem^ stripItemSaveTemp; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemLoadTemp; +private: System::Windows::Forms::ToolStripMenuItem^ stripMaster; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemMasterRom; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemSheet; +private: System::Windows::Forms::ToolStripMenuItem^ stripLang; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemEnglish; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemJapanese; +private: System::Windows::Forms::TabControl^ tabMain; +private: System::Windows::Forms::TabPage^ tabRomInfo; + + +private: System::Windows::Forms::TabPage^ tabTWLInfo; +private: System::Windows::Forms::TabPage^ tabRomEditInfo; +private: System::Windows::Forms::TabPage^ tabSubmitInfo; + + + + + + + +private: System::Windows::Forms::TabPage^ tabCompanyInfo; + +private: System::Windows::Forms::GroupBox^ gboxForeign; +private: System::Windows::Forms::GroupBox^ gboxExFlags; + + + +private: System::Windows::Forms::GroupBox^ gboxEULA; +private: System::Windows::Forms::GroupBox^ gboxIcon; +private: System::Windows::Forms::GroupBox^ gboxParental; +private: System::Windows::Forms::TextBox^ tboxGuideRomInfo; +private: System::Windows::Forms::TextBox^ tboxGuideTWLInfo; +private: System::Windows::Forms::TextBox^ tboxGuideRomEditInfo; +private: System::Windows::Forms::TextBox^ tboxGuideSubmitInfo; +private: System::Windows::Forms::TextBox^ tboxGuideCompanyInfo; + + + + + + + + + + +private: System::Windows::Forms::Label^ labFile; +public: System::Windows::Forms::DataGridView^ gridError; +private: System::Windows::Forms::TabPage^ tabErrorInfo; +public: +private: + +public: + + + + +public: System::Windows::Forms::DataGridView^ gridWarn; +private: System::Windows::Forms::TextBox^ tboxGuideErrorInfo; +public: +private: + +public: + + + + +private: System::Windows::Forms::GroupBox^ gboxErrorTiming; +private: System::Windows::Forms::Label^ labWarn; +private: System::Windows::Forms::Label^ labError; +private: System::Windows::Forms::RadioButton^ rErrorCurrent; + +private: System::Windows::Forms::RadioButton^ rErrorReading; + + + + + + + + +private: System::Windows::Forms::Label^ labMultiForeign2; +private: System::Windows::Forms::DataGridView^ gridLibrary; + + + + + + + + + + +private: System::Windows::Forms::Label^ labAssemblyVersion; +private: System::Windows::Forms::Label^ labArbit4; +private: System::Windows::Forms::Label^ labArbit3; +private: System::Windows::Forms::Label^ labArbit2; +private: System::Windows::Forms::Label^ labArbit1; +private: System::Windows::Forms::Button^ butSetBack; +private: System::Windows::Forms::Label^ labAppType; + +private: System::Windows::Forms::Label^ labMedia; +private: System::Windows::Forms::TextBox^ tboxAppType; + +private: System::Windows::Forms::TextBox^ tboxMedia; +private: System::Windows::Forms::Label^ labProductNameLimit; +private: System::Windows::Forms::Label^ labProductNameLimitForeign; +private: System::Windows::Forms::RadioButton^ rIsWiFiIcon; + + + +private: System::Windows::Forms::RadioButton^ rIsWirelessIcon; +private: System::Windows::Forms::RadioButton^ rIsNoIcon; + + + + + + + + + + + + + + + + + +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibPublisher; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemMiddlewareXml; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemMiddlewareHtml; +private: System::Windows::Forms::ToolStripSeparator^ stripItemSepFile1; +private: System::Windows::Forms::ToolStripSeparator^ stripItemSepMaster1; +private: System::Windows::Forms::GroupBox^ gboxOtherSpec; +private: System::Windows::Forms::CheckBox^ cboxIsUGC; +private: System::Windows::Forms::CheckBox^ cboxIsPhotoEx; + + + + +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorName; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorBegin; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorEnd; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnName; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnBegin; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnEnd; +private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private: System::Windows::Forms::TextBox^ tboxPlatform; + + public: + Form1(void) + { + InitializeComponent(); + // + //TODO: ‚±‚±‚ɃRƒ“ƒXƒgƒ‰ƒNƒ^ ƒR[ƒh‚ð’ljÁ‚µ‚Ü‚· + // + this->hSrl = gcnew (RCSrl); + this->hDeliv = gcnew (RCDeliverable); + this->hErrorList = gcnew System::Collections::Generic::List(); + this->hErrorList->Clear(); + this->hWarnList = gcnew System::Collections::Generic::List(); + this->hWarnList->Clear(); + this->hIsCheckedUGC = gcnew System::Boolean(false); + this->hIsCheckedPhotoEx = gcnew System::Boolean(false); + + // ƒo[ƒWƒ‡ƒ“î•ñ‚ð•\ަ + //this->labAssemblyVersion->Text = System::Windows::Forms::Application::ProductVersion; + System::Reflection::Assembly ^ass = System::Reflection::Assembly::GetEntryAssembly(); + this->labAssemblyVersion->Text = "ver." + this->getVersion(); + + // ƒfƒtƒHƒ‹ƒg’l + this->hIsSpreadSheet = gcnew System::Boolean( true ); + this->hIsReadOnly = gcnew System::Boolean( false ); + this->dateRelease->Value = System::DateTime::Now; + this->dateSubmit->Value = System::DateTime::Now; +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + this->combRegion->Items->Add( gcnew System::String( L"‘SƒŠ[ƒWƒ‡ƒ“" ) ); +#endif + + // ƒAƒvƒŠŽí•Ê‚ð‚‚¯‚é + System::String ^appstr = nullptr; +#ifdef METWL_VER_APPTYPE_LAUNCHER + appstr += "Launcher/"; +#endif +#ifdef METWL_VER_APPTYPE_SECURE + appstr += "Secure/"; +#endif +#ifdef METWL_VER_APPTYPE_SYSTEM + appstr += "System/"; +#endif + if( appstr != nullptr) + { + this->Text += " [ Supported App: " + appstr + "User ]"; + } + + // •¡”s•\ަ‚̉üs‚ð‘}“ü + this->tboxGuideRomEditInfo->Text = this->tboxGuideRomEditInfo->Text->Replace( "", "\r\n" ); + this->tboxGuideErrorInfo->Text = this->tboxGuideErrorInfo->Text->Replace( "", "\r\n" ); + + // Œ¾Œêƒo[ƒWƒ‡ƒ“‚É‚ ‚킹‚ăƒjƒ…[‚Ƀ`ƒFƒbƒN‚ð“ü‚ê‚é + if( System::Threading::Thread::CurrentThread->CurrentUICulture->Name->StartsWith( "ja" ) ) + { + this->stripItemJapanese->Checked = true; + this->stripItemEnglish->Checked = false; + } + else + { + this->stripItemJapanese->Checked = false; + this->stripItemEnglish->Checked = true; + } + + this->loadInit(); // Ý’èƒtƒ@ƒCƒ‹‚̓ǂݞ‚Ý + } + + protected: + /// + /// Žg—p’†‚ÌƒŠƒ\[ƒX‚ð‚·‚×‚ÄƒNƒŠ[ƒ“ƒAƒbƒv‚µ‚Ü‚·B + /// + ~Form1() + { + if (components) + { + delete components; + } + } + private: System::Windows::Forms::TextBox^ tboxFile; + protected: + + + private: System::Windows::Forms::GroupBox^ gboxSrl; + private: System::Windows::Forms::TextBox^ tboxTitleName; + + + + private: + /// + /// •K—v‚ȃfƒUƒCƒi•Ï”‚Å‚·B + /// + System::ComponentModel::Container ^components; + +#pragma region Windows Form Designer generated code + /// + /// ƒfƒUƒCƒi ƒTƒ|[ƒg‚É•K—v‚ȃƒ\ƒbƒh‚Å‚·B‚±‚̃ƒ\ƒbƒh‚Ì“à—e‚ð + /// ƒR[ƒh ƒGƒfƒBƒ^‚Å•ÏX‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B + /// + void InitializeComponent(void) + { + System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid)); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle1 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle2 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle3 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle4 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + this->tboxFile = (gcnew System::Windows::Forms::TextBox()); + this->gboxSrl = (gcnew System::Windows::Forms::GroupBox()); + this->tboxRemasterVer = (gcnew System::Windows::Forms::TextBox()); + this->tboxRomSize = (gcnew System::Windows::Forms::TextBox()); + this->tboxPlatform = (gcnew System::Windows::Forms::TextBox()); + this->labPlatform = (gcnew System::Windows::Forms::Label()); + this->tboxRomLatency = (gcnew System::Windows::Forms::TextBox()); + this->labRomSize = (gcnew System::Windows::Forms::Label()); + this->labRomType = (gcnew System::Windows::Forms::Label()); + this->tboxMakerCode = (gcnew System::Windows::Forms::TextBox()); + this->cboxRemasterVerE = (gcnew System::Windows::Forms::CheckBox()); + this->labMakerCode = (gcnew System::Windows::Forms::Label()); + this->labGameCode = (gcnew System::Windows::Forms::Label()); + this->tboxGameCode = (gcnew System::Windows::Forms::TextBox()); + this->labTitleName = (gcnew System::Windows::Forms::Label()); + this->labRemasterVer = (gcnew System::Windows::Forms::Label()); + this->tboxTitleName = (gcnew System::Windows::Forms::TextBox()); + this->labBackup = (gcnew System::Windows::Forms::Label()); + this->combBackup = (gcnew System::Windows::Forms::ComboBox()); + this->tboxBackupOther = (gcnew System::Windows::Forms::TextBox()); + this->gboxCRC = (gcnew System::Windows::Forms::GroupBox()); + this->labRomCRC = (gcnew System::Windows::Forms::Label()); + this->labHeaderCRC = (gcnew System::Windows::Forms::Label()); + this->tboxHeaderCRC = (gcnew System::Windows::Forms::TextBox()); + this->tboxWholeCRC = (gcnew System::Windows::Forms::TextBox()); + this->labCaption = (gcnew System::Windows::Forms::Label()); + this->tboxCaption = (gcnew System::Windows::Forms::TextBox()); + this->labOFLC = (gcnew System::Windows::Forms::Label()); + this->labPEGI_BBFC = (gcnew System::Windows::Forms::Label()); + this->labPEGI_PRT = (gcnew System::Windows::Forms::Label()); + this->labPEGI = (gcnew System::Windows::Forms::Label()); + this->labUSK = (gcnew System::Windows::Forms::Label()); + this->labESRB = (gcnew System::Windows::Forms::Label()); + this->labCERO = (gcnew System::Windows::Forms::Label()); + this->combOFLC = (gcnew System::Windows::Forms::ComboBox()); + this->combPEGI_BBFC = (gcnew System::Windows::Forms::ComboBox()); + this->combPEGI_PRT = (gcnew System::Windows::Forms::ComboBox()); + this->combPEGI = (gcnew System::Windows::Forms::ComboBox()); + this->combUSK = (gcnew System::Windows::Forms::ComboBox()); + this->combESRB = (gcnew System::Windows::Forms::ComboBox()); + this->combCERO = (gcnew System::Windows::Forms::ComboBox()); + this->labParentalRating = (gcnew System::Windows::Forms::Label()); + this->labRegion = (gcnew System::Windows::Forms::Label()); + this->cboxIsEULA = (gcnew System::Windows::Forms::CheckBox()); + this->combRegion = (gcnew System::Windows::Forms::ComboBox()); + this->cboxIsInputPerson2 = (gcnew System::Windows::Forms::CheckBox()); + this->gboxPerson2 = (gcnew System::Windows::Forms::GroupBox()); + this->labArbit4 = (gcnew System::Windows::Forms::Label()); + this->labArbit3 = (gcnew System::Windows::Forms::Label()); + this->labNTSC2Sur = (gcnew System::Windows::Forms::Label()); + this->tboxNTSC2 = (gcnew System::Windows::Forms::TextBox()); + this->labFax2 = (gcnew System::Windows::Forms::Label()); + this->labNTSC2Pre = (gcnew System::Windows::Forms::Label()); + this->tboxFax2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxMail2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxTel2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxFurigana2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxPerson2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxDepart2 = (gcnew System::Windows::Forms::TextBox()); + this->labDepart2 = (gcnew System::Windows::Forms::Label()); + this->tboxCompany2 = (gcnew System::Windows::Forms::TextBox()); + this->labMail2 = (gcnew System::Windows::Forms::Label()); + this->labTel2 = (gcnew System::Windows::Forms::Label()); + this->labFurigana2 = (gcnew System::Windows::Forms::Label()); + this->labPerson2 = (gcnew System::Windows::Forms::Label()); + this->labCompany2 = (gcnew System::Windows::Forms::Label()); + this->gboxPerson1 = (gcnew System::Windows::Forms::GroupBox()); + this->labArbit2 = (gcnew System::Windows::Forms::Label()); + this->labArbit1 = (gcnew System::Windows::Forms::Label()); + this->labNTSC1Sur = (gcnew System::Windows::Forms::Label()); + this->labFax1 = (gcnew System::Windows::Forms::Label()); + this->labNTSC1Pre = (gcnew System::Windows::Forms::Label()); + this->tboxNTSC1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxFax1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxMail1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxTel1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxFurigana1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxPerson1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxDepart1 = (gcnew System::Windows::Forms::TextBox()); + this->labDepart1 = (gcnew System::Windows::Forms::Label()); + this->tboxCompany1 = (gcnew System::Windows::Forms::TextBox()); + this->labMail1 = (gcnew System::Windows::Forms::Label()); + this->labTel1 = (gcnew System::Windows::Forms::Label()); + this->labFurigana1 = (gcnew System::Windows::Forms::Label()); + this->labPerson1 = (gcnew System::Windows::Forms::Label()); + this->labCompany1 = (gcnew System::Windows::Forms::Label()); + this->tboxProductCode2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxProductCode1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxProductName = (gcnew System::Windows::Forms::TextBox()); + this->labProductCode2 = (gcnew System::Windows::Forms::Label()); + this->labProductCode1 = (gcnew System::Windows::Forms::Label()); + this->dateSubmit = (gcnew System::Windows::Forms::DateTimePicker()); + this->dateRelease = (gcnew System::Windows::Forms::DateTimePicker()); + this->gboxUsage = (gcnew System::Windows::Forms::GroupBox()); + this->tboxUsageOther = (gcnew System::Windows::Forms::TextBox()); + this->rUsageOther = (gcnew System::Windows::Forms::RadioButton()); + this->rUsageDst = (gcnew System::Windows::Forms::RadioButton()); + this->rUsageSample = (gcnew System::Windows::Forms::RadioButton()); + this->rUsageSale = (gcnew System::Windows::Forms::RadioButton()); + this->gboxSubmitWay = (gcnew System::Windows::Forms::GroupBox()); + this->rSubmitHand = (gcnew System::Windows::Forms::RadioButton()); + this->rSubmitPost = (gcnew System::Windows::Forms::RadioButton()); + this->labSubmiteDate = (gcnew System::Windows::Forms::Label()); + this->labReleaseDate = (gcnew System::Windows::Forms::Label()); + this->labProductCode = (gcnew System::Windows::Forms::Label()); + this->labProductName = (gcnew System::Windows::Forms::Label()); + this->labCapSubmitVer = (gcnew System::Windows::Forms::Label()); + this->numSubmitVersion = (gcnew System::Windows::Forms::NumericUpDown()); + this->labSubmitVer = (gcnew System::Windows::Forms::Label()); + this->labMultiForeign1 = (gcnew System::Windows::Forms::Label()); + this->tboxProductCode2Foreign3 = (gcnew System::Windows::Forms::TextBox()); + this->tboxProductCode2Foreign2 = (gcnew System::Windows::Forms::TextBox()); + this->labProductCode2Foreign = (gcnew System::Windows::Forms::Label()); + this->cboxReleaseForeign = (gcnew System::Windows::Forms::CheckBox()); + this->labProductNameForeign = (gcnew System::Windows::Forms::Label()); + this->tboxProductNameForeign = (gcnew System::Windows::Forms::TextBox()); + this->labProductCode1Foreign = (gcnew System::Windows::Forms::Label()); + this->tboxProductCode1Foreign = (gcnew System::Windows::Forms::TextBox()); + this->labProductCodeForeign = (gcnew System::Windows::Forms::Label()); + this->tboxProductCode2Foreign1 = (gcnew System::Windows::Forms::TextBox()); + this->gboxShared2Size = (gcnew System::Windows::Forms::GroupBox()); + this->labShared2Size5 = (gcnew System::Windows::Forms::Label()); + this->labShared2Size4 = (gcnew System::Windows::Forms::Label()); + this->labShared2Size3 = (gcnew System::Windows::Forms::Label()); + this->labShared2Size2 = (gcnew System::Windows::Forms::Label()); + this->labShared2Size1 = (gcnew System::Windows::Forms::Label()); + this->labShared2Size0 = (gcnew System::Windows::Forms::Label()); + this->tboxShared2Size5 = (gcnew System::Windows::Forms::TextBox()); + this->tboxShared2Size4 = (gcnew System::Windows::Forms::TextBox()); + this->tboxShared2Size3 = (gcnew System::Windows::Forms::TextBox()); + this->tboxShared2Size2 = (gcnew System::Windows::Forms::TextBox()); + this->tboxShared2Size1 = (gcnew System::Windows::Forms::TextBox()); + this->tboxShared2Size0 = (gcnew System::Windows::Forms::TextBox()); + this->cboxIsShared2 = (gcnew System::Windows::Forms::CheckBox()); + this->labLib = (gcnew System::Windows::Forms::Label()); + this->tboxSDK = (gcnew System::Windows::Forms::TextBox()); + this->labSDK = (gcnew System::Windows::Forms::Label()); + this->gboxTWLExInfo = (gcnew System::Windows::Forms::GroupBox()); + this->labByte1 = (gcnew System::Windows::Forms::Label()); + this->labHex4 = (gcnew System::Windows::Forms::Label()); + this->labHex3 = (gcnew System::Windows::Forms::Label()); + this->tboxIsCodec = (gcnew System::Windows::Forms::TextBox()); + this->labIsCodec = (gcnew System::Windows::Forms::Label()); + this->labNormalRomOffset = (gcnew System::Windows::Forms::Label()); + this->tboxNormalRomOffset = (gcnew System::Windows::Forms::TextBox()); + this->labKeyTableRomOffset = (gcnew System::Windows::Forms::Label()); + this->tboxPrivateSize = (gcnew System::Windows::Forms::TextBox()); + this->labPrivateSize = (gcnew System::Windows::Forms::Label()); + this->tboxKeyTableRomOffset = (gcnew System::Windows::Forms::TextBox()); + this->labPublicSize = (gcnew System::Windows::Forms::Label()); + this->tboxPublicSize = (gcnew System::Windows::Forms::TextBox()); + this->cboxIsSubBanner = (gcnew System::Windows::Forms::CheckBox()); + this->cboxIsWL = (gcnew System::Windows::Forms::CheckBox()); + this->cboxIsNormalJump = (gcnew System::Windows::Forms::CheckBox()); + this->cboxIsTmpJump = (gcnew System::Windows::Forms::CheckBox()); + this->gboxAccess = (gcnew System::Windows::Forms::GroupBox()); + this->labAccessOther = (gcnew System::Windows::Forms::Label()); + this->tboxAccessOther = (gcnew System::Windows::Forms::TextBox()); + this->tboxIsGameCardOn = (gcnew System::Windows::Forms::TextBox()); + this->labIsGameCardOn = (gcnew System::Windows::Forms::Label()); + this->cboxIsNAND = (gcnew System::Windows::Forms::CheckBox()); + this->cboxIsSD = (gcnew System::Windows::Forms::CheckBox()); + this->gboxTitleID = (gcnew System::Windows::Forms::GroupBox()); + this->labAppType = (gcnew System::Windows::Forms::Label()); + this->labMedia = (gcnew System::Windows::Forms::Label()); + this->tboxAppType = (gcnew System::Windows::Forms::TextBox()); + this->tboxMedia = (gcnew System::Windows::Forms::TextBox()); + this->labHex2 = (gcnew System::Windows::Forms::Label()); + this->tboxTitleIDLo = (gcnew System::Windows::Forms::TextBox()); + this->labTitleIDLo = (gcnew System::Windows::Forms::Label()); + this->labTitleIDHi = (gcnew System::Windows::Forms::Label()); + this->tboxTitleIDHi = (gcnew System::Windows::Forms::TextBox()); + this->tboxAppTypeOther = (gcnew System::Windows::Forms::TextBox()); + this->labAppTypeOther = (gcnew System::Windows::Forms::Label()); + this->labCaptionEx = (gcnew System::Windows::Forms::Label()); + this->tboxCaptionEx = (gcnew System::Windows::Forms::TextBox()); + this->gboxProd = (gcnew System::Windows::Forms::GroupBox()); + this->menuStripAbove = (gcnew System::Windows::Forms::MenuStrip()); + this->stripFile = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemOpenRom = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemSepFile1 = (gcnew System::Windows::Forms::ToolStripSeparator()); + this->stripItemSaveTemp = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemLoadTemp = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripMaster = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemSheet = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemSepMaster1 = (gcnew System::Windows::Forms::ToolStripSeparator()); + this->stripItemMasterRom = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemMiddlewareXml = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemMiddlewareHtml = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripLang = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemEnglish = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemJapanese = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->tabMain = (gcnew System::Windows::Forms::TabControl()); + this->tabRomInfo = (gcnew System::Windows::Forms::TabPage()); + this->gridLibrary = (gcnew System::Windows::Forms::DataGridView()); + this->colLibPublisher = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colLibName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->tboxGuideRomInfo = (gcnew System::Windows::Forms::TextBox()); + this->tabTWLInfo = (gcnew System::Windows::Forms::TabPage()); + this->tboxGuideTWLInfo = (gcnew System::Windows::Forms::TextBox()); + this->gboxExFlags = (gcnew System::Windows::Forms::GroupBox()); + this->tabRomEditInfo = (gcnew System::Windows::Forms::TabPage()); + this->gboxOtherSpec = (gcnew System::Windows::Forms::GroupBox()); + this->cboxIsUGC = (gcnew System::Windows::Forms::CheckBox()); + this->cboxIsPhotoEx = (gcnew System::Windows::Forms::CheckBox()); + this->butSetBack = (gcnew System::Windows::Forms::Button()); + this->tboxGuideRomEditInfo = (gcnew System::Windows::Forms::TextBox()); + this->gboxParental = (gcnew System::Windows::Forms::GroupBox()); + this->gboxIcon = (gcnew System::Windows::Forms::GroupBox()); + this->rIsNoIcon = (gcnew System::Windows::Forms::RadioButton()); + this->rIsWiFiIcon = (gcnew System::Windows::Forms::RadioButton()); + this->rIsWirelessIcon = (gcnew System::Windows::Forms::RadioButton()); + this->gboxEULA = (gcnew System::Windows::Forms::GroupBox()); + this->tabSubmitInfo = (gcnew System::Windows::Forms::TabPage()); + this->labProductNameLimit = (gcnew System::Windows::Forms::Label()); + this->tboxGuideSubmitInfo = (gcnew System::Windows::Forms::TextBox()); + this->gboxForeign = (gcnew System::Windows::Forms::GroupBox()); + this->labProductNameLimitForeign = (gcnew System::Windows::Forms::Label()); + this->labMultiForeign2 = (gcnew System::Windows::Forms::Label()); + this->tabCompanyInfo = (gcnew System::Windows::Forms::TabPage()); + this->tboxGuideCompanyInfo = (gcnew System::Windows::Forms::TextBox()); + this->tabErrorInfo = (gcnew System::Windows::Forms::TabPage()); + this->tboxGuideErrorInfo = (gcnew System::Windows::Forms::TextBox()); + this->gboxErrorTiming = (gcnew System::Windows::Forms::GroupBox()); + this->rErrorCurrent = (gcnew System::Windows::Forms::RadioButton()); + this->rErrorReading = (gcnew System::Windows::Forms::RadioButton()); + this->labWarn = (gcnew System::Windows::Forms::Label()); + this->labError = (gcnew System::Windows::Forms::Label()); + this->gridWarn = (gcnew System::Windows::Forms::DataGridView()); + this->colWarnName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->gridError = (gcnew System::Windows::Forms::DataGridView()); + this->colErrorName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->labFile = (gcnew System::Windows::Forms::Label()); + this->labAssemblyVersion = (gcnew System::Windows::Forms::Label()); + this->gboxSrl->SuspendLayout(); + this->gboxCRC->SuspendLayout(); + this->gboxPerson2->SuspendLayout(); + this->gboxPerson1->SuspendLayout(); + this->gboxUsage->SuspendLayout(); + this->gboxSubmitWay->SuspendLayout(); + (cli::safe_cast(this->numSubmitVersion))->BeginInit(); + this->gboxShared2Size->SuspendLayout(); + this->gboxTWLExInfo->SuspendLayout(); + this->gboxAccess->SuspendLayout(); + this->gboxTitleID->SuspendLayout(); + this->gboxProd->SuspendLayout(); + this->menuStripAbove->SuspendLayout(); + this->tabMain->SuspendLayout(); + this->tabRomInfo->SuspendLayout(); + (cli::safe_cast(this->gridLibrary))->BeginInit(); + this->tabTWLInfo->SuspendLayout(); + this->gboxExFlags->SuspendLayout(); + this->tabRomEditInfo->SuspendLayout(); + this->gboxOtherSpec->SuspendLayout(); + this->gboxParental->SuspendLayout(); + this->gboxIcon->SuspendLayout(); + this->gboxEULA->SuspendLayout(); + this->tabSubmitInfo->SuspendLayout(); + this->gboxForeign->SuspendLayout(); + this->tabCompanyInfo->SuspendLayout(); + this->tabErrorInfo->SuspendLayout(); + this->gboxErrorTiming->SuspendLayout(); + (cli::safe_cast(this->gridWarn))->BeginInit(); + (cli::safe_cast(this->gridError))->BeginInit(); + this->SuspendLayout(); + // + // tboxFile + // + this->tboxFile->AllowDrop = true; + resources->ApplyResources(this->tboxFile, L"tboxFile"); + this->tboxFile->Name = L"tboxFile"; + this->tboxFile->ReadOnly = true; + this->tboxFile->DragDrop += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::tboxFile_DragDrop); + this->tboxFile->DragEnter += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::tboxFile_DragEnter); + // + // gboxSrl + // + this->gboxSrl->Controls->Add(this->tboxRemasterVer); + this->gboxSrl->Controls->Add(this->tboxRomSize); + this->gboxSrl->Controls->Add(this->tboxPlatform); + this->gboxSrl->Controls->Add(this->labPlatform); + this->gboxSrl->Controls->Add(this->tboxRomLatency); + this->gboxSrl->Controls->Add(this->labRomSize); + this->gboxSrl->Controls->Add(this->labRomType); + this->gboxSrl->Controls->Add(this->tboxMakerCode); + this->gboxSrl->Controls->Add(this->cboxRemasterVerE); + this->gboxSrl->Controls->Add(this->labMakerCode); + this->gboxSrl->Controls->Add(this->labGameCode); + this->gboxSrl->Controls->Add(this->tboxGameCode); + this->gboxSrl->Controls->Add(this->labTitleName); + this->gboxSrl->Controls->Add(this->labRemasterVer); + this->gboxSrl->Controls->Add(this->tboxTitleName); + resources->ApplyResources(this->gboxSrl, L"gboxSrl"); + this->gboxSrl->Name = L"gboxSrl"; + this->gboxSrl->TabStop = false; + // + // tboxRemasterVer + // + resources->ApplyResources(this->tboxRemasterVer, L"tboxRemasterVer"); + this->tboxRemasterVer->Name = L"tboxRemasterVer"; + this->tboxRemasterVer->ReadOnly = true; + // + // tboxRomSize + // + resources->ApplyResources(this->tboxRomSize, L"tboxRomSize"); + this->tboxRomSize->Name = L"tboxRomSize"; + this->tboxRomSize->ReadOnly = true; + // + // tboxPlatform + // + resources->ApplyResources(this->tboxPlatform, L"tboxPlatform"); + this->tboxPlatform->Name = L"tboxPlatform"; + this->tboxPlatform->ReadOnly = true; + // + // labPlatform + // + resources->ApplyResources(this->labPlatform, L"labPlatform"); + this->labPlatform->Name = L"labPlatform"; + // + // tboxRomLatency + // + resources->ApplyResources(this->tboxRomLatency, L"tboxRomLatency"); + this->tboxRomLatency->Name = L"tboxRomLatency"; + this->tboxRomLatency->ReadOnly = true; + // + // labRomSize + // + resources->ApplyResources(this->labRomSize, L"labRomSize"); + this->labRomSize->Name = L"labRomSize"; + // + // labRomType + // + resources->ApplyResources(this->labRomType, L"labRomType"); + this->labRomType->Name = L"labRomType"; + // + // tboxMakerCode + // + resources->ApplyResources(this->tboxMakerCode, L"tboxMakerCode"); + this->tboxMakerCode->Name = L"tboxMakerCode"; + this->tboxMakerCode->ReadOnly = true; + // + // cboxRemasterVerE + // + resources->ApplyResources(this->cboxRemasterVerE, L"cboxRemasterVerE"); + this->cboxRemasterVerE->Name = L"cboxRemasterVerE"; + this->cboxRemasterVerE->UseVisualStyleBackColor = true; + this->cboxRemasterVerE->CheckedChanged += gcnew System::EventHandler(this, &Form1::cboxRemasterVerE_CheckedChanged); + // + // labMakerCode + // + resources->ApplyResources(this->labMakerCode, L"labMakerCode"); + this->labMakerCode->Name = L"labMakerCode"; + // + // labGameCode + // + resources->ApplyResources(this->labGameCode, L"labGameCode"); + this->labGameCode->Name = L"labGameCode"; + // + // tboxGameCode + // + resources->ApplyResources(this->tboxGameCode, L"tboxGameCode"); + this->tboxGameCode->Name = L"tboxGameCode"; + this->tboxGameCode->ReadOnly = true; + // + // labTitleName + // + resources->ApplyResources(this->labTitleName, L"labTitleName"); + this->labTitleName->Name = L"labTitleName"; + // + // labRemasterVer + // + resources->ApplyResources(this->labRemasterVer, L"labRemasterVer"); + this->labRemasterVer->Name = L"labRemasterVer"; + // + // tboxTitleName + // + resources->ApplyResources(this->tboxTitleName, L"tboxTitleName"); + this->tboxTitleName->Name = L"tboxTitleName"; + this->tboxTitleName->ReadOnly = true; + // + // labBackup + // + resources->ApplyResources(this->labBackup, L"labBackup"); + this->labBackup->Name = L"labBackup"; + // + // combBackup + // + this->combBackup->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combBackup->FormattingEnabled = true; + this->combBackup->Items->AddRange(gcnew cli::array< System::Object^ >(9) {resources->GetString(L"combBackup.Items"), resources->GetString(L"combBackup.Items1"), + resources->GetString(L"combBackup.Items2"), resources->GetString(L"combBackup.Items3"), resources->GetString(L"combBackup.Items4"), + resources->GetString(L"combBackup.Items5"), resources->GetString(L"combBackup.Items6"), resources->GetString(L"combBackup.Items7"), + resources->GetString(L"combBackup.Items8")}); + resources->ApplyResources(this->combBackup, L"combBackup"); + this->combBackup->Name = L"combBackup"; + this->combBackup->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::combBackup_SelectedIndexChanged); + // + // tboxBackupOther + // + resources->ApplyResources(this->tboxBackupOther, L"tboxBackupOther"); + this->tboxBackupOther->Name = L"tboxBackupOther"; + // + // gboxCRC + // + this->gboxCRC->Controls->Add(this->labRomCRC); + this->gboxCRC->Controls->Add(this->labHeaderCRC); + this->gboxCRC->Controls->Add(this->tboxHeaderCRC); + this->gboxCRC->Controls->Add(this->tboxWholeCRC); + resources->ApplyResources(this->gboxCRC, L"gboxCRC"); + this->gboxCRC->Name = L"gboxCRC"; + this->gboxCRC->TabStop = false; + // + // labRomCRC + // + resources->ApplyResources(this->labRomCRC, L"labRomCRC"); + this->labRomCRC->Name = L"labRomCRC"; + // + // labHeaderCRC + // + resources->ApplyResources(this->labHeaderCRC, L"labHeaderCRC"); + this->labHeaderCRC->Name = L"labHeaderCRC"; + // + // tboxHeaderCRC + // + resources->ApplyResources(this->tboxHeaderCRC, L"tboxHeaderCRC"); + this->tboxHeaderCRC->Name = L"tboxHeaderCRC"; + this->tboxHeaderCRC->ReadOnly = true; + // + // tboxWholeCRC + // + resources->ApplyResources(this->tboxWholeCRC, L"tboxWholeCRC"); + this->tboxWholeCRC->Name = L"tboxWholeCRC"; + this->tboxWholeCRC->ReadOnly = true; + // + // labCaption + // + resources->ApplyResources(this->labCaption, L"labCaption"); + this->labCaption->Name = L"labCaption"; + // + // tboxCaption + // + resources->ApplyResources(this->tboxCaption, L"tboxCaption"); + this->tboxCaption->Name = L"tboxCaption"; + // + // labOFLC + // + resources->ApplyResources(this->labOFLC, L"labOFLC"); + this->labOFLC->Name = L"labOFLC"; + // + // labPEGI_BBFC + // + resources->ApplyResources(this->labPEGI_BBFC, L"labPEGI_BBFC"); + this->labPEGI_BBFC->Name = L"labPEGI_BBFC"; + // + // labPEGI_PRT + // + resources->ApplyResources(this->labPEGI_PRT, L"labPEGI_PRT"); + this->labPEGI_PRT->Name = L"labPEGI_PRT"; + // + // labPEGI + // + resources->ApplyResources(this->labPEGI, L"labPEGI"); + this->labPEGI->Name = L"labPEGI"; + // + // labUSK + // + resources->ApplyResources(this->labUSK, L"labUSK"); + this->labUSK->Name = L"labUSK"; + // + // labESRB + // + resources->ApplyResources(this->labESRB, L"labESRB"); + this->labESRB->Name = L"labESRB"; + // + // labCERO + // + resources->ApplyResources(this->labCERO, L"labCERO"); + this->labCERO->Name = L"labCERO"; + // + // combOFLC + // + this->combOFLC->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combOFLC->FormattingEnabled = true; + this->combOFLC->Items->AddRange(gcnew cli::array< System::Object^ >(5) {resources->GetString(L"combOFLC.Items"), resources->GetString(L"combOFLC.Items1"), + resources->GetString(L"combOFLC.Items2"), resources->GetString(L"combOFLC.Items3"), resources->GetString(L"combOFLC.Items4")}); + resources->ApplyResources(this->combOFLC, L"combOFLC"); + this->combOFLC->Name = L"combOFLC"; + // + // combPEGI_BBFC + // + this->combPEGI_BBFC->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combPEGI_BBFC->FormattingEnabled = true; + this->combPEGI_BBFC->Items->AddRange(gcnew cli::array< System::Object^ >(10) {resources->GetString(L"combPEGI_BBFC.Items"), + resources->GetString(L"combPEGI_BBFC.Items1"), resources->GetString(L"combPEGI_BBFC.Items2"), resources->GetString(L"combPEGI_BBFC.Items3"), + resources->GetString(L"combPEGI_BBFC.Items4"), resources->GetString(L"combPEGI_BBFC.Items5"), resources->GetString(L"combPEGI_BBFC.Items6"), + resources->GetString(L"combPEGI_BBFC.Items7"), resources->GetString(L"combPEGI_BBFC.Items8"), resources->GetString(L"combPEGI_BBFC.Items9")}); + resources->ApplyResources(this->combPEGI_BBFC, L"combPEGI_BBFC"); + this->combPEGI_BBFC->Name = L"combPEGI_BBFC"; + // + // combPEGI_PRT + // + this->combPEGI_PRT->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combPEGI_PRT->FormattingEnabled = true; + this->combPEGI_PRT->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combPEGI_PRT.Items"), + resources->GetString(L"combPEGI_PRT.Items1"), resources->GetString(L"combPEGI_PRT.Items2"), resources->GetString(L"combPEGI_PRT.Items3"), + resources->GetString(L"combPEGI_PRT.Items4"), resources->GetString(L"combPEGI_PRT.Items5"), resources->GetString(L"combPEGI_PRT.Items6")}); + resources->ApplyResources(this->combPEGI_PRT, L"combPEGI_PRT"); + this->combPEGI_PRT->Name = L"combPEGI_PRT"; + // + // combPEGI + // + this->combPEGI->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combPEGI->FormattingEnabled = true; + this->combPEGI->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combPEGI.Items"), resources->GetString(L"combPEGI.Items1"), + resources->GetString(L"combPEGI.Items2"), resources->GetString(L"combPEGI.Items3"), resources->GetString(L"combPEGI.Items4"), + resources->GetString(L"combPEGI.Items5"), resources->GetString(L"combPEGI.Items6")}); + resources->ApplyResources(this->combPEGI, L"combPEGI"); + this->combPEGI->Name = L"combPEGI"; + // + // combUSK + // + this->combUSK->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combUSK->FormattingEnabled = true; + this->combUSK->Items->AddRange(gcnew cli::array< System::Object^ >(6) {resources->GetString(L"combUSK.Items"), resources->GetString(L"combUSK.Items1"), + resources->GetString(L"combUSK.Items2"), resources->GetString(L"combUSK.Items3"), resources->GetString(L"combUSK.Items4"), resources->GetString(L"combUSK.Items5")}); + resources->ApplyResources(this->combUSK, L"combUSK"); + this->combUSK->Name = L"combUSK"; + // + // combESRB + // + this->combESRB->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combESRB->FormattingEnabled = true; + this->combESRB->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combESRB.Items"), resources->GetString(L"combESRB.Items1"), + resources->GetString(L"combESRB.Items2"), resources->GetString(L"combESRB.Items3"), resources->GetString(L"combESRB.Items4"), + resources->GetString(L"combESRB.Items5"), resources->GetString(L"combESRB.Items6")}); + resources->ApplyResources(this->combESRB, L"combESRB"); + this->combESRB->Name = L"combESRB"; + // + // combCERO + // + this->combCERO->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combCERO->FormattingEnabled = true; + this->combCERO->Items->AddRange(gcnew cli::array< System::Object^ >(6) {resources->GetString(L"combCERO.Items"), resources->GetString(L"combCERO.Items1"), + resources->GetString(L"combCERO.Items2"), resources->GetString(L"combCERO.Items3"), resources->GetString(L"combCERO.Items4"), + resources->GetString(L"combCERO.Items5")}); + resources->ApplyResources(this->combCERO, L"combCERO"); + this->combCERO->Name = L"combCERO"; + // + // labParentalRating + // + resources->ApplyResources(this->labParentalRating, L"labParentalRating"); + this->labParentalRating->Name = L"labParentalRating"; + // + // labRegion + // + resources->ApplyResources(this->labRegion, L"labRegion"); + this->labRegion->Name = L"labRegion"; + // + // cboxIsEULA + // + resources->ApplyResources(this->cboxIsEULA, L"cboxIsEULA"); + this->cboxIsEULA->Name = L"cboxIsEULA"; + this->cboxIsEULA->UseVisualStyleBackColor = true; + // + // combRegion + // + this->combRegion->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->combRegion->FormattingEnabled = true; + this->combRegion->Items->AddRange(gcnew cli::array< System::Object^ >(5) {resources->GetString(L"combRegion.Items"), resources->GetString(L"combRegion.Items1"), + resources->GetString(L"combRegion.Items2"), resources->GetString(L"combRegion.Items3"), resources->GetString(L"combRegion.Items4")}); + resources->ApplyResources(this->combRegion, L"combRegion"); + this->combRegion->Name = L"combRegion"; + this->combRegion->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::combRegion_SelectedIndexChanged); + // + // cboxIsInputPerson2 + // + resources->ApplyResources(this->cboxIsInputPerson2, L"cboxIsInputPerson2"); + this->cboxIsInputPerson2->Name = L"cboxIsInputPerson2"; + this->cboxIsInputPerson2->UseVisualStyleBackColor = true; + this->cboxIsInputPerson2->CheckedChanged += gcnew System::EventHandler(this, &Form1::cboxIsInputPerson2_CheckedChanged); + // + // gboxPerson2 + // + this->gboxPerson2->Controls->Add(this->labArbit4); + this->gboxPerson2->Controls->Add(this->labArbit3); + this->gboxPerson2->Controls->Add(this->labNTSC2Sur); + this->gboxPerson2->Controls->Add(this->tboxNTSC2); + this->gboxPerson2->Controls->Add(this->labFax2); + this->gboxPerson2->Controls->Add(this->labNTSC2Pre); + this->gboxPerson2->Controls->Add(this->tboxFax2); + this->gboxPerson2->Controls->Add(this->tboxMail2); + this->gboxPerson2->Controls->Add(this->tboxTel2); + this->gboxPerson2->Controls->Add(this->tboxFurigana2); + this->gboxPerson2->Controls->Add(this->tboxPerson2); + this->gboxPerson2->Controls->Add(this->tboxDepart2); + this->gboxPerson2->Controls->Add(this->labDepart2); + this->gboxPerson2->Controls->Add(this->tboxCompany2); + this->gboxPerson2->Controls->Add(this->labMail2); + this->gboxPerson2->Controls->Add(this->labTel2); + this->gboxPerson2->Controls->Add(this->labFurigana2); + this->gboxPerson2->Controls->Add(this->labPerson2); + this->gboxPerson2->Controls->Add(this->labCompany2); + resources->ApplyResources(this->gboxPerson2, L"gboxPerson2"); + this->gboxPerson2->Name = L"gboxPerson2"; + this->gboxPerson2->TabStop = false; + // + // labArbit4 + // + resources->ApplyResources(this->labArbit4, L"labArbit4"); + this->labArbit4->Name = L"labArbit4"; + // + // labArbit3 + // + resources->ApplyResources(this->labArbit3, L"labArbit3"); + this->labArbit3->Name = L"labArbit3"; + // + // labNTSC2Sur + // + resources->ApplyResources(this->labNTSC2Sur, L"labNTSC2Sur"); + this->labNTSC2Sur->Name = L"labNTSC2Sur"; + // + // tboxNTSC2 + // + resources->ApplyResources(this->tboxNTSC2, L"tboxNTSC2"); + this->tboxNTSC2->Name = L"tboxNTSC2"; + // + // labFax2 + // + resources->ApplyResources(this->labFax2, L"labFax2"); + this->labFax2->Name = L"labFax2"; + // + // labNTSC2Pre + // + resources->ApplyResources(this->labNTSC2Pre, L"labNTSC2Pre"); + this->labNTSC2Pre->Name = L"labNTSC2Pre"; + // + // tboxFax2 + // + resources->ApplyResources(this->tboxFax2, L"tboxFax2"); + this->tboxFax2->Name = L"tboxFax2"; + // + // tboxMail2 + // + resources->ApplyResources(this->tboxMail2, L"tboxMail2"); + this->tboxMail2->Name = L"tboxMail2"; + // + // tboxTel2 + // + resources->ApplyResources(this->tboxTel2, L"tboxTel2"); + this->tboxTel2->Name = L"tboxTel2"; + // + // tboxFurigana2 + // + resources->ApplyResources(this->tboxFurigana2, L"tboxFurigana2"); + this->tboxFurigana2->Name = L"tboxFurigana2"; + // + // tboxPerson2 + // + resources->ApplyResources(this->tboxPerson2, L"tboxPerson2"); + this->tboxPerson2->Name = L"tboxPerson2"; + // + // tboxDepart2 + // + resources->ApplyResources(this->tboxDepart2, L"tboxDepart2"); + this->tboxDepart2->Name = L"tboxDepart2"; + // + // labDepart2 + // + resources->ApplyResources(this->labDepart2, L"labDepart2"); + this->labDepart2->Name = L"labDepart2"; + // + // tboxCompany2 + // + resources->ApplyResources(this->tboxCompany2, L"tboxCompany2"); + this->tboxCompany2->Name = L"tboxCompany2"; + // + // labMail2 + // + resources->ApplyResources(this->labMail2, L"labMail2"); + this->labMail2->Name = L"labMail2"; + // + // labTel2 + // + resources->ApplyResources(this->labTel2, L"labTel2"); + this->labTel2->Name = L"labTel2"; + // + // labFurigana2 + // + resources->ApplyResources(this->labFurigana2, L"labFurigana2"); + this->labFurigana2->Name = L"labFurigana2"; + // + // labPerson2 + // + resources->ApplyResources(this->labPerson2, L"labPerson2"); + this->labPerson2->Name = L"labPerson2"; + // + // labCompany2 + // + resources->ApplyResources(this->labCompany2, L"labCompany2"); + this->labCompany2->Name = L"labCompany2"; + // + // gboxPerson1 + // + this->gboxPerson1->Controls->Add(this->labArbit2); + this->gboxPerson1->Controls->Add(this->labArbit1); + this->gboxPerson1->Controls->Add(this->labNTSC1Sur); + this->gboxPerson1->Controls->Add(this->labFax1); + this->gboxPerson1->Controls->Add(this->labNTSC1Pre); + this->gboxPerson1->Controls->Add(this->tboxNTSC1); + this->gboxPerson1->Controls->Add(this->tboxFax1); + this->gboxPerson1->Controls->Add(this->tboxMail1); + this->gboxPerson1->Controls->Add(this->tboxTel1); + this->gboxPerson1->Controls->Add(this->tboxFurigana1); + this->gboxPerson1->Controls->Add(this->tboxPerson1); + this->gboxPerson1->Controls->Add(this->tboxDepart1); + this->gboxPerson1->Controls->Add(this->labDepart1); + this->gboxPerson1->Controls->Add(this->tboxCompany1); + this->gboxPerson1->Controls->Add(this->labMail1); + this->gboxPerson1->Controls->Add(this->labTel1); + this->gboxPerson1->Controls->Add(this->labFurigana1); + this->gboxPerson1->Controls->Add(this->labPerson1); + this->gboxPerson1->Controls->Add(this->labCompany1); + resources->ApplyResources(this->gboxPerson1, L"gboxPerson1"); + this->gboxPerson1->Name = L"gboxPerson1"; + this->gboxPerson1->TabStop = false; + // + // labArbit2 + // + resources->ApplyResources(this->labArbit2, L"labArbit2"); + this->labArbit2->Name = L"labArbit2"; + // + // labArbit1 + // + resources->ApplyResources(this->labArbit1, L"labArbit1"); + this->labArbit1->Name = L"labArbit1"; + // + // labNTSC1Sur + // + resources->ApplyResources(this->labNTSC1Sur, L"labNTSC1Sur"); + this->labNTSC1Sur->Name = L"labNTSC1Sur"; + // + // labFax1 + // + resources->ApplyResources(this->labFax1, L"labFax1"); + this->labFax1->Name = L"labFax1"; + // + // labNTSC1Pre + // + resources->ApplyResources(this->labNTSC1Pre, L"labNTSC1Pre"); + this->labNTSC1Pre->Name = L"labNTSC1Pre"; + // + // tboxNTSC1 + // + resources->ApplyResources(this->tboxNTSC1, L"tboxNTSC1"); + this->tboxNTSC1->Name = L"tboxNTSC1"; + // + // tboxFax1 + // + resources->ApplyResources(this->tboxFax1, L"tboxFax1"); + this->tboxFax1->Name = L"tboxFax1"; + // + // tboxMail1 + // + resources->ApplyResources(this->tboxMail1, L"tboxMail1"); + this->tboxMail1->Name = L"tboxMail1"; + // + // tboxTel1 + // + resources->ApplyResources(this->tboxTel1, L"tboxTel1"); + this->tboxTel1->Name = L"tboxTel1"; + // + // tboxFurigana1 + // + resources->ApplyResources(this->tboxFurigana1, L"tboxFurigana1"); + this->tboxFurigana1->Name = L"tboxFurigana1"; + // + // tboxPerson1 + // + resources->ApplyResources(this->tboxPerson1, L"tboxPerson1"); + this->tboxPerson1->Name = L"tboxPerson1"; + // + // tboxDepart1 + // + resources->ApplyResources(this->tboxDepart1, L"tboxDepart1"); + this->tboxDepart1->Name = L"tboxDepart1"; + // + // labDepart1 + // + resources->ApplyResources(this->labDepart1, L"labDepart1"); + this->labDepart1->Name = L"labDepart1"; + // + // tboxCompany1 + // + resources->ApplyResources(this->tboxCompany1, L"tboxCompany1"); + this->tboxCompany1->Name = L"tboxCompany1"; + // + // labMail1 + // + resources->ApplyResources(this->labMail1, L"labMail1"); + this->labMail1->Name = L"labMail1"; + // + // labTel1 + // + resources->ApplyResources(this->labTel1, L"labTel1"); + this->labTel1->Name = L"labTel1"; + // + // labFurigana1 + // + resources->ApplyResources(this->labFurigana1, L"labFurigana1"); + this->labFurigana1->Name = L"labFurigana1"; + // + // labPerson1 + // + resources->ApplyResources(this->labPerson1, L"labPerson1"); + this->labPerson1->Name = L"labPerson1"; + // + // labCompany1 + // + resources->ApplyResources(this->labCompany1, L"labCompany1"); + this->labCompany1->Name = L"labCompany1"; + // + // tboxProductCode2 + // + resources->ApplyResources(this->tboxProductCode2, L"tboxProductCode2"); + this->tboxProductCode2->Name = L"tboxProductCode2"; + // + // tboxProductCode1 + // + resources->ApplyResources(this->tboxProductCode1, L"tboxProductCode1"); + this->tboxProductCode1->Name = L"tboxProductCode1"; + // + // tboxProductName + // + resources->ApplyResources(this->tboxProductName, L"tboxProductName"); + this->tboxProductName->Name = L"tboxProductName"; + // + // labProductCode2 + // + resources->ApplyResources(this->labProductCode2, L"labProductCode2"); + this->labProductCode2->Name = L"labProductCode2"; + // + // labProductCode1 + // + resources->ApplyResources(this->labProductCode1, L"labProductCode1"); + this->labProductCode1->Name = L"labProductCode1"; + // + // dateSubmit + // + this->dateSubmit->Format = System::Windows::Forms::DateTimePickerFormat::Short; + resources->ApplyResources(this->dateSubmit, L"dateSubmit"); + this->dateSubmit->MaxDate = System::DateTime(2099, 12, 31, 0, 0, 0, 0); + this->dateSubmit->MinDate = System::DateTime(2008, 1, 1, 0, 0, 0, 0); + this->dateSubmit->Name = L"dateSubmit"; + this->dateSubmit->Value = System::DateTime(2008, 7, 30, 17, 43, 18, 405); + // + // dateRelease + // + this->dateRelease->Format = System::Windows::Forms::DateTimePickerFormat::Short; + resources->ApplyResources(this->dateRelease, L"dateRelease"); + this->dateRelease->MaxDate = System::DateTime(2099, 12, 31, 0, 0, 0, 0); + this->dateRelease->MinDate = System::DateTime(2008, 1, 1, 0, 0, 0, 0); + this->dateRelease->Name = L"dateRelease"; + this->dateRelease->Value = System::DateTime(2008, 7, 30, 17, 43, 18, 420); + // + // gboxUsage + // + this->gboxUsage->Controls->Add(this->tboxUsageOther); + this->gboxUsage->Controls->Add(this->rUsageOther); + this->gboxUsage->Controls->Add(this->rUsageDst); + this->gboxUsage->Controls->Add(this->rUsageSample); + this->gboxUsage->Controls->Add(this->rUsageSale); + resources->ApplyResources(this->gboxUsage, L"gboxUsage"); + this->gboxUsage->Name = L"gboxUsage"; + this->gboxUsage->TabStop = false; + // + // tboxUsageOther + // + resources->ApplyResources(this->tboxUsageOther, L"tboxUsageOther"); + this->tboxUsageOther->Name = L"tboxUsageOther"; + // + // rUsageOther + // + resources->ApplyResources(this->rUsageOther, L"rUsageOther"); + this->rUsageOther->Name = L"rUsageOther"; + this->rUsageOther->UseVisualStyleBackColor = true; + this->rUsageOther->CheckedChanged += gcnew System::EventHandler(this, &Form1::rUsageOther_CheckedChanged); + // + // rUsageDst + // + resources->ApplyResources(this->rUsageDst, L"rUsageDst"); + this->rUsageDst->Name = L"rUsageDst"; + this->rUsageDst->UseVisualStyleBackColor = true; + // + // rUsageSample + // + resources->ApplyResources(this->rUsageSample, L"rUsageSample"); + this->rUsageSample->Name = L"rUsageSample"; + this->rUsageSample->UseVisualStyleBackColor = true; + // + // rUsageSale + // + resources->ApplyResources(this->rUsageSale, L"rUsageSale"); + this->rUsageSale->Checked = true; + this->rUsageSale->Name = L"rUsageSale"; + this->rUsageSale->TabStop = true; + this->rUsageSale->UseVisualStyleBackColor = true; + // + // gboxSubmitWay + // + this->gboxSubmitWay->Controls->Add(this->rSubmitHand); + this->gboxSubmitWay->Controls->Add(this->rSubmitPost); + resources->ApplyResources(this->gboxSubmitWay, L"gboxSubmitWay"); + this->gboxSubmitWay->Name = L"gboxSubmitWay"; + this->gboxSubmitWay->TabStop = false; + // + // rSubmitHand + // + resources->ApplyResources(this->rSubmitHand, L"rSubmitHand"); + this->rSubmitHand->Name = L"rSubmitHand"; + this->rSubmitHand->UseVisualStyleBackColor = true; + // + // rSubmitPost + // + resources->ApplyResources(this->rSubmitPost, L"rSubmitPost"); + this->rSubmitPost->Checked = true; + this->rSubmitPost->Name = L"rSubmitPost"; + this->rSubmitPost->TabStop = true; + this->rSubmitPost->UseVisualStyleBackColor = true; + // + // labSubmiteDate + // + resources->ApplyResources(this->labSubmiteDate, L"labSubmiteDate"); + this->labSubmiteDate->Name = L"labSubmiteDate"; + // + // labReleaseDate + // + resources->ApplyResources(this->labReleaseDate, L"labReleaseDate"); + this->labReleaseDate->Name = L"labReleaseDate"; + // + // labProductCode + // + resources->ApplyResources(this->labProductCode, L"labProductCode"); + this->labProductCode->Name = L"labProductCode"; + // + // labProductName + // + resources->ApplyResources(this->labProductName, L"labProductName"); + this->labProductName->Name = L"labProductName"; + // + // labCapSubmitVer + // + resources->ApplyResources(this->labCapSubmitVer, L"labCapSubmitVer"); + this->labCapSubmitVer->Name = L"labCapSubmitVer"; + // + // numSubmitVersion + // + resources->ApplyResources(this->numSubmitVersion, L"numSubmitVersion"); + this->numSubmitVersion->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {15, 0, 0, 0}); + this->numSubmitVersion->Name = L"numSubmitVersion"; + // + // labSubmitVer + // + resources->ApplyResources(this->labSubmitVer, L"labSubmitVer"); + this->labSubmitVer->Name = L"labSubmitVer"; + // + // labMultiForeign1 + // + resources->ApplyResources(this->labMultiForeign1, L"labMultiForeign1"); + this->labMultiForeign1->Name = L"labMultiForeign1"; + // + // tboxProductCode2Foreign3 + // + resources->ApplyResources(this->tboxProductCode2Foreign3, L"tboxProductCode2Foreign3"); + this->tboxProductCode2Foreign3->Name = L"tboxProductCode2Foreign3"; + // + // tboxProductCode2Foreign2 + // + resources->ApplyResources(this->tboxProductCode2Foreign2, L"tboxProductCode2Foreign2"); + this->tboxProductCode2Foreign2->Name = L"tboxProductCode2Foreign2"; + // + // labProductCode2Foreign + // + resources->ApplyResources(this->labProductCode2Foreign, L"labProductCode2Foreign"); + this->labProductCode2Foreign->Name = L"labProductCode2Foreign"; + // + // cboxReleaseForeign + // + resources->ApplyResources(this->cboxReleaseForeign, L"cboxReleaseForeign"); + this->cboxReleaseForeign->Name = L"cboxReleaseForeign"; + this->cboxReleaseForeign->UseVisualStyleBackColor = true; + this->cboxReleaseForeign->CheckedChanged += gcnew System::EventHandler(this, &Form1::cboxReleaseForeign_CheckedChanged); + // + // labProductNameForeign + // + resources->ApplyResources(this->labProductNameForeign, L"labProductNameForeign"); + this->labProductNameForeign->Name = L"labProductNameForeign"; + // + // tboxProductNameForeign + // + resources->ApplyResources(this->tboxProductNameForeign, L"tboxProductNameForeign"); + this->tboxProductNameForeign->Name = L"tboxProductNameForeign"; + // + // labProductCode1Foreign + // + resources->ApplyResources(this->labProductCode1Foreign, L"labProductCode1Foreign"); + this->labProductCode1Foreign->Name = L"labProductCode1Foreign"; + // + // tboxProductCode1Foreign + // + resources->ApplyResources(this->tboxProductCode1Foreign, L"tboxProductCode1Foreign"); + this->tboxProductCode1Foreign->Name = L"tboxProductCode1Foreign"; + // + // labProductCodeForeign + // + resources->ApplyResources(this->labProductCodeForeign, L"labProductCodeForeign"); + this->labProductCodeForeign->Name = L"labProductCodeForeign"; + // + // tboxProductCode2Foreign1 + // + resources->ApplyResources(this->tboxProductCode2Foreign1, L"tboxProductCode2Foreign1"); + this->tboxProductCode2Foreign1->Name = L"tboxProductCode2Foreign1"; + // + // gboxShared2Size + // + this->gboxShared2Size->Controls->Add(this->labShared2Size5); + this->gboxShared2Size->Controls->Add(this->labShared2Size4); + this->gboxShared2Size->Controls->Add(this->labShared2Size3); + this->gboxShared2Size->Controls->Add(this->labShared2Size2); + this->gboxShared2Size->Controls->Add(this->labShared2Size1); + this->gboxShared2Size->Controls->Add(this->labShared2Size0); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size5); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size4); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size3); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size2); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size1); + this->gboxShared2Size->Controls->Add(this->tboxShared2Size0); + this->gboxShared2Size->Controls->Add(this->cboxIsShared2); + resources->ApplyResources(this->gboxShared2Size, L"gboxShared2Size"); + this->gboxShared2Size->Name = L"gboxShared2Size"; + this->gboxShared2Size->TabStop = false; + // + // labShared2Size5 + // + resources->ApplyResources(this->labShared2Size5, L"labShared2Size5"); + this->labShared2Size5->Name = L"labShared2Size5"; + // + // labShared2Size4 + // + resources->ApplyResources(this->labShared2Size4, L"labShared2Size4"); + this->labShared2Size4->Name = L"labShared2Size4"; + // + // labShared2Size3 + // + resources->ApplyResources(this->labShared2Size3, L"labShared2Size3"); + this->labShared2Size3->Name = L"labShared2Size3"; + // + // labShared2Size2 + // + resources->ApplyResources(this->labShared2Size2, L"labShared2Size2"); + this->labShared2Size2->Name = L"labShared2Size2"; + // + // labShared2Size1 + // + resources->ApplyResources(this->labShared2Size1, L"labShared2Size1"); + this->labShared2Size1->Name = L"labShared2Size1"; + // + // labShared2Size0 + // + resources->ApplyResources(this->labShared2Size0, L"labShared2Size0"); + this->labShared2Size0->Name = L"labShared2Size0"; + // + // tboxShared2Size5 + // + resources->ApplyResources(this->tboxShared2Size5, L"tboxShared2Size5"); + this->tboxShared2Size5->Name = L"tboxShared2Size5"; + this->tboxShared2Size5->ReadOnly = true; + // + // tboxShared2Size4 + // + resources->ApplyResources(this->tboxShared2Size4, L"tboxShared2Size4"); + this->tboxShared2Size4->Name = L"tboxShared2Size4"; + this->tboxShared2Size4->ReadOnly = true; + // + // tboxShared2Size3 + // + resources->ApplyResources(this->tboxShared2Size3, L"tboxShared2Size3"); + this->tboxShared2Size3->Name = L"tboxShared2Size3"; + this->tboxShared2Size3->ReadOnly = true; + // + // tboxShared2Size2 + // + resources->ApplyResources(this->tboxShared2Size2, L"tboxShared2Size2"); + this->tboxShared2Size2->Name = L"tboxShared2Size2"; + this->tboxShared2Size2->ReadOnly = true; + // + // tboxShared2Size1 + // + resources->ApplyResources(this->tboxShared2Size1, L"tboxShared2Size1"); + this->tboxShared2Size1->Name = L"tboxShared2Size1"; + this->tboxShared2Size1->ReadOnly = true; + // + // tboxShared2Size0 + // + resources->ApplyResources(this->tboxShared2Size0, L"tboxShared2Size0"); + this->tboxShared2Size0->Name = L"tboxShared2Size0"; + this->tboxShared2Size0->ReadOnly = true; + // + // cboxIsShared2 + // + resources->ApplyResources(this->cboxIsShared2, L"cboxIsShared2"); + this->cboxIsShared2->Name = L"cboxIsShared2"; + this->cboxIsShared2->UseVisualStyleBackColor = true; + // + // labLib + // + resources->ApplyResources(this->labLib, L"labLib"); + this->labLib->Name = L"labLib"; + // + // tboxSDK + // + resources->ApplyResources(this->tboxSDK, L"tboxSDK"); + this->tboxSDK->Name = L"tboxSDK"; + this->tboxSDK->ReadOnly = true; + // + // labSDK + // + resources->ApplyResources(this->labSDK, L"labSDK"); + this->labSDK->Name = L"labSDK"; + // + // gboxTWLExInfo + // + this->gboxTWLExInfo->Controls->Add(this->labByte1); + this->gboxTWLExInfo->Controls->Add(this->labHex4); + this->gboxTWLExInfo->Controls->Add(this->labHex3); + this->gboxTWLExInfo->Controls->Add(this->tboxIsCodec); + this->gboxTWLExInfo->Controls->Add(this->labIsCodec); + this->gboxTWLExInfo->Controls->Add(this->labNormalRomOffset); + this->gboxTWLExInfo->Controls->Add(this->tboxNormalRomOffset); + this->gboxTWLExInfo->Controls->Add(this->labKeyTableRomOffset); + this->gboxTWLExInfo->Controls->Add(this->tboxPrivateSize); + this->gboxTWLExInfo->Controls->Add(this->labPrivateSize); + this->gboxTWLExInfo->Controls->Add(this->tboxKeyTableRomOffset); + this->gboxTWLExInfo->Controls->Add(this->labPublicSize); + this->gboxTWLExInfo->Controls->Add(this->tboxPublicSize); + resources->ApplyResources(this->gboxTWLExInfo, L"gboxTWLExInfo"); + this->gboxTWLExInfo->Name = L"gboxTWLExInfo"; + this->gboxTWLExInfo->TabStop = false; + // + // labByte1 + // + resources->ApplyResources(this->labByte1, L"labByte1"); + this->labByte1->Name = L"labByte1"; + // + // labHex4 + // + resources->ApplyResources(this->labHex4, L"labHex4"); + this->labHex4->Name = L"labHex4"; + // + // labHex3 + // + resources->ApplyResources(this->labHex3, L"labHex3"); + this->labHex3->Name = L"labHex3"; + // + // tboxIsCodec + // + resources->ApplyResources(this->tboxIsCodec, L"tboxIsCodec"); + this->tboxIsCodec->Name = L"tboxIsCodec"; + this->tboxIsCodec->ReadOnly = true; + // + // labIsCodec + // + resources->ApplyResources(this->labIsCodec, L"labIsCodec"); + this->labIsCodec->Name = L"labIsCodec"; + // + // labNormalRomOffset + // + resources->ApplyResources(this->labNormalRomOffset, L"labNormalRomOffset"); + this->labNormalRomOffset->Name = L"labNormalRomOffset"; + // + // tboxNormalRomOffset + // + resources->ApplyResources(this->tboxNormalRomOffset, L"tboxNormalRomOffset"); + this->tboxNormalRomOffset->Name = L"tboxNormalRomOffset"; + this->tboxNormalRomOffset->ReadOnly = true; + // + // labKeyTableRomOffset + // + resources->ApplyResources(this->labKeyTableRomOffset, L"labKeyTableRomOffset"); + this->labKeyTableRomOffset->Name = L"labKeyTableRomOffset"; + // + // tboxPrivateSize + // + resources->ApplyResources(this->tboxPrivateSize, L"tboxPrivateSize"); + this->tboxPrivateSize->Name = L"tboxPrivateSize"; + this->tboxPrivateSize->ReadOnly = true; + // + // labPrivateSize + // + resources->ApplyResources(this->labPrivateSize, L"labPrivateSize"); + this->labPrivateSize->Name = L"labPrivateSize"; + // + // tboxKeyTableRomOffset + // + resources->ApplyResources(this->tboxKeyTableRomOffset, L"tboxKeyTableRomOffset"); + this->tboxKeyTableRomOffset->Name = L"tboxKeyTableRomOffset"; + this->tboxKeyTableRomOffset->ReadOnly = true; + // + // labPublicSize + // + resources->ApplyResources(this->labPublicSize, L"labPublicSize"); + this->labPublicSize->Name = L"labPublicSize"; + // + // tboxPublicSize + // + resources->ApplyResources(this->tboxPublicSize, L"tboxPublicSize"); + this->tboxPublicSize->Name = L"tboxPublicSize"; + this->tboxPublicSize->ReadOnly = true; + // + // cboxIsSubBanner + // + resources->ApplyResources(this->cboxIsSubBanner, L"cboxIsSubBanner"); + this->cboxIsSubBanner->Name = L"cboxIsSubBanner"; + this->cboxIsSubBanner->UseVisualStyleBackColor = true; + // + // cboxIsWL + // + resources->ApplyResources(this->cboxIsWL, L"cboxIsWL"); + this->cboxIsWL->Name = L"cboxIsWL"; + this->cboxIsWL->UseVisualStyleBackColor = true; + // + // cboxIsNormalJump + // + resources->ApplyResources(this->cboxIsNormalJump, L"cboxIsNormalJump"); + this->cboxIsNormalJump->Name = L"cboxIsNormalJump"; + this->cboxIsNormalJump->UseVisualStyleBackColor = true; + // + // cboxIsTmpJump + // + resources->ApplyResources(this->cboxIsTmpJump, L"cboxIsTmpJump"); + this->cboxIsTmpJump->Name = L"cboxIsTmpJump"; + this->cboxIsTmpJump->UseVisualStyleBackColor = true; + // + // gboxAccess + // + this->gboxAccess->Controls->Add(this->labAccessOther); + this->gboxAccess->Controls->Add(this->tboxAccessOther); + this->gboxAccess->Controls->Add(this->tboxIsGameCardOn); + this->gboxAccess->Controls->Add(this->labIsGameCardOn); + this->gboxAccess->Controls->Add(this->cboxIsNAND); + this->gboxAccess->Controls->Add(this->cboxIsSD); + resources->ApplyResources(this->gboxAccess, L"gboxAccess"); + this->gboxAccess->Name = L"gboxAccess"; + this->gboxAccess->TabStop = false; + // + // labAccessOther + // + resources->ApplyResources(this->labAccessOther, L"labAccessOther"); + this->labAccessOther->Name = L"labAccessOther"; + // + // tboxAccessOther + // + resources->ApplyResources(this->tboxAccessOther, L"tboxAccessOther"); + this->tboxAccessOther->Name = L"tboxAccessOther"; + this->tboxAccessOther->ReadOnly = true; + // + // tboxIsGameCardOn + // + resources->ApplyResources(this->tboxIsGameCardOn, L"tboxIsGameCardOn"); + this->tboxIsGameCardOn->Name = L"tboxIsGameCardOn"; + this->tboxIsGameCardOn->ReadOnly = true; + // + // labIsGameCardOn + // + resources->ApplyResources(this->labIsGameCardOn, L"labIsGameCardOn"); + this->labIsGameCardOn->Name = L"labIsGameCardOn"; + // + // cboxIsNAND + // + resources->ApplyResources(this->cboxIsNAND, L"cboxIsNAND"); + this->cboxIsNAND->Name = L"cboxIsNAND"; + this->cboxIsNAND->UseVisualStyleBackColor = true; + // + // cboxIsSD + // + resources->ApplyResources(this->cboxIsSD, L"cboxIsSD"); + this->cboxIsSD->Name = L"cboxIsSD"; + this->cboxIsSD->UseVisualStyleBackColor = true; + // + // gboxTitleID + // + this->gboxTitleID->Controls->Add(this->labAppType); + this->gboxTitleID->Controls->Add(this->labMedia); + this->gboxTitleID->Controls->Add(this->tboxAppType); + this->gboxTitleID->Controls->Add(this->tboxMedia); + this->gboxTitleID->Controls->Add(this->labHex2); + this->gboxTitleID->Controls->Add(this->tboxTitleIDLo); + this->gboxTitleID->Controls->Add(this->labTitleIDLo); + this->gboxTitleID->Controls->Add(this->labTitleIDHi); + this->gboxTitleID->Controls->Add(this->tboxTitleIDHi); + this->gboxTitleID->Controls->Add(this->tboxAppTypeOther); + this->gboxTitleID->Controls->Add(this->labAppTypeOther); + resources->ApplyResources(this->gboxTitleID, L"gboxTitleID"); + this->gboxTitleID->Name = L"gboxTitleID"; + this->gboxTitleID->TabStop = false; + // + // labAppType + // + resources->ApplyResources(this->labAppType, L"labAppType"); + this->labAppType->Name = L"labAppType"; + // + // labMedia + // + resources->ApplyResources(this->labMedia, L"labMedia"); + this->labMedia->Name = L"labMedia"; + // + // tboxAppType + // + resources->ApplyResources(this->tboxAppType, L"tboxAppType"); + this->tboxAppType->Name = L"tboxAppType"; + this->tboxAppType->ReadOnly = true; + // + // tboxMedia + // + resources->ApplyResources(this->tboxMedia, L"tboxMedia"); + this->tboxMedia->Name = L"tboxMedia"; + this->tboxMedia->ReadOnly = true; + // + // labHex2 + // + resources->ApplyResources(this->labHex2, L"labHex2"); + this->labHex2->Name = L"labHex2"; + // + // tboxTitleIDLo + // + resources->ApplyResources(this->tboxTitleIDLo, L"tboxTitleIDLo"); + this->tboxTitleIDLo->Name = L"tboxTitleIDLo"; + this->tboxTitleIDLo->ReadOnly = true; + // + // labTitleIDLo + // + resources->ApplyResources(this->labTitleIDLo, L"labTitleIDLo"); + this->labTitleIDLo->Name = L"labTitleIDLo"; + // + // labTitleIDHi + // + resources->ApplyResources(this->labTitleIDHi, L"labTitleIDHi"); + this->labTitleIDHi->Name = L"labTitleIDHi"; + // + // tboxTitleIDHi + // + resources->ApplyResources(this->tboxTitleIDHi, L"tboxTitleIDHi"); + this->tboxTitleIDHi->Name = L"tboxTitleIDHi"; + this->tboxTitleIDHi->ReadOnly = true; + // + // tboxAppTypeOther + // + resources->ApplyResources(this->tboxAppTypeOther, L"tboxAppTypeOther"); + this->tboxAppTypeOther->Name = L"tboxAppTypeOther"; + this->tboxAppTypeOther->ReadOnly = true; + // + // labAppTypeOther + // + resources->ApplyResources(this->labAppTypeOther, L"labAppTypeOther"); + this->labAppTypeOther->Name = L"labAppTypeOther"; + // + // labCaptionEx + // + resources->ApplyResources(this->labCaptionEx, L"labCaptionEx"); + this->labCaptionEx->Name = L"labCaptionEx"; + // + // tboxCaptionEx + // + resources->ApplyResources(this->tboxCaptionEx, L"tboxCaptionEx"); + this->tboxCaptionEx->Name = L"tboxCaptionEx"; + this->tboxCaptionEx->ReadOnly = true; + // + // gboxProd + // + this->gboxProd->Controls->Add(this->combBackup); + this->gboxProd->Controls->Add(this->labBackup); + this->gboxProd->Controls->Add(this->tboxBackupOther); + resources->ApplyResources(this->gboxProd, L"gboxProd"); + this->gboxProd->Name = L"gboxProd"; + this->gboxProd->TabStop = false; + // + // menuStripAbove + // + this->menuStripAbove->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->stripFile, this->stripMaster, + this->stripLang}); + resources->ApplyResources(this->menuStripAbove, L"menuStripAbove"); + this->menuStripAbove->Name = L"menuStripAbove"; + // + // stripFile + // + this->stripFile->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) {this->stripItemOpenRom, + this->stripItemSepFile1, this->stripItemSaveTemp, this->stripItemLoadTemp}); + this->stripFile->Name = L"stripFile"; + resources->ApplyResources(this->stripFile, L"stripFile"); + // + // stripItemOpenRom + // + this->stripItemOpenRom->Name = L"stripItemOpenRom"; + resources->ApplyResources(this->stripItemOpenRom, L"stripItemOpenRom"); + this->stripItemOpenRom->Click += gcnew System::EventHandler(this, &Form1::stripItemOpenRom_Click); + // + // stripItemSepFile1 + // + this->stripItemSepFile1->Name = L"stripItemSepFile1"; + resources->ApplyResources(this->stripItemSepFile1, L"stripItemSepFile1"); + // + // stripItemSaveTemp + // + this->stripItemSaveTemp->Name = L"stripItemSaveTemp"; + resources->ApplyResources(this->stripItemSaveTemp, L"stripItemSaveTemp"); + this->stripItemSaveTemp->Click += gcnew System::EventHandler(this, &Form1::stripItemSaveTemp_Click); + // + // stripItemLoadTemp + // + this->stripItemLoadTemp->Name = L"stripItemLoadTemp"; + resources->ApplyResources(this->stripItemLoadTemp, L"stripItemLoadTemp"); + this->stripItemLoadTemp->Click += gcnew System::EventHandler(this, &Form1::stripItemLoadTemp_Click); + // + // stripMaster + // + this->stripMaster->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) {this->stripItemSheet, + this->stripItemSepMaster1, this->stripItemMasterRom, this->stripItemMiddlewareXml, this->stripItemMiddlewareHtml}); + this->stripMaster->Name = L"stripMaster"; + resources->ApplyResources(this->stripMaster, L"stripMaster"); + // + // stripItemSheet + // + this->stripItemSheet->Name = L"stripItemSheet"; + resources->ApplyResources(this->stripItemSheet, L"stripItemSheet"); + this->stripItemSheet->Click += gcnew System::EventHandler(this, &Form1::stripItemSheet_Click); + // + // stripItemSepMaster1 + // + this->stripItemSepMaster1->Name = L"stripItemSepMaster1"; + resources->ApplyResources(this->stripItemSepMaster1, L"stripItemSepMaster1"); + // + // stripItemMasterRom + // + this->stripItemMasterRom->Name = L"stripItemMasterRom"; + resources->ApplyResources(this->stripItemMasterRom, L"stripItemMasterRom"); + this->stripItemMasterRom->Click += gcnew System::EventHandler(this, &Form1::stripItemMasterRom_Click); + // + // stripItemMiddlewareXml + // + this->stripItemMiddlewareXml->Name = L"stripItemMiddlewareXml"; + resources->ApplyResources(this->stripItemMiddlewareXml, L"stripItemMiddlewareXml"); + this->stripItemMiddlewareXml->Click += gcnew System::EventHandler(this, &Form1::stripItemMiddlewareXml_Click); + // + // stripItemMiddlewareHtml + // + this->stripItemMiddlewareHtml->Name = L"stripItemMiddlewareHtml"; + resources->ApplyResources(this->stripItemMiddlewareHtml, L"stripItemMiddlewareHtml"); + this->stripItemMiddlewareHtml->Click += gcnew System::EventHandler(this, &Form1::stripItemMiddlewareHtml_Click); + // + // stripLang + // + this->stripLang->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->stripItemEnglish, + this->stripItemJapanese}); + this->stripLang->Name = L"stripLang"; + resources->ApplyResources(this->stripLang, L"stripLang"); + // + // stripItemEnglish + // + this->stripItemEnglish->Name = L"stripItemEnglish"; + resources->ApplyResources(this->stripItemEnglish, L"stripItemEnglish"); + this->stripItemEnglish->Click += gcnew System::EventHandler(this, &Form1::stripItemEnglish_Click); + // + // stripItemJapanese + // + this->stripItemJapanese->Checked = true; + this->stripItemJapanese->CheckState = System::Windows::Forms::CheckState::Checked; + this->stripItemJapanese->Name = L"stripItemJapanese"; + resources->ApplyResources(this->stripItemJapanese, L"stripItemJapanese"); + this->stripItemJapanese->Click += gcnew System::EventHandler(this, &Form1::stripItemJapanese_Click); + // + // tabMain + // + this->tabMain->Controls->Add(this->tabRomInfo); + this->tabMain->Controls->Add(this->tabTWLInfo); + this->tabMain->Controls->Add(this->tabRomEditInfo); + this->tabMain->Controls->Add(this->tabSubmitInfo); + this->tabMain->Controls->Add(this->tabCompanyInfo); + this->tabMain->Controls->Add(this->tabErrorInfo); + resources->ApplyResources(this->tabMain, L"tabMain"); + this->tabMain->Name = L"tabMain"; + this->tabMain->SelectedIndex = 0; + this->tabMain->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabMain_SelectedIndexChanged); + // + // tabRomInfo + // + this->tabRomInfo->Controls->Add(this->gridLibrary); + this->tabRomInfo->Controls->Add(this->tboxGuideRomInfo); + this->tabRomInfo->Controls->Add(this->gboxSrl); + this->tabRomInfo->Controls->Add(this->labLib); + this->tabRomInfo->Controls->Add(this->labCaptionEx); + this->tabRomInfo->Controls->Add(this->tboxCaptionEx); + this->tabRomInfo->Controls->Add(this->gboxCRC); + this->tabRomInfo->Controls->Add(this->tboxSDK); + this->tabRomInfo->Controls->Add(this->labSDK); + resources->ApplyResources(this->tabRomInfo, L"tabRomInfo"); + this->tabRomInfo->Name = L"tabRomInfo"; + this->tabRomInfo->UseVisualStyleBackColor = true; + // + // gridLibrary + // + this->gridLibrary->AutoSizeRowsMode = System::Windows::Forms::DataGridViewAutoSizeRowsMode::AllCellsExceptHeaders; + this->gridLibrary->BackgroundColor = System::Drawing::SystemColors::Control; + this->gridLibrary->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; + this->gridLibrary->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(2) {this->colLibPublisher, + this->colLibName}); + dataGridViewCellStyle1->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleLeft; + dataGridViewCellStyle1->BackColor = System::Drawing::SystemColors::Window; + dataGridViewCellStyle1->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + static_cast(128))); + dataGridViewCellStyle1->ForeColor = System::Drawing::SystemColors::ControlText; + dataGridViewCellStyle1->SelectionBackColor = System::Drawing::SystemColors::Highlight; + dataGridViewCellStyle1->SelectionForeColor = System::Drawing::SystemColors::HighlightText; + dataGridViewCellStyle1->WrapMode = System::Windows::Forms::DataGridViewTriState::True; + this->gridLibrary->DefaultCellStyle = dataGridViewCellStyle1; + resources->ApplyResources(this->gridLibrary, L"gridLibrary"); + this->gridLibrary->Name = L"gridLibrary"; + this->gridLibrary->ReadOnly = true; + this->gridLibrary->RowHeadersVisible = false; + this->gridLibrary->RowTemplate->Height = 21; + // + // colLibPublisher + // + resources->ApplyResources(this->colLibPublisher, L"colLibPublisher"); + this->colLibPublisher->Name = L"colLibPublisher"; + this->colLibPublisher->ReadOnly = true; + // + // colLibName + // + this->colLibName->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + resources->ApplyResources(this->colLibName, L"colLibName"); + this->colLibName->Name = L"colLibName"; + this->colLibName->ReadOnly = true; + // + // tboxGuideRomInfo + // + this->tboxGuideRomInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideRomInfo, L"tboxGuideRomInfo"); + this->tboxGuideRomInfo->Name = L"tboxGuideRomInfo"; + this->tboxGuideRomInfo->ReadOnly = true; + // + // tabTWLInfo + // + this->tabTWLInfo->Controls->Add(this->tboxGuideTWLInfo); + this->tabTWLInfo->Controls->Add(this->gboxExFlags); + this->tabTWLInfo->Controls->Add(this->gboxShared2Size); + this->tabTWLInfo->Controls->Add(this->gboxTWLExInfo); + this->tabTWLInfo->Controls->Add(this->gboxAccess); + this->tabTWLInfo->Controls->Add(this->gboxTitleID); + resources->ApplyResources(this->tabTWLInfo, L"tabTWLInfo"); + this->tabTWLInfo->Name = L"tabTWLInfo"; + this->tabTWLInfo->UseVisualStyleBackColor = true; + // + // tboxGuideTWLInfo + // + this->tboxGuideTWLInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideTWLInfo, L"tboxGuideTWLInfo"); + this->tboxGuideTWLInfo->Name = L"tboxGuideTWLInfo"; + this->tboxGuideTWLInfo->ReadOnly = true; + // + // gboxExFlags + // + this->gboxExFlags->Controls->Add(this->cboxIsNormalJump); + this->gboxExFlags->Controls->Add(this->cboxIsTmpJump); + this->gboxExFlags->Controls->Add(this->cboxIsWL); + this->gboxExFlags->Controls->Add(this->cboxIsSubBanner); + resources->ApplyResources(this->gboxExFlags, L"gboxExFlags"); + this->gboxExFlags->Name = L"gboxExFlags"; + this->gboxExFlags->TabStop = false; + // + // tabRomEditInfo + // + this->tabRomEditInfo->Controls->Add(this->gboxOtherSpec); + this->tabRomEditInfo->Controls->Add(this->butSetBack); + this->tabRomEditInfo->Controls->Add(this->tboxGuideRomEditInfo); + this->tabRomEditInfo->Controls->Add(this->gboxParental); + this->tabRomEditInfo->Controls->Add(this->gboxIcon); + this->tabRomEditInfo->Controls->Add(this->gboxEULA); + resources->ApplyResources(this->tabRomEditInfo, L"tabRomEditInfo"); + this->tabRomEditInfo->Name = L"tabRomEditInfo"; + this->tabRomEditInfo->UseVisualStyleBackColor = true; + // + // gboxOtherSpec + // + this->gboxOtherSpec->Controls->Add(this->cboxIsUGC); + this->gboxOtherSpec->Controls->Add(this->cboxIsPhotoEx); + resources->ApplyResources(this->gboxOtherSpec, L"gboxOtherSpec"); + this->gboxOtherSpec->Name = L"gboxOtherSpec"; + this->gboxOtherSpec->TabStop = false; + // + // cboxIsUGC + // + resources->ApplyResources(this->cboxIsUGC, L"cboxIsUGC"); + this->cboxIsUGC->Name = L"cboxIsUGC"; + this->cboxIsUGC->UseVisualStyleBackColor = true; + // + // cboxIsPhotoEx + // + resources->ApplyResources(this->cboxIsPhotoEx, L"cboxIsPhotoEx"); + this->cboxIsPhotoEx->Name = L"cboxIsPhotoEx"; + this->cboxIsPhotoEx->UseVisualStyleBackColor = true; + // + // butSetBack + // + resources->ApplyResources(this->butSetBack, L"butSetBack"); + this->butSetBack->Name = L"butSetBack"; + this->butSetBack->UseVisualStyleBackColor = true; + this->butSetBack->Click += gcnew System::EventHandler(this, &Form1::butSetBack_Click); + // + // tboxGuideRomEditInfo + // + this->tboxGuideRomEditInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideRomEditInfo, L"tboxGuideRomEditInfo"); + this->tboxGuideRomEditInfo->Name = L"tboxGuideRomEditInfo"; + this->tboxGuideRomEditInfo->ReadOnly = true; + // + // gboxParental + // + this->gboxParental->Controls->Add(this->labRegion); + this->gboxParental->Controls->Add(this->combRegion); + this->gboxParental->Controls->Add(this->labParentalRating); + this->gboxParental->Controls->Add(this->labOFLC); + this->gboxParental->Controls->Add(this->labPEGI_BBFC); + this->gboxParental->Controls->Add(this->combPEGI_BBFC); + this->gboxParental->Controls->Add(this->combCERO); + this->gboxParental->Controls->Add(this->labCERO); + this->gboxParental->Controls->Add(this->combOFLC); + this->gboxParental->Controls->Add(this->labPEGI_PRT); + this->gboxParental->Controls->Add(this->combPEGI_PRT); + this->gboxParental->Controls->Add(this->combESRB); + this->gboxParental->Controls->Add(this->labESRB); + this->gboxParental->Controls->Add(this->labPEGI); + this->gboxParental->Controls->Add(this->combPEGI); + this->gboxParental->Controls->Add(this->combUSK); + this->gboxParental->Controls->Add(this->labUSK); + resources->ApplyResources(this->gboxParental, L"gboxParental"); + this->gboxParental->Name = L"gboxParental"; + this->gboxParental->TabStop = false; + // + // gboxIcon + // + this->gboxIcon->Controls->Add(this->rIsNoIcon); + this->gboxIcon->Controls->Add(this->rIsWiFiIcon); + this->gboxIcon->Controls->Add(this->rIsWirelessIcon); + resources->ApplyResources(this->gboxIcon, L"gboxIcon"); + this->gboxIcon->Name = L"gboxIcon"; + this->gboxIcon->TabStop = false; + // + // rIsNoIcon + // + resources->ApplyResources(this->rIsNoIcon, L"rIsNoIcon"); + this->rIsNoIcon->Checked = true; + this->rIsNoIcon->Name = L"rIsNoIcon"; + this->rIsNoIcon->TabStop = true; + this->rIsNoIcon->UseVisualStyleBackColor = true; + // + // rIsWiFiIcon + // + resources->ApplyResources(this->rIsWiFiIcon, L"rIsWiFiIcon"); + this->rIsWiFiIcon->Name = L"rIsWiFiIcon"; + this->rIsWiFiIcon->UseVisualStyleBackColor = true; + // + // rIsWirelessIcon + // + resources->ApplyResources(this->rIsWirelessIcon, L"rIsWirelessIcon"); + this->rIsWirelessIcon->Name = L"rIsWirelessIcon"; + this->rIsWirelessIcon->UseVisualStyleBackColor = true; + // + // gboxEULA + // + this->gboxEULA->Controls->Add(this->cboxIsEULA); + resources->ApplyResources(this->gboxEULA, L"gboxEULA"); + this->gboxEULA->Name = L"gboxEULA"; + this->gboxEULA->TabStop = false; + // + // tabSubmitInfo + // + this->tabSubmitInfo->Controls->Add(this->labProductNameLimit); + this->tabSubmitInfo->Controls->Add(this->tboxGuideSubmitInfo); + this->tabSubmitInfo->Controls->Add(this->gboxForeign); + this->tabSubmitInfo->Controls->Add(this->tboxCaption); + this->tabSubmitInfo->Controls->Add(this->labSubmitVer); + this->tabSubmitInfo->Controls->Add(this->labCaption); + this->tabSubmitInfo->Controls->Add(this->tboxProductCode2); + this->tabSubmitInfo->Controls->Add(this->labCapSubmitVer); + this->tabSubmitInfo->Controls->Add(this->gboxUsage); + this->tabSubmitInfo->Controls->Add(this->numSubmitVersion); + this->tabSubmitInfo->Controls->Add(this->gboxProd); + this->tabSubmitInfo->Controls->Add(this->gboxSubmitWay); + this->tabSubmitInfo->Controls->Add(this->tboxProductCode1); + this->tabSubmitInfo->Controls->Add(this->labSubmiteDate); + this->tabSubmitInfo->Controls->Add(this->dateRelease); + this->tabSubmitInfo->Controls->Add(this->tboxProductName); + this->tabSubmitInfo->Controls->Add(this->labReleaseDate); + this->tabSubmitInfo->Controls->Add(this->dateSubmit); + this->tabSubmitInfo->Controls->Add(this->labProductCode2); + this->tabSubmitInfo->Controls->Add(this->labProductCode); + this->tabSubmitInfo->Controls->Add(this->labProductName); + this->tabSubmitInfo->Controls->Add(this->labProductCode1); + resources->ApplyResources(this->tabSubmitInfo, L"tabSubmitInfo"); + this->tabSubmitInfo->Name = L"tabSubmitInfo"; + this->tabSubmitInfo->UseVisualStyleBackColor = true; + // + // labProductNameLimit + // + resources->ApplyResources(this->labProductNameLimit, L"labProductNameLimit"); + this->labProductNameLimit->Name = L"labProductNameLimit"; + // + // tboxGuideSubmitInfo + // + this->tboxGuideSubmitInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideSubmitInfo, L"tboxGuideSubmitInfo"); + this->tboxGuideSubmitInfo->Name = L"tboxGuideSubmitInfo"; + this->tboxGuideSubmitInfo->ReadOnly = true; + // + // gboxForeign + // + this->gboxForeign->Controls->Add(this->labProductNameLimitForeign); + this->gboxForeign->Controls->Add(this->labMultiForeign2); + this->gboxForeign->Controls->Add(this->cboxReleaseForeign); + this->gboxForeign->Controls->Add(this->labMultiForeign1); + this->gboxForeign->Controls->Add(this->tboxProductCode2Foreign1); + this->gboxForeign->Controls->Add(this->tboxProductCode2Foreign3); + this->gboxForeign->Controls->Add(this->labProductCodeForeign); + this->gboxForeign->Controls->Add(this->tboxProductCode2Foreign2); + this->gboxForeign->Controls->Add(this->tboxProductCode1Foreign); + this->gboxForeign->Controls->Add(this->labProductCode2Foreign); + this->gboxForeign->Controls->Add(this->labProductCode1Foreign); + this->gboxForeign->Controls->Add(this->tboxProductNameForeign); + this->gboxForeign->Controls->Add(this->labProductNameForeign); + resources->ApplyResources(this->gboxForeign, L"gboxForeign"); + this->gboxForeign->Name = L"gboxForeign"; + this->gboxForeign->TabStop = false; + // + // labProductNameLimitForeign + // + resources->ApplyResources(this->labProductNameLimitForeign, L"labProductNameLimitForeign"); + this->labProductNameLimitForeign->Name = L"labProductNameLimitForeign"; + // + // labMultiForeign2 + // + resources->ApplyResources(this->labMultiForeign2, L"labMultiForeign2"); + this->labMultiForeign2->Name = L"labMultiForeign2"; + // + // tabCompanyInfo + // + this->tabCompanyInfo->Controls->Add(this->tboxGuideCompanyInfo); + this->tabCompanyInfo->Controls->Add(this->cboxIsInputPerson2); + this->tabCompanyInfo->Controls->Add(this->gboxPerson1); + this->tabCompanyInfo->Controls->Add(this->gboxPerson2); + resources->ApplyResources(this->tabCompanyInfo, L"tabCompanyInfo"); + this->tabCompanyInfo->Name = L"tabCompanyInfo"; + this->tabCompanyInfo->UseVisualStyleBackColor = true; + // + // tboxGuideCompanyInfo + // + this->tboxGuideCompanyInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideCompanyInfo, L"tboxGuideCompanyInfo"); + this->tboxGuideCompanyInfo->Name = L"tboxGuideCompanyInfo"; + this->tboxGuideCompanyInfo->ReadOnly = true; + // + // tabErrorInfo + // + this->tabErrorInfo->Controls->Add(this->tboxGuideErrorInfo); + this->tabErrorInfo->Controls->Add(this->gboxErrorTiming); + this->tabErrorInfo->Controls->Add(this->labWarn); + this->tabErrorInfo->Controls->Add(this->labError); + this->tabErrorInfo->Controls->Add(this->gridWarn); + this->tabErrorInfo->Controls->Add(this->gridError); + resources->ApplyResources(this->tabErrorInfo, L"tabErrorInfo"); + this->tabErrorInfo->Name = L"tabErrorInfo"; + this->tabErrorInfo->UseVisualStyleBackColor = true; + // + // tboxGuideErrorInfo + // + this->tboxGuideErrorInfo->BackColor = System::Drawing::SystemColors::Info; + resources->ApplyResources(this->tboxGuideErrorInfo, L"tboxGuideErrorInfo"); + this->tboxGuideErrorInfo->Name = L"tboxGuideErrorInfo"; + this->tboxGuideErrorInfo->ReadOnly = true; + // + // gboxErrorTiming + // + this->gboxErrorTiming->Controls->Add(this->rErrorCurrent); + this->gboxErrorTiming->Controls->Add(this->rErrorReading); + resources->ApplyResources(this->gboxErrorTiming, L"gboxErrorTiming"); + this->gboxErrorTiming->Name = L"gboxErrorTiming"; + this->gboxErrorTiming->TabStop = false; + // + // rErrorCurrent + // + resources->ApplyResources(this->rErrorCurrent, L"rErrorCurrent"); + this->rErrorCurrent->Name = L"rErrorCurrent"; + this->rErrorCurrent->TabStop = true; + this->rErrorCurrent->UseVisualStyleBackColor = true; + this->rErrorCurrent->CheckedChanged += gcnew System::EventHandler(this, &Form1::rErrorCurrent_CheckedChanged); + // + // rErrorReading + // + resources->ApplyResources(this->rErrorReading, L"rErrorReading"); + this->rErrorReading->Checked = true; + this->rErrorReading->Name = L"rErrorReading"; + this->rErrorReading->TabStop = true; + this->rErrorReading->UseVisualStyleBackColor = true; + this->rErrorReading->CheckedChanged += gcnew System::EventHandler(this, &Form1::rErrorReading_CheckedChanged); + // + // labWarn + // + resources->ApplyResources(this->labWarn, L"labWarn"); + this->labWarn->ForeColor = System::Drawing::SystemColors::ActiveCaption; + this->labWarn->Name = L"labWarn"; + // + // labError + // + resources->ApplyResources(this->labError, L"labError"); + this->labError->ForeColor = System::Drawing::SystemColors::ActiveCaption; + this->labError->Name = L"labError"; + // + // gridWarn + // + this->gridWarn->AutoSizeRowsMode = System::Windows::Forms::DataGridViewAutoSizeRowsMode::AllCellsExceptHeaders; + this->gridWarn->BackgroundColor = System::Drawing::SystemColors::Control; + this->gridWarn->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; + this->gridWarn->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(4) {this->colWarnName, + this->colWarnBegin, this->colWarnEnd, this->colWarnCause}); + dataGridViewCellStyle2->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleLeft; + dataGridViewCellStyle2->BackColor = System::Drawing::SystemColors::Window; + dataGridViewCellStyle2->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + static_cast(128))); + dataGridViewCellStyle2->ForeColor = System::Drawing::SystemColors::ControlText; + dataGridViewCellStyle2->SelectionBackColor = System::Drawing::SystemColors::Highlight; + dataGridViewCellStyle2->SelectionForeColor = System::Drawing::SystemColors::HighlightText; + dataGridViewCellStyle2->WrapMode = System::Windows::Forms::DataGridViewTriState::True; + this->gridWarn->DefaultCellStyle = dataGridViewCellStyle2; + this->gridWarn->GridColor = System::Drawing::SystemColors::Control; + resources->ApplyResources(this->gridWarn, L"gridWarn"); + this->gridWarn->Name = L"gridWarn"; + this->gridWarn->ReadOnly = true; + this->gridWarn->RowHeadersVisible = false; + this->gridWarn->RowTemplate->Height = 21; + // + // colWarnName + // + resources->ApplyResources(this->colWarnName, L"colWarnName"); + this->colWarnName->Name = L"colWarnName"; + this->colWarnName->ReadOnly = true; + // + // colWarnBegin + // + resources->ApplyResources(this->colWarnBegin, L"colWarnBegin"); + this->colWarnBegin->Name = L"colWarnBegin"; + this->colWarnBegin->ReadOnly = true; + // + // colWarnEnd + // + resources->ApplyResources(this->colWarnEnd, L"colWarnEnd"); + this->colWarnEnd->Name = L"colWarnEnd"; + this->colWarnEnd->ReadOnly = true; + // + // colWarnCause + // + this->colWarnCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + resources->ApplyResources(this->colWarnCause, L"colWarnCause"); + this->colWarnCause->Name = L"colWarnCause"; + this->colWarnCause->ReadOnly = true; + // + // gridError + // + dataGridViewCellStyle3->BackColor = System::Drawing::Color::White; + this->gridError->AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3; + this->gridError->AutoSizeRowsMode = System::Windows::Forms::DataGridViewAutoSizeRowsMode::AllCellsExceptHeaders; + this->gridError->BackgroundColor = System::Drawing::SystemColors::Control; + this->gridError->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; + this->gridError->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(4) {this->colErrorName, + this->colErrorBegin, this->colErrorEnd, this->colErrorCause}); + dataGridViewCellStyle4->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleLeft; + dataGridViewCellStyle4->BackColor = System::Drawing::SystemColors::Window; + dataGridViewCellStyle4->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + static_cast(128))); + dataGridViewCellStyle4->ForeColor = System::Drawing::SystemColors::ControlText; + dataGridViewCellStyle4->SelectionBackColor = System::Drawing::SystemColors::Highlight; + dataGridViewCellStyle4->SelectionForeColor = System::Drawing::SystemColors::HighlightText; + dataGridViewCellStyle4->WrapMode = System::Windows::Forms::DataGridViewTriState::True; + this->gridError->DefaultCellStyle = dataGridViewCellStyle4; + this->gridError->GridColor = System::Drawing::SystemColors::Control; + resources->ApplyResources(this->gridError, L"gridError"); + this->gridError->Name = L"gridError"; + this->gridError->ReadOnly = true; + this->gridError->RowHeadersVisible = false; + this->gridError->RowTemplate->Height = 21; + // + // colErrorName + // + resources->ApplyResources(this->colErrorName, L"colErrorName"); + this->colErrorName->Name = L"colErrorName"; + this->colErrorName->ReadOnly = true; + // + // colErrorBegin + // + resources->ApplyResources(this->colErrorBegin, L"colErrorBegin"); + this->colErrorBegin->Name = L"colErrorBegin"; + this->colErrorBegin->ReadOnly = true; + // + // colErrorEnd + // + resources->ApplyResources(this->colErrorEnd, L"colErrorEnd"); + this->colErrorEnd->Name = L"colErrorEnd"; + this->colErrorEnd->ReadOnly = true; + // + // colErrorCause + // + this->colErrorCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + resources->ApplyResources(this->colErrorCause, L"colErrorCause"); + this->colErrorCause->Name = L"colErrorCause"; + this->colErrorCause->ReadOnly = true; + // + // labFile + // + resources->ApplyResources(this->labFile, L"labFile"); + this->labFile->Name = L"labFile"; + // + // labAssemblyVersion + // + resources->ApplyResources(this->labAssemblyVersion, L"labAssemblyVersion"); + this->labAssemblyVersion->ForeColor = System::Drawing::SystemColors::ControlText; + this->labAssemblyVersion->Name = L"labAssemblyVersion"; + // + // Form1 + // + resources->ApplyResources(this, L"$this"); + this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + this->Controls->Add(this->labAssemblyVersion); + this->Controls->Add(this->labFile); + this->Controls->Add(this->tabMain); + this->Controls->Add(this->tboxFile); + this->Controls->Add(this->menuStripAbove); + this->MainMenuStrip = this->menuStripAbove; + this->Name = L"Form1"; + this->gboxSrl->ResumeLayout(false); + this->gboxSrl->PerformLayout(); + this->gboxCRC->ResumeLayout(false); + this->gboxCRC->PerformLayout(); + this->gboxPerson2->ResumeLayout(false); + this->gboxPerson2->PerformLayout(); + this->gboxPerson1->ResumeLayout(false); + this->gboxPerson1->PerformLayout(); + this->gboxUsage->ResumeLayout(false); + this->gboxUsage->PerformLayout(); + this->gboxSubmitWay->ResumeLayout(false); + this->gboxSubmitWay->PerformLayout(); + (cli::safe_cast(this->numSubmitVersion))->EndInit(); + this->gboxShared2Size->ResumeLayout(false); + this->gboxShared2Size->PerformLayout(); + this->gboxTWLExInfo->ResumeLayout(false); + this->gboxTWLExInfo->PerformLayout(); + this->gboxAccess->ResumeLayout(false); + this->gboxAccess->PerformLayout(); + this->gboxTitleID->ResumeLayout(false); + this->gboxTitleID->PerformLayout(); + this->gboxProd->ResumeLayout(false); + this->gboxProd->PerformLayout(); + this->menuStripAbove->ResumeLayout(false); + this->menuStripAbove->PerformLayout(); + this->tabMain->ResumeLayout(false); + this->tabRomInfo->ResumeLayout(false); + this->tabRomInfo->PerformLayout(); + (cli::safe_cast(this->gridLibrary))->EndInit(); + this->tabTWLInfo->ResumeLayout(false); + this->tabTWLInfo->PerformLayout(); + this->gboxExFlags->ResumeLayout(false); + this->gboxExFlags->PerformLayout(); + this->tabRomEditInfo->ResumeLayout(false); + this->tabRomEditInfo->PerformLayout(); + this->gboxOtherSpec->ResumeLayout(false); + this->gboxOtherSpec->PerformLayout(); + this->gboxParental->ResumeLayout(false); + this->gboxParental->PerformLayout(); + this->gboxIcon->ResumeLayout(false); + this->gboxIcon->PerformLayout(); + this->gboxEULA->ResumeLayout(false); + this->gboxEULA->PerformLayout(); + this->tabSubmitInfo->ResumeLayout(false); + this->tabSubmitInfo->PerformLayout(); + this->gboxForeign->ResumeLayout(false); + this->gboxForeign->PerformLayout(); + this->tabCompanyInfo->ResumeLayout(false); + this->tabCompanyInfo->PerformLayout(); + this->tabErrorInfo->ResumeLayout(false); + this->tabErrorInfo->PerformLayout(); + this->gboxErrorTiming->ResumeLayout(false); + this->gboxErrorTiming->PerformLayout(); + (cli::safe_cast(this->gridWarn))->EndInit(); + (cli::safe_cast(this->gridError))->EndInit(); + this->ResumeLayout(false); + this->PerformLayout(); + + } +#pragma endregion + + ///////////////////////////////////////////// + // “à•”ƒƒ\ƒbƒh + ///////////////////////////////////////////// + private: + // ---------------------------------------------- + // ƒtƒ@ƒCƒ‹‚ÌR/W + // ---------------------------------------------- + + // Ý’èƒtƒ@ƒCƒ‹‚̓ǂݞ‚Ý + void loadInit(void); + + // SRL‚̃I[ƒvƒ“ + System::Void loadSrl( System::String ^filename ); + + // SRL‚̕ۑ¶‚ÆÄ“Ç‚Ýo‚µ + System::Boolean saveSrl( System::String ^filename ); + + // SRL‚̕ۑ¶‚Ì‚Ý @ret ¬”Û + System::Boolean saveSrlCore( System::String ^filename ); + + // ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Ìì¬(XMLŒ`Ž®) + System::Void makeMiddlewareListXml(System::Xml::XmlDocument^ doc); + + // ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶ + System::Boolean saveMiddlewareListXml( System::String ^filename ); + + // ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶(XML->HTML•ÏŠ·) + System::Boolean saveMiddlewareListHtml( System::String ^filename ); + + // ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶(XSL–„‚ßž‚Ý) + System::Boolean saveMiddlewareListXmlEmbeddedXsl( System::String ^filename ); + + private: + // ---------------------------------------------- + // ˆêŽžƒtƒ@ƒCƒ‹‚ÌŽæ‚舵‚¢ + // ---------------------------------------------- + + // ˆêŽž•Û‘¶ + System::Void saveTmp( System::String ^filename ); + + // ˆêŽžƒtƒ@ƒCƒ‹‚ð“Ç‚Ýo‚· + void loadTmp( System::String ^filename ); + + // ˆêŽž•Û‘¶î•ñ‚ðƒtƒH[ƒ€î•ñ‚ɕϊ· + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::ComboBox ^comb ); + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::NumericUpDown ^num ); + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, + cli::array^rbuts, cli::array^textCands ); + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::CheckBox ^cbox ); + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::TextBox ^tbox ); + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::DateTimePicker ^date ); + + private: + // ---------------------------------------------- + // ƒtƒH[ƒ€‚̉ŠúÝ’è + // ---------------------------------------------- + + // Ý’è/‘I‘ð‰Â”\‚ȃtƒH[ƒ€‚ð‚·‚×‚Ä disable ‚É‚·‚é + void readOnly( void ) + { + this->cboxIsEULA->Enabled = false; + this->rIsWirelessIcon->Enabled = false; + this->rIsWiFiIcon->Enabled = false; + this->rIsNoIcon->Enabled = false; + this->cboxIsUGC->Enabled = false; + this->cboxIsPhotoEx->Enabled = false; + + this->butSetBack->Enabled = false; + this->combRegion->Enabled = false; + this->combCERO->Enabled = false; + this->combESRB->Enabled = false; + this->combUSK->Enabled = false; + this->combPEGI->Enabled = false; + this->combPEGI_PRT->Enabled = false; + this->combPEGI_BBFC->Enabled = false; + this->combOFLC->Enabled = false; + } + + // ƒo[ƒWƒ‡ƒ“î•ñ‚ðŽæ“¾ + System::String^ getVersion( void ) + { + System::Reflection::Assembly ^ass = System::Reflection::Assembly::GetEntryAssembly(); + System::Version ^ver = ass->GetName()->Version; + return ( ver->Major.ToString() + "." + ver->Minor.ToString() ); + } + + // SRL‚É“o˜^‚³‚ê‚È‚¢ROMŽd—l‚̃tƒH[ƒ€“ü—Í‚ð + // V‹K“ǂݞ‚݂̂Ƃ«‚ɂ̓NƒŠƒA‚µ‚Ä + // ēǂݞ‚݂̂Ƃ«‚ɂ͑O‚Ìó‘Ô‚É–ß‚· + void clearOtherForms(void) + { + this->cboxIsUGC->Checked = false; + this->cboxIsPhotoEx->Checked = false; + this->hIsCheckedUGC = gcnew System::Boolean(false); + this->hIsCheckedPhotoEx = gcnew System::Boolean(false); + } + void saveOtherForms(void) + { + this->hIsCheckedUGC = gcnew System::Boolean(this->cboxIsUGC->Checked); + this->hIsCheckedPhotoEx = gcnew System::Boolean(this->cboxIsPhotoEx->Checked); + } + void loadOtherForms(void) + { + this->cboxIsUGC->Checked = *(this->hIsCheckedUGC); + this->cboxIsPhotoEx->Checked = *(this->hIsCheckedPhotoEx); + } + + private: + // ---------------------------------------------- + // ƒtƒH[ƒ€‚ÆSRL“àî•ñ‚𖵂‚È‚­ˆê’v‚³‚¹‚é + // ---------------------------------------------- + + // ROMî•ñ‚ðƒtƒH[ƒ€‚©‚çŽæ“¾‚µ‚ÄSRLƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚É”½‰f‚³‚¹‚é + // (ROMƒwƒbƒ_‚Ö‚Ì”½‰f‚âCRC‚Æ–¼‚ÌÄŒvŽZ‚ð‚µ‚È‚¢) + void setSrlProperties(void); + + // SRL‚ÌROMî•ñ‚ðƒtƒH[ƒ€‚É”½‰f‚³‚¹‚é(ƒtƒ@ƒCƒ‹‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚邱‚Æ‚ª‘O’ñ) + void setSrlForms(void); + + // SRL‚Ì“ÁŽê‚ÈÝ’è‚ðƒtƒH[ƒ€‚ɃZƒbƒg‚·‚é(Œ¾ŒêØ‚è‘Ö‚¦‚Å•\ަ‚ð•Ï‚¦‚½‚¢‚̂œƗ§‚³‚¹‚é) + void setSrlFormsCaptionEx(); + + // ƒtƒH[ƒ€‚Ì“ü—Í‚ðƒ`ƒFƒbƒN‚·‚é + System::Boolean checkSrlForms(void); + + private: + // --------------------------------------------------------------------- + // ƒŠ[ƒWƒ‡ƒ“Ý’è‚Í•¡ŽG‚È‚Ì‚Å•Ê‚ÉØ‚èo‚· + // --------------------------------------------------------------------- + + // ƒtƒH[ƒ€“ü—Í‚ðSRL‚É”½‰f‚³‚¹‚é + void setRegionSrlPropaties(void); + + // SRLî•ñ‚ðƒtƒH[ƒ€‚É”½‰f‚³‚¹‚é + void setRegionForms(void); + + private: + // --------------------------------------------------------------------- + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹Ý’è‚Í•¡ŽG‚È‚Ì‚Å•Ê‚ÉØ‚èo‚· + // --------------------------------------------------------------------- + + // ƒtƒH[ƒ€“ü—Í‚ðSRL‚É”½‰f‚³‚¹‚é + void setParentalSrlProperties(void); + + // SRLî•ñ‚ðƒtƒH[ƒ€‚É”½‰f‚³‚¹‚é + void setParentalForms(void); + + // ƒŠ[ƒWƒ‡ƒ“î•ñ‚©‚çƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚Ì•ÒW‰Â”\’c‘Ì‚ðƒ}ƒXƒN‚·‚é + void maskParentalForms(void); + + // ƒtƒH[ƒ€“ü—Í‚ª³‚µ‚¢‚©‘‚«ž‚Ý‘Oƒ`ƒFƒbƒN + void checkParentalForms( System::Boolean inRegion, System::Windows::Forms::ComboBox ^comb, System::String ^msg ); + + // ƒNƒŠƒA‚·‚é + void clearParental( System::Windows::Forms::ComboBox ^comb ); + + // •ÒW‚Å‚«‚邿‚¤‚É‚·‚é + void enableParental( System::Windows::Forms::ComboBox ^comb, + System::Windows::Forms::Label ^lab1, + System::Windows::Forms::Label ^lab2 ); + + // •ÒW‚Å‚«‚È‚­‚·‚é + void disableParental( System::Windows::Forms::ComboBox ^comb, + System::Windows::Forms::Label ^lab1, + System::Windows::Forms::Label ^lab2 ); + + // ---------------------------------------------- + // ƒtƒH[ƒ€‚̃`ƒFƒbƒN + // ---------------------------------------------- + + // ƒeƒLƒXƒg“ü—Í‚ª‚³‚ê‚Ä‚¢‚é‚©ƒ`ƒFƒbƒN + System::Boolean checkTextForm( System::String ^formtext, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + + // ”’l“ü—Í‚ª³í‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN + System::Boolean checkNumRange( + System::Int32 val, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + + System::Boolean checkNumRange( System::String ^strval, System::Int32 min, System::Int32 max, + System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + // ƒRƒ“ƒ{ƒ{ƒbƒNƒX‚ðƒ`ƒFƒbƒN + System::Boolean checkBoxIndex( System::Windows::Forms::ComboBox ^box, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + + // ----------------------------------------------------------------- + // ’ñoî•ñ(SRL‚ɉe‹¿‚µ‚È‚¢‰ÓŠ‚Ì‚Ý)‚ƃtƒH[ƒ€ŠÔ‚̃f[ƒ^‚Ì‚â‚è‚Æ‚è + // ----------------------------------------------------------------- + + // ’ñoŠm”F‘‚ɃtƒH[ƒ€‚𔽉f + void setDeliverableProperties(void); + + // ’ñoî•ñ‚̃tƒH[ƒ€ƒ`ƒFƒbƒN + System::Boolean checkDeliverableForms(void); + + // ---------------------------------------------- + // ƒ_ƒCƒAƒƒO + // ---------------------------------------------- + + void sucMsg( System::String ^msgJ, System::String ^msgE ) + { + if( this->stripItemJapanese->Checked ) + MessageBox::Show( msgJ, "Information", MessageBoxButtons::OK, MessageBoxIcon::None ); + else + MessageBox::Show( msgE, "Information", MessageBoxButtons::OK, MessageBoxIcon::None ); + } + + // ƒGƒ‰[ƒƒbƒZ[ƒW‚ðo—Í + void errMsg( System::String ^msgJ, System::String ^msgE ) + { + if( this->stripItemJapanese->Checked ) + MessageBox::Show( msgJ, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error ); + else + MessageBox::Show( msgE, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error ); + } + + private: + // ---------------------------------------------- + // “ú‰p—¼‘Ήž + // ---------------------------------------------- + + // “ú–{Œê”łƉpŒê”łŃeƒLƒXƒgƒ{ƒbƒNƒX‚Ì•¶Žš—ñ§ŒÀ‚ª•Ï‚í‚é + void changeMaxLength( System::Windows::Forms::TextBox ^tbox, System::Int32 maxlen ); + + // “ú–{Œê”Å‚Ö‚ÌØ‚è‘Ö‚¦ + void changeJapanese(void); + + // ‰pŒê”Å‚Ö‚ÌØ‚è‘Ö‚¦ + void changeEnglish(void); + + // Œ¾ŒêƒŠƒ\[ƒXØ‚è‘Ö‚¦ + void changeLanguage( System::String ^langname ); + + // -------------------------------------------------------- + // ƒGƒ‰[î•ñ‚Ì“o˜^ + // -------------------------------------------------------- + + // “ǂݞ‚ÝŽžƒGƒ‰[‚Ì“o˜^ + void setGridError( void ); + void setGridWarn( void ); + + // “ǂݞ‚ÝŽž‚ÉŒŸo‚µ‚½C³‰Â”\ƒGƒ‰[‚ÉŒ»Ý‚Ì“ü—͂𔽉f + void overloadGridError( void ); + void overloadGridWarn( void ); + + // ƒZƒ‹‚ÌF‚ð•Ï‚¦‚é + void colorGridError( RCMrcError ^err ); + void colorGridWarn( RCMrcError ^err ); + + // ‚܂Ƃ߂ÄXV + void updateGrid(void); + + // ---------------------------------------------- + // ƒGƒ‰[ˆ— + // ---------------------------------------------- + + // SRL‚ɂ͊֌W‚µ‚È‚¢‘—Þã‚̃Gƒ‰[‚ðƒ`ƒFƒbƒN + System::Boolean isValidOnlyDeliverable(void); + + // SRL‚̃oƒCƒiƒŠ‚ɉe‹¿‚·‚逖ڂɃGƒ‰[‚ª‚ ‚é‚©ƒ`ƒFƒbƒN + System::Boolean isValidAffectRom(void); + + // SRL‚̃oƒCƒiƒŠ‚ɉe‹¿‚·‚逖ڂ̒†‚ÅC³‰Â”\‚ȃGƒ‰[‚¾‚¯‚ðƒ`ƒFƒbƒN + System::Boolean isValidAffectRomModified(void); + + ///////////////////////////////////////////// + // ƒ^ƒCƒgƒ‹ƒo[‘€ìƒƒ\ƒbƒh + ///////////////////////////////////////////// + + private: + System::Void stripItemEnglish_Click(System::Object^ sender, System::EventArgs^ e) + { + this->stripItemEnglish->Checked = true; + this->stripItemJapanese->Checked = false; + this->changeEnglish(); + this->updateGrid(); + } + + private: + System::Void stripItemJapanese_Click(System::Object^ sender, System::EventArgs^ e) + { + this->stripItemEnglish->Checked = false; + this->stripItemJapanese->Checked = true; + this->changeJapanese(); + this->updateGrid(); + } + + private: + System::Void stripItemOpenRom_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String^ filename; + + // ƒhƒ‰ƒbƒOƒAƒ“ƒhƒhƒƒbƒvˆÈŠO‚ł̓_ƒCƒAƒƒO‚©‚ç“ü—Í‚·‚é + { + System::Windows::Forms::OpenFileDialog ^dlg = gcnew (OpenFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "srl format (*.srl)|*.srl|All files (*.*)|*.*"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + //this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½B", "Opening the ROM data file is canceled by user." ); + return; + } + filename = dlg->FileName; + } + this->loadSrl( filename ); + this->clearOtherForms(); + //this->sucMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“‚ɬŒ÷‚µ‚Ü‚µ‚½B", "The ROM data file is opened successfully." ); + } //stripItemOpenRom_Click() + + private: + System::Void stripItemMasterRom_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String^ filename; + + // SRL‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚ɂ̓Š[ƒh‚³‚¹‚È‚¢ + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + { + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñ‚Ì‚ÅAƒ}ƒXƒ^[ROM‚Ì쬂ª‚Å‚«‚Ü‚¹‚ñB", + "ROM data file has not opened yet. A master ROM data can't be made." ); + return; + } + + // SRLŠÖ˜AƒtƒH[ƒ€“ü—Í‚ðƒ`ƒFƒbƒN‚·‚é + this->hErrorList->Clear(); + this->hWarnList->Clear(); + if( this->checkSrlForms() == false ) + { + this->errMsg( "•s³‚Èݒ肪‚ ‚邽‚߃}ƒXƒ^[ROM‚Ì쬂ª‚Å‚«‚Ü‚¹‚ñB", + "Setting is illegal. A master ROM data can't be made." ); + return; + } + + // SRL–¼‚ð’ñoŽè‡‘‚É]‚킹‚é + { + filename = gcnew System::String(""); + + if( this->cboxRemasterVerE->Checked == true ) + { + filename = "T" + this->hSrl->hGameCode + "E" + + System::Decimal::ToByte(this->numSubmitVersion->Value).ToString("X") + ".SRL"; + } + else + { + filename = "T" + this->hSrl->hGameCode + this->hSrl->hRomVersion->ToString("X") + + System::Decimal::ToByte(this->numSubmitVersion->Value).ToString("X") + ".SRL"; + } + } + + // ’ˆÓ‘‚« + { + this->sucMsg( + "’ñoŽè‡‘‚É‚µ‚½‚ª‚¢AROMƒf[ƒ^ƒtƒ@ƒCƒ‹–¼‚Í \"" + filename + "\"‚ƂȂè‚Ü‚·B\n" + "\nROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚·‚éƒtƒHƒ‹ƒ_‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B", + "ROM data file name is \"" + filename + "\".\n" + "\nPlease select a folder in which the ROM data is saved." + ); + } + // ƒ_ƒCƒAƒƒO‚©‚çSRL‚ð•Û‘¶‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ðŽæ“¾‚·‚é + { + System::Windows::Forms::FolderBrowserDialog ^dlg = gcnew (System::Windows::Forms::FolderBrowserDialog); + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + this->errMsg( "ƒtƒHƒ‹ƒ_‚Ì‘I‘ð‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½‚̂Ń}ƒXƒ^[ROM‚Í쬂³‚ê‚Ü‚¹‚ñB", + "A submission sheet can not be made, since selecting folder is canceled." ); + return; + } + else + { + if( !dlg->SelectedPath->EndsWith("\\") ) + { + filename = dlg->SelectedPath + "\\" + filename; + } + else + { + filename = dlg->SelectedPath + filename; + } + } + if( System::IO::File::Exists( filename ) ) + { + System::String ^msg; + if( this->stripItemJapanese->Checked ) + msg = gcnew System::String( filename + "‚Í‚·‚łɑ¶Ý‚µ‚Ü‚·Bã‘‚«‚µ‚Ü‚·‚©?" ); + else + msg = gcnew System::String( filename + "already exists. Overwrite it?" ); + if( MessageBox::Show( msg, "Information", MessageBoxButtons::YesNo, MessageBoxIcon::None ) + == System::Windows::Forms::DialogResult::No ) + { + this->errMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂ðƒLƒƒƒ“ƒZƒ‹‚µ‚Ü‚µ‚½B", + "Making a master ROM is canceled." ); + return; + } + } + } + try + { + if( !this->saveSrl( filename ) ) + { + this->errMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B", + "Making a master ROM failed." ); + return; + } + this->sucMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂ª¬Œ÷‚µ‚Ü‚µ‚½B", "Making the ROM data file succeeded." ); + this->tboxFile->Text = filename; + } + catch( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B", + "Making a master ROM failed." ); + return; + } + } //stripItemMasterRom_Click() + + private: + System::Void stripItemSheet_Click(System::Object^ sender, System::EventArgs^ e) + { + ECDeliverableResult result; + + // SRL‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚ɂ̓Š[ƒh‚³‚¹‚È‚¢ + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + { + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB", "ROM file has not opened yet." ); + return; + } + + // SRL‚Æ‘—Þ‚Ì—¼•û‚̃tƒH[ƒ€“ü—Í‚ðƒ`ƒFƒbƒN‚·‚é + this->hErrorList->Clear(); + this->hWarnList->Clear(); + if( this->checkSrlForms() == false ) + { + this->errMsg( "•s³‚Èݒ肪‚ ‚邽‚ß’ñoƒf[ƒ^‚ð쬂ł«‚Ü‚¹‚ñB", + "Setting is illegal. Submission data can't be made." ); + return; + } + if( this->checkDeliverableForms() == false ) + { + this->errMsg( "“ü—Íî•ñ‚É•s‘«‚ª‚ ‚邽‚ß’ñoƒf[ƒ^‚ð쬂ł«‚Ü‚¹‚ñB", + "Input is not enough. Submission data can't be made." ); + return; + } + + // SRL–¼‚ð’ñoŽè‡‘‚É]‚킹‚é + System::String ^srlfile; + { + srlfile = gcnew System::String(""); + + if( this->cboxRemasterVerE->Checked == true ) + { + srlfile = "T" + this->hSrl->hGameCode + "E" + + System::Decimal::ToByte(this->numSubmitVersion->Value).ToString("X") + ".SRL"; + } + else + { + srlfile = "T" + this->hSrl->hGameCode + this->hSrl->hRomVersion->ToString("X") + + System::Decimal::ToByte(this->numSubmitVersion->Value).ToString("X") + ".SRL"; + } + } + + // ’ˆÓ‘‚« + { + this->sucMsg( + "Step1/3: ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚Æ’ñoŠm”F‘‚Ìî•ñ‚ðˆê’v‚³‚¹‚邽‚ßA‚Ü‚¸A“ü—Íî•ñ‚𔽉f‚³‚¹‚½ƒ}ƒXƒ^[ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·B\n(ƒLƒƒƒ“ƒZƒ‹‚³‚ꂽ‚Æ‚«A’ñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñB)\n" + + "\n ƒ}ƒXƒ^[ROMƒf[ƒ^ƒtƒ@ƒCƒ‹–¼‚Í \"" + srlfile + "\"‚ƂȂè‚Ü‚·B\n" + "\nƒ}ƒXƒ^[ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚·‚éƒtƒHƒ‹ƒ_‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B", + "Step1/3: Firstly, We make a master ROM file because all information in a submission sheet are match those in the ROM data file.\n(When it is canceled, both A set of submission data is not made.)\n" + + "\n The name of the master ROM data file is \"" + srlfile + "\".\n" + "\nPlease select a folder in which the ROM data is saved." + ); + } + + // ƒ_ƒCƒAƒƒO‚©‚çSRL‚ð•Û‘¶‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ðŽæ“¾‚·‚é + System::String ^delivfile; + { + System::Windows::Forms::FolderBrowserDialog ^dlg = gcnew (System::Windows::Forms::FolderBrowserDialog); + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + this->errMsg( "ƒtƒHƒ‹ƒ_‚Ì‘I‘ð‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½‚̂Œñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñB", + "A set of submission data can not be made, since selecting folder is canceled." ); + return; + } + else + { + if( !dlg->SelectedPath->EndsWith("\\") ) + { + srlfile = dlg->SelectedPath + "\\" + srlfile; + } + else + { + srlfile = dlg->SelectedPath + srlfile; + } + } + if( System::IO::File::Exists( srlfile ) ) + { + System::String ^msg; + if( this->stripItemJapanese->Checked ) + msg = gcnew System::String( srlfile + "‚Í‚·‚łɑ¶Ý‚µ‚Ü‚·Bã‘‚«‚µ‚Ü‚·‚©?" ); + else + msg = gcnew System::String( srlfile + "already exists. Overwrite it?" ); + if( MessageBox::Show( msg, "Information", MessageBoxButtons::YesNo, MessageBoxIcon::None ) + == System::Windows::Forms::DialogResult::No ) + { + this->errMsg( "ƒtƒ@ƒCƒ‹‚Ìã‘‚«‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½‚̂Œñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Since overwriting a file is canceled, a set of submission data can not be made." ); + return; + } + } + + } + + // ’ˆÓ‘‚« + { + this->sucMsg( + "Step2/3: ‘±‚¢‚ÄAŽg—p‚³‚ê‚Ä‚¢‚éƒ~ƒhƒ‹ƒEƒFƒA‚ÌƒŠƒXƒg‚ð쬂µ‚Ü‚·B\n‚±‚±‚ŃLƒƒƒ“ƒZƒ‹‚³‚ꂽ‚Æ‚«A’ñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñ‚̂ł²’ˆÓ‚­‚¾‚³‚¢B", + "Step2/3: Secondly, We should make a list of middlewares used by the ROM. \n(CAUTION: When it is canceled, A set of submission data is not made.)" + ); + } + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + System::String ^middlefile; + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "xml format (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + this->errMsg( "ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Ì쬂ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½B’ñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Making a list of middlewares is canceled. A set of submission data is not made." ); + return; + } + middlefile = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + middlefile += ".xml"; + } + } + + // ’ˆÓ‘‚« + { + this->sucMsg( + "Step3/3: ‘±‚¢‚ÄA’ñoŠm”F‘‚ð쬂µ‚Ü‚·B\n‚±‚±‚ŃLƒƒƒ“ƒZƒ‹‚³‚ꂽ‚Æ‚«A’ñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñ‚̂ł²’ˆÓ‚­‚¾‚³‚¢B", + "Step3/3: Finally, We should make a submission sheet. \n(CAUTION: When it is canceled, A set of submission data is not made, but also the master ROM data and a list of middleware are not made.)" + ); + } + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "xml format (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + this->errMsg( "’ñoŠm”F‘‚Ì쬂ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½B’ñoƒf[ƒ^ˆêŽ®‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Making a submission sheet is canceled. A set of submission data is not made." ); + return; + } + delivfile = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + delivfile += ".xml"; + } + } + + // ƒ}ƒXƒ^’ñoŠm”F‘‚É•K—v‚Èî•ñ‚ðƒtƒH[ƒ€‚©‚çŽæ“¾‚µ‚ÄXV + this->setSrlProperties(); // æ‚ÉSrl‚ðXV‚µ‚Ä‚¨‚­ + this->setDeliverableProperties(); + + // XVŒã‚ÌSRL‚ð•ʃtƒ@ƒCƒ‹‚Éì¬ + try + { + if( !this->saveSrl( srlfile ) ) + { + this->errMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B’ñoŠm”F‘‚¨‚æ‚у~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Making a master ROM failed. And a submission sheet and a list of middlewares are not made." ); + return; + } + this->tboxFile->Text = srlfile; + } + catch( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "ƒ}ƒXƒ^[ROM‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B’ñoŠm”F‘‚¨‚æ‚у~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Making a master ROM failed. And a submission sheet and a list of middlewares are not made." ); + return; + } + u16 crc; // SRL‘S‘Ì‚ÌCRC‚ðŒvŽZ‚·‚é(‘—Þ‚É‹Lq‚·‚邽‚ß) + if( !getWholeCRCInFile( srlfile, &crc ) ) + { + this->errMsg( "CRC‚ÌŒvŽZ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B’ñoŠm”F‘‚¨‚æ‚у~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Calc CRC is failed. Therefore, And a submission sheet and a list of middlewares are not made." ); + return; + } + System::UInt16 ^hcrc = gcnew System::UInt16( crc ); + this->tboxWholeCRC->Clear(); + this->tboxWholeCRC->AppendText( "0x" ); + this->tboxWholeCRC->AppendText( hcrc->ToString("X") ); + + // ƒ~ƒhƒ‹ƒEƒFƒA‚ÌƒŠƒXƒg‚ðì¬ + if( !this->saveMiddlewareListXmlEmbeddedXsl( middlefile ) ) + { + this->errMsg( "ƒ~ƒhƒ‹ƒEƒFƒA‚ÌƒŠƒXƒg‚ªì¬‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B’ñoŠm”F‘‚Í쬂³‚ê‚Ü‚¹‚ñB", + "Making a list of middleware failed. And a submission sheet is not made."); + return; + } + + // ‘—Þì¬ + cli::array ^paths = srlfile->Split(L'\\'); // —]•ª‚ȃpƒX‚ðíœ + srlfile = paths[ paths->Length - 1 ]; + //result = this->hDeliv->write( delivfile, this->hSrl, hcrc, srlfile, !(this->stripItemJapanese->Checked) ); + result = this->hDeliv->writeSpreadsheet( delivfile, this->hSrl, hcrc, srlfile, !(this->stripItemJapanese->Checked) ); + if( result != ECDeliverableResult::NOERROR ) + { + switch( result ) + { + case ECDeliverableResult::ERROR_FILE_OPEN: + this->errMsg( "’ñoŠm”F‘‚̃eƒ“ƒvƒŒ[ƒg‚ªŠJ‚¯‚È‚©‚Á‚½‚½‚ßA’ñoŠm”F‘‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B", + "Since a templete of the submission sheet can't be opened, making the sheet is failed." ); + break; + + case ECDeliverableResult::ERROR_FILE_WRITE: + this->errMsg( "’ñoŠm”F‘‚Ƀf[ƒ^‚ð‘‚«ž‚݂ł«‚Ü‚¹‚ñ‚Å‚µ‚½B“¯–¼ƒtƒ@ƒCƒ‹‚ª‚·‚łɊJ‚©‚ê‚Ä‚¢‚È‚¢‚©‚²Šm”F‚­‚¾‚³‚¢B", + "Writing data into a submission sheet failed. Please check that the file has been opened already." ); + break; + + default: + this->errMsg( "’ñoŠm”F‘‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B", "Making the submission sheet is failed." ); + break; + } + return; + } + this->sucMsg( "’ñoƒf[ƒ^ˆêŽ®‚Ì쬂ɬŒ÷‚µ‚Ü‚µ‚½B", "The submission sheet is made successfully." ); + + } //stripItemSheet_Click() + + private: + System::Void stripItemSaveTemp_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "xml format (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + filename += ".xml"; + } + } + this->saveTmp( filename ); + } //stripItemSaveTemp_Click() + + private: + System::Void stripItemLoadTemp_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + { + System::Windows::Forms::OpenFileDialog ^dlg = gcnew (OpenFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "xml format (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + filename += ".xml"; + } + } + this->loadTmp( filename ); + } //stripItemLoadTemp_Click() + + private: + System::Void stripItemMiddlewareXml_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB", "ROM file has not opened yet." ); + return; + } + + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "xml format (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + filename += ".xml"; + } + } + if( !this->saveMiddlewareListXmlEmbeddedXsl(filename) ) + { + this->errMsg( "ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B","Making a middleware list failed." ); + } + } //stripItemMiddlewareXml_Click() + + private: + System::Void stripItemMiddlewareHtml_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ªƒI[ƒvƒ“‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB", "ROM file has not opened yet." ); + return; + } + + // ƒ_ƒCƒAƒƒO‚Ńtƒ@ƒCƒ‹ƒpƒX‚ðŒˆ’è + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = System::Environment::GetFolderPath( System::Environment::SpecialFolder::Desktop );//"c:\\"; + dlg->Filter = "html format (*.html)|*.html"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".html" )) ) + { + filename += ".html"; + } + } + if( !this->saveMiddlewareListHtml(filename) ) + { + this->errMsg( "ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B","Making a middleware list failed." ); + } + } //stripItemMiddlewareHtml_Click + + + ///////////////////////////////////////////// + // ƒtƒH[ƒ€‘€ìƒƒ\ƒbƒh + ///////////////////////////////////////////// + + // ƒtƒ@ƒCƒ‹ƒpƒX•\ަ—pƒeƒLƒXƒgƒ{ƒbƒNƒX + private: + // ƒhƒ‰ƒbƒO‚³‚ê‚Ă܂¾ƒ}ƒEƒX‚̃{ƒ^ƒ“‚ª—£‚³‚ê‚Ä‚¢‚È‚¢‚Æ‚« + System::Void tboxFile_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) + { + if( e->Data->GetDataPresent( DataFormats::FileDrop ) ) + { + e->Effect = DragDropEffects::All; + } + } + // ƒhƒ‰ƒbƒO‚³‚ꂽ‚ ‚ƃ}ƒEƒX‚̃{ƒ^ƒ“‚ª—£‚³‚ꂽ‚Æ‚« + System::Void tboxFile_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) + { + array ^files = dynamic_cast< array ^>(e->Data->GetData( DataFormats::FileDrop ) ); + String ^filename = files[0]; + + if( System::IO::File::Exists(filename) == false ) + { + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚Ü‚¹‚ñ‚̂œǂݞ‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB", + "The ROM data file is not found. Therefore the file can not be opened." ); + return; + } + this->loadSrl( filename ); // ƒhƒ‰ƒbƒOƒAƒ“ƒhƒhƒƒbƒv‚ÌŽž“_‚Ń{ƒ^ƒ“‚ð‰Ÿ‚³‚È‚­‚Ä‚àƒtƒ@ƒCƒ‹‚ðŠJ‚­ + this->clearOtherForms(); + //this->sucMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“‚ɬŒ÷‚µ‚Ü‚µ‚½B", "The ROM data file is opened successfully." ); + } + + // ƒ`ƒFƒbƒNƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚½‚Æ‚«‚É‘¼‚̃tƒH[ƒ€‚ð—LŒø‚É‚·‚é + private: + System::Void cboxIsInputPerson2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + this->gboxPerson2->Enabled = this->cboxIsInputPerson2->Checked; + if( this->cboxIsInputPerson2->Checked == true ) + { + if( (this->tboxCompany1->Text != nullptr) && !(this->tboxCompany1->Text->Equals("")) ) + { + this->tboxCompany2->Text = gcnew System::String( this->tboxCompany1->Text ); + } + if( (this->tboxDepart1->Text != nullptr) && !(this->tboxDepart1->Text->Equals("")) ) + { + this->tboxDepart2->Text = gcnew System::String( this->tboxDepart1->Text ); + } + } + else + { + this->tboxCompany2->Clear(); + this->tboxDepart2->Clear(); + this->tboxPerson2->Clear(); + this->tboxFurigana2->Clear(); + this->tboxTel2->Clear(); + this->tboxFax2->Clear(); + this->tboxMail2->Clear(); + this->tboxNTSC2->Clear(); + } + } + private: + System::Void rUsageOther_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + this->tboxUsageOther->Enabled = this->rUsageOther->Checked; + if( this->rUsageOther->Checked == false ) + { + this->tboxUsageOther->Clear(); + } + } + private: + System::Void cboxRemasterVerE_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + //this->numRemasterVer->Enabled = !(this->cboxRemasterVerE->Checked); + //if( this->cboxRemasterVerE->Checked == false ) + //{ + // this->numRemasterVer->Value = 0; + //} + } + private: + System::Void combBackup_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) + { + if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) + { + this->tboxBackupOther->Enabled = true; + } + else + { + this->tboxBackupOther->Enabled = false; + this->tboxBackupOther->Clear(); + } + } + private: + System::Void combRegion_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) + { + this->maskParentalForms(); + } + + private: + System::Void cboxReleaseForeign_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + this->tboxProductNameForeign->Enabled = this->cboxReleaseForeign->Checked; + this->tboxProductCode1Foreign->Enabled = this->cboxReleaseForeign->Checked; + this->tboxProductCode2Foreign1->Enabled = this->cboxReleaseForeign->Checked; + this->tboxProductCode2Foreign2->Enabled = this->cboxReleaseForeign->Checked; + this->tboxProductCode2Foreign3->Enabled = this->cboxReleaseForeign->Checked; + if( this->cboxReleaseForeign->Checked == false ) + { + this->tboxProductNameForeign->Clear(); + this->tboxProductCode1Foreign->Clear(); + this->tboxProductCode2Foreign1->Clear(); + this->tboxProductCode2Foreign2->Clear(); + this->tboxProductCode2Foreign3->Clear(); + } + } + + private: + System::Void rErrorReading_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + this->updateGrid(); + } + + private: + System::Void rErrorCurrent_CheckedChanged(System::Object^ sender, System::EventArgs^ e) + { + this->updateGrid(); + } + + private: + System::Void tabMain_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) + { + // ƒGƒ‰[ƒ^ƒu‚ðÅVî•ñ‚ÉXV + if( tabMain->SelectedIndex == 5 ) + { + this->updateGrid(); + } + } + + private: + System::Void butSetBack_Click(System::Object^ sender, System::EventArgs^ e) + { + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + return; + + // •ÒW‰Â”\î•ñ‚ð“ǂݞ‚ÝŽž‚ÌÝ’è‚É–ß‚· + this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); + if( ( *this->hSrl->hIsWiFiIcon && *this->hSrl->hIsWirelessIcon) || + (!(*this->hSrl->hIsWiFiIcon) && !(*this->hSrl->hIsWirelessIcon)) ) + { + this->rIsNoIcon->Checked = true; + } + else if( *(this->hSrl->hIsWiFiIcon) && !*(this->hSrl->hIsWirelessIcon) ) + { + this->rIsWiFiIcon->Checked = true; + } + else + { + this->rIsWirelessIcon->Checked = true; + } + this->setRegionForms(); + this->setParentalForms(); + this->loadOtherForms(); // SRL‚É“o˜^‚³‚ê‚Ä‚¢‚È‚¢ROMŽd—l‚̃tƒH[ƒ€‚à–ß‚· + } + + + + + +}; // enf of ref class Form1 + +} // end of namespace MasterEditorTWL + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.ja.resx b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.ja.resx new file mode 100644 index 0000000..efa1709 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.ja.resx @@ -0,0 +1,859 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 73, 12 + + + プラットフォーム + + + 54, 12 + + + ROMå®¹é‡ + + + 80, 12 + + + ROMタイプ設定 + + + 59, 12 + + + メーカコード + + + 78, 12 + + + イニシャルコード + + + 65, 12 + + + ソフトタイトル + + + 93, 12 + + + リマスターãƒãƒ¼ã‚¸ãƒ§ãƒ³ + + + ROMデータ情報 + + + 79, 12 + + + ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—メモリ + + + ãªã— + + + ãã®ä»– + + + 63, 12 + + + 全体ã®CRC + + + 55, 12 + + + ヘッダCRC + + + ヘッダCRC + + + 241, 12 + + + 備考欄 - ãã®ä»–連絡事項ãŒã‚れã°ã”記入ãã ã•ã„ + + + 審査中 + + + 年齢制é™ãªã—(全年齢) + + + 3歳以上 + + + 4歳以上推奨 + + + 7歳以上 + + + 8歳以上推奨 + + + 12歳以上 + + + 15歳以上 + + + 16歳以上 + + + 18歳以上 + + + 審査中 + + + 年齢制é™ãªã—(全年齢) + + + 4歳以上 + + + 6歳以上 + + + 12歳以上 + + + 16歳以上 + + + 18歳以上 + + + 審査中 + + + 年齢制é™ãªã—(全年齢) + + + 3歳以上 + + + 7歳以上 + + + 12歳以上 + + + 16歳以上 + + + 18歳以上 + + + 審査中 + + + 年齢制é™ãªã— + + + 6歳以上 + + + 12歳以上 + + + 16歳以上 + + + é’å°‘å¹´ã«ã¯ä¸é©åˆ‡ + + + 審査中 + + + 年齢制é™ãªã—(全年齢) + + + EC (3歳以上) + + + E (6歳以上) + + + E10+ (10歳以上) + + + T (13歳以上) + + + M (17歳以上) + + + 審査中 + + + A (全年齢) + + + B (12歳以上) + + + C (15歳以上) + + + D (17歳以上) + + + Z (18歳以上) + + + 審査中 + + + 82, 12 + + + レーティング情報 + + + 47, 12 + + + リージョン + + + 157, 16 + + + EULAã¸ã®åŒæ„ã‚’å¿…è¦ã¨ã™ã‚‹ + + + 日本ã®ã¿ + + + 米国ã®ã¿ + + + 欧州ã®ã¿ + + + 豪州ã®ã¿ + + + 欧州ãŠã‚ˆã³è±ªå·ž + + + 150, 16 + + + 担当者2を入力ã™ã‚‹(ä»»æ„) + + + 37, 12 + + + (ä»»æ„) + + + 37, 12 + + + (ä»»æ„) + + + 41, 12 + + + 部署å + + + 51, 12 + + + (ãµã‚ŠãŒãª) + + + 38, 12 + + + ã”æ°å + + + 41, 12 + + + 貴社å + + + 担当者2 + + + 37, 12 + + + (ä»»æ„) + + + 37, 12 + + + (ä»»æ„) + + + 41, 12 + + + 部署å + + + 51, 12 + + + (ãµã‚ŠãŒãª) + + + 38, 12 + + + ã”æ°å + + + 41, 12 + + + 貴社å + + + 担当者1 + + + 54, 16 + + + ãã®ä»– + + + 87, 16 + + + データé…信用 + + + 71, 16 + + + 試éŠå°ç”¨ + + + 83, 16 + + + 一般販売用 + + + 目的 + + + 56, 16 + + + 手渡㗠+ + + 47, 16 + + + éƒµé€ + + + æå‡ºæ–¹æ³• + + + 65, 12 + + + 書類æå‡ºæ—¥ + + + 65, 12 + + + 発売予定日 + + + 56, 12 + + + 製å“コード + + + 41, 12 + + + 製å“å + + + 233, 12 + + + * リマスターãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸ŠãŒã‚‹ã¨å†ã³0ã‹ã‚‰ã‚«ã‚¦ãƒ³ãƒˆ + + + 74, 12 + + + æå‡ºãƒãƒ¼ã‚¸ãƒ§ãƒ³ + + + 101, 12 + + + (複数ã‚ã‚‹å ´åˆã®ã¿) + + + 144, 16 + + + 海外版を発売ã™ã‚‹(予定) + + + 41, 12 + + + 製å“å + + + 56, 12 + + + 製å“コード + + + 123, 16 + + + Shared2ファイル使用 + + + Shared2ファイルサイズ + + + 70, 12 + + + 使用ライブラリ + + + 72, 12 + + + SDKãƒãƒ¼ã‚¸ãƒ§ãƒ³ + + + 155, 12 + + + TWLノーマル領域ROMオフセット + + + 142, 12 + + + TWL専用領域ROMオフセット + + + TWL拡張情報 + + + 131, 16 + + + サブãƒãƒŠãƒ¼ãƒ•ァイル有効 + + + 155, 16 + + + NTRãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆç½²åæœ‰åй + + + 121, 16 + + + ãƒŽãƒ¼ãƒžãƒ«ã‚¸ãƒ£ãƒ³ãƒ—è¨±å¯ + + + 103, 16 + + + tmpã‚¸ãƒ£ãƒ³ãƒ—è¨±å¯ + + + 36, 12 + + + ãã®ä»– + + + 87, 12 + + + ã‚²ãƒ¼ãƒ ã‚«ãƒ¼ãƒ‰é›»æº + + + 121, 16 + + + NANDフラッシュメモリ + + + SDカード + + + アクセスコントロール情報 + + + 53, 12 + + + 特記事項 + + + ROMæå‡ºæƒ…å ± + + + 211, 22 + + + ROMデータを開ã + + + 208, 6 + + + 211, 22 + + + æå‡ºæƒ…報を一時ä¿å­˜ã™ã‚‹ + + + 211, 22 + + + 一時ä¿å­˜ã—ãŸæå‡ºæƒ…å ±ã‚’é–‹ã + + + 51, 20 + + + ファイル + + + 280, 22 + + + æå‡ºãƒ‡ãƒ¼ã‚¿ä¸€å¼ã‚’作æˆã™ã‚‹ + + + 277, 6 + + + 280, 22 + + + マスターROMã®ã¿ã‚’作æˆã™ã‚‹ + + + 280, 22 + + + ミドルウェアリストã®ã¿ã‚’作æˆã™ã‚‹(XMLå½¢å¼) + + + 280, 22 + + + ミドルウェアリストã®ã¿ã‚’作æˆã™ã‚‹(HTMLå½¢å¼) + + + 53, 20 + + + マスター + + + ã“ã®ã‚¿ãƒ–ã®æƒ…å ±ã¯ç·¨é›†ä¸å¯ã§ã™ã€‚データã«èª¤ã‚ŠãŒã‚ã‚‹å ´åˆã«ã¯ROMデータã®ä½œæˆæ™‚ã®è¨­å®šã‚’見直ã—ã¦ãã ã•ã„。 + + + ROM基本情報(確èªç”¨) + + + ã“ã®ã‚¿ãƒ–ã®æƒ…å ±ã¯ç·¨é›†ä¸å¯ã§ã™ã€‚データã«èª¤ã‚ŠãŒã‚ã‚‹å ´åˆã«ã¯ROMデータã®ä½œæˆæ™‚ã®è¨­å®šã‚’見直ã—ã¦ãã ã•ã„。 + + + TWL拡張諸フラグ + + + TWL拡張情報(確èªç”¨) + + + 210, 16 + + + UGC(User Generated Contents)対応 + + + 96, 16 + + + 写真交æ›å¯¾å¿œ + + + ãã®ä»–ROM仕様 + + + 読ã¿è¾¼ã¿æ™‚ã®è¨­å®šã«æˆ»ã™ + + + ã“ã®ã‚¿ãƒ–ã®å„é …ç›®ã¸ã®å…¥åŠ›ã¯æå‡ºç¢ºèªæ›¸ãŠã‚ˆã³ãƒžã‚¹ã‚¿ãƒ¼ROMã®ä½œæˆã®ãŸã‚ã«å¿…è¦ã§ã™ã€‚<newline>ã“ã‚Œã‚‰ã®æƒ…å ±ã¯ãƒžã‚¹ã‚¿ãƒ¼ROMã®ä½œæˆæ™‚ã«ROM内登録データã¨ã—ã¦ç™»éŒ²ã•れã¾ã™(「ãã®ä»–ROM仕様ã€ã‚’除ã)。 + + + リージョンã¨ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°æƒ…å ± + + + 144, 16 + + + 通信アイコンを表示ã—ãªã„ + + + 134, 16 + + + Wi-Fi通信アイコン表示 + + + 167, 16 + + + DSワイヤレス通信アイコン表示 + + + メニュー上ã§ã®é€šä¿¡ã‚¢ã‚¤ã‚³ãƒ³è¡¨ç¤º + + + EULA(利用è¦ç´„) + + + ROM登録情報(編集å¯) + + + (30文字以内) + + + ã“ã®ã‚¿ãƒ–ã®æƒ…å ±ã¯æå‡ºç¢ºèªæ›¸ã®ä½œæˆã«å¿…è¦ã§ã™ã€‚入力ã—ã¦ãã ã•ã„。 + + + (30文字以内) + + + 101, 12 + + + (複数ã‚ã‚‹å ´åˆã®ã¿) + + + 海外版 + + + æå‡ºæƒ…å ±(編集å¯) + + + ã“ã®ã‚¿ãƒ–ã®æƒ…å ±ã¯æå‡ºç¢ºèªæ›¸ã®ä½œæˆã«å¿…è¦ã§ã™ã€‚入力ã—ã¦ãã ã•ã„。 + + + 会社情報(編集å¯) + + + ã“ã®ã‚¿ãƒ–ã«ã¯èª­ã¿è¾¼ã‚“ã ROMデータã®å•é¡Œã¨æœ¬ãƒ—ログラムã§ã®å…¥åŠ›ãƒŸã‚¹ãŒåˆ—挙ã•れã¾ã™ã€‚<newline>赤文字ã®é …ç›®ã¯ã€æœ¬ãƒ—ログラムã§ä¿®æ­£ä¸å¯ã§ã™ã€‚ROMãƒ‡ãƒ¼ã‚¿ä½œæˆæ™‚ã®è¨­å®šã‚’ã”確èªãã ã•ã„。<newline>é’æ–‡å­—ã®é …ç›®ã¯ã€æœ¬ãƒ—ログラムã§ä¿®æ­£ã§ãã¾ã™ãŒã€ä¿®æ­£ãŒãƒžã‚¹ã‚¿ãƒ¼ROMã«å映ã•れã¾ã™ã€‚<newline>黒文字ã®é …ç›®ã¯ã€æå‡ºç¢ºèªæ›¸ã«ã®ã¿å映ã•れã€ãƒžã‚¹ã‚¿ãƒ¼ROMã«ã¯å映ã•れã¾ã›ã‚“。 + + + 114, 16 + + + ç¾åœ¨ã®å…¥åŠ›ã‚’åæ˜  + + + 134, 16 + + + ROMデータ読ã¿è¾¼ã¿æ™‚ + + + ã„ã¤ã®æƒ…報を表示ã™ã‚‹ã‹ + + + 339, 12 + + + 警告(修正ã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒæƒ…å ±ã«èª¤ã‚ŠãŒãªã„ã‹ã”確èªãã ã•ã„。) + + + 137, 12 + + + エラー(å¿…ãšä¿®æ­£ã—ã¦ãã ã•ã„) + + + é …ç›®å + + + é–‹å§‹ + + + 終了 + + + è¦å›  + + + é …ç›®å + + + é–‹å§‹ + + + 終了 + + + è¦å›  + + + エラー情報(確èªç”¨) + + + 92, 12 + + + ROMデータファイル + + \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.resX b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.resX new file mode 100644 index 0000000..d3020c5 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.resX @@ -0,0 +1,6159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 120, 50 + + + 607, 19 + + + + 0 + + + tboxFile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + 109, 190 + + + 42, 19 + + + 7 + + + tboxRemasterVer + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 0 + + + 109, 162 + + + 100, 19 + + + 15 + + + tboxRomSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 1 + + + 109, 106 + + + 100, 19 + + + 14 + + + tboxPlatform + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 2 + + + True + + + 22, 109 + + + 48, 12 + + + 13 + + + Platform + + + labPlatform + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 3 + + + 109, 134 + + + 100, 19 + + + 11 + + + tboxRomLatency + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 4 + + + True + + + 22, 165 + + + 55, 12 + + + 9 + + + ROM Size + + + labRomSize + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 5 + + + True + + + 22, 137 + + + 59, 12 + + + 7 + + + ROM Type + + + labRomType + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 6 + + + 109, 78 + + + 2 + + + 100, 19 + + + 2 + + + tboxMakerCode + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 7 + + + True + + + False + + + 157, 192 + + + 120, 16 + + + 8 + + + E(Preliminary Ver.) + + + cboxRemasterVerE + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 8 + + + True + + + 22, 81 + + + 66, 12 + + + 4 + + + Maker Code + + + labMakerCode + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 9 + + + True + + + 22, 53 + + + 64, 12 + + + 3 + + + Game Code + + + labGameCode + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 10 + + + 109, 50 + + + 4 + + + 100, 19 + + + 1 + + + tboxGameCode + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 11 + + + True + + + 22, 24 + + + 61, 12 + + + 1 + + + Game Title + + + labTitleName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 12 + + + True + + + 13, 193 + + + 70, 12 + + + 22 + + + Release Ver. + + + labRemasterVer + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 13 + + + + NoControl + + + 109, 21 + + + 12 + + + 100, 19 + + + 0 + + + tboxTitleName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSrl + + + 14 + + + 26, 52 + + + 285, 227 + + + 3 + + + ROM Info. + + + gboxSrl + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 2 + + + True + + + 6, 21 + + + 87, 12 + + + 12 + + + Backup Memory + + + labBackup + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxProd + + + 1 + + + 4Kbit EEPROM + + + 64Kbit EEPROM + + + 512Kbit EEPROM + + + 256Kbit FRAM + + + 2Mbit FLASH + + + 4Mbit FLASH + + + 8Mbit FLASH + + + None + + + Other + + + 105, 17 + + + 9 + + + 113, 20 + + + 5 + + + combBackup + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxProd + + + 0 + + + False + + + 224, 17 + + + 20 + + + 125, 19 + + + 6 + + + tboxBackupOther + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxProd + + + 2 + + + True + + + 146, 20 + + + 58, 12 + + + 3 + + + ROM CRC + + + labRomCRC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxCRC + + + 0 + + + True + + + 6, 20 + + + 69, 12 + + + 2 + + + Header CRC + + + labHeaderCRC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxCRC + + + 1 + + + 78, 17 + + + 55, 19 + + + 1 + + + tboxHeaderCRC + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxCRC + + + 2 + + + 215, 17 + + + 55, 19 + + + 0 + + + tboxWholeCRC + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxCRC + + + 3 + + + 26, 285 + + + 285, 49 + + + 5 + + + CRC + + + gboxCRC + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 6 + + + True + + + 379, 245 + + + 254, 12 + + + 8 + + + Remarks Item - Please write further information. + + + labCaption + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 5 + + + 378, 263 + + + 300 + + + True + + + 349, 74 + + + 8 + + + tboxCaption + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 3 + + + True + + + 101, 234 + + + 34, 12 + + + 33 + + + OFLC + + + labOFLC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 3 + + + True + + + 12, 208 + + + 134, 12 + + + 32 + + + PEGI(General) and BBFC + + + labPEGI_BBFC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 4 + + + True + + + 69, 182 + + + 76, 12 + + + 31 + + + PEGI Portugal + + + labPEGI_PRT + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 9 + + + True + + + 69, 156 + + + 77, 12 + + + 30 + + + PEGI(General) + + + labPEGI + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 13 + + + True + + + 102, 130 + + + 27, 12 + + + 29 + + + USK + + + labUSK + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 16 + + + True + + + 102, 104 + + + 35, 12 + + + 28 + + + ESRB + + + labESRB + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 12 + + + True + + + 101, 78 + + + 36, 12 + + + 27 + + + CERO + + + labCERO + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 7 + + + G + + + PG + + + M + + + MA15+ + + + Rating Pending + + + 152, 232 + + + 204, 20 + + + 18 + + + combOFLC + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 8 + + + All ages + + + aged 3 or older + + + aged 4 or older + + + aged 7 or older + + + aged 8 or older + + + aged 12 or older + + + aged 15 or older + + + aged 16 or older + + + aged 18 or older + + + Rating Pending + + + 152, 205 + + + 10 + + + 204, 20 + + + 15 + + + combPEGI_BBFC + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 5 + + + All ages + + + aged 4 or older + + + aged 6 or older + + + aged 12 or older + + + aged 16 or older + + + aged 18 or older + + + Rating Pending + + + 152, 179 + + + 204, 20 + + + 12 + + + combPEGI_PRT + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 10 + + + All ages + + + aged 3 or older + + + aged 7 or older + + + aged 12 or older + + + aged 16 or older + + + aged 18 or older + + + Rating Pending + + + 152, 153 + + + 204, 20 + + + 9 + + + combPEGI + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 14 + + + All ages + + + aged 6 or older + + + aged 12 or older + + + aged 16 or older + + + Inadequent for young + + + Rating Pending + + + 152, 127 + + + 204, 20 + + + 6 + + + combUSK + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 15 + + + All ages + + + EC (aged 3 or older) + + + E (aged 6 or older) + + + E10+ (aged 10 or older) + + + T (aged 13 or older) + + + M (aged 17 or older) + + + Rating Pending + + + 152, 101 + + + 204, 20 + + + 3 + + + combESRB + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 11 + + + A (All ages) + + + B (aged 12 or older) + + + C (aged 15 or older) + + + D (aged 17 or older) + + + Z (aged 18 or older) + + + Rating Pending + + + 152, 75 + + + 204, 20 + + + 0 + + + combCERO + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 6 + + + True + + + 201, 60 + + + 99, 12 + + + 2 + + + Rating Information + + + labParentalRating + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 2 + + + True + + + 98, 24 + + + 40, 12 + + + 37 + + + Region + + + labRegion + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 0 + + + True + + + 8, 20 + + + 155, 16 + + + 0 + + + Require EULA Agreement + + + cboxIsEULA + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxEULA + + + 0 + + + Japan Only + + + USA Only + + + Europe Only + + + Australia Only + + + Europe and Australia + + + 152, 21 + + + 204, 20 + + + 36 + + + combRegion + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxParental + + + 1 + + + True + + + 392, 66 + + + 99, 16 + + + 7 + + + Input Contact2 + + + cboxIsInputPerson2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabCompanyInfo + + + 1 + + + True + + + 230, 207 + + + 58, 12 + + + 15 + + + (Arbitrary) + + + labArbit4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 0 + + + True + + + 230, 156 + + + 58, 12 + + + 13 + + + (Arbitrary) + + + labArbit3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 1 + + + True + + + 18, 214 + + + 44, 12 + + + 12 + + + User ID + + + labNTSC2Sur + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 2 + + + 66, 200 + + + 50 + + + 158, 19 + + + 15 + + + tboxNTSC2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 3 + + + True + + + 23, 152 + + + 27, 12 + + + 4 + + + FAX + + + labFax2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 4 + + + True + + + 18, 200 + + + 35, 12 + + + 11 + + + NTSC + + + labNTSC2Pre + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 5 + + + 66, 149 + + + 20 + + + 158, 19 + + + 13 + + + tboxFax2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 6 + + + 66, 175 + + + 50 + + + 268, 19 + + + 14 + + + tboxMail2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 7 + + + 66, 125 + + + 20 + + + 158, 19 + + + 12 + + + tboxTel2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 8 + + + 66, 100 + + + 50 + + + 268, 19 + + + 11 + + + tboxFurigana2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 9 + + + 66, 75 + + + 50 + + + 268, 19 + + + 10 + + + tboxPerson2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 10 + + + 66, 50 + + + 50 + + + 268, 19 + + + 9 + + + tboxDepart2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 11 + + + True + + + 12, 53 + + + 31, 12 + + + 7 + + + Dept. + + + labDepart2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 12 + + + 66, 25 + + + 50 + + + 268, 19 + + + 8 + + + tboxCompany2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 13 + + + True + + + 18, 178 + + + 38, 12 + + + 5 + + + e-mail + + + labMail2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 14 + + + True + + + 23, 128 + + + 25, 12 + + + 3 + + + TEL + + + labTel2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 15 + + + True + + + 9, 103 + + + 57, 12 + + + 2 + + + (Furigana) + + + labFurigana2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 16 + + + True + + + 12, 78 + + + 45, 12 + + + 1 + + + Contact + + + labPerson2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 17 + + + True + + + 12, 28 + + + 52, 12 + + + 0 + + + Company + + + labCompany2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson2 + + + 18 + + + False + + + 377, 88 + + + 347, 234 + + + 14 + + + Contact2 + + + gboxPerson2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabCompanyInfo + + + 3 + + + True + + + 219, 207 + + + 58, 12 + + + 12 + + + (Arbitrary) + + + labArbit2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 0 + + + True + + + 219, 156 + + + 58, 12 + + + 11 + + + (Arbitrary) + + + labArbit1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 1 + + + True + + + 18, 214 + + + 44, 12 + + + 10 + + + User ID + + + labNTSC1Sur + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 2 + + + True + + + 23, 152 + + + 27, 12 + + + 4 + + + FAX + + + labFax1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 3 + + + True + + + 18, 200 + + + 35, 12 + + + 9 + + + NTSC + + + labNTSC1Pre + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 4 + + + 66, 200 + + + 30 + + + 147, 19 + + + 8 + + + tboxNTSC1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 5 + + + 66, 149 + + + 15 + + + 147, 19 + + + 5 + + + tboxFax1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 6 + + + 66, 175 + + + 50 + + + 261, 19 + + + 6 + + + tboxMail1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 7 + + + 66, 125 + + + 15 + + + 147, 19 + + + 4 + + + tboxTel1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 8 + + + 66, 100 + + + 15 + + + 261, 19 + + + 3 + + + tboxFurigana1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 9 + + + 66, 75 + + + 15 + + + 261, 19 + + + 2 + + + tboxPerson1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 10 + + + 66, 50 + + + 25 + + + 261, 19 + + + 1 + + + tboxDepart1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 11 + + + True + + + 12, 53 + + + 31, 12 + + + 7 + + + Dept. + + + labDepart1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 12 + + + 66, 25 + + + 25 + + + 261, 19 + + + 0 + + + tboxCompany1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 13 + + + True + + + 18, 178 + + + 38, 12 + + + 5 + + + e-mail + + + labMail1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 14 + + + True + + + 23, 128 + + + 25, 12 + + + 3 + + + TEL + + + labTel1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 15 + + + True + + + 9, 103 + + + 57, 12 + + + 2 + + + (Furigana) + + + labFurigana1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 16 + + + True + + + 12, 78 + + + 45, 12 + + + 1 + + + Contact + + + labPerson1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 17 + + + True + + + 12, 28 + + + 52, 12 + + + 0 + + + Company + + + labCompany1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxPerson1 + + + 18 + + + 17, 88 + + + 344, 234 + + + 8 + + + Contact1 + + + gboxPerson1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabCompanyInfo + + + 2 + + + 175, 81 + + + 4 + + + 45, 19 + + + 2 + + + tboxProductCode2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 6 + + + 140, 81 + + + 1 + + + 18, 19 + + + 1 + + + tboxProductCode1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 12 + + + NoControl + + + 106, 53 + + + 30 + + + 256, 19 + + + 0 + + + tboxProductName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 15 + + + True + + + 164, 84 + + + 11, 12 + + + 33 + + + - + + + labProductCode2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 18 + + + True + + + 104, 84 + + + 37, 12 + + + 32 + + + TWL - + + + labProductCode1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 21 + + + 106, 140 + + + 103, 19 + + + 4 + + + dateSubmit + + + System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 17 + + + 106, 111 + + + 103, 19 + + + 3 + + + dateRelease + + + System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 14 + + + False + + + 71, 47 + + + 25 + + + 250, 19 + + + 4 + + + tboxUsageOther + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxUsage + + + 0 + + + True + + + 6, 48 + + + 51, 16 + + + 3 + + + Other + + + rUsageOther + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxUsage + + + 1 + + + True + + + 198, 18 + + + 149, 16 + + + 2 + + + For Network Distribution + + + rUsageDst + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxUsage + + + 2 + + + True + + + 104, 18 + + + 67, 16 + + + 1 + + + For Trial + + + rUsageSample + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxUsage + + + 3 + + + True + + + 6, 18 + + + 66, 16 + + + 0 + + + For Sale + + + rUsageSale + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxUsage + + + 4 + + + 16, 258 + + + 346, 79 + + + 6 + + + Purpose + + + gboxUsage + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 8 + + + True + + + 82, 18 + + + 71, 16 + + + 1 + + + Handover + + + rSubmitHand + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSubmitWay + + + 0 + + + True + + + 6, 18 + + + 44, 16 + + + 0 + + + Mail + + + rSubmitPost + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxSubmitWay + + + 1 + + + 16, 207 + + + 155, 45 + + + 5 + + + How To Submit + + + gboxSubmitWay + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 11 + + + True + + + 14, 143 + + + 91, 12 + + + 11 + + + Submission Date + + + labSubmiteDate + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 13 + + + True + + + 15, 114 + + + 69, 12 + + + 7 + + + Launch Date + + + labReleaseDate + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 16 + + + True + + + 22, 84 + + + 74, 12 + + + 6 + + + Product Code + + + labProductCode + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 19 + + + True + + + 22, 56 + + + 77, 12 + + + 5 + + + Product Name + + + labProductName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 20 + + + True + + + 104, 194 + + + 225, 12 + + + 26 + + + * Return to 0 when release ver. is updated. + + + labCapSubmitVer + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 7 + + + 106, 172 + + + 38, 19 + + + 9 + + + numSubmitVersion + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 9 + + + True + + + 15, 174 + + + 87, 12 + + + 24 + + + Submission Ver. + + + labSubmitVer + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 4 + + + True + + + 217, 96 + + + 128, 12 + + + 44 + + + (Only release multi ver.) + + + labMultiForeign1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 3 + + + False + + + 165, 118 + + + 4 + + + 46, 19 + + + 16 + + + tboxProductCode2Foreign3 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 5 + + + False + + + 165, 93 + + + 4 + + + 46, 19 + + + 15 + + + tboxProductCode2Foreign2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 7 + + + True + + + 152, 74 + + + 11, 12 + + + 41 + + + - + + + labProductCode2Foreign + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 9 + + + True + + + 17, 18 + + + 221, 16 + + + 11 + + + Foreign ver is scheduled to go on sale + + + cboxReleaseForeign + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 2 + + + True + + + 15, 43 + + + 77, 12 + + + 37 + + + Product Name + + + labProductNameForeign + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 12 + + + False + + + 92, 40 + + + 30 + + + 257, 19 + + + 12 + + + tboxProductNameForeign + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 11 + + + True + + + 90, 74 + + + 37, 12 + + + 40 + + + TWL - + + + labProductCode1Foreign + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 10 + + + False + + + 129, 69 + + + 1 + + + 18, 19 + + + 13 + + + tboxProductCode1Foreign + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 8 + + + True + + + 15, 74 + + + 74, 12 + + + 38 + + + Product Code + + + labProductCodeForeign + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 6 + + + False + + + 165, 68 + + + 4 + + + 46, 19 + + + 14 + + + tboxProductCode2Foreign1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 4 + + + True + + + 7, 180 + + + 34, 12 + + + 20 + + + File 5 + + + labShared2Size5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 0 + + + True + + + 6, 155 + + + 34, 12 + + + 19 + + + File 4 + + + labShared2Size4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 1 + + + True + + + 7, 130 + + + 34, 12 + + + 18 + + + File 3 + + + labShared2Size3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 2 + + + True + + + 7, 105 + + + 34, 12 + + + 17 + + + File 2 + + + labShared2Size2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 3 + + + True + + + 7, 80 + + + 34, 12 + + + 16 + + + File 1 + + + labShared2Size1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 4 + + + True + + + 7, 55 + + + 34, 12 + + + 15 + + + File 0 + + + labShared2Size0 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 5 + + + 46, 177 + + + 90, 19 + + + 8 + + + Right + + + tboxShared2Size5 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 6 + + + 47, 152 + + + 89, 19 + + + 7 + + + Right + + + tboxShared2Size4 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 7 + + + 47, 127 + + + 89, 19 + + + 6 + + + Right + + + tboxShared2Size3 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 8 + + + 47, 102 + + + 89, 19 + + + 5 + + + Right + + + tboxShared2Size2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 9 + + + 47, 77 + + + 89, 19 + + + 4 + + + Right + + + tboxShared2Size1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 10 + + + 47, 52 + + + 89, 19 + + + 3 + + + Right + + + tboxShared2Size0 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 11 + + + True + + + False + + + 8, 25 + + + 118, 16 + + + 2 + + + Use Shared2 Files + + + cboxIsShared2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxShared2Size + + + 12 + + + 547, 54 + + + 164, 220 + + + 1 + + + Size of Shared2 Files + + + gboxShared2Size + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 2 + + + True + + + 335, 174 + + + 158, 12 + + + 31 + + + Libraries used by the program + + + labLib + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 3 + + + 337, 67 + + + True + + + Both + + + 186, 88 + + + 10 + + + tboxSDK + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 7 + + + True + + + 335, 52 + + + 51, 12 + + + 30 + + + SDK Ver. + + + labSDK + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 8 + + + True + + + 585, 29 + + + 29, 12 + + + 30 + + + Byte + + + labByte1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 0 + + + True + + + 261, 46 + + + 11, 12 + + + 29 + + + h + + + labHex4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 1 + + + True + + + 261, 21 + + + 11, 12 + + + 8 + + + h + + + labHex3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 2 + + + 172, 118 + + + 87, 19 + + + 28 + + + Right + + + tboxIsCodec + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 3 + + + True + + + 55, 121 + + + 75, 12 + + + 27 + + + CODEC Mode + + + labIsCodec + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 4 + + + True + + + 7, 21 + + + 160, 12 + + + 9 + + + TWL Normal Area ROM Offset + + + labNormalRomOffset + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 5 + + + 172, 18 + + + 87, 19 + + + 8 + + + Right + + + tboxNormalRomOffset + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 6 + + + True + + + 7, 46 + + + 159, 12 + + + 11 + + + TWL Secure Area ROM Offset + + + labKeyTableRomOffset + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 7 + + + 172, 93 + + + 87, 19 + + + 13 + + + Right + + + tboxPrivateSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 8 + + + True + + + 31, 96 + + + 123, 12 + + + 15 + + + Private Save Data Size + + + labPrivateSize + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 9 + + + 172, 43 + + + 87, 19 + + + 10 + + + Right + + + tboxKeyTableRomOffset + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 10 + + + True + + + 31, 71 + + + 118, 12 + + + 14 + + + Public Save Data Size + + + labPublicSize + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 11 + + + 172, 68 + + + 87, 19 + + + 12 + + + Right + + + tboxPublicSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTWLExInfo + + + 12 + + + 231, 54 + + + 300, 146 + + + 24 + + + TWL Extended Info. + + + gboxTWLExInfo + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 3 + + + True + + + False + + + 14, 62 + + + 140, 16 + + + 26 + + + Enable SubBanner File + + + cboxIsSubBanner + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxExFlags + + + 3 + + + True + + + False + + + 14, 84 + + + 188, 16 + + + 25 + + + Enable NTR WhiteList Signature + + + cboxIsWL + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxExFlags + + + 2 + + + True + + + False + + + 14, 18 + + + 154, 16 + + + 16 + + + Enable Normal App Jump + + + cboxIsNormalJump + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxExFlags + + + 0 + + + True + + + False + + + 14, 40 + + + 146, 16 + + + 17 + + + Enable Temp App Jump + + + cboxIsTmpJump + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxExFlags + + + 1 + + + True + + + 139, 20 + + + 39, 12 + + + 5 + + + Others + + + labAccessOther + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 0 + + + 141, 36 + + + True + + + 142, 85 + + + 4 + + + tboxAccessOther + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 1 + + + 8, 102 + + + 122, 19 + + + 3 + + + Right + + + tboxIsGameCardOn + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 2 + + + True + + + 7, 87 + + + 64, 12 + + + 2 + + + Card Power + + + labIsGameCardOn + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 3 + + + True + + + False + + + 9, 47 + + + 132, 16 + + + 1 + + + NAND Flash Memory + + + cboxIsNAND + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 4 + + + True + + + False + + + 9, 24 + + + 67, 16 + + + 0 + + + SD Card + + + cboxIsSD + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxAccess + + + 5 + + + 231, 211 + + + 300, 133 + + + 0 + + + Access Control + + + gboxAccess + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 4 + + + True + + + 21, 98 + + + 56, 12 + + + 11 + + + App. Type + + + labAppType + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 0 + + + True + + + 39, 73 + + + 35, 12 + + + 10 + + + Media + + + labMedia + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 1 + + + 83, 95 + + + 71, 19 + + + 9 + + + Right + + + tboxAppType + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 2 + + + 83, 70 + + + 71, 19 + + + 8 + + + Right + + + tboxMedia + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 3 + + + True + + + 157, 48 + + + 11, 12 + + + 7 + + + h + + + labHex2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 4 + + + 83, 20 + + + 71, 19 + + + 1 + + + Right + + + tboxTitleIDLo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 5 + + + True + + + 11, 23 + + + 63, 12 + + + 0 + + + TitleID Low + + + labTitleIDLo + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 6 + + + True + + + 11, 48 + + + 66, 12 + + + 2 + + + TitleID High + + + labTitleIDHi + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 7 + + + 83, 45 + + + 71, 19 + + + 3 + + + Right + + + tboxTitleIDHi + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 8 + + + 14, 134 + + + True + + + 170, 34 + + + 4 + + + tboxAppTypeOther + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 9 + + + True + + + 12, 122 + + + 58, 12 + + + 5 + + + Other Info. + + + labAppTypeOther + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxTitleID + + + 10 + + + 12, 54 + + + 198, 174 + + + 23 + + + TitleID + + + gboxTitleID + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 5 + + + True + + + 538, 52 + + + 70, 12 + + + 11 + + + Special Note + + + labCaptionEx + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 4 + + + 540, 67 + + + True + + + Both + + + 171, 88 + + + 10 + + + tboxCaptionEx + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 5 + + + 378, 36 + + + 356, 50 + + + 13 + + + ROM Production Info. + + + gboxProd + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 10 + + + 0, 0 + + + 274, 22 + + + Open a ROM data file + + + 271, 6 + + + 274, 22 + + + Save a temporary info. + + + 274, 22 + + + Load a temporary info. saved previously + + + 36, 20 + + + File + + + 288, 22 + + + Make a set of submission data + + + 285, 6 + + + 288, 22 + + + Make a master ROM data file only + + + 288, 22 + + + Make a middleware list only(XML format) + + + 288, 22 + + + Make a middleware list only(HTML format) + + + 52, 20 + + + Master + + + 119, 22 + + + English + + + 119, 22 + + + Japanese + + + 65, 20 + + + Language + + + 0, 0 + + + 777, 24 + + + 33 + + + menuStrip1 + + + menuStripAbove + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + True + + + Publisher + + + True + + + Library Name + + + 337, 189 + + + 374, 145 + + + 36 + + + gridLibrary + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 0 + + + 24, 11 + + + 687, 19 + + + 35 + + + This tab is for checking ROM data. When ROM data is illegal, please check settings of building ROM data. + + + tboxGuideRomInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomInfo + + + 1 + + + 4, 21 + + + 3, 3, 3, 3 + + + 745, 352 + + + 0 + + + ROM Info.(Read Only) + + + tabRomInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 0 + + + 24, 11 + + + 687, 19 + + + 36 + + + This tab is for checking ROM data. When ROM data is illegal, please check settings of building ROM data. + + + tboxGuideTWLInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 0 + + + 12, 236 + + + 198, 108 + + + 35 + + + TWL Extended Flags + + + gboxExFlags + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabTWLInfo + + + 1 + + + 4, 21 + + + 3, 3, 3, 3 + + + 745, 352 + + + 1 + + + TWL Info.(Read Only) + + + tabTWLInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 1 + + + True + + + 8, 18 + + + 229, 16 + + + 39 + + + UGC(User Generated Contents) Support + + + cboxIsUGC + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxOtherSpec + + + 0 + + + True + + + 8, 46 + + + 149, 16 + + + 40 + + + Photo Exchange Support + + + cboxIsPhotoEx + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxOtherSpec + + + 1 + + + 19, 225 + + + 266, 70 + + + 41 + + + Other ROM Spec. + + + gboxOtherSpec + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 0 + + + 51, 309 + + + 185, 23 + + + 38 + + + Set Back To Reading Settings + + + butSetBack + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 1 + + + 24, 11 + + + True + + + 687, 34 + + + 37 + + + These item is necessary not only to make a submission sheet but also to make a master ROM data. Please edit certainly.<newline>In making a master ROM data, these info will be registered in the ROM data(except "Other Rom Spec"). + + + tboxGuideRomEditInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 2 + + + 313, 60 + + + 398, 272 + + + 33 + + + Region and Rating Infomation + + + gboxParental + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 3 + + + True + + + 8, 25 + + + 104, 16 + + + 4 + + + Display No Icon + + + rIsNoIcon + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxIcon + + + 0 + + + True + + + 8, 77 + + + 209, 16 + + + 6 + + + Display an Icon of Wi-Fi Connection + + + rIsWiFiIcon + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxIcon + + + 1 + + + True + + + 8, 51 + + + 182, 16 + + + 5 + + + Display an Icon of DS Wireless + + + rIsWirelessIcon + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxIcon + + + 2 + + + 19, 114 + + + 266, 105 + + + 32 + + + Icons on the Menu + + + gboxIcon + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 4 + + + 19, 60 + + + 266, 48 + + + 31 + + + EULA + + + gboxEULA + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRomEditInfo + + + 5 + + + 4, 21 + + + 745, 352 + + + 2 + + + ROM Settings(Editable) + + + tabRomEditInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 2 + + + 237, 75 + + + 124, 11 + + + 39 + + + (Shorter than 30 chars) + + + TopRight + + + labProductNameLimit + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 0 + + + 24, 11 + + + 687, 19 + + + 38 + + + These items is necessary for making a submission sheet. Please input. + + + tboxGuideSubmitInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 1 + + + 225, 62 + + + 124, 11 + + + 40 + + + (Shorter than 30 chars) + + + TopRight + + + labProductNameLimitForeign + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 0 + + + True + + + 217, 121 + + + 128, 12 + + + 45 + + + (Only release multi ver.) + + + labMultiForeign2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxForeign + + + 1 + + + 378, 91 + + + 355, 144 + + + 35 + + + Foreign Ver. + + + gboxForeign + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabSubmitInfo + + + 2 + + + 4, 21 + + + 745, 352 + + + 3 + + + Submission Info.(Editable) + + + tabSubmitInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 3 + + + 24, 11 + + + 687, 19 + + + 39 + + + These items is necessary for making a submission sheet. Please input. + + + tboxGuideCompanyInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabCompanyInfo + + + 0 + + + 4, 21 + + + 745, 352 + + + 4 + + + Company Info.(Editable) + + + tabCompanyInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 4 + + + 24, 11 + + + True + + + 511, 61 + + + 40 + + + This tab discribes errors in the ROM data file and mistakes in editing.<newline>Items highlighted by Red can't be midified by this program. Please modify build settings.<newline>Items highlighted by Blue can be midified by this program and will register in a master ROM.<newline>Items highlighted by Black are discibed in a submission sheet and don't register in a master ROM. + + + tboxGuideErrorInfo + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 0 + + + True + + + 6, 45 + + + 117, 16 + + + 1 + + + In current settings + + + rErrorCurrent + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxErrorTiming + + + 0 + + + True + + + 6, 18 + + + 155, 16 + + + 0 + + + When ROM data was read + + + rErrorReading + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gboxErrorTiming + + + 1 + + + 551, 11 + + + 172, 71 + + + 41 + + + Error of Timing + + + gboxErrorTiming + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 1 + + + True + + + 22, 213 + + + 417, 12 + + + 40 + + + Warning (Midification isn't necessary. Please check validity of these infomation.) + + + labWarn + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 2 + + + True + + + 22, 84 + + + 172, 12 + + + 39 + + + Error (Midification is necessary.) + + + labError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 3 + + + True + + + Name + + + 150 + + + True + + + Begin + + + 60 + + + True + + + End + + + 60 + + + True + + + Reason + + + 24, 228 + + + 699, 106 + + + 38 + + + gridWarn + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 4 + + + True + + + Name + + + 150 + + + True + + + Begin + + + 60 + + + True + + + End + + + 60 + + + True + + + Reason + + + 24, 99 + + + 699, 103 + + + 37 + + + gridError + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabErrorInfo + + + 5 + + + 4, 21 + + + 745, 352 + + + 5 + + + Error(Read Only) + + + tabErrorInfo + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabMain + + + 5 + + + 12, 93 + + + 753, 377 + + + 34 + + + tabMain + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + 22, 53 + + + 81, 12 + + + 36 + + + ROM Data File + + + labFile + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + True + + + 696, 24 + + + 69, 12 + + + 37 + + + ver.0.0.00000 + + + labAssemblyVersion + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 6, 12 + + + 777, 482 + + + TWL MasterEditor + + + stripFile + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemOpenRom + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemSepFile1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemSaveTemp + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemLoadTemp + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripMaster + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemSheet + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemSepMaster1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemMasterRom + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemMiddlewareXml + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemMiddlewareHtml + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripLang + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemEnglish + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stripItemJapanese + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colLibPublisher + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colLibName + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colWarnName + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colWarnBegin + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colWarnEnd + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colWarnCause + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colErrorName + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colErrorBegin + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colErrorEnd + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + colErrorCause + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Form1 + + + System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.cpp new file mode 100644 index 0000000..8f167ba --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.cpp @@ -0,0 +1,3 @@ +#include "StdAfx.h" +#include "FormError.h" + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h new file mode 100644 index 0000000..53592b9 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h @@ -0,0 +1,377 @@ +#pragma once + +#include +#include "common.h" +#include "srl.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; + + +namespace MasterEditorTWL { + + /// + /// FormError ‚ÌŠT—v + /// + /// Œx: ‚±‚̃Nƒ‰ƒX‚Ì–¼‘O‚ð•ÏX‚·‚éê‡A‚±‚̃Nƒ‰ƒX‚ªˆË‘¶‚·‚é‚·‚×‚Ä‚Ì .resx ƒtƒ@ƒCƒ‹‚ÉŠÖ˜A•t‚¯‚ç‚ꂽ + /// ƒ}ƒl[ƒW ƒŠƒ\[ƒX ƒRƒ“ƒpƒCƒ‰ ƒc[ƒ‹‚ɑ΂µ‚Ä 'Resource File Name' ƒvƒƒpƒeƒB‚ð + /// •ÏX‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚Ì•ÏX‚ðs‚í‚È‚¢‚ÆA + /// ƒfƒUƒCƒi‚ÆA‚±‚̃tƒH[ƒ€‚ÉŠÖ˜A•t‚¯‚ç‚ꂽƒ[ƒJƒ‰ƒCƒYÏ‚ÝƒŠƒ\[ƒX‚Æ‚ªA + /// ³‚µ‚­‘ŠŒÝ‚É—˜—p‚Å‚«‚È‚­‚È‚è‚Ü‚·B + /// + public ref class FormError : public System::Windows::Forms::Form + { + public: + FormError(void) + { + InitializeComponent(); + // + //TODO: ‚±‚±‚ɃRƒ“ƒXƒgƒ‰ƒNƒ^ ƒR[ƒh‚ð’ljÁ‚µ‚Ü‚· + // + } + + protected: + /// + /// Žg—p’†‚ÌƒŠƒ\[ƒX‚ð‚·‚×‚ÄƒNƒŠ[ƒ“ƒAƒbƒv‚µ‚Ü‚·B + /// + ~FormError() + { + if (components) + { + delete components; + } + } + public: System::Windows::Forms::DataGridView^ gridError; + protected: + + protected: + + + + + + private: System::Windows::Forms::Label^ labError; + public: System::Windows::Forms::DataGridView^ gridWarn; + private: + + + public: + + + + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnName; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnBegin; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnEnd; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; + private: System::Windows::Forms::Label^ labWarn; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorName; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorBegin; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorEnd; + private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; + private: System::Windows::Forms::Button^ butClose; + + private: + + public: + + + + + + + + protected: + + private: + /// + /// •K—v‚ȃfƒUƒCƒi•Ï”‚Å‚·B + /// + System::ComponentModel::Container ^components; + +#pragma region Windows Form Designer generated code + /// + /// ƒfƒUƒCƒi ƒTƒ|[ƒg‚É•K—v‚ȃƒ\ƒbƒh‚Å‚·B‚±‚̃ƒ\ƒbƒh‚Ì“à—e‚ð + /// ƒR[ƒh ƒGƒfƒBƒ^‚Å•ÏX‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B + /// + void InitializeComponent(void) + { + this->gridError = (gcnew System::Windows::Forms::DataGridView()); + this->colErrorName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->labError = (gcnew System::Windows::Forms::Label()); + this->gridWarn = (gcnew System::Windows::Forms::DataGridView()); + this->colWarnName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colWarnCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->labWarn = (gcnew System::Windows::Forms::Label()); + this->butClose = (gcnew System::Windows::Forms::Button()); + (cli::safe_cast(this->gridError))->BeginInit(); + (cli::safe_cast(this->gridWarn))->BeginInit(); + this->SuspendLayout(); + // + // gridError + // + this->gridError->BackgroundColor = System::Drawing::SystemColors::Control; + this->gridError->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; + this->gridError->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(4) {this->colErrorName, + this->colErrorBegin, this->colErrorEnd, this->colErrorCause}); + this->gridError->GridColor = System::Drawing::SystemColors::Control; + this->gridError->Location = System::Drawing::Point(28, 36); + this->gridError->Name = L"gridError"; + this->gridError->ReadOnly = true; + this->gridError->RowHeadersVisible = false; + this->gridError->RowTemplate->Height = 21; + this->gridError->Size = System::Drawing::Size(661, 172); + this->gridError->TabIndex = 0; + // + // colErrorName + // + this->colErrorName->HeaderText = L"€–Ú–¼"; + this->colErrorName->Name = L"colErrorName"; + this->colErrorName->ReadOnly = true; + this->colErrorName->Width = 150; + // + // colErrorBegin + // + this->colErrorBegin->HeaderText = L"ŠJŽn"; + this->colErrorBegin->Name = L"colErrorBegin"; + this->colErrorBegin->ReadOnly = true; + this->colErrorBegin->Width = 60; + // + // colErrorEnd + // + this->colErrorEnd->HeaderText = L"I—¹"; + this->colErrorEnd->Name = L"colErrorEnd"; + this->colErrorEnd->ReadOnly = true; + this->colErrorEnd->Width = 60; + // + // colErrorCause + // + this->colErrorCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + this->colErrorCause->HeaderText = L"—vˆö"; + this->colErrorCause->Name = L"colErrorCause"; + this->colErrorCause->ReadOnly = true; + // + // labError + // + this->labError->AutoSize = true; + this->labError->ForeColor = System::Drawing::SystemColors::ActiveCaption; + this->labError->Location = System::Drawing::Point(26, 21); + this->labError->Name = L"labError"; + this->labError->Size = System::Drawing::Size(137, 12); + this->labError->TabIndex = 1; + this->labError->Text = L"ƒGƒ‰[(•K‚¸C³‚µ‚Ä‚­‚¾‚³‚¢)"; + // + // gridWarn + // + this->gridWarn->BackgroundColor = System::Drawing::SystemColors::Control; + this->gridWarn->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; + this->gridWarn->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(4) {this->colWarnName, + this->colWarnBegin, this->colWarnEnd, this->colWarnCause}); + this->gridWarn->GridColor = System::Drawing::SystemColors::Control; + this->gridWarn->Location = System::Drawing::Point(28, 245); + this->gridWarn->Name = L"gridWarn"; + this->gridWarn->ReadOnly = true; + this->gridWarn->RowHeadersVisible = false; + this->gridWarn->RowTemplate->Height = 21; + this->gridWarn->Size = System::Drawing::Size(661, 172); + this->gridWarn->TabIndex = 2; + // + // colWarnName + // + this->colWarnName->HeaderText = L"€–Ú–¼"; + this->colWarnName->Name = L"colWarnName"; + this->colWarnName->ReadOnly = true; + this->colWarnName->Width = 150; + // + // colWarnBegin + // + this->colWarnBegin->HeaderText = L"ŠJŽn"; + this->colWarnBegin->Name = L"colWarnBegin"; + this->colWarnBegin->ReadOnly = true; + this->colWarnBegin->Width = 60; + // + // colWarnEnd + // + this->colWarnEnd->HeaderText = L"I—¹"; + this->colWarnEnd->Name = L"colWarnEnd"; + this->colWarnEnd->ReadOnly = true; + this->colWarnEnd->Width = 60; + // + // colWarnCause + // + this->colWarnCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + this->colWarnCause->HeaderText = L"—vˆö"; + this->colWarnCause->Name = L"colWarnCause"; + this->colWarnCause->ReadOnly = true; + // + // labWarn + // + this->labWarn->AutoSize = true; + this->labWarn->ForeColor = System::Drawing::SystemColors::ActiveCaption; + this->labWarn->Location = System::Drawing::Point(26, 230); + this->labWarn->Name = L"labWarn"; + this->labWarn->Size = System::Drawing::Size(331, 12); + this->labWarn->TabIndex = 3; + this->labWarn->Text = L"Œx(C³‚Í•K{‚ł͂ ‚è‚Ü‚¹‚ñ‚ªî•ñ‚ÉŒë‚肪‚È‚¢‚©‚²Šm”F‚­‚¾‚³‚¢)"; + // + // butClose + // + this->butClose->Location = System::Drawing::Point(557, 429); + this->butClose->Name = L"butClose"; + this->butClose->Size = System::Drawing::Size(132, 23); + this->butClose->TabIndex = 4; + this->butClose->Text = L"•‚¶‚é"; + this->butClose->UseVisualStyleBackColor = true; + this->butClose->Click += gcnew System::EventHandler(this, &FormError::butClose_Click); + // + // FormError + // + this->AutoScaleDimensions = System::Drawing::SizeF(6, 12); + this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + this->ClientSize = System::Drawing::Size(722, 464); + this->Controls->Add(this->butClose); + this->Controls->Add(this->labWarn); + this->Controls->Add(this->gridWarn); + this->Controls->Add(this->labError); + this->Controls->Add(this->gridError); + this->Name = L"FormError"; + this->Text = L"Error Information"; + (cli::safe_cast(this->gridError))->EndInit(); + (cli::safe_cast(this->gridWarn))->EndInit(); + this->ResumeLayout(false); + this->PerformLayout(); + + } +#pragma endregion + + // -------------------------------------------------------- + // ƒGƒ‰[î•ñ‚Ì“o˜^ + // -------------------------------------------------------- + public: + void setGridError( System::Collections::Generic::List ^list, System::Boolean isJapanese ) + { + this->gridError->Rows->Clear(); + if( list != nullptr ) + { + for each( RCMrcError ^err in list ) + { + this->gridError->Rows->Add( err->getAll( isJapanese ) ); + } + } + } + + void setGridWarn( System::Collections::Generic::List ^list, System::Boolean isJapanese ) + { + this->gridWarn->Rows->Clear(); + if( list != nullptr ) + { + for each( RCMrcError ^err in list ) + { + this->gridWarn->Rows->Add( err->getAll( isJapanese ) ); + } + } + } + + // -------------------------------------------------------- + // ƒGƒ‰[î•ñ‚Ìd‚ˇ‚킹 + // -------------------------------------------------------- + public: + void overloadGridError( + System::Collections::Generic::List ^listLo, + System::Collections::Generic::List ^listHi, System::Boolean isJapanese ) + { + // listLo‚ÌC³‰Â”\‚Èî•ñ‚ðlistHi‚Åã‘‚«‚·‚é(listHi‚ÍC³‰Â”\‚Èî•ñ‚݂̂ł ‚邱‚Æ‚ª‘O’ñ) + this->gridError->Rows->Clear(); + if( listLo != nullptr ) + { + for each( RCMrcError ^err in listLo ) + { + if( !err->EnableModify ) // C³‰Â”\‚Èî•ñ‚Í•\ަ‚µ‚È‚¢ + this->gridError->Rows->Add( err->getAll( isJapanese ) ); + } + } + if( listHi != nullptr ) + { + for each( RCMrcError ^err in listHi ) + { + this->gridError->Rows->Add( err->getAll( isJapanese ) ); + } + } + } + void overloadGridWarn( + System::Collections::Generic::List ^listLo, + System::Collections::Generic::List ^listHi, System::Boolean isJapanese ) + { + // listLo‚ÌC³‰Â”\‚Èî•ñ‚ðlistHi‚Åã‘‚«‚·‚é(listHi‚ÍC³‰Â”\‚Èî•ñ‚݂̂ł ‚邱‚Æ‚ª‘O’ñ) + this->gridWarn->Rows->Clear(); + if( listLo != nullptr ) + { + for each( RCMrcError ^err in listLo ) + { + if( !err->EnableModify ) // C³‰Â”\‚Èî•ñ‚Í•\ަ‚µ‚È‚¢ + this->gridWarn->Rows->Add( err->getAll( isJapanese ) ); + } + } + if( listHi != nullptr ) + { + for each( RCMrcError ^err in listHi ) + { + this->gridWarn->Rows->Add( err->getAll( isJapanese ) ); + } + } + } + + // -------------------------------------------------------- + // Œ¾Œê‘Ήž + // -------------------------------------------------------- + public: + void changeJapanese(void) + { + this->labError->Text = gcnew System::String( "ƒGƒ‰[(•K‚¸C³‚µ‚Ä‚­‚¾‚³‚¢B)" ); + this->colErrorName->HeaderText = gcnew System::String( "€–Ú–¼" ); + this->colErrorBegin->HeaderText = gcnew System::String( "ŠJŽn" ); + this->colErrorEnd->HeaderText = gcnew System::String( "I—¹" ); + this->colErrorCause->HeaderText = gcnew System::String( "—vˆö" ); + + this->labWarn->Text = gcnew System::String( "Œx(C³‚Í•K{‚ł͂ ‚è‚Ü‚¹‚ñ‚ªî•ñ‚ÉŒë‚肪‚È‚¢‚©‚²Šm”F‚­‚¾‚³‚¢B)" ); + this->colWarnName->HeaderText = gcnew System::String( "€–Ú–¼" ); + this->colWarnBegin->HeaderText = gcnew System::String( "ŠJŽn" ); + this->colWarnEnd->HeaderText = gcnew System::String( "I—¹" ); + this->colWarnCause->HeaderText = gcnew System::String( "—vˆö" ); + + this->butClose->Text = gcnew System::String( "•‚¶‚é" ); + } + + public: + void changeEnglish(void) + { + this->labError->Text = gcnew System::String( "Error Information(Modification is necessary.)" ); + this->colErrorName->HeaderText = gcnew System::String( "Name" ); + this->colErrorBegin->HeaderText = gcnew System::String( "Begin" ); + this->colErrorEnd->HeaderText = gcnew System::String( "End" ); + this->colErrorCause->HeaderText = gcnew System::String( "Reason" ); + + this->labWarn->Text = gcnew System::String( "Warning(Modification is not necessary. Please check validity of these information.)" ); + this->colWarnName->HeaderText = gcnew System::String( "Name" ); + this->colWarnBegin->HeaderText = gcnew System::String( "Begin" ); + this->colWarnEnd->HeaderText = gcnew System::String( "End" ); + this->colWarnCause->HeaderText = gcnew System::String( "Reason" ); + + this->butClose->Text = gcnew System::String( "Close window" ); + } + + private: + System::Void butClose_Click(System::Object^ sender, System::EventArgs^ e) + { + this->Close(); + } +}; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.resx b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.resx new file mode 100644 index 0000000..6e04fc9 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp new file mode 100644 index 0000000..c8ce7dc --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp @@ -0,0 +1,366 @@ +// ---------------------------------------------- +// ƒ}ƒXƒ^‘—Þî•ñ(SRL‰e‹¿‚È‚µ)‚ðƒtƒH[ƒ€‚©‚çŽæ“¾ +// ---------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +void Form1::setDeliverableProperties(void) +{ + // ’ñoî•ñ + this->hDeliv->hProductName = this->tboxProductName->Text; + this->hDeliv->hProductCode1 = this->tboxProductCode1->Text; + this->hDeliv->hProductCode2 = this->tboxProductCode2->Text; + this->hDeliv->hReleaseForeign = gcnew System::Boolean( this->cboxReleaseForeign->Checked ); + if( this->cboxReleaseForeign->Checked == true ) + { + this->hDeliv->hProductNameForeign = this->tboxProductNameForeign->Text; + this->hDeliv->hProductCode1Foreign = this->tboxProductCode1Foreign->Text; + this->hDeliv->hProductCode2Foreign = gcnew System::String(""); + this->hDeliv->hProductCode2Foreign = this->tboxProductCode2Foreign1->Text; + if( !System::String::IsNullOrEmpty( this->tboxProductCode2Foreign2->Text ) ) + { + this->hDeliv->hProductCode2Foreign += ("/" + this->tboxProductCode2Foreign2->Text); + } + if( !System::String::IsNullOrEmpty( this->tboxProductCode2Foreign3->Text ) ) + { + this->hDeliv->hProductCode2Foreign += ("/" + this->tboxProductCode2Foreign3->Text); + } + } + else + { + this->hDeliv->hProductNameForeign = nullptr; + this->hDeliv->hProductCode1Foreign = nullptr; + this->hDeliv->hProductCode2Foreign = nullptr; + } + this->hDeliv->hReleaseYear = gcnew System::Int32( this->dateRelease->Value.Year ); + this->hDeliv->hReleaseMonth = gcnew System::Int32( this->dateRelease->Value.Month ); + this->hDeliv->hReleaseDay = gcnew System::Int32( this->dateRelease->Value.Day ); + this->hDeliv->hSubmitYear = gcnew System::Int32( this->dateSubmit->Value.Year ); + this->hDeliv->hSubmitMonth = gcnew System::Int32( this->dateSubmit->Value.Month ); + this->hDeliv->hSubmitDay = gcnew System::Int32( this->dateSubmit->Value.Day ); + this->hDeliv->hSubmitVersion = gcnew System::Int32( System::Decimal::ToInt32( this->numSubmitVersion->Value ) ); + // SDK + this->hDeliv->hSDK = nullptr; + if( this->hSrl->hSDKList ) + { + for each( RCSDKVersion ^sdk in this->hSrl->hSDKList ) // ‘—Þ‚É‚Í ARM9 static ‚̃o[ƒWƒ‡ƒ“î•ñ‚ð‹L“ü‚·‚é + { + if( sdk->IsStatic ) + this->hDeliv->hSDK = sdk->Version; + } + } + if( this->hDeliv->hSDK == nullptr ) + { + this->hDeliv->hSDK = gcnew System::String( "" ); + } + // ’ño•û–@ + if( this->rSubmitPost->Checked == true ) + { + this->hDeliv->hSubmitWay = this->rSubmitPost->Text; + } + else + { + this->hDeliv->hSubmitWay = this->rSubmitHand->Text; + } + // —p“r + if( this->rUsageSale->Checked == true ) + { + this->hDeliv->hUsage = this->rUsageSale->Text; + this->hDeliv->hUsageOther = nullptr; + } + else if( this->rUsageSample->Checked == true ) + { + this->hDeliv->hUsage = this->rUsageSample->Text; + this->hDeliv->hUsageOther = nullptr; + } + else if( this->rUsageDst->Checked == true ) + { + this->hDeliv->hUsage = this->rUsageDst->Text; + this->hDeliv->hUsageOther = nullptr; + } + else if( this->rUsageOther->Checked == true ) + { + this->hDeliv->hUsage = this->rUsageOther->Text; + this->hDeliv->hUsageOther = this->tboxUsageOther->Text; + } + + // ‰ïŽÐî•ñ + this->hDeliv->hCompany1 = this->tboxCompany1->Text + " " + this->tboxDepart1->Text; + this->hDeliv->hPerson1 = this->tboxPerson1->Text; + if( this->stripItemJapanese->Checked == true ) + { + this->hDeliv->hFurigana1 = this->tboxFurigana1->Text; + } + else + { + this->hDeliv->hFurigana1 = nullptr; + } + this->hDeliv->hTel1 = this->tboxTel1->Text; + this->hDeliv->hFax1 = this->tboxFax1->Text; + this->hDeliv->hMail1 = this->tboxMail1->Text; + if( this->stripItemJapanese->Checked == true ) + { + this->hDeliv->hNTSC1 = this->tboxNTSC1->Text; + } + else + { + this->hDeliv->hNTSC1 = nullptr; + } + if( this->cboxIsInputPerson2->Checked == true ) + { + this->hDeliv->hCompany2 = this->tboxCompany2->Text + " " + this->tboxDepart2->Text; + this->hDeliv->hPerson2 = this->tboxPerson2->Text; + if( this->stripItemJapanese->Checked == true ) + { + this->hDeliv->hFurigana2 = this->tboxFurigana2->Text; + } + else + { + this->hDeliv->hFurigana2 = nullptr; + } + this->hDeliv->hTel2 = this->tboxTel2->Text; + this->hDeliv->hFax2 = this->tboxFax2->Text; + this->hDeliv->hMail2 = this->tboxMail2->Text; + if( this->stripItemJapanese->Checked == true ) + { + this->hDeliv->hNTSC2 = this->tboxNTSC2->Text; + } + else + { + this->hDeliv->hNTSC2 = nullptr; + } + } + else + { + this->hDeliv->hCompany2 = nullptr; + this->hDeliv->hPerson2 = nullptr; + this->hDeliv->hFurigana2 = nullptr; + this->hDeliv->hTel2 = nullptr; + this->hDeliv->hFax2 = nullptr; + this->hDeliv->hMail2 = nullptr; + this->hDeliv->hNTSC2 = nullptr; + } + + // ”õl + System::String ^tmp = this->tboxCaption->Text->Replace( " ", "" ); + if( this->tboxCaption->Text->Equals("") || tmp->Equals("") ) // ƒXƒy[ƒX‚݂̂̕¶Žš—ñ‚͊܂߂Ȃ¢ + { + this->hDeliv->hCaption = nullptr; + } + else + { + this->hDeliv->hCaption = this->tboxCaption->Text; + } + // ”õl—“‚É“ÁŽê‚ÈÝ’è‚ð’Ç‹L + tmp = this->tboxCaptionEx->Text->Replace( " ", "" ); + if( !(this->tboxCaptionEx->Text->Equals("")) && !(tmp->Equals("")) ) + { + this->hDeliv->hCaption += ("(" + this->tboxCaptionEx->Text + ")"); + } + + // “ÁŽê‚ȃAƒvƒŠŽí•Ê + this->hDeliv->hAppTypeOther = this->tboxAppTypeOther->Text; + if( this->hDeliv->hAppTypeOther != nullptr ) + { + this->hDeliv->hAppTypeOther->Replace("\r\n",""); + } + + // ˆê•”‚ÌROMî•ñ‚ð“o˜^ + if( this->combBackup->SelectedIndex != (this->combBackup->Items->Count - 1) ) + { + if( this->combBackup->SelectedIndex > 0 ) + { + this->hDeliv->hBackupMemory = this->combBackup->SelectedItem->ToString(); + } + else + { + this->hDeliv->hBackupMemory = gcnew System::String(""); + } + } + else + { + this->hDeliv->hBackupMemory = this->tboxBackupOther->Text; + } + + // SRLî•ñ‚ð•¶Žš—ñ‚Å“o˜^ + if( this->combRegion->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hRegion = gcnew System::String("•s–¾"); + else + this->hDeliv->hRegion = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hRegion = dynamic_cast(this->combRegion->SelectedItem); + } + if( this->combCERO->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hCERO = gcnew System::String("•s‰Â"); + else + this->hDeliv->hCERO = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hCERO = dynamic_cast(this->combCERO->SelectedItem); + } + if( this->combESRB->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hESRB = gcnew System::String("•s‰Â"); + else + this->hDeliv->hESRB = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hESRB = dynamic_cast(this->combESRB->SelectedItem); + } + if( this->combUSK->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hUSK = gcnew System::String("•s‰Â"); + else + this->hDeliv->hUSK = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hUSK = dynamic_cast(this->combUSK->SelectedItem); + } + if( this->combPEGI->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hPEGI = gcnew System::String("•s‰Â"); + else + this->hDeliv->hPEGI = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hPEGI = dynamic_cast(this->combPEGI->SelectedItem); + } + if( this->combPEGI_PRT->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hPEGI_PRT = gcnew System::String("•s‰Â"); + else + this->hDeliv->hPEGI_PRT = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hPEGI_PRT = dynamic_cast(this->combPEGI_PRT->SelectedItem); + } + if( this->combPEGI_BBFC->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hPEGI_BBFC = gcnew System::String("•s‰Â"); + else + this->hDeliv->hPEGI_BBFC = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hPEGI_BBFC = dynamic_cast(this->combPEGI_BBFC->SelectedItem); + } + if( this->combOFLC->SelectedIndex < 0 ) + { + if( this->stripItemJapanese->Checked == true ) + this->hDeliv->hOFLC = gcnew System::String("•s‰Â"); + else + this->hDeliv->hOFLC = gcnew System::String("Undefined"); + } + else + { + this->hDeliv->hOFLC = dynamic_cast(this->combOFLC->SelectedItem); + } + + // SRL‚ɂ͓o˜^‚³‚ê‚È‚¢ROMŽd—l + this->hDeliv->hIsUGC = System::Boolean( this->cboxIsUGC->Checked ); + this->hDeliv->hIsPhotoEx = System::Boolean( this->cboxIsPhotoEx->Checked ); +} + +// ---------------------------------------------- +// ƒ}ƒXƒ^‘—Þî•ñ(SRL‰e‹¿‚È‚µ)‚̃tƒH[ƒ€ƒ`ƒFƒbƒN +// ---------------------------------------------- + +System::Boolean Form1::checkDeliverableForms(void) +{ + // •s³‚Èꇂ̓_ƒCƒAƒƒO‚Å’ˆÓ‚µ‚Äreturn + + // ’ñoî•ñ + this->checkTextForm( this->tboxProductName->Text, LANG_PRODUCT_NAME_J, LANG_PRODUCT_NAME_E, false ); // SRL쬂ɂ͖â‘è‚̂Ȃ¢ƒGƒ‰[ + this->checkTextForm( this->tboxProductCode1->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E, false ); + this->checkTextForm( this->tboxProductCode2->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E, false ); + if( this->cboxReleaseForeign->Checked == true ) + { + this->checkTextForm( this->tboxProductNameForeign->Text, LANG_PRODUCT_NAME_F_J, LANG_PRODUCT_NAME_F_E, false ); + this->checkTextForm( this->tboxProductCode1Foreign->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E, false ); + this->checkTextForm( this->tboxProductCode2Foreign1->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E, false ); + } + if( this->rUsageOther->Checked == true ) + { + this->checkTextForm( this->tboxUsageOther->Text, LANG_USAGE_J, LANG_USAGE_E, false ); + } + + // ‰ïŽÐî•ñ + this->checkTextForm( this->tboxPerson1->Text, LANG_PERSON_J, LANG_PERSON_E, false ); + this->checkTextForm( this->tboxCompany1->Text, LANG_COMPANY_J, LANG_COMPANY_E, false ); + this->checkTextForm( this->tboxDepart1->Text, LANG_DEPART_J, LANG_DEPART_E, false ); + if( this->stripItemJapanese->Checked == true ) + { + this->checkTextForm( this->tboxFurigana1->Text, LANG_FURIGANA_J, LANG_FURIGANA_J, false ); + } + this->checkTextForm( this->tboxTel1->Text, LANG_TEL_J, LANG_TEL_E, false ); + //this->checkTextForm( this->tboxFax1->Text, LANG_FAX_J, LANG_FAX_E, false ); + this->checkTextForm( this->tboxMail1->Text, LANG_MAIL_J, LANG_MAIL_E, false ); + //if( this->stripItemJapanese->Checked == true ) + //{ + // this->checkTextForm( this->tboxNTSC1->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, false ); + //} + + if( this->cboxIsInputPerson2->Checked == true ) + { + this->checkTextForm( this->tboxPerson2->Text, LANG_PERSON_J, LANG_PERSON_E, false ); + this->checkTextForm( this->tboxCompany2->Text, LANG_COMPANY_J, LANG_COMPANY_E, false ); + this->checkTextForm( this->tboxDepart2->Text, LANG_DEPART_J, LANG_DEPART_E, false ); + if( this->stripItemJapanese->Checked == true ) + { + this->checkTextForm( this->tboxFurigana2->Text, LANG_FURIGANA_J, LANG_FURIGANA_J, false ); + } + this->checkTextForm( this->tboxTel2->Text, LANG_TEL_J, LANG_TEL_E, false ); + //this->checkTextForm( this->tboxFax2->Text, LANG_FAX_J, LANG_FAX_E, false ); + this->checkTextForm( this->tboxMail2->Text, LANG_MAIL_J, LANG_MAIL_E, false ); + //if( this->stripItemJapanese->Checked == true ) + //{ + // this->checkTextForm( this->tboxNTSC2->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, false ); + //} + } + + // ˆê•”‚ÌROMî•ñ(SRLƒoƒCƒiƒŠ‚É”½‰f‚³‚ê‚È‚¢î•ñ)‚ð‚±‚±‚Ń`ƒFƒbƒN‚·‚é + this->checkBoxIndex( this->combBackup, LANG_BACKUP_J, LANG_BACKUP_E, false ); + if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) + { + this->checkTextForm( this->tboxBackupOther->Text, LANG_BACKUP_J, LANG_BACKUP_E, false ); + } + + // ‚ЂƂƂ¨‚èƒGƒ‰[“o˜^‚ð‚µ‚½Œã‚Å + // ‘—Þã‚̃Gƒ‰[(SRLƒoƒCƒiƒŠ‚ɂ͉e‹¿‚µ‚È‚¢)‚ª‘¶Ý‚·‚é‚©ƒ`ƒFƒbƒN + return this->isValidOnlyDeliverable(); +} + +// end of file \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp new file mode 100644 index 0000000..340020e --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp @@ -0,0 +1,363 @@ +// ---------------------------------------------- +// ƒtƒ@ƒCƒ‹‚ÌR/W +// ---------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// Ý’èƒtƒ@ƒCƒ‹‚̓ǂݞ‚Ý +void Form1::loadInit(void) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + + // xmlƒtƒ@ƒCƒ‹‚̓ǂݞ‚Ý + try + { + doc->Load( "../resource/ini.xml" ); + } + catch( System::IO::FileNotFoundException ^s ) + { + (void)s; + this->errMsg( "Ý’èƒtƒ@ƒCƒ‹‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB", "Setting file is not found." ); + return; + } + catch( System::Exception ^s ) + { + (void)s; + this->errMsg( "Ý’èƒtƒ@ƒCƒ‹‚ðŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B", "Setting file can't be opened." ); + return; + } + + // ƒ^ƒO : ƒ‹[ƒg + System::Xml::XmlElement ^root = doc->DocumentElement; + + // ƒ^ƒO + System::Boolean bReadOnly = MasterEditorTWL::isXmlEqual( root, "rw", "r" ); + this->hIsReadOnly = System::Boolean( bReadOnly ); + if( bReadOnly ) + { + this->readOnly(); + } + + // ƒ^ƒO + if( MasterEditorTWL::isXmlEqual( root, "lang", "E" ) ) + { + this->stripItemEnglish->Checked = true; + this->stripItemJapanese->Checked = false; + this->changeEnglish(); + } + + // ƒ^ƒO + System::Boolean bXML = MasterEditorTWL::isXmlEqual( root, "output", "XML" ); + + // ƒ^ƒO + System::Boolean bCheck = MasterEditorTWL::isXmlEqual( root, "spcheck", "ON" ); + + if( bCheck ) // ƒ`ƒFƒbƒN‚·‚邯‚«‚̂ݒljÁƒ`ƒFƒbƒN€–Ú‚ðÝ’è + { + // ƒ`ƒFƒbƒN‚·‚é‚©‚Ç‚¤‚© + this->hSrl->hMrcSpecialList->hIsCheck = gcnew System::Boolean( true ); + + // SDK + try + { + u32 major = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/major" ) ); + u32 minor = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/minor" ) ); + u32 relstep = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/relstep" ) ); + u32 sdkver = (major << 24) | (minor << 16) | (relstep & 0xFFFF); + this->hSrl->hMrcSpecialList->hSDKVer = gcnew System::UInt32( sdkver ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "Ý’èƒtƒ@ƒCƒ‹’†‚ÌSDKƒo[ƒWƒ‡ƒ“‚ª“ǂݞ‚߂܂¹‚ñ‚Å‚µ‚½Bƒo[ƒWƒ‡ƒ“‚Í0‚Ƃ݂Ȃ³‚ê‚Ü‚·B", + "SDK ver. can't be read from setting file. Therefore it is set by 0." ); + this->hSrl->hMrcSpecialList->hSDKVer = gcnew System::UInt32( 0 ); + } + + // Shared2File + try + { + System::Int32 i; + for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) + { + u32 size = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/shared2/size" + i.ToString() ) ); + this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = gcnew System::UInt32( size ); + } + } + catch ( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "Ý’èƒtƒ@ƒCƒ‹’†‚ÌShared2ƒtƒ@ƒCƒ‹ƒTƒCƒY‚ª“ǂݞ‚߂܂¹‚ñ‚Å‚µ‚½BƒTƒCƒY‚Í‚·‚ׂÄ0‚Ƃ݂Ȃ³‚ê‚Ü‚·B", + "One of shared2 file sizes can't be read from setting file. Therefore they are set by 0." ); + System::Int32 i; + for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) + { + this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + } + } + } //if( bCheck ) + + if( bReadOnly || bXML | bCheck ) + { + System::String ^msgJ = gcnew System::String("[“®ìƒ‚[ƒh]"); + System::String ^msgE = gcnew System::String("[Processing Mode]"); + if( bReadOnly ) + { + msgJ += "\nƒŠ[ƒhƒIƒ“ƒŠ[ƒ‚[ƒh"; + msgE += "\nRead Only Mode"; + } + if( bXML ) + { + msgJ += "\nXMLo—̓‚[ƒh"; + msgE += "\nXML Output Mode"; + } + if( bCheck ) + { + msgJ += "\n’ljÁƒ`ƒFƒbƒNƒ‚[ƒh"; + msgE += "\nExtra Check Mode"; + } + this->sucMsg( msgJ, msgE ); + } +} // loadInit() + +// SRL‚̃I[ƒvƒ“ +System::Void Form1::loadSrl( System::String ^filename ) +{ + ECSrlResult result = this->hSrl->readFromFile( filename ); + if( result != ECSrlResult::NOERROR ) + { + switch( result ) + { + case ECSrlResult::ERROR_PLATFORM: + this->errMsg( "–{ƒc[ƒ‹‚ÍTWL—p‚Å‚·BNTRê—pROM‚ȂǂÌTWL”ñ‘ΉžROM‚ð“ǂݞ‚Þ‚±‚Ƃ͂ł«‚Ü‚¹‚ñB", + "This tool can only read TWL ROM. This can't read an other data e.g. NTR limited ROM." ); + break; + + case ECSrlResult::ERROR_SIGN_DECRYPT: + case ECSrlResult::ERROR_SIGN_VERIFY: + this->errMsg( "•s³‚ÈROMƒf[ƒ^‚Å‚·BTWL‘Ήž/ê—pROM‚łȂ¢‚©ROMƒf[ƒ^‚ª‰ü‚´‚ñ‚³‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B", + "Illegal ROM data. It is not for TWL ROM, or is altered illegally." ); + break; + + default: + this->errMsg( "ROMƒf[ƒ^ƒtƒ@ƒCƒ‹‚̓ǂݞ‚݂Ɏ¸”s‚µ‚Ü‚µ‚½B\nÄ“xROMƒf[ƒ^‚ð“ǂݞ‚Ü‚¹‚Ä‚­‚¾‚³‚¢B", + "Reading the ROM data file failed. \nPlease read a ROM data file again, with \"Open a ROM data file\"" ); + break; + } + return; + } + this->tboxFile->Text = filename; + + // GUI‚ÉROMî•ñ‚ðŠi”[ + this->setSrlForms(); + if( *(this->hIsReadOnly) ) + { + this->readOnly(); // ƒŠ[ƒhƒIƒ“ƒŠ[ƒ‚[ƒh‚̂Ƃ«ƒtƒH[ƒ€‚ðEnable‚É‚·‚é + } + + // SRL‚É“o˜^‚³‚ê‚È‚¢ROMŽd—l‚̃tƒH[ƒ€î•ñ‚à–ß‚éƒ{ƒ^ƒ“‚œǂݞ‚ÝŽž‚Ìó‘Ô‚É–ß‚µ‚½‚¢‚ª + // “ǂݞ‚ÝŽž‚Ìó‘Ô‚ðSRL‚ɕۑ¶‚µ‚Ä‚¨‚¯‚È‚¢‚Ì‚Å‘Þ”ð‚µ‚Ä‚¨‚­ + this->saveOtherForms(); + + // ‘S‘Ì‚ÌCRC‚ðŽZo + u16 crc; + if( !getWholeCRCInFile( filename, &crc ) ) + { + this->errMsg( "ROMƒf[ƒ^‚ÌCRCŒvŽZ‚ÉŽ¸”s‚µ‚Ü‚µ‚½BROMƒf[ƒ^‚̓ǂݞ‚݂̓Lƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½B", + "Calculating CRC of the ROM data failed. Therefore reading ROM data is canceled." ); + return; + } + System::UInt16 ^hcrc = gcnew System::UInt16( crc ); + this->tboxWholeCRC->Clear(); + this->tboxWholeCRC->AppendText( "0x" ); + this->tboxWholeCRC->AppendText( hcrc->ToString("X") ); + + // “ǂݞ‚ÝŽžƒGƒ‰[‚ð“o˜^‚·‚é + this->rErrorReading->Checked = true; + this->setGridError(); + this->setGridWarn(); + //if( this->hSrl->hErrorList->Count > 0 ) + //{ + // this->errMsg( "ROMƒf[ƒ^‚ɃGƒ‰[‚ª‚ ‚è‚Ü‚·BuƒGƒ‰[î•ñvƒ^ƒu‚ð‚²Šm”F‚­‚¾‚³‚¢B", + // "ROM data include error. Please look the tab \"Setting Error\"." ); + // return; + //} + + return; +} // loadSrl() + +// SRL‚̕ۑ¶ +System::Boolean Form1::saveSrl( System::String ^filename ) +{ + // ƒRƒs[‚µ‚½ƒtƒ@ƒCƒ‹‚ÉROMƒwƒbƒ_‚ðã‘‚« + if( !this->saveSrlCore( filename ) ) + { + return false; + } + + // ăŠ[ƒh + this->loadSrl( filename ); + return true; +} // saveSrl() + +// SRL‚̕ۑ¶ +System::Boolean Form1::saveSrlCore( System::String ^filename ) +{ + // ROMî•ñ‚ðƒtƒH[ƒ€‚©‚çŽæ“¾‚µ‚ÄSRLƒoƒCƒiƒŠ‚É”½‰f‚³‚¹‚é + this->setSrlProperties(); + + // ƒtƒ@ƒCƒ‹‚ðƒRƒs[ + if( !(filename->Equals( this->tboxFile->Text )) ) + { + System::IO::File::Copy( this->tboxFile->Text, filename, true ); + } + + // ƒRƒs[‚µ‚½ƒtƒ@ƒCƒ‹‚ÉROMƒwƒbƒ_‚ðã‘‚« + if( this->hSrl->writeToFile( filename ) != ECSrlResult::NOERROR ) + { + return false; + } + return true; +} + +// ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚Ìì¬ +System::Void Form1::makeMiddlewareListXml(System::Xml::XmlDocument^ doc) +{ + System::Xml::XmlElement ^root = doc->CreateElement( "twl-master-editor" ); + System::Reflection::Assembly ^ass = System::Reflection::Assembly::GetEntryAssembly(); + root->SetAttribute( "version", this->getVersion() ); + doc->AppendChild( root ); + + // ƒQ[ƒ€î•ñ + System::Xml::XmlElement ^game = doc->CreateElement( "game" ); + root->AppendChild( game ); + if( System::String::IsNullOrEmpty( this->tboxProductName->Text ) ) + { + MasterEditorTWL::appendXmlTag( doc, game, "product-name", this->tboxTitleName->Text ); // »•i–¼‚ª–¢“ü—͂̂Ƃ«‚̓\ƒtƒgƒ^ƒCƒgƒ‹‚Å‘ã—p + } + else + { + MasterEditorTWL::appendXmlTag( doc, game, "product-name", this->tboxProductName->Text ); + } + MasterEditorTWL::appendXmlTag( doc, game, "title-name", this->tboxTitleName->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "game-code", this->tboxGameCode->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "rom-version", this->tboxRemasterVer->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "submit-version", System::Decimal::ToByte(this->numSubmitVersion->Value).ToString("X") ); + + // ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg + System::Xml::XmlElement ^midlist = doc->CreateElement( "middleware-list" ); + root->AppendChild( midlist ); + if( this->hSrl->hLicenseList != nullptr ) + { + for each( RCLicense ^lic in this->hSrl->hLicenseList ) + { + System::Xml::XmlElement ^mid = doc->CreateElement( "middleware" ); + MasterEditorTWL::appendXmlTag( doc, mid, "publisher", lic->Publisher ); + MasterEditorTWL::appendXmlTag( doc, mid, "name", lic->Name ); + midlist->AppendChild( mid ); + } + } +} + +// ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶ +System::Boolean Form1::saveMiddlewareListXml( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + + this->makeMiddlewareListXml( doc ); + + try + { + doc->Save( filename ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + return true; +} + +// ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶ +System::Boolean Form1::saveMiddlewareListXmlEmbeddedXsl( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + + // XSL‚ð–„‚ßž‚Þ‚½‚ß‚Ì錾‚½‚¿ + System::Xml::XmlProcessingInstruction ^proc = doc->CreateProcessingInstruction( "xml-stylesheet", "type='text/xml' href='#stylesheet'" ); + doc->AppendChild( proc ); + System::Xml::XmlDocumentType ^doctype = doc->CreateDocumentType( "twl-master-editor", nullptr, nullptr, "" ); + doc->AppendChild( doctype ); + + this->makeMiddlewareListXml( doc ); + + // –„‚ßž‚݃Xƒ^ƒCƒ‹ƒV[ƒg + System::Xml::XmlDocument ^xsl = gcnew System::Xml::XmlDocument(); + System::Xml::XmlElement ^root = doc->DocumentElement; + try + { + xsl->Load("../resource/middleware_e.xsl"); + root->AppendChild( doc->ImportNode(xsl->DocumentElement, true) ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + + try + { + doc->Save( filename ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + return true; +} + +// ƒ~ƒhƒ‹ƒEƒFƒAƒŠƒXƒg‚̕ۑ¶(XML->HTML•ÏŠ·) +System::Boolean Form1::saveMiddlewareListHtml( System::String ^filename ) +{ + System::Xml::Xsl::XslCompiledTransform ^xslt = gcnew System::Xml::Xsl::XslCompiledTransform; + System::String ^tmpxml = gcnew System::String( "middleware-tmp.xml" ); + + if( !saveMiddlewareListXml(tmpxml) ) + { + return false; + } + + try + { + xslt->Load("../resource/middleware.xsl"); + xslt->Transform( tmpxml, filename ); + } + catch (System::Exception ^s) + { + (void)s; + System::IO::File::Delete( tmpxml ); + return false; + } + System::IO::File::Delete( tmpxml ); + return true; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp new file mode 100644 index 0000000..687519f --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp @@ -0,0 +1,392 @@ +// ---------------------------------------------- +// “ú‰p—¼‘Ήž +// ---------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// “ú–{Œê”łƉpŒê”łŃeƒLƒXƒgƒ{ƒbƒNƒX‚Ì•¶Žš—ñ§ŒÀ‚ª•Ï‚í‚é +void Form1::changeMaxLength( System::Windows::Forms::TextBox ^tbox, System::Int32 maxlen ) +{ + if( tbox->Text->Length > maxlen ) + tbox->Text = ""; + + tbox->MaxLength = maxlen; +} + +// “ú–{Œê”Å‚Ö‚ÌØ‚è‘Ö‚¦ +void Form1::changeJapanese(void) +{ + // “ü—Í•¶Žš”§ŒÀ‚ð•ÏX‚·‚é + this->changeMaxLength( this->tboxCompany1, 25 ); + this->changeMaxLength( this->tboxDepart1, 25 ); + this->changeMaxLength( this->tboxPerson1, 15 ); + + this->changeLanguage( "ja" ); + + // “ÁŽê‚ÈÝ’è—p‚̃eƒLƒXƒgƒ{ƒbƒNƒX‚Ì•\‹L‚ð•ÏX + this->setSrlFormsCaptionEx(); + + // •¡”s•\ަ‚̉üs‚ð‘}“ü + this->tboxGuideRomEditInfo->Text = this->tboxGuideRomEditInfo->Text->Replace( "", "\r\n" ); + this->tboxGuideErrorInfo->Text = this->tboxGuideErrorInfo->Text->Replace( "", "\r\n" ); +} + +// ‰pŒê”Å‚Ö‚ÌØ‚è‘Ö‚¦ +void Form1::changeEnglish(void) +{ + this->changeMaxLength( this->tboxCompany1, 40 ); + this->changeMaxLength( this->tboxDepart1, 40 ); + this->changeMaxLength( this->tboxPerson1, 30 ); + + this->changeLanguage( "en" ); + + this->setSrlFormsCaptionEx(); + + this->tboxGuideRomEditInfo->Text = this->tboxGuideRomEditInfo->Text->Replace( "", "\r\n" ); + this->tboxGuideErrorInfo->Text = this->tboxGuideErrorInfo->Text->Replace( "", "\r\n" ); +} + +// Œ¾ŒêƒŠƒ\[ƒXØ‚è‘Ö‚¦ +void MasterEditorTWL::Form1::changeLanguage( System::String ^langname ) +{ + int index; + + System::Threading::Thread::CurrentThread->CurrentUICulture = gcnew System::Globalization::CultureInfo(langname,true); + System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid)); + + resources->ApplyResources(this->tboxFile, L"tboxFile"); + resources->ApplyResources(this->gboxSrl, L"gboxSrl"); + resources->ApplyResources(this->tboxRemasterVer, L"tboxRemasterVer"); + resources->ApplyResources(this->tboxRomSize, L"tboxRomSize"); + resources->ApplyResources(this->tboxPlatform, L"tboxPlatform"); + resources->ApplyResources(this->labPlatform, L"labPlatform"); + resources->ApplyResources(this->tboxRomLatency, L"tboxRomLatency"); + resources->ApplyResources(this->labRomSize, L"labRomSize"); + resources->ApplyResources(this->labRomType, L"labRomType"); + resources->ApplyResources(this->tboxMakerCode, L"tboxMakerCode"); + resources->ApplyResources(this->cboxRemasterVerE, L"cboxRemasterVerE"); + resources->ApplyResources(this->labMakerCode, L"labMakerCode"); + resources->ApplyResources(this->labGameCode, L"labGameCode"); + resources->ApplyResources(this->tboxGameCode, L"tboxGameCode"); + resources->ApplyResources(this->labTitleName, L"labTitleName"); + resources->ApplyResources(this->labRemasterVer, L"labRemasterVer"); + resources->ApplyResources(this->tboxTitleName, L"tboxTitleName"); + resources->ApplyResources(this->labBackup, L"labBackup"); + + index = this->combBackup->SelectedIndex; + this->combBackup->Items->Clear(); + resources->ApplyResources(this->combBackup, L"combBackup"); + this->combBackup->Items->AddRange(gcnew cli::array< System::Object^ >(9) {resources->GetString(L"combBackup.Items"), resources->GetString(L"combBackup.Items1"), + resources->GetString(L"combBackup.Items2"), resources->GetString(L"combBackup.Items3"), resources->GetString(L"combBackup.Items4"), + resources->GetString(L"combBackup.Items5"), resources->GetString(L"combBackup.Items6"), resources->GetString(L"combBackup.Items7"), + resources->GetString(L"combBackup.Items8")}); + this->combBackup->SelectedIndex = index; + + resources->ApplyResources(this->tboxBackupOther, L"tboxBackupOther"); + resources->ApplyResources(this->gboxCRC, L"gboxCRC"); + resources->ApplyResources(this->labRomCRC, L"labRomCRC"); + resources->ApplyResources(this->labHeaderCRC, L"labHeaderCRC"); + resources->ApplyResources(this->tboxHeaderCRC, L"tboxHeaderCRC"); + resources->ApplyResources(this->tboxWholeCRC, L"tboxWholeCRC"); + resources->ApplyResources(this->labCaption, L"labCaption"); + resources->ApplyResources(this->tboxCaption, L"tboxCaption"); + resources->ApplyResources(this->labOFLC, L"labOFLC"); + resources->ApplyResources(this->labPEGI_BBFC, L"labPEGI_BBFC"); + resources->ApplyResources(this->labPEGI_PRT, L"labPEGI_PRT"); + resources->ApplyResources(this->labPEGI, L"labPEGI"); + resources->ApplyResources(this->labUSK, L"labUSK"); + resources->ApplyResources(this->labESRB, L"labESRB"); + resources->ApplyResources(this->labCERO, L"labCERO"); + + resources->ApplyResources(this->combOFLC, L"combOFLC"); + index = this->combOFLC->SelectedIndex; + this->combOFLC->Items->Clear(); + this->combOFLC->Items->AddRange(gcnew cli::array< System::Object^ >(5) {resources->GetString(L"combOFLC.Items"), resources->GetString(L"combOFLC.Items1"), + resources->GetString(L"combOFLC.Items2"), resources->GetString(L"combOFLC.Items3"), resources->GetString(L"combOFLC.Items4")}); + this->combOFLC->SelectedIndex = index; + + resources->ApplyResources(this->combPEGI_BBFC, L"combPEGI_BBFC"); + index = this->combPEGI_BBFC->SelectedIndex; + this->combPEGI_BBFC->Items->Clear(); + this->combPEGI_BBFC->Items->AddRange(gcnew cli::array< System::Object^ >(10) {resources->GetString(L"combPEGI_BBFC.Items"), + resources->GetString(L"combPEGI_BBFC.Items1"), resources->GetString(L"combPEGI_BBFC.Items2"), resources->GetString(L"combPEGI_BBFC.Items3"), + resources->GetString(L"combPEGI_BBFC.Items4"), resources->GetString(L"combPEGI_BBFC.Items5"), resources->GetString(L"combPEGI_BBFC.Items6"), + resources->GetString(L"combPEGI_BBFC.Items7"), resources->GetString(L"combPEGI_BBFC.Items8"), resources->GetString(L"combPEGI_BBFC.Items9")}); + this->combPEGI_BBFC->SelectedIndex = index; + + resources->ApplyResources(this->combPEGI_PRT, L"combPEGI_PRT"); + index = this->combPEGI_PRT->SelectedIndex; + this->combPEGI_PRT->Items->Clear(); + this->combPEGI_PRT->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combPEGI_PRT.Items"), + resources->GetString(L"combPEGI_PRT.Items1"), resources->GetString(L"combPEGI_PRT.Items2"), resources->GetString(L"combPEGI_PRT.Items3"), + resources->GetString(L"combPEGI_PRT.Items4"), resources->GetString(L"combPEGI_PRT.Items5"), resources->GetString(L"combPEGI_PRT.Items6")}); + this->combPEGI_PRT->SelectedIndex = index; + + resources->ApplyResources(this->combPEGI, L"combPEGI"); + index = this->combPEGI->SelectedIndex; + this->combPEGI->Items->Clear(); + this->combPEGI->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combPEGI.Items"), resources->GetString(L"combPEGI.Items1"), + resources->GetString(L"combPEGI.Items2"), resources->GetString(L"combPEGI.Items3"), resources->GetString(L"combPEGI.Items4"), + resources->GetString(L"combPEGI.Items5"), resources->GetString(L"combPEGI.Items6")}); + this->combPEGI->SelectedIndex = index; + + resources->ApplyResources(this->combUSK, L"combUSK"); + index = this->combUSK->SelectedIndex; + this->combUSK->Items->Clear(); + this->combUSK->Items->AddRange(gcnew cli::array< System::Object^ >(6) {resources->GetString(L"combUSK.Items"), resources->GetString(L"combUSK.Items1"), + resources->GetString(L"combUSK.Items2"), resources->GetString(L"combUSK.Items3"), resources->GetString(L"combUSK.Items4"), resources->GetString(L"combUSK.Items5")}); + this->combUSK->SelectedIndex = index; + + resources->ApplyResources(this->combESRB, L"combESRB"); + index = this->combESRB->SelectedIndex; + this->combESRB->Items->Clear(); + this->combESRB->Items->AddRange(gcnew cli::array< System::Object^ >(7) {resources->GetString(L"combESRB.Items"), resources->GetString(L"combESRB.Items1"), + resources->GetString(L"combESRB.Items2"), resources->GetString(L"combESRB.Items3"), resources->GetString(L"combESRB.Items4"), + resources->GetString(L"combESRB.Items5"), resources->GetString(L"combESRB.Items6")}); + this->combESRB->SelectedIndex = index; + + resources->ApplyResources(this->combCERO, L"combCERO"); + index = this->combCERO->SelectedIndex; + this->combCERO->Items->Clear(); + this->combCERO->Items->AddRange(gcnew cli::array< System::Object^ >(6) {resources->GetString(L"combCERO.Items"), resources->GetString(L"combCERO.Items1"), + resources->GetString(L"combCERO.Items2"), resources->GetString(L"combCERO.Items3"), resources->GetString(L"combCERO.Items4"), + resources->GetString(L"combCERO.Items5")}); + this->combCERO->SelectedIndex = index; + + resources->ApplyResources(this->labParentalRating, L"labParentalRating"); + resources->ApplyResources(this->labRegion, L"labRegion"); + resources->ApplyResources(this->cboxIsEULA, L"cboxIsEULA"); + + resources->ApplyResources(this->combRegion, L"combRegion"); + index = this->combRegion->SelectedIndex; + this->combRegion->Items->Clear(); + this->combRegion->Items->AddRange(gcnew cli::array< System::Object^ >(5) {resources->GetString(L"combRegion.Items"), resources->GetString(L"combRegion.Items1"), + resources->GetString(L"combRegion.Items2"), resources->GetString(L"combRegion.Items3"), resources->GetString(L"combRegion.Items4")}); +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( langname->Equals( "ja" ) ) + { + this->combRegion->Items->Add( gcnew System::String( L"‘SƒŠ[ƒWƒ‡ƒ“" ) ); + } + else + { + this->combRegion->Items->Add( gcnew System::String( L"All Region" ) ); + } +#endif + this->combRegion->SelectedIndex = index; + + resources->ApplyResources(this->cboxIsInputPerson2, L"cboxIsInputPerson2"); + resources->ApplyResources(this->gboxPerson2, L"gboxPerson2"); + resources->ApplyResources(this->labArbit4, L"labArbit4"); + resources->ApplyResources(this->labArbit3, L"labArbit3"); + resources->ApplyResources(this->labNTSC2Sur, L"labNTSC2Sur"); + resources->ApplyResources(this->tboxNTSC2, L"tboxNTSC2"); + resources->ApplyResources(this->labFax2, L"labFax2"); + resources->ApplyResources(this->labNTSC2Pre, L"labNTSC2Pre"); + resources->ApplyResources(this->tboxFax2, L"tboxFax2"); + resources->ApplyResources(this->tboxMail2, L"tboxMail2"); + resources->ApplyResources(this->tboxTel2, L"tboxTel2"); + resources->ApplyResources(this->tboxFurigana2, L"tboxFurigana2"); + resources->ApplyResources(this->tboxPerson2, L"tboxPerson2"); + resources->ApplyResources(this->tboxDepart2, L"tboxDepart2"); + resources->ApplyResources(this->labDepart2, L"labDepart2"); + resources->ApplyResources(this->tboxCompany2, L"tboxCompany2"); + resources->ApplyResources(this->labMail2, L"labMail2"); + resources->ApplyResources(this->labTel2, L"labTel2"); + resources->ApplyResources(this->labFurigana2, L"labFurigana2"); + resources->ApplyResources(this->labPerson2, L"labPerson2"); + resources->ApplyResources(this->labCompany2, L"labCompany2"); + resources->ApplyResources(this->gboxPerson1, L"gboxPerson1"); + resources->ApplyResources(this->labArbit2, L"labArbit2"); + resources->ApplyResources(this->labArbit1, L"labArbit1"); + resources->ApplyResources(this->labNTSC1Sur, L"labNTSC1Sur"); + resources->ApplyResources(this->labFax1, L"labFax1"); + resources->ApplyResources(this->labNTSC1Pre, L"labNTSC1Pre"); + resources->ApplyResources(this->tboxNTSC1, L"tboxNTSC1"); + resources->ApplyResources(this->tboxFax1, L"tboxFax1"); + resources->ApplyResources(this->tboxMail1, L"tboxMail1"); + resources->ApplyResources(this->tboxTel1, L"tboxTel1"); + resources->ApplyResources(this->tboxFurigana1, L"tboxFurigana1"); + resources->ApplyResources(this->tboxPerson1, L"tboxPerson1"); + resources->ApplyResources(this->tboxDepart1, L"tboxDepart1"); + resources->ApplyResources(this->labDepart1, L"labDepart1"); + resources->ApplyResources(this->tboxCompany1, L"tboxCompany1"); + resources->ApplyResources(this->labMail1, L"labMail1"); + resources->ApplyResources(this->labTel1, L"labTel1"); + resources->ApplyResources(this->labFurigana1, L"labFurigana1"); + resources->ApplyResources(this->labPerson1, L"labPerson1"); + resources->ApplyResources(this->labCompany1, L"labCompany1"); + resources->ApplyResources(this->tboxProductCode2, L"tboxProductCode2"); + resources->ApplyResources(this->tboxProductCode1, L"tboxProductCode1"); + resources->ApplyResources(this->tboxProductName, L"tboxProductName"); + resources->ApplyResources(this->labProductCode2, L"labProductCode2"); + resources->ApplyResources(this->labProductCode1, L"labProductCode1"); + resources->ApplyResources(this->dateSubmit, L"dateSubmit"); + resources->ApplyResources(this->dateRelease, L"dateRelease"); + resources->ApplyResources(this->gboxUsage, L"gboxUsage"); + resources->ApplyResources(this->tboxUsageOther, L"tboxUsageOther"); + resources->ApplyResources(this->rUsageOther, L"rUsageOther"); + resources->ApplyResources(this->rUsageDst, L"rUsageDst"); + resources->ApplyResources(this->rUsageSample, L"rUsageSample"); + resources->ApplyResources(this->rUsageSale, L"rUsageSale"); + resources->ApplyResources(this->gboxSubmitWay, L"gboxSubmitWay"); + resources->ApplyResources(this->rSubmitHand, L"rSubmitHand"); + resources->ApplyResources(this->rSubmitPost, L"rSubmitPost"); + resources->ApplyResources(this->labSubmiteDate, L"labSubmiteDate"); + resources->ApplyResources(this->labReleaseDate, L"labReleaseDate"); + resources->ApplyResources(this->labProductCode, L"labProductCode"); + resources->ApplyResources(this->labProductName, L"labProductName"); + resources->ApplyResources(this->labCapSubmitVer, L"labCapSubmitVer"); + resources->ApplyResources(this->numSubmitVersion, L"numSubmitVersion"); + resources->ApplyResources(this->labSubmitVer, L"labSubmitVer"); + resources->ApplyResources(this->labMultiForeign1, L"labMultiForeign1"); + resources->ApplyResources(this->tboxProductCode2Foreign3, L"tboxProductCode2Foreign3"); + resources->ApplyResources(this->tboxProductCode2Foreign2, L"tboxProductCode2Foreign2"); + resources->ApplyResources(this->labProductCode2Foreign, L"labProductCode2Foreign"); + resources->ApplyResources(this->cboxReleaseForeign, L"cboxReleaseForeign"); + resources->ApplyResources(this->labProductNameForeign, L"labProductNameForeign"); + resources->ApplyResources(this->tboxProductNameForeign, L"tboxProductNameForeign"); + resources->ApplyResources(this->labProductCode1Foreign, L"labProductCode1Foreign"); + resources->ApplyResources(this->tboxProductCode1Foreign, L"tboxProductCode1Foreign"); + resources->ApplyResources(this->labProductCodeForeign, L"labProductCodeForeign"); + resources->ApplyResources(this->tboxProductCode2Foreign1, L"tboxProductCode2Foreign1"); + resources->ApplyResources(this->gboxShared2Size, L"gboxShared2Size"); + resources->ApplyResources(this->labShared2Size5, L"labShared2Size5"); + resources->ApplyResources(this->labShared2Size4, L"labShared2Size4"); + resources->ApplyResources(this->labShared2Size3, L"labShared2Size3"); + resources->ApplyResources(this->labShared2Size2, L"labShared2Size2"); + resources->ApplyResources(this->labShared2Size1, L"labShared2Size1"); + resources->ApplyResources(this->labShared2Size0, L"labShared2Size0"); + resources->ApplyResources(this->tboxShared2Size5, L"tboxShared2Size5"); + resources->ApplyResources(this->tboxShared2Size4, L"tboxShared2Size4"); + resources->ApplyResources(this->tboxShared2Size3, L"tboxShared2Size3"); + resources->ApplyResources(this->tboxShared2Size2, L"tboxShared2Size2"); + resources->ApplyResources(this->tboxShared2Size1, L"tboxShared2Size1"); + resources->ApplyResources(this->tboxShared2Size0, L"tboxShared2Size0"); + resources->ApplyResources(this->cboxIsShared2, L"cboxIsShared2"); + resources->ApplyResources(this->labLib, L"labLib"); + resources->ApplyResources(this->tboxSDK, L"tboxSDK"); + resources->ApplyResources(this->labSDK, L"labSDK"); + resources->ApplyResources(this->gboxTWLExInfo, L"gboxTWLExInfo"); + resources->ApplyResources(this->labByte1, L"labByte1"); + resources->ApplyResources(this->labHex4, L"labHex4"); + resources->ApplyResources(this->labHex3, L"labHex3"); + resources->ApplyResources(this->tboxIsCodec, L"tboxIsCodec"); + resources->ApplyResources(this->labIsCodec, L"labIsCodec"); + resources->ApplyResources(this->labNormalRomOffset, L"labNormalRomOffset"); + resources->ApplyResources(this->tboxNormalRomOffset, L"tboxNormalRomOffset"); + resources->ApplyResources(this->labKeyTableRomOffset, L"labKeyTableRomOffset"); + resources->ApplyResources(this->tboxPrivateSize, L"tboxPrivateSize"); + resources->ApplyResources(this->labPrivateSize, L"labPrivateSize"); + resources->ApplyResources(this->tboxKeyTableRomOffset, L"tboxKeyTableRomOffset"); + resources->ApplyResources(this->labPublicSize, L"labPublicSize"); + resources->ApplyResources(this->tboxPublicSize, L"tboxPublicSize"); + resources->ApplyResources(this->cboxIsSubBanner, L"cboxIsSubBanner"); + resources->ApplyResources(this->cboxIsWL, L"cboxIsWL"); + resources->ApplyResources(this->cboxIsNormalJump, L"cboxIsNormalJump"); + resources->ApplyResources(this->cboxIsTmpJump, L"cboxIsTmpJump"); + resources->ApplyResources(this->gboxAccess, L"gboxAccess"); + resources->ApplyResources(this->labAccessOther, L"labAccessOther"); + resources->ApplyResources(this->tboxAccessOther, L"tboxAccessOther"); + resources->ApplyResources(this->tboxIsGameCardOn, L"tboxIsGameCardOn"); + resources->ApplyResources(this->labIsGameCardOn, L"labIsGameCardOn"); + resources->ApplyResources(this->cboxIsNAND, L"cboxIsNAND"); + resources->ApplyResources(this->cboxIsSD, L"cboxIsSD"); + resources->ApplyResources(this->gboxTitleID, L"gboxTitleID"); + resources->ApplyResources(this->labAppType, L"labAppType"); + resources->ApplyResources(this->labMedia, L"labMedia"); + resources->ApplyResources(this->tboxAppType, L"tboxAppType"); + resources->ApplyResources(this->tboxMedia, L"tboxMedia"); + resources->ApplyResources(this->labHex2, L"labHex2"); + resources->ApplyResources(this->tboxTitleIDLo, L"tboxTitleIDLo"); + resources->ApplyResources(this->labTitleIDLo, L"labTitleIDLo"); + resources->ApplyResources(this->labTitleIDHi, L"labTitleIDHi"); + resources->ApplyResources(this->tboxTitleIDHi, L"tboxTitleIDHi"); + resources->ApplyResources(this->tboxAppTypeOther, L"tboxAppTypeOther"); + resources->ApplyResources(this->labAppTypeOther, L"labAppTypeOther"); + resources->ApplyResources(this->labCaptionEx, L"labCaptionEx"); + resources->ApplyResources(this->tboxCaptionEx, L"tboxCaptionEx"); + resources->ApplyResources(this->gboxProd, L"gboxProd"); + resources->ApplyResources(this->menuStripAbove, L"menuStripAbove"); + resources->ApplyResources(this->stripFile, L"stripFile"); + resources->ApplyResources(this->stripItemOpenRom, L"stripItemOpenRom"); + resources->ApplyResources(this->stripItemSepFile1, L"stripItemSepFile1"); + resources->ApplyResources(this->stripItemSaveTemp, L"stripItemSaveTemp"); + resources->ApplyResources(this->stripItemLoadTemp, L"stripItemLoadTemp"); + resources->ApplyResources(this->stripMaster, L"stripMaster"); + resources->ApplyResources(this->stripItemSheet, L"stripItemSheet"); + resources->ApplyResources(this->stripItemSepMaster1, L"stripItemSepMaster1"); + resources->ApplyResources(this->stripItemMasterRom, L"stripItemMasterRom"); + resources->ApplyResources(this->stripItemMiddlewareXml, L"stripItemMiddlewareXml"); + resources->ApplyResources(this->stripItemMiddlewareHtml, L"stripItemMiddlewareHtml"); + resources->ApplyResources(this->stripLang, L"stripLang"); + resources->ApplyResources(this->stripItemEnglish, L"stripItemEnglish"); + resources->ApplyResources(this->stripItemJapanese, L"stripItemJapanese"); + resources->ApplyResources(this->tabMain, L"tabMain"); + resources->ApplyResources(this->tabRomInfo, L"tabRomInfo"); + resources->ApplyResources(this->gridLibrary, L"gridLibrary"); + resources->ApplyResources(this->colLibPublisher, L"colLibPublisher"); + resources->ApplyResources(this->colLibName, L"colLibName"); + resources->ApplyResources(this->tboxGuideRomInfo, L"tboxGuideRomInfo"); + resources->ApplyResources(this->tabTWLInfo, L"tabTWLInfo"); + resources->ApplyResources(this->tboxGuideTWLInfo, L"tboxGuideTWLInfo"); + resources->ApplyResources(this->gboxExFlags, L"gboxExFlags"); + resources->ApplyResources(this->tabRomEditInfo, L"tabRomEditInfo"); + resources->ApplyResources(this->gboxOtherSpec, L"gboxOtherSpec"); + resources->ApplyResources(this->cboxIsUGC, L"cboxIsUGC"); + resources->ApplyResources(this->cboxIsPhotoEx, L"cboxIsPhotoEx"); + resources->ApplyResources(this->butSetBack, L"butSetBack"); + resources->ApplyResources(this->tboxGuideRomEditInfo, L"tboxGuideRomEditInfo"); + resources->ApplyResources(this->gboxParental, L"gboxParental"); + resources->ApplyResources(this->gboxIcon, L"gboxIcon"); + resources->ApplyResources(this->rIsNoIcon, L"rIsNoIcon"); + resources->ApplyResources(this->rIsWiFiIcon, L"rIsWiFiIcon"); + resources->ApplyResources(this->rIsWirelessIcon, L"rIsWirelessIcon"); + resources->ApplyResources(this->gboxEULA, L"gboxEULA"); + resources->ApplyResources(this->tabSubmitInfo, L"tabSubmitInfo"); + resources->ApplyResources(this->labProductNameLimit, L"labProductNameLimit"); + resources->ApplyResources(this->tboxGuideSubmitInfo, L"tboxGuideSubmitInfo"); + resources->ApplyResources(this->gboxForeign, L"gboxForeign"); + resources->ApplyResources(this->labProductNameLimitForeign, L"labProductNameLimitForeign"); + resources->ApplyResources(this->labMultiForeign2, L"labMultiForeign2"); + resources->ApplyResources(this->tabCompanyInfo, L"tabCompanyInfo"); + resources->ApplyResources(this->tboxGuideCompanyInfo, L"tboxGuideCompanyInfo"); + resources->ApplyResources(this->tabErrorInfo, L"tabErrorInfo"); + resources->ApplyResources(this->tboxGuideErrorInfo, L"tboxGuideErrorInfo"); + resources->ApplyResources(this->gboxErrorTiming, L"gboxErrorTiming"); + resources->ApplyResources(this->rErrorCurrent, L"rErrorCurrent"); + resources->ApplyResources(this->rErrorReading, L"rErrorReading"); + resources->ApplyResources(this->labWarn, L"labWarn"); + resources->ApplyResources(this->labError, L"labError"); + resources->ApplyResources(this->gridWarn, L"gridWarn"); + resources->ApplyResources(this->gridError, L"gridError"); + resources->ApplyResources(this->labFile, L"labFile"); + resources->ApplyResources(this->labAssemblyVersion, L"labAssemblyVersion"); + resources->ApplyResources(this->colErrorName, L"colErrorName"); + resources->ApplyResources(this->colErrorBegin, L"colErrorBegin"); + resources->ApplyResources(this->colErrorEnd, L"colErrorEnd"); + resources->ApplyResources(this->colErrorCause, L"colErrorCause"); + resources->ApplyResources(this->colWarnName, L"colWarnName"); + resources->ApplyResources(this->colWarnBegin, L"colWarnBegin"); + resources->ApplyResources(this->colWarnEnd, L"colWarnEnd"); + resources->ApplyResources(this->colWarnCause, L"colWarnCause"); + resources->ApplyResources(this, L"$this"); +} + +// end of file \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp new file mode 100644 index 0000000..bd7d810 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp @@ -0,0 +1,267 @@ +// --------------------------------------------------------------------- +// ƒŠ[ƒWƒ‡ƒ“‚ƃyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹Ý’è +// --------------------------------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// --------------------------------------------------------------------- +// ƒŠ[ƒWƒ‡ƒ“Ý’è‚Í•¡ŽG‚È‚Ì‚Å•Ê‚ÉØ‚èo‚· +// --------------------------------------------------------------------- + +// ƒtƒH[ƒ€“ü—Í‚ðSRL‚É”½‰f‚³‚¹‚é +void Form1::setRegionSrlPropaties(void) +{ + this->hSrl->hIsRegionJapan = gcnew System::Boolean(false); + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(false); + this->hSrl->hIsRegionEurope = gcnew System::Boolean(false); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(false); + switch( this->combRegion->SelectedIndex ) + { + case 0: + this->hSrl->hIsRegionJapan = gcnew System::Boolean(true); + break; + + case 1: + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(true); + break; + + case 2: + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + break; + + case 3: + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; + + case 4: + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; + +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + case 5: + this->hSrl->hIsRegionJapan = gcnew System::Boolean(true); + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(true); + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; +#endif //defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + default: + break; + } +} + +// --------------------------------------------------------------------- +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹Ý’è‚Í•¡ŽG‚È‚Ì‚Å•Ê‚ÉØ‚èo‚· +// --------------------------------------------------------------------- + +// SRLî•ñ‚ðƒtƒH[ƒ€‚É”½‰f‚³‚¹‚é +void Form1::setRegionForms(void) +{ + System::Boolean isJapan = *(this->hSrl->hIsRegionJapan); // ƒŠ[ƒWƒ‡ƒ“ + System::Boolean isAmerica = *(this->hSrl->hIsRegionAmerica); + System::Boolean isEurope = *(this->hSrl->hIsRegionEurope); + System::Boolean isAustralia = *(this->hSrl->hIsRegionAustralia); + System::Int32 index; + if( isJapan && !isAmerica && !isEurope && !isAustralia ) + index = 0; + else if( !isJapan && isAmerica && !isEurope && !isAustralia ) + index = 1; + else if( !isJapan && !isAmerica && isEurope && !isAustralia ) + index = 2; + else if( !isJapan && !isAmerica && !isEurope && isAustralia ) + index = 3; + else if( !isJapan && !isAmerica && isEurope && isAustralia ) + index = 4; + else + index = -1; // •s³ +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( isJapan && isAmerica && isEurope && isAustralia ) + index = 5; +#endif + this->combRegion->SelectedIndex = index; + this->maskParentalForms(); // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹—pƒtƒH[ƒ€‚Ì•\ަ/”ñ•\Ž¦Ø‚è‘Ö‚¦ +} + + +// ƒtƒH[ƒ€“ü—Í‚ðSRL‚É”½‰f‚³‚¹‚é +void Form1::setParentalSrlProperties(void) +{ + // Še’c‘̂̃tƒH[ƒ€“ü—͂𔽉f + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_CERO ] = this->combCERO->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_ESRB ] = this->combESRB->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_USK ] = this->combUSK->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_GEN ] = this->combPEGI->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_PRT ] = this->combPEGI_PRT->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_BBFC ] = this->combPEGI_BBFC->SelectedIndex; + this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_OFLC ] = this->combOFLC->SelectedIndex; +} //setParentalSrlProperties() + +// SRL“à‚̃yƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚𔲂«o‚µ‚ătƒH[ƒ€‚É”½‰f‚³‚¹‚é +void Form1::setParentalForms(void) +{ + // Še’c‘̂̃Rƒ“ƒ{ƒ{ƒbƒNƒX‚̃Cƒ“ƒfƒbƒNƒX‚ðÝ’è + this->combCERO->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_CERO ]; + this->combESRB->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_ESRB ]; + this->combUSK->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_USK ]; + this->combPEGI->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_GEN ]; + this->combPEGI_PRT->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_PRT ]; + this->combPEGI_BBFC->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_PEGI_BBFC ]; + this->combOFLC->SelectedIndex = this->hSrl->hArrayParentalIndex[ OS_TWL_PCTL_OGN_OFLC ]; +} //setParentalForms() + +// ƒŠ[ƒWƒ‡ƒ“î•ñ‚©‚çƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚Ì•ÒW‰Â”\’c‘Ì‚ðƒ}ƒXƒN‚·‚é +void Form1::maskParentalForms(void) +{ + this->enableParental( this->combCERO, this->labCERO, nullptr ); + this->enableParental( this->combESRB, this->labESRB, nullptr ); + this->enableParental( this->combUSK, this->labUSK, nullptr ); + this->enableParental( this->combPEGI, this->labPEGI, nullptr ); + this->enableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->enableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->enableParental( this->combOFLC, this->labOFLC, nullptr ); + switch( this->combRegion->SelectedIndex ) + { + case 0: + // “ú–{ + this->enableParental( this->combCERO, this->labCERO, nullptr ); + this->disableParental( this->combESRB, this->labESRB, nullptr ); + this->disableParental( this->combUSK, this->labUSK, nullptr ); + this->disableParental( this->combPEGI, this->labPEGI, nullptr ); + this->disableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->disableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->disableParental( this->combOFLC, this->labOFLC, nullptr ); + break; + + case 1: + // •Ä‘ + this->disableParental( this->combCERO, this->labCERO, nullptr ); + this->enableParental( this->combESRB, this->labESRB, nullptr ); + this->disableParental( this->combUSK, this->labUSK, nullptr ); + this->disableParental( this->combPEGI, this->labPEGI, nullptr ); + this->disableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->disableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->disableParental( this->combOFLC, this->labOFLC, nullptr ); + break; + + case 2: + // ‰¢B + this->disableParental( this->combCERO, this->labCERO, nullptr ); + this->disableParental( this->combESRB, this->labESRB, nullptr ); + this->enableParental( this->combUSK, this->labUSK, nullptr ); + this->enableParental( this->combPEGI, this->labPEGI, nullptr ); + this->enableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->enableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->disableParental( this->combOFLC, this->labOFLC, nullptr ); + break; + + case 3: + // ‹B + this->disableParental( this->combCERO, this->labCERO, nullptr ); + this->disableParental( this->combESRB, this->labESRB, nullptr ); + this->disableParental( this->combUSK, this->labUSK, nullptr ); + this->disableParental( this->combPEGI, this->labPEGI, nullptr ); + this->disableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->disableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->enableParental( this->combOFLC, this->labOFLC, nullptr ); + break; + + case 4: + // ‰¢B‚Æ‹B + this->disableParental( this->combCERO, this->labCERO, nullptr ); + this->disableParental( this->combESRB, this->labESRB, nullptr ); + this->enableParental( this->combUSK, this->labUSK, nullptr ); + this->enableParental( this->combPEGI, this->labPEGI, nullptr ); + this->enableParental( this->combPEGI_PRT, this->labPEGI_PRT, nullptr ); + this->enableParental( this->combPEGI_BBFC, this->labPEGI_BBFC, nullptr ); + this->enableParental( this->combOFLC, this->labOFLC, nullptr ); + break; + + // ‘SƒŠ[ƒWƒ‡ƒ“‚̂Ƃ«‚͉½‚àdisable‚É‚µ‚È‚¢ + default: + break; + } +} //maskParentalForms() + +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ŠÖ˜A‚̃tƒH[ƒ€“ü—Í‚ª³‚µ‚¢‚©‘‚«ž‚Ý‘Oƒ`ƒFƒbƒN +void Form1::checkParentalForms( System::Boolean inRegion, System::Windows::Forms::ComboBox ^comb, System::String ^msg ) +{ + // ƒŠ[ƒWƒ‡ƒ“‚Ɋ܂܂ê‚Ä‚¢‚È‚¢‚Æ‚«: 0ƒNƒŠƒA‚ª•ÛØ‚³‚ê‚é‚̂Ń`ƒFƒbƒN•K—v‚È‚µ + if( !inRegion ) + return; + + // ݒ肳‚ê‚Ä‚¢‚È‚¢‚Æ‚«ƒGƒ‰[ + if( (comb->SelectedIndex < 0) || (comb->SelectedIndex >= comb->Items->Count) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + msg + ": ƒŒ[ƒeƒBƒ“ƒO‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B", + "Parental Control", + msg + ": Rating Pending is setting. When rating age is examined, Please submit again.", true, true ) ); + } + + // R¸’†‚̂Ƃ«Œx + if( comb->SelectedIndex == (comb->Items->Count - 1) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + msg + ": R¸’†Žw’肪‚³‚ê‚Ä‚¢‚Ü‚·BR¸‚ªŒˆ‚܂肵‚¾‚¢AÄ’ño‚µ‚Ä‚­‚¾‚³‚¢B", + "Parental Control", msg + ": Save ROM data as Game soft which needs rating examinination.", true, true ) ); + } +} //checkParentalForms() + + +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ðƒNƒŠƒA‚·‚é +void Form1::clearParental( System::Windows::Forms::ComboBox ^comb ) +{ + comb->SelectedIndex = -1; // ‹ó”’‚É‚·‚é +} + + +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ð•ÒW‚Å‚«‚邿‚¤‚É‚·‚é +void Form1::enableParental( System::Windows::Forms::ComboBox ^comb, + System::Windows::Forms::Label ^lab1, + System::Windows::Forms::Label ^lab2 ) +{ + comb->Enabled = true; + comb->Visible = true; + lab1->Visible = true; + if( lab2 != nullptr ) + { + lab2->Visible = true; + } +} + +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ð•ÒW‚Å‚«‚È‚­‚·‚é +void Form1::disableParental( System::Windows::Forms::ComboBox ^comb, + System::Windows::Forms::Label ^lab1, + System::Windows::Forms::Label ^lab2 ) +{ + this->clearParental( comb ); + comb->Enabled = false; + comb->Visible = false; + lab1->Visible = false; + if( lab2 != nullptr ) + { + lab2->Visible = false; + } +} + +// end of file \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp new file mode 100644 index 0000000..44f12e0 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp @@ -0,0 +1,327 @@ +// ---------------------------------------------- +// ƒtƒH[ƒ€‚ÆSRL“àî•ñ‚Ƃ̃f[ƒ^‚Ì‚â‚è‚Æ‚è +// ---------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// ROMî•ñ‚ðƒtƒH[ƒ€‚©‚çŽæ“¾‚µ‚ÄSRLƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚É”½‰f‚³‚¹‚é +// (ROMƒwƒbƒ_‚Ö‚Ì”½‰f‚âCRC‚Æ–¼‚ÌÄŒvŽZ‚ð‚µ‚È‚¢) +void Form1::setSrlProperties(void) +{ + // ROMƒwƒbƒ_‚Ì[0,0x160)‚̗̈æ‚ÍRead Only‚Å•ÏX‚µ‚È‚¢ + + // TWLŠg’£—̈æ‚Ì‚¢‚­‚‚©‚Ìî•ñ‚ðROMƒwƒbƒ_‚É”½‰f‚³‚¹‚é + this->hSrl->hIsEULA = this->cboxIsEULA->Checked; + this->hSrl->hIsWiFiIcon = this->rIsWiFiIcon->Checked; + this->hSrl->hIsWirelessIcon = this->rIsWirelessIcon->Checked; + + // ƒŠ[ƒWƒ‡ƒ“ + this->setRegionSrlPropaties(); + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + this->setParentalSrlProperties(); +} //setSrlProperties() + +// SRL‚ÌROMî•ñ‚ðƒtƒH[ƒ€‚É”½‰f‚³‚¹‚é(ƒtƒ@ƒCƒ‹‚ª“ǂݞ‚Ü‚ê‚Ä‚¢‚邱‚Æ‚ª‘O’ñ) +void Form1::setSrlForms(void) +{ + // NTRŒÝŠ·î•ñ + this->tboxTitleName->Text = this->hSrl->hTitleName; + this->tboxGameCode->Text = this->hSrl->hGameCode; + this->tboxMakerCode->Text = this->hSrl->hMakerCode; + this->tboxPlatform->Text = this->hSrl->hPlatform; + this->tboxRomSize->Text = this->hSrl->hRomSize; + this->tboxRomLatency->Text = this->hSrl->hLatency; + this->tboxRemasterVer->Text = this->hSrl->hRomVersion->ToString("X2"); + if( *(this->hSrl->hRomVersion) == 0xE0 ) + { + this->cboxRemasterVerE->Checked = true; + } + else + { + this->cboxRemasterVerE->Checked = false; + } + + this->tboxHeaderCRC->Clear(); + this->tboxHeaderCRC->AppendText( "0x" ); + this->tboxHeaderCRC->AppendText( this->hSrl->hHeaderCRC->ToString("X") ); + + if( this->hSrl->hPlatform == nullptr ) + { + this->errMsg( "ƒvƒ‰ƒbƒgƒz[ƒ€Žw’肪•s³‚Å‚·BROMƒf[ƒ^‚̃rƒ‹ƒhÝ’è‚ðŒ©’¼‚µ‚Ä‚­‚¾‚³‚¢B", + "Illegal Platform: Please check build settings of the ROM data."); + } + + // TWLŠg’£î•ñ + this->tboxTitleIDLo->Text = this->hSrl->hTitleIDLo; + this->tboxTitleIDHi->Text = this->hSrl->hTitleIDHi->ToString("X8"); + this->tboxNormalRomOffset->Text = this->hSrl->hNormalRomOffset->ToString("X8"); + this->tboxKeyTableRomOffset->Text = this->hSrl->hKeyTableRomOffset->ToString("X8"); + this->tboxPublicSize->Text = MasterEditorTWL::transSizeToString( this->hSrl->hPublicSize ); + this->tboxPrivateSize->Text = MasterEditorTWL::transSizeToString( this->hSrl->hPrivateSize ); + this->cboxIsNormalJump->Checked = *(this->hSrl->hIsNormalJump); + this->cboxIsTmpJump->Checked = *(this->hSrl->hIsTmpJump); + this->cboxIsSubBanner->Checked = *(this->hSrl->hIsSubBanner); + this->cboxIsWL->Checked = *(this->hSrl->hIsWL); + if( *(this->hSrl->hIsCodecTWL) == true ) + { + this->tboxIsCodec->Text = gcnew System::String( "TWL" ); + } + else + { + this->tboxIsCodec->Text = gcnew System::String( "NTR" ); + } + this->cboxIsSD->Checked = *(this->hSrl->hIsSD); + this->cboxIsNAND->Checked = *(this->hSrl->hIsNAND); + if( *(this->hSrl->hIsGameCardNitro) == true ) + { + this->tboxIsGameCardOn->Text = gcnew System::String( "ON(NTR)" ); + } + else if( *(this->hSrl->hIsGameCardOn) == true ) + { + this->tboxIsGameCardOn->Text = gcnew System::String( "ON(normal)" ); + } + else + { + this->tboxIsGameCardOn->Text = gcnew System::String( "OFF" ); + } + this->cboxIsShared2->Checked = *(this->hSrl->hIsShared2); + this->tboxShared2Size0->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[0] ); + this->tboxShared2Size1->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[1] ); + this->tboxShared2Size2->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[2] ); + this->tboxShared2Size3->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[3] ); + this->tboxShared2Size4->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[4] ); + this->tboxShared2Size5->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[5] ); + + // ƒAƒvƒŠŽí•Ê + if( *this->hSrl->hIsMediaNand ) + { + this->tboxMedia->Text = gcnew System::String( "NAND" ); + } + else + { + this->tboxMedia->Text = gcnew System::String( "Game Card" ); + } + + + if( *(this->hSrl->hIsAppLauncher) == true ) + { + this->tboxAppType->Text = gcnew System::String( "Launcher" ); + } + else if( *(this->hSrl->hIsAppSecure) == true ) + { + this->tboxAppType->Text = gcnew System::String( "Secure" ); + } + else if( *(this->hSrl->hIsAppSystem) == true ) + { + this->tboxAppType->Text = gcnew System::String( "System" ); + } + else if( *(this->hSrl->hIsAppUser) == true ) + { + this->tboxAppType->Text = gcnew System::String( "User" ); + } + else + { + this->tboxAppType->Text = gcnew System::String( "UNKNOWN" ); + } + + // ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹ ‚»‚Ì‘¼ + System::String ^acc = gcnew System::String(""); + if( *(this->hSrl->hIsCommonClientKey) == true ) + { + acc += "commonClientKey.\r\n"; + } + if( *(this->hSrl->hIsAesSlotBForES) == true ) + { + acc += "AES-SlotB(ES).\r\n"; + } + if( *(this->hSrl->hIsAesSlotCForNAM) == true ) + { + acc += "AES-SlotC(NAM).\r\n"; + } + if( *(this->hSrl->hIsAesSlotBForJpegEnc) == true ) + { + acc += "AES-SlotB(Jpeg Launcher).\r\n"; + } + if( *(this->hSrl->hIsAesSlotBForJpegEncUser) == true ) + { + acc += "AES-SlotB(Jpeg User).\r\n"; + } + if( *(this->hSrl->hIsAesSlotAForSSL) == true ) + { + acc += "AES-SlotA(SSL).\r\n"; + } + if( *(this->hSrl->hIsCommonClientKeyForDebugger) == true ) + { + acc += "commonClientKey(Debug).\r\n"; + } + this->tboxAccessOther->Text = acc; + + // “ÁŽê‚ÈÝ’è‚ðƒeƒLƒXƒgƒ{ƒbƒNƒX‚É”½‰f + this->setSrlFormsCaptionEx(); + + // SDKƒo[ƒWƒ‡ƒ“‚ƃ‰ƒCƒuƒ‰ƒŠ + this->tboxSDK->Clear(); + if( this->hSrl->hSDKList != nullptr ) + { + for each( RCSDKVersion ^ver in this->hSrl->hSDKList ) + { + if( ver->IsStatic ) + this->tboxSDK->Text += ver->Version + " (main static)\r\n"; + else + this->tboxSDK->Text += ver->Version + "\r\n"; + } + } + this->gridLibrary->Rows->Clear(); + if( this->hSrl->hLicenseList != nullptr ) + { + for each( RCLicense ^lic in this->hSrl->hLicenseList ) + { + this->gridLibrary->Rows->Add( gcnew cli::array{lic->Publisher, lic->Name} ); + if( lic->Publisher->Equals( "NINTENDO" ) && lic->Name->Equals( "DEBUG" ) ) + { + System::Int32 last = this->gridLibrary->Rows->Count - 2; // ’ljÁ’¼Œã‚Ìs + this->gridLibrary->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Red; + } + } + } + + // •ÒW‰Â”\î•ñ + this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); + if( ( *this->hSrl->hIsWiFiIcon && *this->hSrl->hIsWirelessIcon) || + (!(*this->hSrl->hIsWiFiIcon) && !(*this->hSrl->hIsWirelessIcon)) ) + { + this->rIsNoIcon->Checked = true; + } + else if( *(this->hSrl->hIsWiFiIcon) && !*(this->hSrl->hIsWirelessIcon) ) + { + this->rIsWiFiIcon->Checked = true; + } + else + { + this->rIsWirelessIcon->Checked = true; + } + this->setRegionForms(); + this->setParentalForms(); // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ŠÖ˜A +} // setSrlForms() + +// SRL‚Ì“ÁŽê‚ÈÝ’è‚ðƒtƒH[ƒ€‚ɃZƒbƒg‚·‚é(Œ¾ŒêØ‚è‘Ö‚¦‚Å•\ަ‚ð•Ï‚¦‚½‚¢‚̂œƗ§‚³‚¹‚é) +void Form1::setSrlFormsCaptionEx() +{ + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + { + return; + } + System::String ^appother = gcnew System::String(""); + if( *(this->hSrl->hIsLaunch) == false ) + { + if( this->stripItemJapanese->Checked == true ) + appother += "ƒ‰ƒ“ƒ`ƒƒ[”ñ•\ަ.\r\n"; + else + appother += "Not Display On the Launcher.\r\n"; + } + if( *(this->hSrl->hIsDataOnly) == true ) + { + if( this->stripItemJapanese->Checked == true ) + appother += "ƒf[ƒ^ê—p.\r\n"; + else + appother += "Data Only.\r\n"; + } + this->tboxAppTypeOther->Text = appother; + + this->tboxCaptionEx->Clear(); + if( (this->hSrl->hHasDSDLPlaySign != nullptr) && (*(this->hSrl->hHasDSDLPlaySign) == true) ) + { + if( this->stripItemJapanese->Checked == true ) + this->tboxCaptionEx->Text += gcnew System::String( "DSƒNƒ[ƒ“ƒu[ƒg‘Ήž.\r\n" ); + else + this->tboxCaptionEx->Text += gcnew System::String( "DS Clone Boot.\r\n" ); + } + if( (this->hSrl->hIsSCFGAccess != nullptr) && (*(this->hSrl->hIsSCFGAccess) == true) ) + { + if( this->stripItemJapanese->Checked == true ) + this->tboxCaptionEx->Text += gcnew System::String( "SCFGƒŒƒWƒXƒ^ƒAƒNƒZƒX‰Â”\.\r\n" ); + else + this->tboxCaptionEx->Text += gcnew System::String( "SDFC Register Accessible.\r\n" ); + } +} // setSrlFormsCaptionEx() + +// ƒtƒH[ƒ€‚Ì“ü—Í‚ðƒ`ƒFƒbƒN‚·‚é +System::Boolean Form1::checkSrlForms(void) +{ + // ƒŠ[ƒWƒ‡ƒ“ + if( this->checkBoxIndex( this->combRegion, LANG_REGION_J, LANG_REGION_E, true ) == false ) + return false; + + // ƒŠ[ƒWƒ‡ƒ“‚ðŒˆ‚ß‚é + System::Boolean bJapan = false; + System::Boolean bAmerica = false; + System::Boolean bEurope = false; + System::Boolean bAustralia = false; + switch( this->combRegion->SelectedIndex ) + { + case 0: + bJapan = true; + break; + case 1: + bAmerica = true; + break; + case 2: + bEurope = true; + break; + case 3: + bAustralia = true; + break; + case 4: + bEurope = true; + bAustralia = true; + break; + +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + case 5: + bJapan = true; + bAmerica = true; + bEurope = true; + bAustralia = true; + break; +#endif + default: + break; + } + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + this->checkParentalForms( bJapan, this->combCERO, this->labCERO->Text ); + this->checkParentalForms( bAmerica, this->combESRB, this->labESRB->Text ); + this->checkParentalForms( bEurope, this->combUSK, this->labUSK->Text ); + this->checkParentalForms( bEurope, this->combPEGI, this->labPEGI->Text ); + this->checkParentalForms( bEurope, this->combPEGI_PRT, this->labPEGI_PRT->Text ); + this->checkParentalForms( bEurope, this->combPEGI_BBFC, this->labPEGI_BBFC->Text ); + this->checkParentalForms( bAustralia, this->combOFLC, this->labOFLC->Text ); + + // ‚ЂƂƂ¨‚èƒGƒ‰[“o˜^‚ð‚µ‚½Œã‚Å + // SRLƒoƒCƒiƒŠ‚ɉe‹¿‚ð—^‚¦‚éƒGƒ‰[‚ª‘¶Ý‚·‚é‚©ƒ`ƒFƒbƒN +#ifdef METWL_LIGHT_CHECK + return this->isValidAffectRomModified(); +#else + return this->isValidAffectRom(); +#endif +} // checkSrlForms() + +// end of file \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_tmp.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_tmp.cpp new file mode 100644 index 0000000..0d3261f --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_tmp.cpp @@ -0,0 +1,388 @@ +// ---------------------------------------------- +// ˆêŽžƒtƒ@ƒCƒ‹‚ÌŽæ‚舵‚¢ +// ---------------------------------------------- + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// ˆêŽž•Û‘¶ +System::Void Form1::saveTmp( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + System::Xml::XmlElement ^root = doc->CreateElement( "MasterEditorTWL" ); + doc->AppendChild( root ); + + // SRL‚̃pƒX + MasterEditorTWL::appendXmlTag( doc, root, "Srl", this->tboxFile->Text ); + + // Œ¾Œê + MasterEditorTWL::appendXmlTag( doc, root, "Lang", (this->stripItemJapanese->Checked)?"J":"E" ); + + // ƒtƒH[ƒ€ + System::Xml::XmlElement ^form = doc->CreateElement( "Form" ); + root->AppendChild( form ); + + MasterEditorTWL::appendXmlTag( doc, form, "ProductName", this->tboxProductName->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode1", this->tboxProductCode1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2", this->tboxProductCode2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductNameForeign", this->tboxProductNameForeign->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode1Foreign", this->tboxProductCode1Foreign->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign1", this->tboxProductCode2Foreign1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign2", this->tboxProductCode2Foreign2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign3", this->tboxProductCode2Foreign3->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "SubmitVersion", this->numSubmitVersion->Value.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "Backup", this->combBackup->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "BackupOther", this->tboxBackupOther->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ReleaseForeign", (this->cboxReleaseForeign->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Remarks", this->tboxCaption->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "SubmitWay", (this->rSubmitHand->Checked)?"Hand":"Mail" ); + if( this->rUsageSale->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Sale" ); + else if( this->rUsageSample->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Sample" ); + else if( this->rUsageDst->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Dst" ); + else if( this->rUsageOther->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Other" ); + MasterEditorTWL::appendXmlTag( doc, form, "PurposeOther", this->tboxUsageOther->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ReleaseDate", this->dateRelease->Value.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "SubmitDate", this->dateSubmit->Value.ToString() ); + + MasterEditorTWL::appendXmlTag( doc, form, "Company1", this->tboxCompany1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Depart1", this->tboxDepart1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Name1", this->tboxPerson1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Furigana1", this->tboxFurigana1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Tel1", this->tboxTel1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Fax1", this->tboxFax1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Mail1", this->tboxMail1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "NTSC1", this->tboxNTSC1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "InputPerson2", (this->cboxIsInputPerson2->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Company2", this->tboxCompany2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Depart2", this->tboxDepart2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Name2", this->tboxPerson2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Furigana2", this->tboxFurigana2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Tel2", this->tboxTel2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Fax2", this->tboxFax2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Mail2", this->tboxMail2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "NTSC2", this->tboxNTSC2->Text ); + + if( this->rIsWirelessIcon->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "DisplayIcon", "Wireless" ); + else if( this->rIsWiFiIcon->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "DisplayIcon", "WiFi" ); + else + MasterEditorTWL::appendXmlTag( doc, form, "DisplayIcon", "None" ); + + MasterEditorTWL::appendXmlTag( doc, form, "IsEULA", (this->cboxIsEULA->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Region", this->combRegion->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingCERO", this->combCERO->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingESRB", this->combESRB->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingUSK", this->combUSK->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGI", this->combPEGI->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGI_PRT", this->combPEGI_PRT->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGI_BBFC", this->combPEGI_BBFC->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingOFLC", this->combOFLC->SelectedIndex.ToString() ); + + MasterEditorTWL::appendXmlTag( doc, form, "IsUGC", (this->cboxIsUGC->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "IsPhotoEx", (this->cboxIsPhotoEx->Checked)?"Y":"N" ); + + try + { + doc->Save( filename ); + } + catch( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "ˆêŽžî•ñ‚̕ۑ¶‚ÉŽ¸”s‚µ‚Ü‚µ‚½B", "Saving a temporary file failed." ); + } +} //saveTmp() + +// ˆêŽžƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +void Form1::loadTmp( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument; + try + { + doc->Load( filename ); + } + catch( System::Exception ^ex ) + { + (void)ex; + this->errMsg( "ˆêŽžî•ñ‚̓ǂݞ‚݂Ɏ¸”s‚µ‚Ü‚µ‚½B", "Loading a temporary file failed." ); + } + System::Xml::XmlElement ^root = doc->DocumentElement; + System::String ^text; + + // SRL + text = MasterEditorTWL::getXPathText( root, "/MasterEditorTWL/Srl" ); + if( !System::String::IsNullOrEmpty(text) ) // SRLƒtƒ@ƒCƒ‹–¼‚ª‚È‚¢‚Æ‚«‚̓Xƒ‹[ + { + this->loadSrl(text); + } + + // Œ¾Œê + text = MasterEditorTWL::getXPathText( root, "/MasterEditorTWL/Lang" ); + if( !System::String::IsNullOrEmpty(text) && text->Equals("E") ) + { + this->stripItemEnglish->Checked = true; + this->stripItemJapanese->Checked = false; + this->changeEnglish(); + } + else + { + this->stripItemEnglish->Checked = false; + this->stripItemJapanese->Checked = true; + this->changeJapanese(); + } + + // ƒtƒH[ƒ€ + this->parseTmp( root, "/MasterEditorTWL/Form/ProductName", this->tboxProductName ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode1", this->tboxProductCode1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2", this->tboxProductCode2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/SubmitVersion", this->numSubmitVersion ); + this->parseTmp( root, "/MasterEditorTWL/Form/Backup", this->combBackup ); + this->parseTmp( root, "/MasterEditorTWL/Form/ReleaseDate", this->dateRelease ); + this->parseTmp( root, "/MasterEditorTWL/Form/SubmitDate", this->dateSubmit ); + + this->tboxBackupOther->Enabled = false; + this->tboxBackupOther->Clear(); + if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) + { + this->parseTmp( root, "/MasterEditorTWL/Form/BackupOther", this->tboxBackupOther ); + this->tboxBackupOther->Enabled = true; + } + + cli::array ^rbuts; + cli::array ^strs; + + rbuts = gcnew cli::array{this->rSubmitHand, this->rSubmitPost}; + strs = gcnew cli::array{"Hand","Mail"}; + this->parseTmp( root, "/MasterEditorTWL/Form/SubmitWay", rbuts, strs ); + + rbuts = gcnew cli::array{this->rUsageSale, this->rUsageSample, this->rUsageDst, this->rUsageOther}; + strs = gcnew cli::array{"Sale","Sample","Dst","Other"}; + this->parseTmp( root, "/MasterEditorTWL/Form/Purpose", rbuts, strs ); + this->tboxUsageOther->Enabled = false; + this->tboxUsageOther->Clear(); + if( this->rUsageOther->Checked ) + { + this->tboxUsageOther->Enabled = true; + this->parseTmp( root, "/MasterEditorTWL/Form/PurposeOther", this->tboxUsageOther ); + } + + this->parseTmp( root, "/MasterEditorTWL/Form/ReleaseForeign", this->cboxReleaseForeign ); + this->tboxProductNameForeign->Enabled = false; + this->tboxProductCode1Foreign->Enabled = false; + this->tboxProductCode2Foreign1->Enabled = false; + this->tboxProductCode2Foreign2->Enabled = false; + this->tboxProductCode2Foreign3->Enabled = false; + this->tboxProductNameForeign->Clear(); + this->tboxProductCode1Foreign->Clear(); + this->tboxProductCode2Foreign1->Clear(); + this->tboxProductCode2Foreign2->Clear(); + this->tboxProductCode2Foreign3->Clear(); + if( this->cboxReleaseForeign->Checked ) + { + this->tboxProductNameForeign->Enabled = true; + this->tboxProductCode1Foreign->Enabled = true; + this->tboxProductCode2Foreign1->Enabled = true; + this->tboxProductCode2Foreign2->Enabled = true; + this->tboxProductCode2Foreign3->Enabled = true; + this->parseTmp( root, "/MasterEditorTWL/Form/ProductNameForeign", this->tboxProductNameForeign ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode1Foreign", this->tboxProductCode1Foreign ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign1", this->tboxProductCode2Foreign1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign2", this->tboxProductCode2Foreign2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign3", this->tboxProductCode2Foreign3 ); + } + this->parseTmp( root, "/MasterEditorTWL/Form/Remarks", this->tboxCaption ); + + this->parseTmp( root, "/MasterEditorTWL/Form/Company1", this->tboxCompany1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Depart1", this->tboxDepart1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Name1", this->tboxPerson1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Furigana1", this->tboxFurigana1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Tel1", this->tboxTel1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Fax1", this->tboxFax1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Mail1", this->tboxMail1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/NTSC1", this->tboxNTSC1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/InputPerson2", this->cboxIsInputPerson2 ); + + this->parseTmp( root, "/MasterEditorTWL/Form/Company2", this->tboxCompany2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Depart2", this->tboxDepart2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Name2", this->tboxPerson2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Furigana2", this->tboxFurigana2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Tel2", this->tboxTel2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Fax2", this->tboxFax2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Mail2", this->tboxMail2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/NTSC2", this->tboxNTSC2 ); + + rbuts = gcnew cli::array{this->rIsWirelessIcon, this->rIsWiFiIcon, this->rIsNoIcon}; + strs = gcnew cli::array{"Wireless","WiFi","None"}; + this->parseTmp( root, "/MasterEditorTWL/Form/DisplayIcon", rbuts, strs ); + + this->parseTmp( root, "/MasterEditorTWL/Form/IsEULA", this->cboxIsEULA ); + this->parseTmp( root, "/MasterEditorTWL/Form/Region", this->combRegion ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingCERO", this->combCERO ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingESRB", this->combESRB ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingUSK", this->combUSK ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGI", this->combPEGI ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGI_PRT", this->combPEGI_PRT ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGI_BBFC", this->combPEGI_BBFC ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingOFLC", this->combOFLC ); + + this->parseTmp( root, "/MasterEditorTWL/Form/IsUGC", this->cboxIsUGC ); + this->parseTmp( root, "/MasterEditorTWL/Form/IsPhotoEx", this->cboxIsPhotoEx ); + + this->maskParentalForms(); // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ðƒŠ[ƒWƒ‡ƒ“‚ɇ‚킹‚é + +} //loadTmp() + +// ˆêŽž•Û‘¶î•ñ‚ðƒtƒH[ƒ€î•ñ‚ɕϊ· +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::ComboBox ^comb ) +{ + // ƒRƒ“ƒ{ƒ{ƒbƒNƒX‚̕ۑ¶î•ñ - ƒCƒ“ƒfƒbƒNƒX‚͈̔͂Ɋ܂܂ê‚é‚©’²‚ׂé(ŠÜ‚Ü‚ê‚È‚¢ê‡‚Í-1) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + try + { + System::Int32 index = System::Int32::Parse( text ); // ƒeƒLƒXƒg‚ɂ̓Cƒ“ƒfƒbƒNƒX‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é + if( (0 <= index) && (index < comb->Items->Count) ) + { + comb->SelectedIndex = index; + return true; + } + else + { + comb->SelectedIndex = -1; + return false; + } + } + catch ( System::Exception ^ex ) // ‰ü‚´‚ñ‚³‚ê‚Ä‚¢‚½‚Æ‚« + { + (void)ex; + comb->SelectedIndex = -1; + return false; + } + return false; +} +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::NumericUpDown ^num ) +{ + // ƒeƒLƒXƒgƒ{ƒbƒNƒX‚̕ۑ¶î•ñ - ‚»‚̂܂ܑã“ü(‚½‚¾‚µÅ‘å‚ð’´‚¦‚éꇂÍ0‚É‚·‚é) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + try + { + System::Int32 val = System::Int32::Parse( text ); // ƒeƒLƒXƒg‚ɂ͒l‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é + if( (0 <= val) && (val <= num->Maximum) ) + { + num->Value = val; + return true; + } + else + { + num->Value = 0; + return false; + } + } + catch ( System::Exception ^ex ) // ‰ü‚´‚ñ‚³‚ê‚Ä‚¢‚½‚Æ‚« + { + (void)ex; + num->Value = 0; + return false; + } + return false; +} +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, + cli::array^rbuts, cli::array^textCands ) +{ + // ƒ‰ƒWƒIƒ{ƒ^ƒ“‚̕ۑ¶î•ñ - ƒeƒLƒXƒgŒó•â‚ɇ’v‚·‚é‚©’²‚ׂé(‡’v‚µ‚È‚¢ê‡‚Íæ“ª‚̃‰ƒWƒIƒ{ƒ^ƒ“‚ðƒ`ƒFƒbƒN) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + System::Int32 i; + System::Boolean bSearch = false; + for( i=0; i < rbuts->Length; i++ ) // XML’†‚̃eƒLƒXƒg‚ª‚ǂ̃‰ƒWƒIƒ{ƒ^ƒ“‚̃eƒLƒXƒg‚ɇ’v‚·‚é‚©ƒ`ƒFƒbƒN + { + rbuts[i]->Checked = false; + if( textCands[i]->Equals( text ) ) + { + rbuts[i]->Checked = true; + bSearch = true; + } + } + if( !bSearch ) // ‡’v‚µ‚È‚¢ê‡‚Íʼn‚̃‰ƒWƒIƒ{ƒ^ƒ“‚ðƒ`ƒFƒbƒN + { + rbuts[0]->Checked = true; + } + return bSearch; +} +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::CheckBox ^cbox ) +{ + // ƒ`ƒFƒbƒNƒ{ƒ^ƒ“‚̕ۑ¶î•ñ - Y/N‚𒲂ׂé(‚»‚êˆÈŠO‚Ìꇂɂ̓`ƒFƒbƒN‚µ‚È‚¢) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + if( text->Equals("Y") ) + cbox->Checked = true; + else + cbox->Checked = false; // •s³‚È’l‚àŠÜ‚Þ + return cbox->Checked; +} +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::TextBox ^tbox ) +{ + // ƒeƒLƒXƒgƒ{ƒbƒNƒX‚̕ۑ¶î•ñ - ‚»‚̂܂ܑã“ü(‚½‚¾‚µ’·‚³‚ª‡‚í‚È‚¢ê‡‚͋󔒂ɂ·‚é) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + if( text->Length > tbox->MaxLength ) + { + tbox->Text = gcnew System::String(""); + return false; + } + tbox->Text = text; + return true; +} +System::Boolean Form1::parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::DateTimePicker ^date ) +{ + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + System::Diagnostics::Debug::WriteLine( text ); + + try + { + date->Value = System::DateTime::Parse( text ); + } + catch( System::Exception ^ex ) + { + (void)ex; + date->Value = System::DateTime::Now; + return false; + } + return true; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp new file mode 100644 index 0000000..6c67019 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp @@ -0,0 +1,265 @@ +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "crc_whole.h" +#include "utility.h" +#include "lang.h" +#include "FormError.h" +#include "Form1.h" + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +using namespace MasterEditorTWL; + +// ---------------------------------------------- +// ƒtƒH[ƒ€‚̃`ƒFƒbƒN +// ---------------------------------------------- + +// ƒeƒLƒXƒg“ü—Í‚ª‚³‚ê‚Ä‚¢‚é‚©ƒ`ƒFƒbƒN +System::Boolean Form1::checkTextForm( System::String ^formtext, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) +{ + System::String ^msgJ = gcnew System::String( "“ü—Í‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB" ); + System::String ^msgE = gcnew System::String( "No item is set. Please retry to input." ); + + System::String ^tmp = formtext->Replace( " ", "" ); // ƒXƒy[ƒX‚݂̂̕¶Žš—ñ‚àƒGƒ‰[ + if( (formtext == nullptr) || formtext->Equals("") || tmp->Equals("") ) + { + this->hErrorList->Add( gcnew RCMrcError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); + return false; + } + return true; +} +// ”’l“ü—Í‚ª³í‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN +System::Boolean Form1::checkNumRange( + System::Int32 val, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) +{ + System::String ^msgJ = gcnew System::String( "’l‚͈̔͂ª•s³‚Å‚·B‚â‚è’¼‚µ‚Ä‚­‚¾‚³‚¢B" ); + System::String ^msgE = gcnew System::String( "Invalidate range of value. Please retry." ); + + if( (val < min) || (max < val) ) + { + this->hErrorList->Add( gcnew RCMrcError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); + return false; + } + return true; +} +System::Boolean Form1::checkNumRange( System::String ^strval, System::Int32 min, System::Int32 max, + System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) +{ + try + { + System::Int32 i = System::Int32::Parse(strval); + return (this->checkNumRange( i, min, max, labelJ, labelE, affectRom )); + } + catch ( System::FormatException ^ex ) + { + (void)ex; + return (this->checkNumRange( max+1, min, max, labelJ, labelE, affectRom )); // •K‚¸Ž¸”s‚·‚邿‚¤‚É max+1 ‚ðŒŸ¸ + } +} +// ƒRƒ“ƒ{ƒ{ƒbƒNƒX‚ðƒ`ƒFƒbƒN +System::Boolean Form1::checkBoxIndex( System::Windows::Forms::ComboBox ^box, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) +{ + System::String ^msgJ = gcnew System::String( "‘I‘ð‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB" ); + System::String ^msgE = gcnew System::String( "One item is not selected." ); + + if( box->SelectedIndex < 0 ) + { + this->hErrorList->Add( gcnew RCMrcError( + labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); + } + return true; +} + + +// -------------------------------------------------------- +// ƒGƒ‰[î•ñ‚Ì“o˜^ +// -------------------------------------------------------- + +// “ǂݞ‚ÝŽžƒGƒ‰[‚Ì“o˜^ +void Form1::setGridError( void ) +{ + this->gridError->Rows->Clear(); + if( this->hSrl->hErrorList != nullptr ) + { + for each( RCMrcError ^err in this->hSrl->hErrorList ) + { + this->gridError->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridError( err ); + } + } +} + +void Form1::setGridWarn( void ) +{ + this->gridWarn->Rows->Clear(); + if( this->hSrl->hWarnList != nullptr ) + { + for each( RCMrcError ^err in this->hSrl->hWarnList ) + { + this->gridWarn->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridWarn( err ); + } + } +} + +// “ǂݞ‚ÝŽž‚ÉŒŸo‚µ‚½C³‰Â”\ƒGƒ‰[‚ÉŒ»Ý‚Ì“ü—͂𔽉f +void Form1::overloadGridError( void ) +{ + this->gridError->Rows->Clear(); + if( this->hSrl->hErrorList != nullptr ) + { + for each( RCMrcError ^err in this->hSrl->hErrorList ) + { + if( !err->EnableModify ) // C³‰Â”\‚Èî•ñ‚Í•\ަ‚µ‚È‚¢ + { + this->gridError->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridError( err ); + } + } + } + if( this->hErrorList != nullptr ) + { + for each( RCMrcError ^err in this->hErrorList ) + { + this->gridError->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridError( err ); + } + } +} +void Form1::overloadGridWarn( void ) +{ + this->gridWarn->Rows->Clear(); + if( this->hSrl->hWarnList != nullptr ) + { + for each( RCMrcError ^err in this->hSrl->hWarnList ) + { + if( !err->EnableModify ) + { + this->gridWarn->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridWarn( err ); + } + } + } + if( this->hWarnList != nullptr ) + { + for each( RCMrcError ^err in this->hWarnList ) + { + this->gridWarn->Rows->Add( err->getAll( this->stripItemJapanese->Checked ) ); + this->colorGridWarn( err ); + } + } +} + +// ƒZƒ‹‚ÌF‚ð•Ï‚¦‚é +void Form1::colorGridError( RCMrcError ^err ) +{ + if( err->AffectRom && !err->EnableModify ) // SRL‚ÉŠÖŒW‚ ‚è‚ÅC³•s‰Â + { + System::Int32 last = this->gridError->Rows->Count - 2; // ’ljÁ’¼Œã‚Ìs + this->gridError->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Red; + } + else if( err->AffectRom && err->EnableModify ) // SRL‚ÉŠÖŒW‚ ‚è‚ÅC³‰Â + { + System::Int32 last = this->gridError->Rows->Count - 2; + this->gridError->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Blue; + } +} +void Form1::colorGridWarn( RCMrcError ^err ) +{ + if( err->AffectRom && !err->EnableModify ) + { + System::Int32 last = this->gridWarn->Rows->Count - 2; + this->gridWarn->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Red; + } + else if( err->AffectRom && err->EnableModify ) + { + System::Int32 last = this->gridWarn->Rows->Count - 2; + this->gridWarn->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Blue; + } +} + +// ‚܂Ƃ߂ÄXV +void Form1::updateGrid(void) +{ + if( this->rErrorReading->Checked == true ) + { + this->setGridError(); + this->setGridWarn(); + } + else + { + if( !System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + this->hErrorList->Clear(); + this->hWarnList->Clear(); + this->checkSrlForms(); + this->checkDeliverableForms(); + this->overloadGridError(); + this->overloadGridWarn(); + } + } +} + +// ---------------------------------------------- +// ƒGƒ‰[ƒJƒEƒ“ƒg +// ---------------------------------------------- + +// SRL‚ɂ͊֌W‚µ‚È‚¢‘—Þã‚̃Gƒ‰[‚ðƒ`ƒFƒbƒN +System::Boolean Form1::isValidOnlyDeliverable(void) +{ + System::Int32 count = 0; + + // SRLƒNƒ‰ƒX‚̃Gƒ‰[ƒŠƒXƒg‚Í‚·‚ׂÄSRL‚ÉŠÖŒW‚·‚é‚̂Ń`ƒFƒbƒN‚µ‚È‚¢ + // -> “ü—̓Gƒ‰[‚݂̂̃`ƒFƒbƒN‚ł悢 + for each( RCMrcError ^err in this->hErrorList ) + { + if( !err->AffectRom ) + count++; + } + return (count == 0); +} + +// SRL‚̃oƒCƒiƒŠ‚ɉe‹¿‚·‚逖ڂɃGƒ‰[‚ª‚ ‚é‚©ƒ`ƒFƒbƒN +System::Boolean Form1::isValidAffectRom(void) +{ + System::Int32 count = 0; + + // SRLƒNƒ‰ƒX‚ÌC³•s‰ÂƒGƒ‰[‚ðƒJƒEƒ“ƒg + // (C³‰ÂƒGƒ‰[‚Í“ü—͂ɂæ‚Á‚ÄC³‚³‚ê‚Ă邩‚à‚µ‚ê‚È‚¢‚̂Ń`ƒFƒbƒN‚µ‚È‚¢) + for each( RCMrcError ^err in this->hSrl->hErrorList ) + { + if( !err->EnableModify ) // ‚·‚ׂÄSRLƒoƒCƒiƒŠ‚ɉe‹¿‚·‚é + count++; + } + + // SRLƒoƒCƒiƒŠ‚ɉe‹¿‚·‚éƒGƒ‰[‚Ì’†‚Å + // C³‰ÂƒGƒ‰[‚ªƒtƒH[ƒ€“ü—͂ɂæ‚Á‚ÄC³‚³‚ê‚Ä‚¢‚é‚©ƒJƒEƒ“ƒg + // (ƒGƒ‰[ƒŠƒXƒg‚ªXV‚³‚ê‚Ä‚¢‚邱‚Æ‚ª‘O’ñ) + for each( RCMrcError ^err in this->hErrorList ) + { + if( err->AffectRom ) // C³•s‰ÂƒGƒ‰[‚Í‘¶Ý‚µ‚È‚¢ + count++; + } + return (count == 0); +} + +// SRL‚̃oƒCƒiƒŠ‚ɉe‹¿‚·‚逖ڂ̒†‚ÅC³‰Â”\‚ȃGƒ‰[‚¾‚¯‚ðƒ`ƒFƒbƒN +System::Boolean Form1::isValidAffectRomModified(void) +{ + System::Int32 count = 0; + for each( RCMrcError ^err in this->hErrorList ) + { + if( err->AffectRom ) // C³•s‰ÂƒGƒ‰[‚Í‘¶Ý‚µ‚È‚¢ + count++; + } + return (count == 0); +} + +// end of file \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.cpp new file mode 100644 index 0000000..dac10af --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.cpp @@ -0,0 +1,18 @@ +// MasterEditorTWL.cpp : ƒƒCƒ“ ƒvƒƒWƒFƒNƒg ƒtƒ@ƒCƒ‹‚Å‚·B + +#include "stdafx.h" +#include "Form1.h" + +using namespace MasterEditorTWL; + +[STAThreadAttribute] +int main(array ^args) +{ + // ƒRƒ“ƒgƒ[ƒ‹‚ªì¬‚³‚ê‚é‘O‚ÉAWindows XP ƒrƒWƒ…ƒAƒ‹Œø‰Ê‚ð—LŒø‚É‚µ‚Ü‚· + Application::EnableVisualStyles(); + Application::SetCompatibleTextRenderingDefault(false); + + // ƒƒCƒ“ ƒEƒBƒ“ƒhƒE‚ð쬂µ‚ÄAŽÀs‚µ‚Ü‚· + Application::Run(gcnew Form1()); + return 0; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj new file mode 100644 index 0000000..948c5d4 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj @@ -0,0 +1,371 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj.RED.nishikawa_takeshi.user b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj.RED.nishikawa_takeshi.user new file mode 100644 index 0000000..7963a7f --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/MasterEditorTWL.vcproj.RED.nishikawa_takeshi.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/ReadMe.txt b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/ReadMe.txt new file mode 100644 index 0000000..a21e212 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/ReadMe.txt @@ -0,0 +1,34 @@ +=============================================================================== + ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ : MasterEditorTWL ƒvƒƒWƒFƒNƒg‚ÌŠT—v +=============================================================================== + +‚±‚Ì MasterEditorTWL ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAAppWizard ‚É‚æ‚Á‚Ä쬂³‚ê‚Ü‚µ‚½B + +‚±‚̃tƒ@ƒCƒ‹‚É‚ÍAMasterEditorTWL ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\¬‚·‚éŠeƒtƒ@ƒCƒ‹‚Ì +“à—e‚ÌŠT—ª‚ª‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B + +MasterEditorTWL.vcproj + ‚±‚ê‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒEƒBƒU[ƒh‚Ŷ¬‚³‚ê‚é VC++ ƒvƒƒWƒFƒNƒg‚̃ƒCƒ“‚Ì + ƒvƒƒWƒFƒNƒg ƒtƒ@ƒCƒ‹‚Å‚·B + ƒtƒ@ƒCƒ‹‚𶬂µ‚½ Visual C++ ‚̃o[ƒWƒ‡ƒ“î•ñ‚ÆAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒEƒBƒU[ + ƒh‚Å‘I‘ð‚µ‚½ƒvƒ‰ƒbƒgƒtƒH[ƒ€A\¬A‚¨‚æ‚уvƒƒWƒFƒNƒg‚Ì‹@”\‚ÉŠÖ‚·‚éî•ñ‚ª + ‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B + +MasterEditorTWL.cpp + ‚±‚ê‚ÍAƒƒCƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ ƒ\[ƒX ƒtƒ@ƒCƒ‹‚Å‚·B + ƒtƒH[ƒ€‚ð•\ަ‚·‚éƒR[ƒh‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + +Form1.h + ƒ†[ƒU[‚̃tƒH[ƒ€ ƒNƒ‰ƒX‚ÌŽÀ‘•‚ÆAInitializeComponent() ŠÖ”‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + +AssemblyInfo.cpp + ƒAƒZƒ“ƒuƒŠ ƒƒ^ƒf[ƒ^‚ð•ÏX‚·‚邽‚߂̃JƒXƒ^ƒ€‘®«‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + +/////////////////////////////////////////////////////////////////////////////// +‚»‚Ì‘¼‚Ì•W€ƒtƒ@ƒCƒ‹ : + +StdAfx.h, StdAfx.cpp + ‚±‚ê‚ç‚̃tƒ@ƒCƒ‹‚ÍAƒRƒ“ƒpƒCƒ‹Ï‚݃wƒbƒ_[ (PCH) ƒtƒ@ƒCƒ‹ MasterEditorTWL.pch + ‚ƃvƒŠƒRƒ“ƒpƒCƒ‹Ï‚ÝŒ^ƒtƒ@ƒCƒ‹ StdAfx.obj ‚ðƒrƒ‹ƒh‚·‚邽‚߂Ɏg—p‚µ‚Ü‚·B + +/////////////////////////////////////////////////////////////////////////////// diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm new file mode 100644 index 0000000..280c2d9 Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.ico b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.ico new file mode 100644 index 0000000..3a5525f Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.ico differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.rc b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.rc new file mode 100644 index 0000000..2ad8e34 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/app.rc @@ -0,0 +1,63 @@ +// Microsoft Visual C++ ‚Ŷ¬‚³‚ꂽƒŠƒ\[ƒX ƒXƒNƒŠƒvƒg‚Å‚·B +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// ‰pŒê (•Ä‘) ƒŠƒ\[ƒX + + +///////////////////////////////////////////////////////////////////////////// +// +// ƒAƒCƒRƒ“ +// + +// ʼn‚É”z’u‚³‚ꂽƒAƒCƒRƒ“A‚Ü‚½‚Í ID ’l‚ªÅ‚à’á‚¢ƒAƒCƒRƒ“‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒAƒCƒRƒ“‚ɂȂè‚Ü‚·B + +LANGUAGE 17, 1 +#pragma code_page(932) +1 ICON "app.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE 3 ƒŠƒ\[ƒX‚©‚綬‚³‚ê‚Ü‚µ‚½B +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // APSTUDIO_INVOKED ‚łȂ¢ê‡ + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/common.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/common.h new file mode 100644 index 0000000..11755e6 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/common.h @@ -0,0 +1,23 @@ +#pragma once + +#define METWL_WHETHER_PLATFORM_CHECK // ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ªTWL‘ΉžˆÈŠO‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN‚·‚é +#define METWL_WHETHER_SIGN_DECRYPT // –¼‚ðŠO‚µ‚ă_ƒCƒWƒFƒXƒg‚ðƒxƒŠƒtƒ@ƒC‚·‚é +#define METWL_WHETHER_MRC // MRC‹@”\‚ðŠÜ‚߂邩 +#define METWL_LIGHT_CHECK // ’ñoðŒ‚ðŠÉ‚­‚·‚é‚© + +// ’è” +#define METWL_ERRLIST_NORANGE 0 // ƒGƒ‰[‚̃AƒhƒŒƒX”͈͂ðŽw’肵‚È‚¢‚±‚Æ‚ð•\‚·“Á•ʂȒl +#define METWL_ROMSIZE_MIN 256 // Ŭ‚̃fƒoƒCƒX—e—Ê 256Mbit +#define METWL_ROMSIZE_MAX 4096 // Å‘å‚Ì.. 4Gbit +#define METWL_ROMSIZE_MIN_NAND 1 +#define METWL_ROMSIZE_MAX_NAND 256 +#define METWL_ALLSIZE_MAX_NAND (32*1024*1024) // Public/PrivateƒZ[ƒuƒf[ƒ^‚̃TƒCƒY‚ðŠÜ‚ß‚½NANDƒAƒvƒŠ‚Ì—e—ʧŒÀ(’PˆÊByte) +#define METWL_MASK_REGION_JAPAN 0x00000001 +#define METWL_MASK_REGION_AMERICA 0x00000002 +#define METWL_MASK_REGION_EUROPE 0x00000004 +#define METWL_MASK_REGION_AUSTRALIA 0x00000008 +#define METWL_MASK_REGION_CHINA 0x00000010 +#define METWL_MASK_REGION_KOREA 0x00000020 +#define METWL_MASK_REGION_ALL 0xffffffff +#define METWL_NUMOF_SHARED2FILES 6 +#define METWL_SEG3_CRC 0x0254 diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/crc_whole.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/crc_whole.cpp new file mode 100644 index 0000000..a984cf5 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/crc_whole.cpp @@ -0,0 +1,185 @@ +// crc_whole.h ‚ÌŽÀ‘• + +#include "stdafx.h" +#include +#include "common.h" +#include "crc_whole.h" +#include +#include + +#define CRCPOLY 0x1021 +#define BUFLEN 0x1000 + +namespace MasterEditorTWL +{ + u16 crc_table[0x100]; + + /*---------------------------------------------------------------------------- + ŠÖ”–¼ + inittable - initialize table + + Œ`Ž® + static void inittable(unsigned short *table); + + ‰ðà + CRCŽZo‚ð‚‘¬‰»‚·‚邽‚߂̎Qƃe[ƒuƒ‹‚ð쬂·‚éB + ----------------------------------------------------------------------------*/ + static void inittable(unsigned short *table) + { + unsigned short i, j, r; + + for(i = 0; i < 0x100; i++) { + r = i << 8; + for(j = 0; j < 8; j++) { + if(r & 0x8000U) + r = (r << 1) ^ CRCPOLY; + else + r <<= 1; + } + *table++ = r; + } + } + + /*============================================================================* + CRCŒvŽZ + »•i‹Zp•”‚ÌCRCƒe[ƒuƒ‹‚ðŽg‚Á‚½CRCŒvŽZŠÖ” + + ‹ô”ƒoƒCƒg‚ƊoƒCƒg‚ð“ü‚ê‘Ö‚¦‚Ä‚©‚çŒvŽZ‚·‚éB + *============================================================================*/ + static u16 newGetCRC + ( + u16 start, // CRC‰Šú’li—ÝÏ’lj + u16 *datap, // ƒf[ƒ^‚Ìæ“ª‚ðŽw‚·ƒ|ƒCƒ“ƒ^A’†“‡‚³‚ñ‚̂ƈႢAu8 + u32 size // ƒoƒCƒg’PˆÊ‚ł̃f[ƒ^ƒTƒCƒY + ) + { + u32 i; + u16 crc; + u8* byte; + + crc = start; + byte = (u8 *)datap; + + for (i=0; i> 8) ^ byte1]; + crc = (crc << 8) ^ crc_table[(crc >> 8) ^ byte0]; + } + + return crc; + } + + /*---------------------------------------------------------------------------* + + Name: getSeg3CRCInFp + + Description: Segment3(0x3000-0x3fff)‚ÌCRC‚ðŽZo + + Arguments: [in] srlƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + [out] CRCŠi”[æ + + Return: ¬Œ÷‚È‚çTRUE. + + *---------------------------------------------------------------------------*/ + BOOL getSeg3CRCInFp( FILE *fp, u16 *pCRC ) + { + u16 crc; + u16 data[ 0x1000 / 2 ]; // 64KƒoƒCƒg(512Kƒrƒbƒg) + + if( !fp ) + { + return FALSE; + } + + // CRCƒe[ƒuƒ‹‰Šú‰»i»•i‹Zp•”‚̃R[ƒhj + inittable(crc_table); + + // 0x3000 ‚©‚ç 0x3fff ‚Ü‚Å‚Ì CRC ‚ð‚Æ‚é + fseek( fp, 0x3000, SEEK_SET ); + fread( (void*)data, sizeof(data), 1, fp ); + crc = newGetCRC( 0, data, sizeof(data) ); + *pCRC = crc; + + return TRUE; + } + + /*---------------------------------------------------------------------------* + + Name: getWholeCRCInFp + + Description: srlƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC‚ðŽZo + + Arguments: [in] srlƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + [out] CRCŠi”[æ + + Return: ¬Œ÷‚È‚çTRUE. + + *---------------------------------------------------------------------------*/ + BOOL getWholeCRCInFp( FILE *fp, u16 *pCRC ) + { + u32 file_size; + u16 crc; + u32 i; + u16 data[ 0x1000 / 2 ]; // 64KƒoƒCƒg(512Kƒrƒbƒg) + + if( !fp ) + { + return FALSE; + } + + // ƒtƒ@ƒCƒ‹ƒTƒCƒYƒ`ƒFƒbƒN + fseek( fp, 0, SEEK_END ); + file_size = ftell( fp ); + + // CRCƒe[ƒuƒ‹‰Šú‰»i»•i‹Zp•”‚̃R[ƒhj + inittable(crc_table); + + // ƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC ‚ð‚Æ‚é + fseek( fp, 0, SEEK_SET ); + crc = 0; + for ( i=0; i +#include + +namespace MasterEditorTWL +{ + /*---------------------------------------------------------------------------* + + Name: getSeg3CRCInFp + + Description: Segment3(0x3000-0x3fff)‚ÌCRC‚ðŽZo + + Arguments: [in] srlƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + [out] CRCŠi”[æ + + Return: ¬Œ÷‚È‚çTRUE. + + *---------------------------------------------------------------------------*/ + BOOL getSeg3CRCInFp( FILE *fp, u16 *pCRC ); + + /*---------------------------------------------------------------------------* + + Name: getWholeCRCInFp + + Description: srlƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC‚ðŽZo + + Arguments: [in] srlƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + [out] CRCŠi”[æ + + Return: ¬Œ÷‚È‚çTRUE. + + *---------------------------------------------------------------------------*/ + BOOL getWholeCRCInFp( FILE *fp, u16 *pCRC ); + + /*---------------------------------------------------------------------------* + + Name: getWholeCRCInFile + + Description: srlƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC‚ðŽZo + + Arguments: [in] srlƒtƒ@ƒCƒ‹–¼(ŒÄ‚Ño‚µ‘O‚ɕ‚¶‚Ä‚¨‚­‚±‚Æ) + [out] CRCŠi”[æ + + Return: None. + + *---------------------------------------------------------------------------*/ + BOOL getWholeCRCInFile( System::String ^filename, u16 *pCRC ); + +} // end of namespace MasterEditorTWL \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.cpp new file mode 100644 index 0000000..bb487fb --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.cpp @@ -0,0 +1,575 @@ +// deliverable.h ‚̃Nƒ‰ƒXŽÀ‘• + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "deliverable.h" +#include "utility.h" +#include +#include + +using namespace MasterEditorTWL; + +// +// RCDeliverable ƒNƒ‰ƒX +// + +// +// ‘—Þo—Í +// +// @arg [out] o—̓tƒ@ƒCƒ‹–¼ +// @arg [in] ROMƒoƒCƒiƒŠ(SRL)ŒÅ—Lî•ñ +// @arg [in] ƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC +// @arg [in] SRL‚̃tƒ@ƒCƒ‹–¼(‘—Þ‚É‹Lq‚·‚邽‚߂Ɏg—p) +// @arg [in] ‰pŒêƒtƒ‰ƒO +// +ECDeliverableResult RCDeliverable::writeSpreadsheet( + System::String ^hFilename, MasterEditorTWL::RCSrl ^hSrl, System::UInt16 ^hCRC, System::String ^hSrlFilename, System::Boolean english ) +{ + // ƒeƒ“ƒvƒŒ[ƒg‚ð“ǂݞ‚Þ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + try + { + doc->Load( "../resource/sheet_templete.xml" ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return ECDeliverableResult::ERROR_FILE_OPEN; + } + System::Xml::XmlElement ^root = doc->DocumentElement; + + // ƒ\ƒtƒgƒ^ƒCƒgƒ‹etc.‚Í1•¶Žš‚¸‚“ü‚ê‚é + char title_name[ TITLE_NAME_MAX ]; + char game_code[ GAME_CODE_MAX ]; + char maker_code[ MAKER_CODE_MAX ]; + MasterEditorTWL::setStringToChars( title_name, hSrl->hTitleName, TITLE_NAME_MAX, 0 ); + MasterEditorTWL::setStringToChars( game_code, hSrl->hGameCode, GAME_CODE_MAX, 0 ); + MasterEditorTWL::setStringToChars( maker_code, hSrl->hMakerCode, MAKER_CODE_MAX, 0 ); + //System::String ^str = gcnew System::String( hSrl->hTitleName[0], 1 ); + //System::Diagnostics::Debug::WriteLine( str ); + //System::Diagnostics::Debug::WriteLine( "hex 0x: " + title_name[0].ToString("X") ); + + // ƒAƒvƒŠŽí•Ê + System::String ^apptype = gcnew System::String(""); + if( *hSrl->hIsAppLauncher ) + { + apptype = gcnew System::String( "Launcher" ); + } + else if( *hSrl->hIsAppSecure ) + { + apptype = gcnew System::String( "Secure" ); + } + else if( *hSrl->hIsAppSystem ) + { + apptype = gcnew System::String( "System" ); + } + else if( *hSrl->hIsAppUser ) + { + apptype = gcnew System::String( "User" ); + } + System::String ^media = gcnew System::String(""); + if( *hSrl->hIsMediaNand ) + { + media = gcnew System::String( "NAND" ); + } + else + { + media = gcnew System::String( "Game Card" ); + } + System::String ^appother = gcnew System::String(""); + if( *(hSrl->hIsLaunch) == false ) + { + appother += "ƒ‰ƒ“ƒ`ƒƒ[”ñ•\ަ."; + } + if( *(hSrl->hIsDataOnly) == true ) + { + apptype += "ƒf[ƒ^ê—p."; + } + + // ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹ ‚»‚Ì‘¼ + System::String ^access = gcnew System::String(""); + if( *(hSrl->hIsCommonClientKey) == true ) + { + access += "commonClientKey. "; + } + if( *(hSrl->hIsAesSlotBForES) == true ) + { + access += "AES-SlotB(ES). "; + } + if( *(hSrl->hIsAesSlotCForNAM) == true ) + { + access += "AES-SlotC(NAM). "; + } + if( *(hSrl->hIsAesSlotBForJpegEnc) == true ) + { + access += "AES-SlotB(Jpeg Launcher). "; + } + if( *(hSrl->hIsAesSlotBForJpegEncUser) == true ) + { + access += "AES-SlotB(Jpeg User). "; + } + if( *(hSrl->hIsAesSlotAForSSL) == true ) + { + access += "AES-SlotA(SSL). "; + } + if( *(hSrl->hIsCommonClientKeyForDebugger) == true ) + { + access += "commonClientKey(Debug). "; + } + + // Žg—pƒ‰ƒCƒZƒ“ƒX + System::String ^lib = gcnew System::String(""); + if( hSrl->hLicenseList != nullptr ) + { + for each( RCLicense ^lic in hSrl->hLicenseList ) + { + lib += "[" + lic->Publisher + " / " + lic->Name + "]. "; + } + } + + // ‘—Þƒeƒ“ƒvƒŒ[ƒg‚ÌŠeƒ^ƒO‚ð“ü—Íî•ñ‚É’u‚«Š·‚¦ + System::Xml::XmlNodeList ^list; + list = root->GetElementsByTagName( "Data" ); + System::Int32 i; + for( i=0; i < list->Count; i++ ) + { + System::Xml::XmlNode ^node = list->Item(i); + if( (node->FirstChild != nullptr) && (node->FirstChild->Value != nullptr) ) + { + // ’ñoî•ñ + if( node->FirstChild->Value->Equals( "TagProductName" ) ) + { + node->FirstChild->Value = this->hProductName; + } + if( node->FirstChild->Value->Equals( "TagProductCode1" ) ) + { + node->FirstChild->Value = this->hProductCode1; + } + if( node->FirstChild->Value->Equals( "TagProductCode2" ) ) + { + node->FirstChild->Value = this->hProductCode2; + } + if( node->FirstChild->Value->Equals( "TagReleaseForeign" ) ) + { + if( *(this->hReleaseForeign) ) + node->FirstChild->Value = gcnew System::String( "›" ); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagProductNameForeign" ) ) + { + node->FirstChild->Value = this->hProductNameForeign; + } + if( node->FirstChild->Value->Equals( "TagProductCode1Foreign" ) ) + { + node->FirstChild->Value = this->hProductCode1Foreign; + } + if( node->FirstChild->Value->Equals( "TagProductCode2Foreign" ) ) + { + node->FirstChild->Value = this->hProductCode2Foreign; + } + if( node->FirstChild->Value->Equals( "TagSubmitYear" ) ) + { + node->FirstChild->Value = this->hSubmitYear->ToString(); + } + if( node->FirstChild->Value->Equals( "TagSubmitMonth" ) ) + { + node->FirstChild->Value = this->hSubmitMonth->ToString(); + } + if( node->FirstChild->Value->Equals( "TagSubmitDay" ) ) + { + node->FirstChild->Value = this->hSubmitDay->ToString(); + } + if( node->FirstChild->Value->Equals( "TagReleaseYear" ) ) + { + node->FirstChild->Value = this->hReleaseYear->ToString(); + } + if( node->FirstChild->Value->Equals( "TagReleaseMonth" ) ) + { + node->FirstChild->Value = this->hReleaseMonth->ToString(); + } + if( node->FirstChild->Value->Equals( "TagReleaseDay" ) ) + { + node->FirstChild->Value = this->hReleaseDay->ToString(); + } + if( node->FirstChild->Value->Equals( "TagSubmitWay" ) ) + { + node->FirstChild->Value = this->hSubmitWay; + } + if( node->FirstChild->Value->Equals( "TagUsage" ) ) + { + node->FirstChild->Value = this->hUsage; + } + if( node->FirstChild->Value->Equals( "TagUsageOther" ) ) + { + node->FirstChild->Value = this->hUsageOther; // nullptr ‚̂Ƃ«‚̓Zƒ‹‚ª‹ó‚ɂȂé‚Ì‚ÅD“s‡ + } + if( node->FirstChild->Value->Equals( "TagRomVersion" ) ) + { + node->FirstChild->Value = hSrl->hRomVersion->ToString("X2"); + if( *(hSrl->hRomVersion) == 0xE0 ) + { + if( english ) + node->FirstChild->Value += "(Preliminary ver.)"; + else + node->FirstChild->Value += "(Ž–‘O”Å)"; + } + } + if( node->FirstChild->Value->Equals( "TagSubmitVersion" ) ) + { + node->FirstChild->Value = this->hSubmitVersion->ToString("X"); + } + if( node->FirstChild->Value->Equals( "TagSrlFilename" ) ) + { + node->FirstChild->Value = hSrlFilename; + } + if( node->FirstChild->Value->Equals( "TagCRC" ) ) + { + node->FirstChild->Value = "0x" + hCRC->ToString("X"); + } + // ROMî•ñ + if( node->FirstChild->Value->Equals( "TagLatency" ) ) + { + node->FirstChild->Value = hSrl->hLatency; + } + if( node->FirstChild->Value->Equals( "TagPlatform" ) ) + { + node->FirstChild->Value = hSrl->hPlatform; + } + if( node->FirstChild->Value->Equals( "TagRomSize" ) ) + { + node->FirstChild->Value = hSrl->hRomSize; + } + if( node->FirstChild->Value->Equals( "TagBackupMemory" ) ) + { + node->FirstChild->Value = this->hBackupMemory; + } + if( node->FirstChild->Value->Equals( "TagSDK" ) ) + { + node->FirstChild->Value = this->hSDK; + } + if( node->FirstChild->Value->Equals( "TagLibrary" ) ) + { + node->FirstChild->Value = lib; + } + // ROMî•ñ (TWLŠg’£î•ñ) + if( node->FirstChild->Value->Equals( "TagTitleIDLo" ) ) + { + node->FirstChild->Value = hSrl->hTitleIDLo; + } + if( node->FirstChild->Value->Equals( "TagTitleIDHi" ) ) + { + node->FirstChild->Value = "0x" + hSrl->hTitleIDHi->ToString("X8"); + } + if( node->FirstChild->Value->Equals( "TagAppType" ) ) + { + node->FirstChild->Value = apptype; + } + if( node->FirstChild->Value->Equals( "TagMedia" ) ) + { + node->FirstChild->Value = media; + } + if( node->FirstChild->Value->Equals( "TagAppTypeOther" ) ) + { + node->FirstChild->Value = appother; + } + if( node->FirstChild->Value->Equals( "TagIsNormalJump" ) ) + { + if( *(hSrl->hIsNormalJump) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsTmpJump" ) ) + { + if( *(hSrl->hIsTmpJump) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagNormalRomOffset" ) ) + { + node->FirstChild->Value = "0x" + hSrl->hNormalRomOffset->ToString("X8"); + } + if( node->FirstChild->Value->Equals( "TagKeyTableRomOffset" ) ) + { + node->FirstChild->Value = "0x" + hSrl->hKeyTableRomOffset->ToString("X8"); + } + if( node->FirstChild->Value->Equals( "TagPublicSize" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hPublicSize ); + } + if( node->FirstChild->Value->Equals( "TagPrivateSize" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hPrivateSize ); + } + if( node->FirstChild->Value->Equals( "TagIsCodec" ) ) + { + if( *(hSrl->hIsCodecTWL) == true ) + node->FirstChild->Value = gcnew System::String("TWL"); + else + node->FirstChild->Value = gcnew System::String("NTR"); + } + if( node->FirstChild->Value->Equals( "TagIsEULA" ) ) + { + if( *(hSrl->hIsEULA) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsSubBanner" ) ) + { + if( *(hSrl->hIsSubBanner) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsWiFiIcon" ) ) + { + if( *(hSrl->hIsWiFiIcon) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsWirelessIcon" ) ) + { + if( *(hSrl->hIsWirelessIcon) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsWL" ) ) + { + if( *(hSrl->hIsWL) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsSD" ) ) + { + if( *(hSrl->hIsSD) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsNAND" ) ) + { + if( *(hSrl->hIsNAND) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsShared2" ) ) + { + if( *(hSrl->hIsShared2) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsGameCardOn" ) ) + { + if( *(hSrl->hIsGameCardNitro) == true ) + node->FirstChild->Value = gcnew System::String("ON(NTR)"); + else if( *(hSrl->hIsGameCardOn) == true ) + node->FirstChild->Value = gcnew System::String("ON(normal)"); + else + node->FirstChild->Value = gcnew System::String("OFF");; + } + if( node->FirstChild->Value->Equals( "TagAccessOther" ) ) + { + node->FirstChild->Value = access; + } + if( node->FirstChild->Value->Equals( "TagShared2Size0" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[0] ); + } + if( node->FirstChild->Value->Equals( "TagShared2Size1" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[1] ); + } + if( node->FirstChild->Value->Equals( "TagShared2Size2" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[2] ); + } + if( node->FirstChild->Value->Equals( "TagShared2Size3" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[3] ); + } + if( node->FirstChild->Value->Equals( "TagShared2Size4" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[4] ); + } + if( node->FirstChild->Value->Equals( "TagShared2Size5" ) ) + { + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hShared2SizeArray[5] ); + } + + // ‰ïŽÐî•ñ + if( node->FirstChild->Value->Equals( "TagCompany1" ) ) + { + node->FirstChild->Value = this->hCompany1; + } + if( node->FirstChild->Value->Equals( "TagPerson1" ) ) + { + node->FirstChild->Value = this->hPerson1; + } + if( node->FirstChild->Value->Equals( "TagFurigana1" ) ) + { + node->FirstChild->Value = this->hFurigana1; + } + if( node->FirstChild->Value->Equals( "TagTel1" ) ) + { + node->FirstChild->Value = this->hTel1; + } + if( node->FirstChild->Value->Equals( "TagFax1" ) ) + { + node->FirstChild->Value = this->hFax1; + } + if( node->FirstChild->Value->Equals( "TagMail1" ) ) + { + node->FirstChild->Value = this->hMail1; + } + if( node->FirstChild->Value->Equals( "TagNTSC1" ) ) + { + node->FirstChild->Value = this->hNTSC1; + } + if( node->FirstChild->Value->Equals( "TagCompany2" ) ) + { + node->FirstChild->Value = this->hCompany2; + } + if( node->FirstChild->Value->Equals( "TagPerson2" ) ) + { + node->FirstChild->Value = this->hPerson2; + } + if( node->FirstChild->Value->Equals( "TagFurigana2" ) ) + { + node->FirstChild->Value = this->hFurigana2; + } + if( node->FirstChild->Value->Equals( "TagTel2" ) ) + { + node->FirstChild->Value = this->hTel2; + } + if( node->FirstChild->Value->Equals( "TagFax2" ) ) + { + node->FirstChild->Value = this->hFax2; + } + if( node->FirstChild->Value->Equals( "TagMail2" ) ) + { + node->FirstChild->Value = this->hMail2; + } + if( node->FirstChild->Value->Equals( "TagNTSC2" ) ) + { + node->FirstChild->Value = this->hNTSC2; + } + + // ”õl + if( node->FirstChild->Value->Equals( "TagCaption" ) ) + { + node->FirstChild->Value = this->hCaption; + } + + // ƒŠ[ƒWƒ‡ƒ“ + if( node->FirstChild->Value->Equals( "TagRegion" ) ) + { + node->FirstChild->Value = this->hRegion; + } + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + if( node->FirstChild->Value->Equals( "TagRatingCERO" ) ) + { + node->FirstChild->Value = this->hCERO; + } + if( node->FirstChild->Value->Equals( "TagRatingESRB" ) ) + { + node->FirstChild->Value = this->hESRB; + } + if( node->FirstChild->Value->Equals( "TagRatingUSK" ) ) + { + node->FirstChild->Value = this->hUSK; + } + if( node->FirstChild->Value->Equals( "TagRatingPEGI" ) ) + { + node->FirstChild->Value = this->hPEGI; + } + if( node->FirstChild->Value->Equals( "TagRatingPEGI_PRT" ) ) + { + node->FirstChild->Value = this->hPEGI_PRT; + } + if( node->FirstChild->Value->Equals( "TagRatingPEGI_BBFC" ) ) + { + node->FirstChild->Value = this->hPEGI_BBFC; + } + if( node->FirstChild->Value->Equals( "TagRatingOFLC" ) ) + { + node->FirstChild->Value = this->hOFLC; + } + + // SRL‚É“o˜^‚³‚ê‚È‚¢ROMŽd—l + if( node->FirstChild->Value->Equals( "TagIsUGC" ) ) + { + if( *(this->hIsUGC) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + if( node->FirstChild->Value->Equals( "TagIsPhotoEx" ) ) + { + if( *(this->hIsPhotoEx) == true ) + node->FirstChild->Value = gcnew System::String("›"); + else + node->FirstChild->Value = nullptr; + } + + // ROM“à“o˜^ƒf[ƒ^‚ð1ƒoƒCƒg‚¸‚•\‚É‘‚«ž‚Þ + if( node->FirstChild->Value->Equals( "TagRomVersionHex" ) ) + { + node->FirstChild->Value = hSrl->hRomVersion->ToString("X2"); + } + System::Int32 byte; + for( byte=0; byte < TITLE_NAME_MAX; byte++ ) + { + if( node->FirstChild->Value->Equals( "TagTitleName" + byte.ToString() ) ) + { + System::String ^bstr = hSrl->hTitleName[byte].ToString(); + if( bstr == nullptr ) + node->FirstChild->Value = gcnew System::String( "null" ); + else if( bstr->Equals( "\0" ) ) + node->FirstChild->Value = gcnew System::String( "\\0" ); + else if( bstr->Equals( " " ) ) + node->FirstChild->Value = gcnew System::String( "\\s" ); + else + node->FirstChild->Value = gcnew System::String( bstr ); + //node->FirstChild->Value = gcnew System::String( hSrl->hTitleName[byte].ToString() ); + } + else if( node->FirstChild->Value->Equals( "TagTitleNameHex" + byte.ToString() ) ) + { + node->FirstChild->Value = title_name[byte].ToString("X2"); + } + } + if( node->FirstChild->Value->Equals( "TagGameCode" ) ) + { + node->FirstChild->Value = hSrl->hGameCode; + } + if( node->FirstChild->Value->Equals( "TagMakerCode" ) ) + { + node->FirstChild->Value = hSrl->hMakerCode; + } + + } // if( (node->FirstChild != nullptr) && (node->FirstChild->Value != nullptr) ) + } // for( i=0; i < list->Count; i++ ) + + try + { + doc->Save( hFilename ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return ECDeliverableResult::ERROR_FILE_WRITE; + } + + return ECDeliverableResult::NOERROR; +} // ECDeliverableResult RCDeliverable::writeSpreadsheet(System::String ^hFilename, MasterEditorTWL::RCSrl ^hSrl) + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h new file mode 100644 index 0000000..f679fb6 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h @@ -0,0 +1,124 @@ +#pragma once + +// ‘—ÞƒNƒ‰ƒX‚Ì錾 + +#include +#include +#include +#include +#include "common.h" +#include "srl.h" + +namespace MasterEditorTWL +{ + // ------------------------------------------------------------------- + // Type : enum class + // Name : ECDeliverableResult + // + // Description : RCDeliverable ƒNƒ‰ƒX‚Ì‘€ì‚ł̃Gƒ‰[‚ð錾 + // ------------------------------------------------------------------- + enum class ECDeliverableResult + { + NOERROR = 0, + // ƒGƒ‰[“Á’肵‚È‚­‚Ä‚àŒ´ˆö‚ª‚í‚©‚邯‚«‚̕Ԃè’l + // (ƒGƒ‰[‚ª¶‚¶‚é‰Â”\«‚Ì‚ ‚é‰ÓŠ‚ª1‚ etc.) + ERROR, + // ƒtƒ@ƒCƒ‹‘€ì‚ł̃Gƒ‰[ + ERROR_FILE_OPEN, + ERROR_FILE_READ, + ERROR_FILE_WRITE, + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCDeliverable + // + // Description : ’ño‘—ÞƒNƒ‰ƒX + // + // Role : ’ñoî•ñ‚Ì“üo—Í + // ------------------------------------------------------------------- + ref class RCDeliverable + { + // field + public: + // ’ñoî•ñ + property System::String ^hProductName; // »•i–¼ + property System::String ^hProductCode1; // »•iƒR[ƒh + property System::String ^hProductCode2; // »•iƒR[ƒh + property System::Int32 ^hReleaseYear; // ”­”„—\’è“ú + property System::Int32 ^hReleaseMonth; + property System::Int32 ^hReleaseDay; + property System::Int32 ^hSubmitYear; // ’ño“ú + property System::Int32 ^hSubmitMonth; + property System::Int32 ^hSubmitDay; + property System::String ^hSubmitWay; // ’ño•û–@ + property System::String ^hUsage; // —p“r + property System::String ^hUsageOther; // ‚»‚Ì‘¼‚Ì—p“r + property System::Int32 ^hSubmitVersion; // ’ñoƒo[ƒWƒ‡ƒ“ + property System::String ^hSDK; // SDKƒo[ƒWƒ‡ƒ“ + property System::Boolean ^hReleaseForeign; // ŠCŠO”ł̗\’è + property System::String ^hProductNameForeign; + property System::String ^hProductCode1Foreign; + property System::String ^hProductCode2Foreign; + + // ‰ïŽÐî•ñ + + // ’S“–ŽÒ(1l–Ú) + property System::String ^hCompany1; // ‰ïŽÐ–¼ + property System::String ^hPerson1; // –¼‘O + property System::String ^hFurigana1; // ‚ӂ肪‚È + property System::String ^hTel1; // “d˜b”Ô† + property System::String ^hFax1; // FAX”Ô† + property System::String ^hMail1; // ƒƒAƒh + property System::String ^hNTSC1; // NTSC User ID + // ’S“–ŽÒ(2l–Ú) + property System::String ^hCompany2; + property System::String ^hPerson2; + property System::String ^hFurigana2; + property System::String ^hTel2; + property System::String ^hFax2; + property System::String ^hMail2; + property System::String ^hNTSC2; + + // ”õl + property System::String ^hCaption; + + // ROMƒwƒbƒ_•s‹LÚ‚ÌROMƒoƒCƒiƒŠ(SRL)ŒÅ—Lî•ñ + property System::String ^hBackupMemory; // ƒoƒbƒNƒAƒbƒvƒƒ‚ƒŠ‚ÌŽí•Ê + + // SRLî•ñ‚̈ꕔ‚ð•¶Žš—ñ‚ÅŽ‚Á‚Ä‚¨‚­ + property System::String ^hRegion; + property System::String ^hCERO; + property System::String ^hESRB; + property System::String ^hUSK; + property System::String ^hPEGI; + property System::String ^hPEGI_PRT; + property System::String ^hPEGI_BBFC; + property System::String ^hOFLC; + property System::String ^hAppTypeOther; // “Á‹LŽ–€ + + // SRL‚ɂ͓o˜^‚³‚ê‚È‚¢ROMŽd—l + property System::Boolean ^hIsUGC; + property System::Boolean ^hIsPhotoEx; + + // constructor and destructor + public: + + // method + public: + + // + // ‘—Þo—Í + // + // @arg [out] o—̓tƒ@ƒCƒ‹–¼ + // @arg [in] ROMƒoƒCƒiƒŠ(SRL)ŒÅ—Lî•ñ + // @arg [in] ƒtƒ@ƒCƒ‹‘S‘Ì‚ÌCRC + // @arg [in] SRL‚̃tƒ@ƒCƒ‹–¼(‘—Þ‚É‹Lq‚·‚邽‚߂Ɏg—p) + // @arg [in] ‰pŒêƒtƒ‰ƒO + // + ECDeliverableResult writeSpreadsheet( + System::String ^hFilename, RCSrl ^hSrl, System::UInt16 ^hCRC, System::String ^hSrlFilename, System::Boolean english ); + + }; // end of ref class RCDeliverable + +} // end of namespace MasterEditorTWL diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.cpp new file mode 100644 index 0000000..4e60b25 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.cpp @@ -0,0 +1,251 @@ +// –¼—p‚ÌŒ®ƒf[ƒ^ from makerom.TWL + +#include "stdafx.h" +#include +#include +#include "common.h" +#include "keys.h" + +namespace MasterEditorTWL +{ + +#ifdef METWL_VER_APPTYPE_USER + // ŠJ”­‹@—pROMƒwƒbƒ_–¼ŒöŠJŒ® + const u8 g_devPubKey_DER[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, + 0x3C, 0x15, 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, + 0xD5, 0x79, 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, + 0xCB, 0x94, 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, + 0xF0, 0x11, 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, + 0x7F, 0x11, 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, + 0x96, 0x4F, 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, + 0x62, 0x39, 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, + 0xC9, 0x6F, 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + // ŠJ”­‹@—pƒAƒvƒŠROMƒwƒbƒ_–¼”é–§Œ® + const u8 g_devPrivKey_DER[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5F, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, 0x3C, 0x15, + 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, 0xD5, 0x79, + 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, 0xCB, 0x94, + 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, 0xF0, 0x11, + 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, 0x7F, 0x11, + 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, 0x96, 0x4F, + 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, 0x62, 0x39, + 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, 0xC9, 0x6F, + 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0x95, 0xDC, 0xC8, 0x18, 0x19, 0xF8, 0x98, 0x0B, 0x73, 0x78, 0x0C, 0x4D, + 0x7E, 0xD6, 0x06, 0xE9, 0x39, 0x83, 0xEA, 0xBC, 0x59, 0xAF, 0x7C, 0x87, 0xF2, 0x25, 0xD8, 0x02, + 0xF8, 0x57, 0x4C, 0x94, 0xB4, 0xCE, 0x74, 0x9B, 0x76, 0x94, 0x70, 0x1D, 0xA1, 0x0D, 0xAF, 0x33, + 0x4B, 0x28, 0xD5, 0xE9, 0xA0, 0x3F, 0xDD, 0xFD, 0x86, 0x67, 0x36, 0xA8, 0xB2, 0x77, 0x7E, 0xA8, + 0x2C, 0x2E, 0xEB, 0x43, 0x7B, 0xE4, 0xA3, 0x66, 0x7C, 0x3A, 0x00, 0x90, 0xC5, 0xF5, 0xF8, 0x59, + 0xF9, 0x95, 0x88, 0x2A, 0xA8, 0xF4, 0x94, 0x41, 0x05, 0x02, 0xA0, 0x47, 0xC0, 0xC1, 0xB9, 0x80, + 0x1F, 0x49, 0xBB, 0x09, 0xBF, 0x42, 0xBA, 0xE6, 0xEE, 0x8D, 0x21, 0x1D, 0xFB, 0x8F, 0xC7, 0xB7, + 0x71, 0x00, 0xFB, 0x35, 0x13, 0xD8, 0xBC, 0xA3, 0x3F, 0x3A, 0xCF, 0x96, 0xB0, 0x0B, 0x8A, 0x61, + 0x9C, 0x70, 0xF8, 0x91, 0x02, 0x41, 0x00, 0xD8, 0xAA, 0x14, 0x21, 0x49, 0x7A, 0x2C, 0xC3, 0xAA, + 0xDA, 0xFB, 0x17, 0xB0, 0xD7, 0xF5, 0x5A, 0x77, 0xEE, 0xF0, 0xA9, 0x09, 0x18, 0x85, 0x21, 0xD4, + 0x12, 0x4F, 0x85, 0x35, 0x05, 0x20, 0x36, 0x22, 0x65, 0x2C, 0xDD, 0xFA, 0xF5, 0x8E, 0xA5, 0x2E, + 0xC4, 0xFD, 0xD1, 0xFA, 0xC6, 0x8A, 0x0F, 0x98, 0x69, 0xD9, 0x82, 0x50, 0xDF, 0xFA, 0x80, 0xC3, + 0xFE, 0x5E, 0x15, 0x59, 0xA8, 0xD4, 0x05, 0x02, 0x41, 0x00, 0xCB, 0xE8, 0x9A, 0xF2, 0x5F, 0xC1, + 0x75, 0xA5, 0x1E, 0x95, 0xE4, 0x4F, 0x1A, 0x48, 0xA1, 0x75, 0x9A, 0x6E, 0xDB, 0xA2, 0x31, 0xD6, + 0x66, 0x29, 0xEA, 0x19, 0x37, 0x0C, 0xB2, 0x89, 0xD3, 0x03, 0x15, 0xE6, 0x7A, 0x1A, 0xCB, 0xCE, + 0xB9, 0x79, 0x11, 0x9B, 0x71, 0x78, 0xA5, 0xBB, 0x07, 0x6F, 0xA3, 0x05, 0x3B, 0x84, 0x23, 0x47, + 0xAB, 0x20, 0x34, 0x39, 0xB0, 0x59, 0x87, 0xEC, 0xCE, 0x9D, 0x02, 0x41, 0x00, 0xB8, 0xE0, 0x98, + 0x00, 0xB7, 0x64, 0x0B, 0x22, 0x83, 0x7E, 0x0B, 0xD7, 0xF1, 0x4C, 0xB5, 0xCD, 0x96, 0x9D, 0x4A, + 0xB9, 0xD2, 0x4B, 0x1B, 0xFE, 0xFB, 0xA9, 0x0C, 0x35, 0xCC, 0x42, 0x2D, 0x74, 0x43, 0xF1, 0x35, + 0x51, 0xCD, 0x3D, 0x0F, 0x95, 0x1F, 0xCD, 0x74, 0x10, 0x62, 0xFE, 0x5A, 0xFC, 0x67, 0xBF, 0x9A, + 0x9C, 0x3A, 0x4A, 0x84, 0xC4, 0xAF, 0x79, 0x33, 0xEA, 0xDF, 0xF0, 0xD1, 0xC9, 0x02, 0x41, 0x00, + 0xAA, 0x5B, 0x16, 0x00, 0xC2, 0xB1, 0x5D, 0x39, 0x6B, 0x59, 0x2D, 0x5A, 0x4D, 0x0A, 0x3B, 0x22, + 0x86, 0xB8, 0x71, 0x74, 0x8B, 0x90, 0xA4, 0xE0, 0x05, 0xBD, 0xB5, 0x39, 0x3D, 0x7C, 0x5A, 0x37, + 0xAC, 0xB7, 0x56, 0x72, 0x46, 0xAD, 0xDA, 0x54, 0xE4, 0xB9, 0xEA, 0x4E, 0x32, 0xA0, 0x13, 0xF1, + 0x57, 0xD0, 0x4A, 0x4D, 0xF6, 0x2F, 0xAD, 0x2F, 0x85, 0x92, 0x60, 0xDC, 0x1B, 0xEC, 0x63, 0x1D, + 0x02, 0x41, 0x00, 0xAC, 0x40, 0x43, 0xF2, 0x74, 0x2C, 0x56, 0xF4, 0xB9, 0x52, 0xB0, 0xCC, 0x89, + 0xC7, 0x70, 0x33, 0xA9, 0xC0, 0xD3, 0x4E, 0x35, 0xFC, 0x49, 0x69, 0xCB, 0x22, 0x9C, 0x0D, 0xD0, + 0xE1, 0x8F, 0xCC, 0xF4, 0xAD, 0x25, 0xC2, 0xE1, 0x84, 0xD6, 0x34, 0x35, 0x89, 0xFA, 0xC4, 0xBA, + 0x43, 0x34, 0xF4, 0xD2, 0xB2, 0x36, 0x56, 0xB9, 0x96, 0x78, 0x4D, 0x7A, 0xE3, 0x4D, 0xA9, 0x5E, + 0xF5, 0x3E, 0x88, + }; +#endif //#ifdef METWL_VER_APPTYPE_USER + +#ifdef METWL_VER_APPTYPE_SYSTEM + // ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® + const u8 g_devPubKey_DER_system[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, + 0x9F, 0x59, 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, + 0x47, 0x39, 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, + 0x4E, 0x13, 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, + 0x4D, 0xB4, 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, + 0xC3, 0xB7, 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, + 0xAC, 0xD6, 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, + 0x93, 0xEA, 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, + 0xA7, 0x54, 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® + const u8 g_devPrivKey_DER_system[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5E, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, 0x9F, 0x59, + 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, 0x47, 0x39, + 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, 0x4E, 0x13, + 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, 0x4D, 0xB4, + 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, 0xC3, 0xB7, + 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, 0xAC, 0xD6, + 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, 0x93, 0xEA, + 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, 0xA7, 0x54, + 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0xCF, 0x67, 0xAA, 0x3B, 0x1F, 0x26, 0xC5, 0x68, 0x7F, 0x27, 0x55, 0xFF, + 0xF5, 0x29, 0x6C, 0xF9, 0x62, 0xD5, 0xCF, 0x50, 0xF3, 0xD5, 0xD8, 0x4B, 0x06, 0xE0, 0xC9, 0x64, + 0xD4, 0x3B, 0x96, 0x73, 0x74, 0xF1, 0x71, 0xB2, 0x67, 0x07, 0x0F, 0xA9, 0x68, 0x06, 0x8B, 0x97, + 0x99, 0x70, 0x6A, 0xC4, 0xE1, 0x16, 0x9B, 0xA8, 0x0F, 0xDF, 0xCC, 0x2B, 0xE7, 0x37, 0xFC, 0x6A, + 0x67, 0x8B, 0x99, 0x9E, 0xD1, 0xDA, 0xCC, 0x68, 0xFC, 0xEB, 0x8D, 0xFE, 0x42, 0x84, 0x72, 0x88, + 0x05, 0xAF, 0x23, 0x32, 0x30, 0x1F, 0xFA, 0xCC, 0x67, 0x52, 0x93, 0x6C, 0xC1, 0x0A, 0xCF, 0xD6, + 0xD3, 0x5F, 0x75, 0xE9, 0x4D, 0x32, 0xC0, 0x31, 0x1B, 0xD4, 0xB5, 0x4B, 0xB4, 0x4E, 0xB0, 0x3E, + 0xD5, 0x6C, 0x3C, 0xDC, 0x57, 0xBB, 0x32, 0x24, 0x41, 0x9C, 0x79, 0xBE, 0xFC, 0xC0, 0x3B, 0x63, + 0x0C, 0x5D, 0xC6, 0xE5, 0x02, 0x41, 0x00, 0xF6, 0x77, 0x12, 0x72, 0x63, 0xD0, 0x9B, 0x22, 0xC6, + 0x4F, 0x19, 0x1E, 0x2A, 0xE1, 0x97, 0xCF, 0x28, 0xD3, 0xC3, 0x5E, 0xFB, 0x22, 0x57, 0xE5, 0x4F, + 0x90, 0x83, 0x53, 0xB0, 0x80, 0xD3, 0x2D, 0xFB, 0x77, 0x55, 0x52, 0x5E, 0x00, 0xD8, 0x72, 0x39, + 0x93, 0xF0, 0x89, 0x83, 0x97, 0xFB, 0x78, 0xD2, 0xB0, 0xCD, 0xED, 0x1C, 0x9B, 0x8F, 0x5D, 0xBD, + 0x00, 0x26, 0x37, 0xA1, 0xE5, 0x38, 0xE7, 0x02, 0x41, 0x00, 0xF2, 0xA8, 0x5D, 0x86, 0xE0, 0x33, + 0xC8, 0x93, 0x5C, 0xB9, 0xBD, 0xCF, 0x27, 0x70, 0x81, 0x79, 0xE1, 0x12, 0x82, 0x09, 0x64, 0xCB, + 0xDB, 0xCF, 0xBB, 0x52, 0xD3, 0x3F, 0x22, 0x90, 0x47, 0x23, 0xAA, 0x20, 0x7D, 0x92, 0xFD, 0xD6, + 0x58, 0x68, 0xF3, 0xB1, 0xFA, 0x7B, 0x81, 0x0D, 0x8F, 0x22, 0xDC, 0x84, 0x08, 0x91, 0x60, 0x07, + 0xE8, 0x98, 0x9A, 0x84, 0xDA, 0x4C, 0x24, 0xC7, 0x10, 0x8B, 0x02, 0x41, 0x00, 0xB3, 0xB0, 0xAA, + 0x75, 0x55, 0xCA, 0x90, 0x60, 0xB1, 0x1E, 0x98, 0x1C, 0x83, 0x7D, 0x08, 0x36, 0x53, 0xF8, 0xD8, + 0x77, 0x16, 0x37, 0xBA, 0xC7, 0x87, 0xD3, 0xBF, 0xBB, 0xB3, 0x72, 0xA9, 0x04, 0xDC, 0x52, 0xEB, + 0x94, 0xEA, 0xCE, 0x49, 0x00, 0x36, 0x74, 0x62, 0xA9, 0x8F, 0x94, 0xAE, 0x16, 0x2F, 0xDE, 0x11, + 0xB4, 0xEE, 0xE7, 0x87, 0x85, 0xFB, 0x36, 0xF1, 0xA6, 0x1B, 0xD5, 0xC8, 0x3F, 0x02, 0x40, 0x73, + 0x18, 0x72, 0xCC, 0x1F, 0x99, 0xD0, 0x40, 0x3D, 0x52, 0x08, 0x7A, 0xB2, 0x5D, 0x45, 0xBC, 0x76, + 0x8A, 0x1D, 0xCD, 0xB0, 0xD6, 0x94, 0xDB, 0x32, 0x21, 0xB5, 0xFB, 0x13, 0x3C, 0xD5, 0xD1, 0x4F, + 0xC7, 0x7B, 0x68, 0x76, 0x27, 0xED, 0xE5, 0x51, 0xF9, 0x90, 0x32, 0x76, 0x62, 0xE5, 0x0A, 0x87, + 0x07, 0xC5, 0x3C, 0x97, 0x0D, 0x09, 0x41, 0x20, 0xC1, 0x74, 0xFD, 0x7A, 0xD0, 0x44, 0xC3, 0x02, + 0x41, 0x00, 0xAF, 0xA3, 0x2C, 0x53, 0x8E, 0x8E, 0xA8, 0xE7, 0x36, 0xC0, 0x5C, 0x9E, 0x95, 0xEE, + 0xC1, 0x97, 0x02, 0x63, 0x7F, 0x3B, 0x4E, 0xB2, 0x0F, 0xF2, 0x7A, 0xBD, 0x57, 0x9C, 0x8B, 0x85, + 0xA8, 0x5D, 0x14, 0x3B, 0x7B, 0xF0, 0xBE, 0xFE, 0x0F, 0x8E, 0x4F, 0xD5, 0xB8, 0x49, 0xE8, 0x90, + 0xF5, 0x12, 0xBF, 0xB2, 0xD6, 0xE2, 0x78, 0x20, 0x26, 0x6C, 0x3F, 0x5C, 0xE4, 0x57, 0x6D, 0xE9, + 0xB4, 0x63, + }; +#endif // #ifdef METWL_VER_APPTYPE_SYSTEM + +#ifdef METWL_VER_APPTYPE_SECURE + // ŠJ”­—pƒVƒ‡ƒbƒvƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® + const u8 g_devPubKey_DER_secure[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, + 0xA0, 0xC7, 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, + 0xC6, 0x05, 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, + 0x98, 0x5B, 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, + 0x44, 0xB1, 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, + 0xFF, 0x7F, 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, + 0xEC, 0xBE, 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, + 0xC8, 0x9A, 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, + 0xE6, 0x31, 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // ŠJ”­—pƒVƒ‡ƒbƒvƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® + const u8 g_devPrivKey_DER_secure[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, 0xA0, 0xC7, + 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, 0xC6, 0x05, + 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, 0x98, 0x5B, + 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, 0x44, 0xB1, + 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, 0xFF, 0x7F, + 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, 0xEC, 0xBE, + 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, 0xC8, 0x9A, + 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, 0xE6, 0x31, + 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x48, 0xCA, 0x9C, 0x49, 0xA5, 0xBF, 0xD1, 0x17, 0x16, 0x77, 0x97, 0x97, 0x29, + 0x8D, 0x2A, 0xA2, 0x0D, 0x80, 0x0B, 0xE3, 0xDE, 0x59, 0x6B, 0x0C, 0xC8, 0x39, 0x6A, 0xE4, 0xC7, + 0xFF, 0x2E, 0xB0, 0x18, 0x6F, 0xF0, 0x9D, 0x35, 0x5E, 0x6A, 0x80, 0xAF, 0x3D, 0x90, 0x85, 0x9C, + 0x1A, 0x3F, 0x58, 0x15, 0xB9, 0x7B, 0x58, 0xB9, 0x4A, 0xB9, 0x18, 0x68, 0xDE, 0xBE, 0x5B, 0xE1, + 0x1C, 0xBF, 0x85, 0xDF, 0x5F, 0x30, 0xFD, 0xD2, 0xEC, 0xC0, 0x77, 0x33, 0x62, 0x58, 0xEC, 0xC1, + 0x47, 0xF7, 0x41, 0xE8, 0x2B, 0x21, 0x83, 0xE0, 0x8E, 0xE0, 0xF4, 0x03, 0x5D, 0x07, 0x84, 0x91, + 0xFA, 0x5B, 0xD8, 0xD3, 0x47, 0x90, 0x6E, 0x7D, 0x81, 0x9C, 0x1A, 0xB3, 0x03, 0x2F, 0xBC, 0x1A, + 0x28, 0x01, 0xBB, 0x78, 0x33, 0x60, 0xD2, 0x32, 0x34, 0x09, 0xEE, 0x08, 0x35, 0x50, 0x7A, 0x02, + 0x77, 0xB9, 0x01, 0x02, 0x41, 0x00, 0xCF, 0x39, 0xB3, 0x95, 0xDB, 0x1A, 0x2C, 0xD5, 0x6B, 0x0E, + 0xD8, 0x7B, 0xEC, 0x36, 0x14, 0xC5, 0x6C, 0x6C, 0x03, 0x34, 0xCB, 0x8A, 0x03, 0xF0, 0x94, 0x9C, + 0x2E, 0xBB, 0xA4, 0x24, 0x85, 0x6F, 0x3C, 0x8B, 0xAD, 0x44, 0x88, 0xA1, 0xDC, 0x88, 0xFE, 0xE7, + 0x02, 0x24, 0xB3, 0x73, 0xEA, 0xD1, 0xF6, 0x61, 0x6A, 0x73, 0x00, 0x86, 0x0B, 0x67, 0xAB, 0x00, + 0xFB, 0xF7, 0xFD, 0x0D, 0x92, 0x91, 0x02, 0x41, 0x00, 0xCF, 0x13, 0x5C, 0xD1, 0x72, 0x12, 0xA5, + 0x1D, 0x3A, 0x86, 0xAB, 0xAC, 0x87, 0x11, 0x37, 0x6D, 0xEB, 0x90, 0x14, 0x41, 0x7B, 0xAA, 0x38, + 0x88, 0xFF, 0xAF, 0xAA, 0xAE, 0x12, 0x3E, 0x7C, 0x28, 0x59, 0xDB, 0xBE, 0xAE, 0x79, 0x20, 0x0C, + 0x4F, 0xE5, 0xAB, 0x97, 0x64, 0x0D, 0x1E, 0x31, 0x54, 0x10, 0xB0, 0x1C, 0x7E, 0x5A, 0x7B, 0x98, + 0x32, 0x00, 0xF7, 0xE0, 0x18, 0x15, 0x53, 0xFC, 0x4D, 0x02, 0x41, 0x00, 0x90, 0x5F, 0x38, 0x01, + 0xD0, 0x9B, 0x44, 0xDF, 0x0F, 0x6E, 0x51, 0x5E, 0xCC, 0xEB, 0xC4, 0xBE, 0xE2, 0xD1, 0xC1, 0xCE, + 0x17, 0x7C, 0x39, 0x50, 0x74, 0x88, 0xF7, 0x7A, 0x1D, 0x5A, 0xA0, 0x68, 0x26, 0x3B, 0x7D, 0xE4, + 0xC0, 0x78, 0x5C, 0x68, 0x49, 0x86, 0xF2, 0x14, 0x55, 0xBE, 0x0D, 0xBC, 0x68, 0x35, 0xE8, 0x6E, + 0xE4, 0xCF, 0x7E, 0xC4, 0xA3, 0xFB, 0xD4, 0x90, 0x2A, 0x8A, 0x39, 0x31, 0x02, 0x41, 0x00, 0x93, + 0x88, 0xE3, 0x17, 0xA2, 0xA3, 0xA0, 0x1A, 0x4C, 0x09, 0x89, 0x24, 0xD9, 0xF2, 0xAD, 0x40, 0x56, + 0x96, 0x07, 0xA8, 0x84, 0x18, 0x4A, 0x41, 0x69, 0x92, 0x5A, 0x13, 0xBD, 0x91, 0xE1, 0x59, 0xCA, + 0x73, 0xE2, 0xCE, 0x62, 0x24, 0x30, 0x41, 0x78, 0x8C, 0x21, 0xC7, 0xBA, 0x04, 0xE9, 0xF6, 0x50, + 0x11, 0x79, 0xAB, 0x98, 0x81, 0xF8, 0x74, 0x9F, 0xF5, 0xFB, 0x26, 0x8D, 0x83, 0x91, 0xFD, 0x02, + 0x40, 0x4D, 0xA4, 0x03, 0x7E, 0x00, 0xB6, 0xA2, 0xEE, 0x85, 0x19, 0x5C, 0xB3, 0xBE, 0x06, 0x48, + 0xF7, 0xA8, 0x27, 0xB3, 0xC9, 0xED, 0x60, 0xE1, 0x56, 0x0A, 0x3F, 0x8D, 0x64, 0x56, 0xBA, 0x2E, + 0xC3, 0xF6, 0x2D, 0x95, 0x38, 0x87, 0x58, 0xD6, 0x95, 0xF7, 0xA6, 0xD6, 0xEE, 0x85, 0x7D, 0xD7, + 0x93, 0x80, 0xF5, 0x1D, 0xBF, 0x5F, 0x3E, 0x3A, 0x22, 0x29, 0x18, 0xE5, 0x95, 0x73, 0x0D, 0xEA, + 0x42, + }; +#endif // #ifdef METWL_VER_APPTYPE_SECURE + +#ifdef METWL_VER_APPTYPE_LAUNCHER + // ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® + const u8 g_devPubKey_DER_launcher[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, + 0xFF, 0x1F, 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, + 0x49, 0x42, 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, + 0x70, 0x66, 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, + 0x87, 0xC0, 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, + 0x87, 0xB1, 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, + 0x80, 0x10, 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, + 0x4D, 0xD1, 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, + 0x5B, 0x37, 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® + const u8 g_devPrivKey_DER_launcher[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, 0xFF, 0x1F, + 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, 0x49, 0x42, + 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, 0x70, 0x66, + 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, 0x87, 0xC0, + 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, 0x87, 0xB1, + 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, 0x80, 0x10, + 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, 0x4D, 0xD1, + 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, 0x5B, 0x37, + 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x16, 0x65, 0xDC, 0xC8, 0x16, 0x99, 0xA3, 0x9A, 0x32, 0xFB, 0x88, 0x35, 0x0D, + 0xAE, 0x2E, 0x6D, 0x33, 0xC5, 0x4B, 0x1F, 0x43, 0x82, 0xE0, 0xE7, 0x0F, 0xCC, 0x83, 0x1D, 0x13, + 0xB2, 0xF4, 0x48, 0x43, 0x6F, 0xA2, 0x8C, 0xDB, 0xB6, 0x5A, 0x1B, 0xCD, 0xAB, 0xB0, 0x33, 0x30, + 0xE2, 0x6B, 0xD2, 0x9F, 0x7F, 0x6F, 0x2E, 0x2E, 0x89, 0x11, 0xBD, 0x89, 0xB1, 0xB3, 0x9E, 0x89, + 0x58, 0xD9, 0xDB, 0xB9, 0x91, 0x00, 0xDA, 0x17, 0xA9, 0x14, 0xC3, 0x83, 0xFF, 0xFF, 0x46, 0x0F, + 0x5F, 0x81, 0x1B, 0x5B, 0x02, 0xD2, 0x29, 0xEF, 0x48, 0xB7, 0xDF, 0x8C, 0x34, 0xED, 0xA2, 0xEC, + 0xC0, 0x79, 0x50, 0xC6, 0xAD, 0x0B, 0x98, 0x28, 0xC2, 0x17, 0x80, 0x96, 0x67, 0x3A, 0x22, 0xD7, + 0x60, 0x61, 0x98, 0xF6, 0xAB, 0x10, 0x1E, 0xE6, 0x23, 0x06, 0x4B, 0x61, 0xAF, 0xFE, 0xD5, 0xAF, + 0xB8, 0x3D, 0x81, 0x02, 0x41, 0x00, 0xE2, 0x82, 0xC3, 0x83, 0x2A, 0xEF, 0xA0, 0x86, 0x15, 0xFD, + 0x80, 0x23, 0x2B, 0x1C, 0x80, 0x0C, 0xF7, 0xA0, 0xA3, 0x53, 0x2B, 0xAD, 0xF9, 0xF6, 0xF7, 0xA3, + 0x7E, 0x1A, 0x5E, 0xE7, 0x18, 0x6D, 0xF3, 0xD6, 0xDE, 0x68, 0xBB, 0x4A, 0x54, 0xAF, 0xDF, 0xA5, + 0xEC, 0xA7, 0x62, 0xBB, 0xCB, 0x7A, 0xDE, 0x3F, 0xFB, 0x9A, 0x99, 0x2A, 0xF7, 0x2D, 0x23, 0x98, + 0x9A, 0x9F, 0xCE, 0xFB, 0x67, 0xB1, 0x02, 0x41, 0x00, 0xD5, 0x98, 0x63, 0x19, 0x3D, 0x80, 0xDF, + 0x71, 0x13, 0x6A, 0xF4, 0x5E, 0x62, 0x99, 0x16, 0x34, 0x18, 0xF9, 0xDC, 0x58, 0x2F, 0xC3, 0xD8, + 0x8B, 0x68, 0xC1, 0x43, 0x98, 0xF0, 0xEC, 0x39, 0xE3, 0x40, 0x6E, 0x08, 0x9F, 0xED, 0x17, 0xBE, + 0xCC, 0x87, 0x4A, 0xAD, 0x99, 0x15, 0x09, 0xD0, 0xBB, 0xDB, 0x13, 0xF0, 0x53, 0xDF, 0xCB, 0x66, + 0x1A, 0xD1, 0xF2, 0x14, 0xB7, 0x17, 0xFA, 0xCB, 0x39, 0x02, 0x41, 0x00, 0xD8, 0xA2, 0x05, 0x89, + 0x32, 0x8C, 0x41, 0xB3, 0x5B, 0xDE, 0xBA, 0x29, 0x68, 0x76, 0xF6, 0x84, 0xF0, 0x64, 0x23, 0x30, + 0x4D, 0x4B, 0x34, 0x11, 0x1E, 0x60, 0xB0, 0x1F, 0x5A, 0x7A, 0x9C, 0xE3, 0xB3, 0xDC, 0xE1, 0x93, + 0xBA, 0xE4, 0x69, 0x40, 0x57, 0x9E, 0xA2, 0x4A, 0xA8, 0x64, 0x41, 0x44, 0xBE, 0xC0, 0xE4, 0xCA, + 0xC4, 0x08, 0xD2, 0xA3, 0xCA, 0x32, 0x8E, 0x57, 0x9F, 0x26, 0xD4, 0xD1, 0x02, 0x41, 0x00, 0x9B, + 0xD5, 0x50, 0x07, 0xAC, 0x2D, 0x87, 0xD7, 0x71, 0xB9, 0x48, 0x8C, 0x4C, 0x17, 0x30, 0x71, 0xD5, + 0xFF, 0x05, 0x59, 0x79, 0x8F, 0xC3, 0x3F, 0x02, 0xB0, 0x6D, 0xE6, 0xF9, 0x6E, 0xFF, 0x54, 0xE3, + 0x3E, 0xE4, 0x1F, 0xF9, 0xD4, 0xA7, 0x29, 0x85, 0x53, 0x60, 0x90, 0x1D, 0x1F, 0x4A, 0x20, 0xA4, + 0x57, 0x49, 0xB1, 0x87, 0xC7, 0x57, 0xB9, 0x1D, 0x8F, 0x26, 0xB9, 0xE6, 0x4E, 0xDD, 0x51, 0x02, + 0x40, 0x4F, 0xE6, 0xC8, 0x11, 0x14, 0xA2, 0xF9, 0xC3, 0xD1, 0x7B, 0x74, 0x48, 0x8F, 0x33, 0xB4, + 0xF6, 0xFF, 0xEE, 0xDC, 0x4E, 0x34, 0xF9, 0x66, 0xB8, 0x25, 0x3A, 0x05, 0xF5, 0x29, 0x1B, 0x12, + 0x61, 0x6C, 0xCD, 0xF1, 0x0D, 0xE6, 0x68, 0xED, 0x81, 0x44, 0x96, 0x07, 0x5A, 0x43, 0x72, 0x93, + 0xDC, 0xEE, 0xD7, 0x81, 0x82, 0x22, 0x5E, 0x07, 0x15, 0x02, 0xA5, 0xE9, 0x54, 0x59, 0x86, 0x03, + 0x02, + }; +#endif // #ifdef METWL_VER_APPTYPE_LAUNCHER + +} // end of namespace MasterEditorTWL \ No newline at end of file diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.h new file mode 100644 index 0000000..d33aef3 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/keys.h @@ -0,0 +1,29 @@ +#pragma once + +// –¼—p‚ÌŒ®ƒf[ƒ^‚Ì錾 + +#include +#include + +namespace MasterEditorTWL +{ + // ŠJ”­‹@—pROMƒwƒbƒ_–¼Œ® + +#ifdef METWL_VER_APPTYPE_USER + extern const u8 g_devPubKey_DER[ 0xa2 ]; + extern const u8 g_devPrivKey_DER[ 0x263 ]; +#endif +#ifdef METWL_VER_APPTYPE_SYSTEM + extern const u8 g_devPubKey_DER_system[ 0xa2 ]; + extern const u8 g_devPrivKey_DER_system[ 0x263 ]; +#endif +#ifdef METWL_VER_APPTYPE_SECURE + extern const u8 g_devPubKey_DER_secure[ 0xa2 ]; + extern const u8 g_devPrivKey_DER_secure[ 0x263 ]; +#endif +#ifdef METWL_VER_APPTYPE_LAUNCHER + extern const u8 g_devPubKey_DER_launcher[ 0xa2 ]; + extern const u8 g_devPrivKey_DER_launcher[ 0x263 ]; +#endif + +} // end of namespace MasterEditorTWL diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/lang.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/lang.h new file mode 100644 index 0000000..d55b296 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/lang.h @@ -0,0 +1,106 @@ +#pragma once + +// —Ê‚ª‘½‚¢‚̂łЂƂ܂¸“ü—Í‚ ‚è‚Ì€–Ú‚Ì‚Ý + +#define LANG_PRODUCT_NAME_J ("»•i–¼") +#define LANG_PRODUCT_LIMIT_J ("(30•¶ŽšˆÈ“à)") +#define LANG_PRODUCT_CODE_J ("»•iƒR[ƒh") +#define LANG_RELEASE_DATE_J ("”­”„—\’è“ú") +#define LANG_SUBMIT_DATE_J ("‘—Þ’ño“ú") +#define LANG_SUBMIT_WAY_J ("’ño•û–@") +#define LANG_SUBMIT_POST_J ("—X‘—") +#define LANG_SUBMIT_HAND_J ("Žè“n‚µ") +#define LANG_USAGE_J ("—p“r") +#define LANG_USAGE_SALE_J ("ˆê”ʔ̔„—p") +#define LANG_USAGE_SAMPLE_J ("ŽŽ—V‘ä—p") +#define LANG_USAGE_DST_J ("ƒf[ƒ^”zM—p") +#define LANG_USAGE_OTHER_J ("‚»‚Ì‘¼") +#define LANG_BACKUP_J ("ƒoƒbƒNƒAƒbƒvƒƒ‚ƒŠ") +#define LANG_SUBMIT_VER_J ("’ñoƒo[ƒWƒ‡ƒ“") +#define LANG_SUBMIT_VER_CAP_J ("* ƒŠƒ}ƒXƒ^[ƒo[ƒWƒ‡ƒ“‚ªã‚ª‚邯ĂÑ0‚©‚çƒJƒEƒ“ƒg") +#define LANG_F_J ("ŠCŠO”Å") +#define LANG_PRODUCT_NAME_F_J ("»•i–¼") +#define LANG_PRODUCT_CODE_F_J ("»•iƒR[ƒh") +#define LANG_RELEASE_F_J ("ŠCŠO”ł𔭔„‚·‚é(—\’è)") +#define LANG_MULTI_F_J ("(•¡”‚ ‚éꇂ̂Ý)") +#define LANG_CAPTION_J ("”õl—“ - ‚»‚Ì‘¼˜A—Ž–€‚ª‚ ‚ê‚΂²‹L“ü‚­‚¾‚³‚¢") +#define LANG_PERSON_1_J ("’S“–ŽÒ1") +#define LANG_PERSON_2_J ("’S“–ŽÒ2") +#define LANG_INPUT_PERSON_2_J ("’S“–ŽÒ2‚ð“ü—Í‚·‚é") +#define LANG_COMPANY_J ("‹MŽÐ–¼") +#define LANG_DEPART_J ("•”–¼") +#define LANG_PERSON_J ("‚²Ž–¼") +#define LANG_FURIGANA_J ("‚ӂ肪‚È") +#define LANG_TEL_J ("Tel") +#define LANG_FAX_J ("Fax") +#define LANG_MAIL_J ("e-mail") +#define LANG_NTSC_1_J ("NTSC") +#define LANG_NTSC_2_J ("User ID") + +#define LANG_BOX_EULA_J ("EULA(—˜—p‹K–ñ)") +#define LANG_EULA_J ("EULA‚Ö‚Ì“¯ˆÓ‚ð•K—v‚Æ‚·‚é") +#define LANG_EULA_VER_J ("EULA“¯ˆÓƒo[ƒWƒ‡ƒ“") +#define LANG_ICON_J ("ƒƒjƒ…[ã‚ł̃AƒCƒRƒ“•\ަ") +#define LANG_WIRELESS_ICON_J ("DSƒƒCƒ„ƒŒƒX’ÊMƒAƒCƒRƒ“•\ަ") +#define LANG_WIFI_ICON_J ("Wi-Fi’ÊMƒAƒCƒRƒ“•\ަ") +#define LANG_NO_ICON_J ("ƒAƒCƒRƒ“‚ð•\ަ‚µ‚È‚¢") +#define LANG_REGION_PCTL_J ("ƒŠ[ƒWƒ‡ƒ“‚ƃŠ[ƒWƒ‡ƒ“î•ñ") +#define LANG_REGION_J ("ƒŠ[ƒWƒ‡ƒ“") +#define LANG_PCTL_RATING_J ("ƒŒ[ƒeƒBƒ“ƒO”N—î") +#define LANG_PCTL_ENABLE_J ("§ŒÀ‚ð—LŒø") +#define LANG_PCTL_ALWAYS_J ("R¸’†") +#define LANG_OTHER_SPEC_J ("‚»‚Ì‘¼ROMŽd—l") +#define LANG_UGC_J ("UGC(User Generated Contents)‘Ήž") +#define LANG_PHOTO_EX_J ("ŽÊ^ŒðŠ·‘Ήž") + + +#define LANG_PRODUCT_NAME_E ("Product Name") +#define LANG_PRODUCT_LIMIT_E ("(Shorter than 30 chars)") +#define LANG_PRODUCT_CODE_E ("Product Code") +#define LANG_RELEASE_DATE_E ("Launch Date") +#define LANG_SUBMIT_DATE_E ("Submission Date") +#define LANG_SUBMIT_WAY_E ("How to submit") +#define LANG_SUBMIT_POST_E ("Mail") +#define LANG_SUBMIT_HAND_E ("Handover") +#define LANG_USAGE_E ("Purpose") +#define LANG_USAGE_SALE_E ("For Sale") +#define LANG_USAGE_SAMPLE_E ("For Trial") +#define LANG_USAGE_DST_E ("For Network Distribution") +#define LANG_USAGE_OTHER_E ("Other") +#define LANG_SUBMIT_VER_E ("Submission Ver.") +#define LANG_BACKUP_E ("Backup Memory") +#define LANG_SUBMIT_VER_CAP_E ("* return to 0 when release ver. is updated.") +#define LANG_F_E ("Foreign Ver.") +#define LANG_PRODUCT_NAME_F_E ("Product Name") +#define LANG_PRODUCT_CODE_F_E ("Product Code") +#define LANG_RELEASE_F_E ("Foreign Ver. is scheduled to go on sale") +#define LANG_MULTI_F_E ("(Only Release Multi Ver.)") +#define LANG_CAPTION_E ("Remarks Item - Please write further information.") +#define LANG_PERSON_1_E ("Account1") +#define LANG_PERSON_2_E ("Account2") +#define LANG_INPUT_PERSON_2_E ("Input Account2") +#define LANG_COMPANY_E ("Company") +#define LANG_DEPART_E ("Dept.") +#define LANG_PERSON_E ("Contact") +#define LANG_FURIGANA_E ("") +#define LANG_TEL_E ("Tel") +#define LANG_FAX_E ("Fax") +#define LANG_MAIL_E ("e-mail") +#define LANG_NTSC_1_E ("") +#define LANG_NTSC_2_E ("") + +#define LANG_BOX_EULA_E ("EULA") +#define LANG_EULA_E ("Require EULA Agreement") +#define LANG_EULA_VER_E ("EULA agreement ver.") +#define LANG_ICON_E ("Icons on the Menu") +#define LANG_WIRELESS_ICON_E ("Display an Icon of DS Wireless") +#define LANG_WIFI_ICON_E ("Display an Icon of Wi-Fi connection") +#define LANG_NO_ICON_E ("Display No Icon") +#define LANG_REGION_PCTL_E ("Region and Rating Information") +#define LANG_REGION_E ("Region") +#define LANG_PCTL_RATING_E ("Rating Information") +#define LANG_PCTL_ENABLE_E ("Enable Control") +#define LANG_PCTL_ALWAYS_E ("Rating Pending") +#define LANG_OTHER_SPEC_E ("Other ROM Spec.") +#define LANG_UGC_E ("UGC(User Generated Contents) Support") +#define LANG_PHOTO_EX_E ("Photo Exchange Support") diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/resource.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/resource.h new file mode 100644 index 0000000..1f2251c --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/resource.h @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp new file mode 100644 index 0000000..da4b878 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -0,0 +1,1794 @@ +// srl.h ‚̃Nƒ‰ƒXŽÀ‘• + +#include "stdafx.h" +#include +#include "common.h" +#include "srl.h" +#include "utility.h" +#include "keys.h" +#include "crc_whole.h" +#include +#include +#include +#include + +using namespace MasterEditorTWL; + +extern const u8 gBannerFont[]; + +// +// RCSrl ƒNƒ‰ƒX +// + +// constructor +RCSrl::RCSrl() +{ + this->pRomHeader = new (ROM_Header); + std::memset( pRomHeader, 0, sizeof(ROM_Header) ); + + this->hMrcSpecialList = gcnew RCMrcSpecialList(); +} + +// destructor +RCSrl::~RCSrl() +{ + // ƒ|ƒCƒ“ƒ^‚Í(‚½‚Ô‚ñ) unmanaged ‚Ȃ̂Ŏ©Žå“I‚ɉð•ú‚·‚é + delete (this->pRomHeader); +} + +// +// ROMƒwƒbƒ_‚ðƒtƒ@ƒCƒ‹‚©‚烊[ƒh +// +// @arg [in] “ü—̓tƒ@ƒCƒ‹–¼ +// +ECSrlResult RCSrl::readFromFile( System::String ^filename ) +{ + FILE *fp = NULL; + const char *pchFilename = + (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi( filename ).ToPointer(); + ECSrlResult r; + + // ƒtƒ@ƒCƒ‹‚ðŠJ‚¢‚ÄROMƒwƒbƒ_‚̂ݓǂÝo‚· + if( fopen_s( &fp, pchFilename, "rb" ) != NULL ) + { + return (ECSrlResult::ERROR_FILE_OPEN); + } + (void)fseek( fp, 0, SEEK_SET ); // ROMƒwƒbƒ_‚Ísrl‚Ìæ“ª‚©‚ç + + // 1ƒoƒCƒg‚ðsizeof(~)‚¾‚¯ƒŠ[ƒh (‹t‚¾‚ƕԂè’l‚ªsizeof(~)‚ɂȂç‚È‚¢‚̂ŒˆÓ) + if( fread( (void*)(this->pRomHeader), 1, sizeof(ROM_Header), fp ) != sizeof(ROM_Header) ) + { + return (ECSrlResult::ERROR_FILE_READ); + } + { + // ƒtƒ@ƒCƒ‹‚ð•‚¶‚é‘O‚ÉROMƒwƒbƒ_ˆÈŠO‚̗̈悩‚çÝ’è‚ðŽæ‚èo‚· + (void)this->hasDSDLPlaySign( fp ); + r = this->searchSDKVersion( fp ); + if( r != ECSrlResult::NOERROR ) + { + (void)fclose(fp); + return r; + } + r = this->searchLicenses( fp ); + if( r != ECSrlResult::NOERROR ) + { + (void)fclose(fp); + return r; + } + } + +#ifdef METWL_WHETHER_SIGN_DECRYPT + // ‚Ü‚¸–¼ƒ`ƒFƒbƒN + r = this->decryptRomHeader(); + if( r != ECSrlResult::NOERROR ) + { + (void)fclose(fp); + return r; + } +#endif //#ifdef METWL_WHETHER_SIGN_DECRYPT + + // ƒGƒ‰[ƒŠƒXƒg‚ðƒNƒŠƒA + this->hErrorList = gcnew System::Collections::Generic::List; + this->hWarnList = gcnew System::Collections::Generic::List; + this->hParentalErrorList = gcnew System::Collections::Generic::List; + this->hErrorList->Clear(); + this->hWarnList->Clear(); + this->hParentalErrorList->Clear(); + + // ROMƒwƒbƒ_‚Ì’l‚ðROMŒÅ—Lî•ñƒtƒB[ƒ‹ƒh‚É”½‰f‚³‚¹‚é + (void)this->setRomInfo(); + + // ‚·‚ׂÄݒ肵‚½‚ ‚Æ‚ÉMRC + { + ECSrlResult r; + r = this->mrc( fp ); + if( r != ECSrlResult::NOERROR ) + { + (void)fclose(fp); + return r; + } + } + (void)fclose( fp ); + return (ECSrlResult::NOERROR); +} + +// +// ROMƒwƒbƒ_‚ðƒtƒ@ƒCƒ‹‚Ƀ‰ƒCƒg +// +// @arg [in] o—̓tƒ@ƒCƒ‹–¼ +// +ECSrlResult RCSrl::writeToFile( System::String ^filename ) +{ + FILE *fp = NULL; + const char *pchFilename = + (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi( filename ).ToPointer(); + ECSrlResult result; + + // ROMƒwƒbƒ_‚ÉROMŒÅ—Lî•ñ‚𔽉f‚³‚¹‚é + result = this->setRomHeader(); + if( result != ECSrlResult::NOERROR ) + { + return result; + } + + // ƒtƒ@ƒCƒ‹‚ÉROMƒwƒbƒ_‚ðƒ‰ƒCƒg + if( fopen_s( &fp, pchFilename, "r+b" ) != NULL ) // ã‘‚«EƒoƒCƒiƒŠ + { + return (ECSrlResult::ERROR_FILE_OPEN); + } + (void)fseek( fp, 0, SEEK_SET ); + + if( fwrite( (const void*)(this->pRomHeader), 1, sizeof(ROM_Header), fp ) != sizeof(ROM_Header) ) + { + return (ECSrlResult::ERROR_FILE_WRITE); + } + (void)fclose( fp ); + + return (ECSrlResult::NOERROR); +} + +// +// ROMƒwƒbƒ_‚©‚çŽæ“¾‚µ‚½ROMŒÅ—Lî•ñ‚ðƒtƒB[ƒ‹ƒh‚É”½‰f‚³‚¹‚é +// +ECSrlResult RCSrl::setRomInfo(void) +{ + System::Int32 i; + System::Text::UTF8Encoding^ utf8 = gcnew System::Text::UTF8Encoding( true ); // char->String•ÏŠ·‚É•K—v + + // NTRŒÝŠ·î•ñ + this->hTitleName = gcnew System::String( this->pRomHeader->s.title_name, 0, TITLE_NAME_MAX, utf8 ); + this->hGameCode = gcnew System::String( this->pRomHeader->s.game_code, 0, GAME_CODE_MAX, utf8 ); + this->hMakerCode = gcnew System::String( this->pRomHeader->s.maker_code, 0, MAKER_CODE_MAX, utf8 ); + switch( this->pRomHeader->s.platform_code ) + { + case PLATFORM_CODE_NTR: this->hPlatform = gcnew System::String( "NTR Limited" ); break; + case PLATFORM_CODE_TWL_HYBLID: this->hPlatform = gcnew System::String( "NTR/TWL Hybrid" ); break; + case PLATFORM_CODE_TWL_LIMITED: this->hPlatform = gcnew System::String( "TWL Limited" ); break; + default: + this->hPlatform = nullptr; + break; + } + this->hRomSize = MasterEditorTWL::transRomSizeToString( this->pRomHeader->s.rom_size ); + //this->hForKorea = gcnew System::Byte( this->pRomHeader->s.for_korea ); + //this->hForChina = gcnew System::Byte( this->pRomHeader->s.for_china ); + this->hRomVersion = gcnew System::Byte( this->pRomHeader->s.rom_version ); + this->hHeaderCRC = gcnew System::UInt16( this->pRomHeader->s.header_crc16 ); + this->hIsOldDevEncrypt = gcnew System::Boolean( (this->pRomHeader->s.developer_encrypt_old != 0)?true:false ); + + switch( this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK ) + { + case CARD_MROM_GAME_LATENCY: + this->hLatency = "MROM"; + break; + + case CARD_1TROM_GAME_LATENCY: + this->hLatency = "1TROM"; + break; + + default: + this->hLatency = "Illegal"; + break; + } + + // TWLê—pî•ñ + this->hIsNormalJump = gcnew System::Boolean( (this->pRomHeader->s.permit_landing_normal_jump != 0)?true:false ); + this->hIsTmpJump = gcnew System::Boolean( (this->pRomHeader->s.permit_landing_tmp_jump != 0)?true:false ); + this->hNormalRomOffset = gcnew System::UInt32( (u32)(this->pRomHeader->s.twl_card_normal_area_rom_offset) * 0x80000 ); + this->hKeyTableRomOffset = gcnew System::UInt32( (u32)(this->pRomHeader->s.twl_card_keytable_area_rom_offset) * 0x80000 ); + this->hPublicSize = gcnew System::UInt32( this->pRomHeader->s.public_save_data_size ); + this->hPrivateSize = gcnew System::UInt32( this->pRomHeader->s.private_save_data_size ); + + u8 *idL = this->pRomHeader->s.titleID_Lo; + u32 idH = this->pRomHeader->s.titleID_Hi; + //u32 val; + //val = ((u32)(idL[0]) << 24) | ((u32)(idL[1]) << 16) | ((u32)(idL[2]) << 8) | ((u32)(idL[3])); // ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ + //this->hTitleIDLo = gcnew System::UInt32( val ); + this->hTitleIDLo = gcnew System::String( (char*)idL, 0, 4, utf8 ); + this->hTitleIDHi = gcnew System::UInt32( idH ); + + // TitleID‚©‚ç‚í‚©‚éî•ñ + this->hIsAppLauncher = gcnew System::Boolean( false ); + this->hIsAppUser = gcnew System::Boolean( false ); + this->hIsAppSystem = gcnew System::Boolean( false ); + this->hIsAppSecure = gcnew System::Boolean( false ); + this->hIsLaunch = gcnew System::Boolean( false ); + this->hIsMediaNand = gcnew System::Boolean( false ); + this->hIsDataOnly = gcnew System::Boolean( false ); + if( (idL[3]=='H') && (idL[2]=='N') && (idL[1]=='A') ) // ƒ‰ƒ“ƒ`ƒƒƒAƒvƒŠ‚©‚Ç‚¤‚©‚ÍTitleID_Lo‚Ì’l‚ÅŒˆ’è + { + *(this->hIsAppLauncher) = true; + } + else if( idH & TITLE_ID_HI_SECURE_FLAG_MASK ) // Šeƒrƒbƒg‚Í”r‘¼“I‚Ƃ͌À‚ç‚È‚¢‚Ì‚Åelse if‚ɂ͂Ȃç‚È‚¢ + { + *(this->hIsAppSecure) = true; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 1 ) + { + *(this->hIsAppSystem) = true; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 0 ) + { + *(this->hIsAppUser) = true; + } + if( idH & TITLE_ID_HI_DATA_ONLY_FLAG_MASK ) + { + *(this->hIsDataOnly) = true; + } + if( idH & TITLE_ID_HI_MEDIA_MASK ) + { + *(this->hIsMediaNand) = true; + } + if( (idH & TITLE_ID_HI_NOT_LAUNCH_FLAG_MASK) == 0 ) // ƒrƒbƒg‚ª0‚̂Ƃ«Launch + { + *(this->hIsLaunch) = true; + } + u16 pub = (u16)((idH & TITLE_ID_HI_PUBLISHER_CODE_MASK) >> TITLE_ID_HI_PUBLISHER_CODE_SHIFT); + this->hPublisherCode = gcnew System::UInt16( pub ); + + // TWLŠg’£ƒtƒ‰ƒO + this->hIsCodecTWL = gcnew System::Boolean( (this->pRomHeader->s.exFlags.codec_mode != 0)?true:false ); + this->hIsEULA = gcnew System::Boolean( (this->pRomHeader->s.exFlags.agree_EULA != 0)?true:false ); + this->hIsSubBanner = gcnew System::Boolean( (this->pRomHeader->s.exFlags.availableSubBannerFile != 0)?true:false ); + this->hIsWiFiIcon = gcnew System::Boolean( (this->pRomHeader->s.exFlags.WiFiConnectionIcon != 0)?true:false ); + this->hIsWirelessIcon = gcnew System::Boolean( (this->pRomHeader->s.exFlags.DSWirelessIcon != 0)?true:false ); + this->hIsWL = gcnew System::Boolean( (this->pRomHeader->s.exFlags.enable_nitro_whitelist_signature != 0)?true:false ); + + // TWLƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹ + this->hIsCommonClientKey = gcnew System::Boolean( (this->pRomHeader->s.access_control.common_client_key != 0)?true:false ); + this->hIsAesSlotBForES = gcnew System::Boolean( (this->pRomHeader->s.access_control.hw_aes_slot_B != 0)?true:false ); + this->hIsAesSlotCForNAM = gcnew System::Boolean( (this->pRomHeader->s.access_control.hw_aes_slot_C != 0)?true:false ); + this->hIsSD = gcnew System::Boolean( (this->pRomHeader->s.access_control.sd_card_access != 0)?true:false ); + this->hIsNAND = gcnew System::Boolean( (this->pRomHeader->s.access_control.nand_access != 0)?true:false ); + this->hIsGameCardOn = gcnew System::Boolean( (this->pRomHeader->s.access_control.game_card_on != 0)?true:false ); + this->hIsShared2 = gcnew System::Boolean( (this->pRomHeader->s.access_control.shared2_file != 0)?true:false ); + this->hIsAesSlotBForJpegEnc = gcnew System::Boolean( (this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForLauncher != 0)?true:false ); + this->hIsAesSlotBForJpegEncUser = gcnew System::Boolean( (this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForUser != 0)?true:false ); + this->hIsGameCardNitro = gcnew System::Boolean( (this->pRomHeader->s.access_control.game_card_nitro_mode != 0)?true:false ); + this->hIsAesSlotAForSSL = gcnew System::Boolean( (this->pRomHeader->s.access_control.hw_aes_slot_A_SSLClientCert != 0)?true:false ); + this->hIsCommonClientKeyForDebugger + = gcnew System::Boolean( (this->pRomHeader->s.access_control.common_client_key_for_debugger_sysmenu != 0)?true:false ); + + // SCFG ‚ªƒƒbƒN‚³‚ê‚é‚© + if( (this->pRomHeader->s.arm7_scfg_ext >> 31) != 0 ) + { + this->hIsSCFGAccess = gcnew System::Boolean( true ); + } + else + { + this->hIsSCFGAccess = gcnew System::Boolean( false ); + } + + + // Shared2ƒtƒ@ƒCƒ‹ƒTƒCƒY + this->hShared2SizeArray = gcnew cli::array(METWL_NUMOF_SHARED2FILES); + for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) + { + this->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + } + u32 unit = 16 * 1024; // 16KB‚Ìæ”‚ªŠi”[‚³‚ê‚Ä‚¢‚é + if( this->pRomHeader->s.shared2_file0_size != 0 ) + { + *(this->hShared2SizeArray[0]) = (this->pRomHeader->s.shared2_file0_size * unit) + unit; + } + if( this->pRomHeader->s.shared2_file1_size != 0 ) + { + *(this->hShared2SizeArray[1]) = (this->pRomHeader->s.shared2_file1_size * unit) + unit; + } + if( this->pRomHeader->s.shared2_file2_size != 0 ) + { + *(this->hShared2SizeArray[2]) = (this->pRomHeader->s.shared2_file2_size * unit) + unit; + } + if( this->pRomHeader->s.shared2_file3_size != 0 ) + { + *(this->hShared2SizeArray[3]) = (this->pRomHeader->s.shared2_file3_size * unit) + unit; + } + if( this->pRomHeader->s.shared2_file4_size != 0 ) + { + *(this->hShared2SizeArray[4]) = (this->pRomHeader->s.shared2_file4_size * unit) + unit; + } + if( this->pRomHeader->s.shared2_file5_size != 0 ) + { + *(this->hShared2SizeArray[5]) = (this->pRomHeader->s.shared2_file5_size * unit) + unit; + } + + // ƒJ[ƒhƒŠ[ƒWƒ‡ƒ“ + const u32 map = this->pRomHeader->s.card_region_bitmap; + this->hIsRegionJapan = gcnew System::Boolean( ((map & METWL_MASK_REGION_JAPAN) != 0)?true:false ); + this->hIsRegionAmerica = gcnew System::Boolean( ((map & METWL_MASK_REGION_AMERICA) != 0)?true:false ); + this->hIsRegionEurope = gcnew System::Boolean( ((map & METWL_MASK_REGION_EUROPE) != 0)?true:false ); + this->hIsRegionAustralia = gcnew System::Boolean( ((map & METWL_MASK_REGION_AUSTRALIA) != 0)?true:false ); + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + this->setParentalControlInfo(); + + return ECSrlResult::NOERROR; +} // ECSrlResult RCSrl::setRomInfo(void) + +// ROMƒwƒbƒ_“à‚̃yƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ðƒtƒB[ƒ‹ƒh‚É”½‰f‚³‚¹‚é +void RCSrl::setParentalControlInfo(void) +{ + // ƒŠ[ƒWƒ‡ƒ“‚Ɋ܂܂ê‚Ä‚¢‚È‚¢‚à‚͓̂ǂݞ‚܂Ȃ¢ + this->hArrayParentalIndex = gcnew cli::array(PARENTAL_CONTROL_INFO_SIZE); + + int i; + for( i=0; i < PARENTAL_CONTROL_INFO_SIZE; i++ ) + { + this->hArrayParentalIndex[i] = -1; + } + + // ƒŠ[ƒWƒ‡ƒ“‚Ɋ܂܂ê‚Ä‚¢‚é’c‘Ì‚ðƒŠƒXƒgƒAƒbƒv + u32 region = this->pRomHeader->s.card_region_bitmap; + switch( region ) + { + case METWL_MASK_REGION_JAPAN: + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_CERO ); // ƒŠ[ƒWƒ‡ƒ“‚Ɋ܂܂ê‚È‚¢’c‘Ì‚Ìî•ñ‚͓ǂݞ‚܂Ȃ¢ + break; + + case METWL_MASK_REGION_AMERICA: + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_ESRB ); + break; + + case METWL_MASK_REGION_EUROPE: + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_USK ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_GEN ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_PRT ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_BBFC ); + break; + + case METWL_MASK_REGION_AUSTRALIA: + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_OFLC ); + break; + + case (METWL_MASK_REGION_EUROPE|METWL_MASK_REGION_AUSTRALIA): + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_USK ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_GEN ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_PRT ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_BBFC ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_OFLC ); + break; + +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + case METWL_MASK_REGION_ALL: + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_CERO ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_ESRB ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_USK ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_GEN ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_PRT ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_PEGI_BBFC ); + this->setOneRatingOrgInfo( OS_TWL_PCTL_OGN_OFLC ); + break; +#endif //#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + + default: + this->hParentalErrorList->Add( gcnew RCMrcError( + "ƒJ[ƒhƒŠ[ƒWƒ‡ƒ“", 0x1b0, 0x1b3, "ŽdŒü’n‚Ì‘g‚݇‚킹‚ª•s³‚Å‚·BƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚Í–³Ž‹‚µ‚ēǂݞ‚Ü‚ê‚Ü‚µ‚½B", + "Card Region", "Illigal Region. Parental Control Information is ignored in reading.", true, true ) ); + break; + } +} + +// ’c‘̂̃Œ[ƒeƒBƒ“ƒOî•ñ‚©‚çƒRƒ“ƒ{ƒ{ƒbƒNƒX‚̃Cƒ“ƒfƒbƒNƒX‚ðŒˆ’è‚·‚é +void RCSrl::setOneRatingOrgInfo( int ogn ) +{ + System::Boolean enable = ((this->pRomHeader->s.parental_control_rating_info[ ogn ] & OS_TWL_PCTL_OGNINFO_ENABLE_MASK) != 0)?true:false; + System::Boolean rp = ((this->pRomHeader->s.parental_control_rating_info[ ogn ] & OS_TWL_PCTL_OGNINFO_ALWAYS_MASK) != 0)?true:false; + System::Byte age = this->pRomHeader->s.parental_control_rating_info[ ogn ] & OS_TWL_PCTL_OGNINFO_AGE_MASK; + + cli::array ^ages = MasterEditorTWL::getOgnRatingAges( ogn ); + System::String ^name = MasterEditorTWL::getOgnName( ogn ); + + int index = -1; + if( !enable ) // –¢’è‹` + { + index = -1; + this->hParentalErrorList->Add( gcnew RCMrcError( + "ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x2f0, 0x2ff, + name + ": –¢’è‹`‚Å‚·B", + "Parental Control Info.", + name + ": Undefined.", true, true ) ); + } + else + { + if( rp ) // R¸’† + { + if( age == 0 ) // ”N—0‚̂Ƃ«‚ÍR¸’†‚Ƃ݂Ȃ· + { + index = ages->Length; // ”z—ñ‚ÌÅŒã‚Ì—v‘f‚ÌŽŸ‚ªuR¸’†v + } + else + { + index = -1; // ‚»‚êˆÈŠO‚̓Gƒ‰[ + this->hParentalErrorList->Add( gcnew RCMrcError( + "ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x2f0, 0x2ff, + name + ": R¸’†Žw’è‚ÆƒŒ[ƒeƒBƒ“ƒO”N—“¯Žž‚Éݒ肳‚ê‚Ä‚¢‚Ü‚·B", + "Parental Control Info.", + name + ": Both the Rating-Peding setting and the rating age are setting.", true, true ) ); + } + } + else + { + index = -1; // ’c‘Ì‚ª”F‚߂Ă¢‚È‚¢”N—Ši”[‚³‚ê‚Ä‚¢‚邯‚«ƒGƒ‰[ + int i; + for( i=0; i < ages->Length; i++ ) + { + if( age == ages[i] ) + { + index = i; + } + } + if( index < 0 ) + { + this->hParentalErrorList->Add( gcnew RCMrcError( + "ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x2f0, 0x2ff, + name + ": ƒŒ[ƒeƒBƒ“ƒO”N—’c‘̂ɂæ‚Á‚ÄŽw’肳‚ꂽ’l‚ł͂ ‚è‚Ü‚¹‚ñB", + "Parental Control Info.", + name + ": An age isn't accepted by the organization.", true, true ) ); + } + } + } + this->hArrayParentalIndex[ ogn ] = index; +} + +// +// ROMƒwƒbƒ_‚ÉROMŒÅ—Lî•ñƒtƒB[ƒ‹ƒh‚Ì’l‚𔽉f‚³‚¹‚é +// +ECSrlResult RCSrl::setRomHeader(void) +{ + ECSrlResult result; + + // ROMƒwƒbƒ_‚Ì[0,0x160)‚̗̈æ‚ÍRead Only‚Å•ÏX‚µ‚È‚¢ + + // ‚¢‚­‚‚©‚̃tƒ‰ƒO‚ðROMƒwƒbƒ_‚É”½‰f + this->pRomHeader->s.exFlags.agree_EULA = (*(this->hIsEULA) == true)?1:0; + this->pRomHeader->s.exFlags.WiFiConnectionIcon = (*(this->hIsWiFiIcon) == true)?1:0; + this->pRomHeader->s.exFlags.DSWirelessIcon = (*(this->hIsWirelessIcon) == true)?1:0; + + // ƒŒ[ƒeƒBƒ“ƒO + u32 map = 0; + if( *(this->hIsRegionJapan) == true ) { map |= METWL_MASK_REGION_JAPAN; } + if( *(this->hIsRegionAmerica) == true ) { map |= METWL_MASK_REGION_AMERICA; } + if( *(this->hIsRegionEurope) == true ) { map |= METWL_MASK_REGION_EUROPE; } + if( *(this->hIsRegionAustralia) == true ){ map |= METWL_MASK_REGION_AUSTRALIA; } +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( (*(this->hIsRegionJapan) == true ) && (*(this->hIsRegionAmerica) == true) + && (*(this->hIsRegionEurope) == true ) && (*(this->hIsRegionAustralia) == true) + ) + { + map |= METWL_MASK_REGION_ALL; // ƒI[ƒ‹ƒŠ[ƒWƒ‡ƒ“‚ð‹–‚· + } +#endif + this->pRomHeader->s.card_region_bitmap = map; + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + this->setParentalControlHeader(); + + // ROMƒwƒbƒ_‚ÌCRC‚Æ–¼‚ðXV‚·‚é + result = this->calcRomHeaderCRC(); + if( result != ECSrlResult::NOERROR ) + { + return result; + } + result = this->signRomHeader(); + if( result != ECSrlResult::NOERROR ) + { + return result; + } + + return ECSrlResult::NOERROR; +} // ECSrlResult RCSrl::setRomHeader(void) + +// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚̃vƒƒpƒeƒB‚ðROMƒwƒbƒ_‚É”½‰f‚³‚¹‚é +void RCSrl::setParentalControlHeader(void) +{ + int i; + for( i=0; i < PARENTAL_CONTROL_INFO_SIZE; i++ ) + { + cli::array ^ages = MasterEditorTWL::getOgnRatingAges( i ); // Ý’è‰Â”\”N—ƒXƒg‚ðŽæ“¾ + + u8 rating; + if( this->hArrayParentalIndex[i] < 0 ) // –¢’è‹` + { + rating = 0x00; + } + else + { + int index = this->hArrayParentalIndex[i]; + if( index == ages->Length ) // R¸’† + { + rating = OS_TWL_PCTL_OGNINFO_ENABLE_MASK | OS_TWL_PCTL_OGNINFO_ALWAYS_MASK; + } + else // ƒŒ[ƒeƒBƒ“ƒO”N—î‚ðÝ’è + { + rating = OS_TWL_PCTL_OGNINFO_ENABLE_MASK | ages[ index ]; + } + } + this->pRomHeader->s.parental_control_rating_info[i] = rating; + } +} + +// +// ƒwƒbƒ_‚ÌCRC‚ðŽZo +// +static u16 calcCRC( const u16 start, const u8 *data, const int allsize ) +{ + u16 r1; + u16 total = start; + int size = allsize; + + // CRCƒe[ƒuƒ‹‚͌Œè + const u16 CRC16Table[16] = + { + 0x0000, 0xCC01, 0xD801, 0x1400, + 0xF001, 0x3C00, 0x2800, 0xE401, + 0xA001, 0x6C00, 0x7800, 0xB401, + 0x5000, 0x9C01, 0x8801, 0x4400 + }; + + // CRCŒvŽZ + while (size-- > 0) + { + // ‰ºˆÊ4bit + r1 = CRC16Table[total & 0xf]; + total = (total >> 4) & 0x0fff; + total = total ^ r1 ^ CRC16Table[*data & 0xf]; + + // ãˆÊ4bit + r1 = CRC16Table[total & 0xf]; + total = (total >> 4) & 0x0fff; + total = total ^ r1 ^ CRC16Table[(*data >> 4) & 0xf]; + + data++; + } + return total; +} // calcRomHeaderCRCCore() + +ECSrlResult RCSrl::calcRomHeaderCRC(void) +{ + // ROMƒwƒbƒ_‚ÌCRC—̈æ‚ðã‘‚« + this->pRomHeader->s.header_crc16 = calcCRC( CRC16_INIT_VALUE, (u8*)this->pRomHeader, CALC_CRC16_SIZE ); + + return (ECSrlResult::NOERROR); +} // ECSrlResult RCSrl::calcRomHeaderCRC(void) + +// +// ROMƒwƒbƒ_‚ðÄ–¼ +// +ECSrlResult RCSrl::signRomHeader(void) +{ + SignatureData signSrc; // –¼‚Ì‚à‚Æ‚ƂȂéƒ_ƒCƒWƒFƒXƒg’l + u8 signDst[ RSA_KEY_LENGTH ]; // –¼‚ÌŠi”[æTmpƒoƒbƒtƒ@ + u8 decryptBlock[ RSA_KEY_LENGTH ]; // –¼‚ð‰ðœŒãƒuƒƒbƒNƒoƒbƒtƒ@ + BOOL result = false; + ROM_Header rh; + int pos; + u8 *privateKey = (u8*)g_devPrivKey_DER; + u8 *publicKey = (u8*)g_devPubKey_DER; + + // ROMƒwƒbƒ_‚̃_ƒCƒWƒFƒXƒg‚ðŽZo(擪‚©‚çØ–¾‘—̈æ‚Ì’¼‘O‚܂łª‘ÎÛ) + ACSign_DigestUnit( + signSrc.digest, + this->pRomHeader, + (u32)&(rh.certificate) - (u32)&(rh) // this->pRomHeader ‚̓}ƒl[ƒWƒq[ƒvã‚É‚ ‚é‚̂ŎÀƒAƒhƒŒƒX‚ðŽæ“¾‚Å‚«‚È‚¢ + ); + + // Œ®‚ð‘I‚Ô +#ifdef METWL_VER_APPTYPE_LAUNCHER + if( *this->hIsAppLauncher ) + { + privateKey = (u8*)g_devPrivKey_DER_launcher; + publicKey = (u8*)g_devPubKey_DER_launcher; + } + else +#endif //METWL_VER_APPTYPE_LAUNCHER +#ifdef METWL_VER_APPTYPE_SECURE + if( *this->hIsAppSecure ) + { + privateKey = (u8*)g_devPrivKey_DER_secure; + publicKey = (u8*)g_devPubKey_DER_secure; + } + else +#endif //METWL_VER_APPTYPE_SECURE +#ifdef METWL_VER_APPTYPE_SYSTEM + if( *this->hIsAppSystem ) + { + privateKey = (u8*)g_devPrivKey_DER_system; + publicKey = (u8*)g_devPubKey_DER_system; + } + else +#endif //METWL_VER_APPTYPE_SYSTEM +#ifdef METWL_VER_APPTYPE_USER + { + privateKey = (u8*)g_devPrivKey_DER; + publicKey = (u8*)g_devPubKey_DER; + } +#endif //METWL_VER_APPTYPE_USER + + // ƒ_ƒCƒWƒFƒXƒg‚É–¼‚ð‚©‚¯‚é + result = ACSign_Encrypto( signDst, privateKey, &signSrc, sizeof(SignatureData) ); + if( !result ) + { + return (ECSrlResult::ERROR_SIGN_ENCRYPT); + } + + // –¼‚ð‰ðœ‚µ‚ă_ƒCƒWƒFƒXƒg‚ƈê’v‚·‚é‚©ƒxƒŠƒtƒ@ƒC‚·‚é + result = ACSign_Decrypto( decryptBlock, publicKey, signDst, RSA_KEY_LENGTH ); + for( pos=0; pos < RSA_KEY_LENGTH; pos++ ) + { + if( decryptBlock[pos] == 0x0 ) // ‰ðœŒãƒuƒƒbƒN‚©‚çŽÀƒf[ƒ^‚ðƒT[ƒ` + break; + } + if( !result || (memcmp( &signSrc, &(decryptBlock[pos+1]), sizeof(SignatureData) ) != 0) ) + { + return (ECSrlResult::ERROR_SIGN_DECRYPT); + } + + // ROMƒwƒbƒ_‚É–¼‚ðã‘‚« + memcpy( this->pRomHeader->signature, signDst, RSA_KEY_LENGTH ); + + return (ECSrlResult::NOERROR); +} // ECSrlResult RCSrl::signRomHeader(void) + +// +// ROMƒwƒbƒ_‚Ì–¼‚ðŠO‚· +// +ECSrlResult RCSrl::decryptRomHeader(void) +{ + u8 original[ RSA_KEY_LENGTH ]; // –¼ŠO‚µ‚½Œã‚̃f[ƒ^Ši”[æ + s32 pos = 0; // ƒuƒƒbƒN‚Ìæ“ªƒAƒhƒŒƒX + u8 digest[ DIGEST_SIZE_SHA1 ]; // ROMƒwƒbƒ_‚̃_ƒCƒWƒFƒXƒg + u8 *publicKey = (u8*)g_devPubKey_DER; + ROM_Header rh; + + // <ƒf[ƒ^‚Ì—¬‚ê> + // (1) ŒöŠJŒ®‚Å•œ†‚µ‚½Œ‹‰Ê(ƒuƒƒbƒN)‚ðƒ[ƒJƒ‹•Ï”(original)‚ÉŠi”[ + // (2) ƒuƒƒbƒN‚©‚ç—]•ª‚È•”•ª‚ðŽæ‚èœ‚¢‚Ĉø”(pDst)‚ɃRƒs[ + + ECAppType type = this->selectAppType(); + + // Œ®‚ð‘I‚Ô +#ifdef METWL_VER_APPTYPE_LAUNCHER + if( type == ECAppType::LAUNCHER ) + { + publicKey = (u8*)g_devPubKey_DER_launcher; + } + else +#endif //METWL_VER_APPTYPE_LAUNCHER +#ifdef METWL_VER_APPTYPE_SECURE + if( type == ECAppType::SECURE ) + { + publicKey = (u8*)g_devPubKey_DER_secure; + } + else +#endif //METWL_VER_APPTYPE_SECURE +#ifdef METWL_VER_APPTYPE_SYSTEM + if( type == ECAppType::SYSTEM ) + { + publicKey = (u8*)g_devPubKey_DER_system; + } + else +#endif //METWL_VER_APPTYPE_SYSTEM +#ifdef METWL_VER_APPTYPE_USER + { + publicKey = (u8*)g_devPubKey_DER; + } +#endif //METWL_VER_APPTYPE_USER + + // –¼‚̉ðœ = ŒöŠJŒ®‚Å•œ† + if( !ACSign_Decrypto( original, publicKey, this->pRomHeader->signature, RSA_KEY_LENGTH ) ) + { + return ECSrlResult::ERROR_SIGN_DECRYPT; + } + // –¼‘Oƒf[ƒ^‚𕜆ŒãƒuƒƒbƒN‚©‚çƒQƒbƒg + for( pos=0; pos < (RSA_KEY_LENGTH-2); pos++ ) // –{—ˆƒuƒƒbƒN‚Ìæ“ª‚Í0x00‚¾‚ª•œ†‰»‚Ì“à•”ˆ—‚É‚æ‚Á‚ÄÁ‚¦‚éŽd—l + { + // ˆÃ†ƒuƒƒbƒNŒ`Ž® = 0x00, BlockType, Padding, 0x00, ŽÀƒf[ƒ^ + if( original[pos] == 0x00 ) // ŽÀƒf[ƒ^‚Ì’¼‘O‚Ì0x00‚ðƒT[ƒ` + { + break; + } + } + // ƒxƒŠƒtƒ@ƒC + // ROMƒwƒbƒ_‚̃_ƒCƒWƒFƒXƒg‚ðŽZo(擪‚©‚çØ–¾‘—̈æ‚Ì’¼‘O‚܂łª‘ÎÛ) + ACSign_DigestUnit( digest, this->pRomHeader, (u32)&(rh.certificate) - (u32)&(rh) ); + // this->pRomHeader ‚̓}ƒl[ƒWƒq[ƒvã‚É‚ ‚é‚̂ŎÀƒAƒhƒŒƒX‚ðŽæ“¾‚Å‚«‚È‚¢ + if( memcmp( &(original[pos+1]), digest, DIGEST_SIZE_SHA1 ) != 0 ) + { + return ECSrlResult::ERROR_SIGN_VERIFY; + } + return (ECSrlResult::NOERROR); +} + +// +// ƒAƒvƒŠŽí•ʂ̔»’è +// +ECAppType RCSrl::selectAppType(void) +{ + ECAppType type = ECAppType::ILLEGAL; + + u8 *idL = this->pRomHeader->s.titleID_Lo; + u32 idH = this->pRomHeader->s.titleID_Hi; + + if( (idL[3]=='H') && (idL[2]=='N') && (idL[1]=='A') ) // ƒ‰ƒ“ƒ`ƒƒƒAƒvƒŠ‚©‚Ç‚¤‚©‚ÍTitleID_Lo‚Ì’l‚ÅŒˆ’è + { + type = ECAppType::LAUNCHER; + } + else if( idH & TITLE_ID_HI_SECURE_FLAG_MASK ) // Šeƒrƒbƒg‚Í”r‘¼“I‚Ƃ͌À‚ç‚È‚¢‚Ì‚Åelse if‚ɂ͂Ȃç‚È‚¢ + { + type = ECAppType::SECURE; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 1 ) + { + type = ECAppType::SYSTEM; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 0 ) + { + type = ECAppType::USER; + } + return type; +} + +// +// DSƒ_ƒEƒ“ƒ[ƒh–¼‚ªSRL‚ÉŠi”[‚³‚ê‚Ä‚¢‚é‚©’²‚ׂé +// +ECSrlResult RCSrl::hasDSDLPlaySign( FILE *fp ) +{ + const s32 DSDLPLAY_SIZE = 0x88; + u8 buf[ DSDLPLAY_SIZE ]; + u32 offset; + + // –¼—̈æ‚ðSRL‚©‚ç“ǂݞ‚Þ + offset = this->pRomHeader->s.rom_valid_size; + if( fseek( fp, offset, SEEK_SET ) != 0 ) + { + this->hHasDSDLPlaySign = gcnew System::Boolean( false ); // –¼‚ÍNTR‚ÌROM—̈æ‚ÌÅŒã‚É“ü‚é‚̂Š+ return ECSrlResult::ERROR_FILE_READ; // NTR‚ÌSRL‚É–¼‚ªŠi”[‚³‚ê‚Ä‚¢‚È‚¢ê‡‚̓V[ƒN‚àƒŠ[ƒh‚à‚Å‚«‚È‚¢ + } + if( DSDLPLAY_SIZE != fread( buf, 1, DSDLPLAY_SIZE, fp ) ) + { + this->hHasDSDLPlaySign = gcnew System::Boolean( false ); + return ECSrlResult::ERROR_FILE_READ; + } + + // ʼn‚Ì2ƒoƒCƒg‚ªŒÅ’è‚Ì’l‚ƂȂ邱‚Æ‚ª•ÛØ‚³‚ê‚Ä‚¢‚é‚̂ł»‚Ì’l‚©‚Ç‚¤‚©‚Å”»’è + if( (buf[0] == 'a') && (buf[1] == 'c') ) + { + this->hHasDSDLPlaySign = gcnew System::Boolean( true ); + } + else + { + this->hHasDSDLPlaySign = gcnew System::Boolean( false ); + } + return (ECSrlResult::NOERROR); +} + +// +// SDKƒo[ƒWƒ‡ƒ“‚ðŽæ“¾‚·‚é +// +ECSrlResult RCSrl::searchSDKVersion( FILE *fp ) +{ + // SDKƒo[ƒWƒ‡ƒ“‚ÍSRLƒoƒCƒiƒŠ’†‚Ɉȉº‚̃}ƒWƒbƒNƒiƒ“ƒo‚ƂƂà‚É–„‚ß‚ç‚ê‚Ä‚¢‚é + const u8 pattern[8] = {0x21, 0x06, 0xc0, 0xde, 0xde, 0xc0, 0x06, 0x21}; + System::Collections::Generic::List ^list; + + this->hSDKList = gcnew System::Collections::Generic::List; + this->hSDKList->Clear(); + + list = MasterEditorTWL::patternMatch( fp, pattern , 8 ); + if( list == nullptr ) + { + //System::Diagnostics::Debug::WriteLine( "no list" ); + return ECSrlResult::ERROR_SDK; + } + for each( u32 item in list ) + { + // ƒ}ƒWƒbƒNƒR[ƒh‚̃IƒtƒZƒbƒg‚ÌŽè‘O4ƒoƒCƒg‚ªSDKƒo[ƒWƒ‡ƒ“ + if( item >= 4 ) + { + u32 offset; + u32 sdkcode; + + offset = item - 4; + fseek( fp, offset, SEEK_SET ); + if( 4 != fread( (void*)&sdkcode, 1, 4, fp ) ) + { + return ECSrlResult::ERROR_SDK; + } + + // ‰ð“Ç + System::Byte major = (System::Byte)(0xff & (sdkcode >> 24)); + System::Byte minor = (System::Byte)(0xff & (sdkcode >> 16)); + System::UInt16 relstep = (System::UInt16)(0xffff & sdkcode); + System::String ^str = nullptr; + str += (major.ToString() + "." + minor.ToString() + " "); + //System::Diagnostics::Debug::WriteLine( "relstep = " + relstep.ToString() ); + + // RELSTEP‚̉ðŽß + // PR1=10100 PR2=10200 ... + // RC1=20100 RC2=20200 ... + // RELEASE=30000 + System::UInt16 patch = relstep; + while( patch >= 10000 ) + { + patch -= 10000; + } + System::UInt16 rev = patch; + System::String ^revstr = gcnew System::String( "" ); + while( rev >= 100 ) + { + rev -= 100; + } + if( rev > 0 ) + { + revstr = " plus" + rev.ToString(); + } + patch = patch / 100; + switch( relstep / 10000 ) + { + case 1: str += ("PR " + patch.ToString() + revstr); break; + case 2: str += ("RC " + patch.ToString() + revstr); break; + case 3: str += ("RELEASE " + patch.ToString() + revstr); break; + default: break; + } + u32 statbegin = this->pRomHeader->s.main_rom_offset; + u32 statend = this->pRomHeader->s.main_rom_offset + this->pRomHeader->s.main_size - 1; + System::Boolean isstat = ((statbegin <= offset) && (offset <= statend))?true:false; + this->hSDKList->Add( gcnew RCSDKVersion(str, sdkcode, isstat) ); + //System::Diagnostics::Debug::WriteLine( "SDK " + str ); + } + } + return ECSrlResult::NOERROR; +} + +// +// Žg—pƒ‰ƒCƒZƒ“ƒX‚ðŽæ“¾‚·‚é +// +#define LICENSE_LEN_MAX 1024 // ‚±‚ê‚æ‚è‚àƒ‰ƒCƒZƒ“ƒX‚Ì•¶Žš—ñ‚ª’·‚¢‚Æ‚«³‚µ‚­Žæ“¾‚Å‚«‚È‚¢ +ECSrlResult RCSrl::searchLicenses(FILE *fp) +{ + // ƒ‰ƒCƒZƒ“ƒX‚ÍSRLƒoƒCƒiƒŠ’†‚É[SDK+(”z•zŒ³):(ƒ‰ƒCƒuƒ‰ƒŠ–¼)]‚̃tƒH[ƒ}ƒbƒg‚Å–„‚ß‚ç‚ê‚Ä‚¢‚é + const u8 pattern[5] = { '[', 'S', 'D', 'K', '+' }; + System::Collections::Generic::List ^list; + + this->hLicenseList = gcnew System::Collections::Generic::List; + this->hLicenseList->Clear(); + + fseek( fp, 0, SEEK_END ); + const u32 filesize = ftell( fp ); + + list = MasterEditorTWL::patternMatch( fp, pattern, 5 ); + if( list == nullptr ) + { + return ECSrlResult::NOERROR; // ƒ‰ƒCƒZƒ“ƒX‚ª‚È‚¢ê‡‚à‘¶Ý‚·‚é‚Ì‚ÅOK‚Æ‚·‚é + } + for each( u32 item in list ) + { + char buf[ LICENSE_LEN_MAX + 1 ]; // '\0'‚Ì•ª‚¾‚¯‘½‚߂ɂƂÁ‚Ä‚¨‚­ + u32 offset = item + 5; // "[SDK+"‚̌ォ‚烊[ƒh‚·‚é + u32 len = ((filesize - offset) < LICENSE_LEN_MAX)?(filesize - offset):LICENSE_LEN_MAX; + + // "(”z•zŒ³):(ƒ‰ƒCƒuƒ‰ƒŠ–¼)]"‚ð—]•ª‚È•”•ª‚ðŠÜ‚߂ĂЂƂ܂¸ƒoƒbƒtƒ@‚ÉŠi”[ + fseek( fp, offset, SEEK_SET ); + if( len != fread( buf, 1, len, fp ) ) + { + return ECSrlResult::ERROR; + } + buf[ len ] = '\0'; // Œã‚Ìstrlen‚̬Œ÷‚ð•ÛØ‚·‚邽‚ß + + // "(”z•zŒ³):(ƒ‰ƒCƒuƒ‰ƒŠ–¼)]"‚ðŽæ‚èo‚µ‚Ä‚©‚ç(”z•zŒ³)‚Æ(ƒ‰ƒCƒuƒ‰ƒŠ–¼)‚É•ªŠ„ + System::Text::UTF8Encoding^ utf8 = gcnew System::Text::UTF8Encoding( true ); // char->String•ÏŠ·‚É•K—v + System::String ^str = gcnew System::String( buf, 0, strlen(buf), utf8 ); // ’Tõ‚â•ªŠ„‚ÍStringƒƒ\ƒbƒh‚É—pˆÓ‚³‚ê‚Ä‚¢‚é + str = (str->Split( ']' ))[0]; // ']'‚æ‚è‚à‘O‚ðŽæ‚èo‚· + cli::array ^spl = str->Split( ':' ); // (”z•zŒ³):(ƒ‰ƒCƒuƒ‰ƒŠ–¼)‚𕪊„‚·‚é + + if( spl->Length >= 2 ) // ”O‚Ì‚½‚ß + { + if( !spl[1]->StartsWith("BACKUP") && !spl[1]->StartsWith("SSL") && !spl[1]->StartsWith("CPS") ) + { + this->hLicenseList->Add( gcnew RCLicense( spl[0], spl[1] ) ); + } + //System::Diagnostics::Debug::WriteLine( "license " + spl[0] + " " + spl[1] ); + } + } + return ECSrlResult::NOERROR; +} //RCSrl::searchLicenses + +// +// MRC +// +ECSrlResult RCSrl::mrc( FILE *fp ) +{ +#ifdef METWL_WHETHER_MRC + ECSrlResult result; + result = this->mrcNTR( fp ); + if( result != ECSrlResult::NOERROR ) + { + return result; + } + result = this->mrcTWL( fp ); + if( result != ECSrlResult::NOERROR ) + { + return result; + } + this->hErrorList->AddRange( this->hParentalErrorList ); // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚ÌƒŠƒXƒg‚͕ʂɂ‚­‚Á‚Ä‚¢‚é‚̂ŒljÁ +#endif + return ECSrlResult::NOERROR; +} + +// NTRŒÝŠ·MRC +ECSrlResult RCSrl::mrcNTR( FILE *fp ) +{ + System::Int32 i; + System::Boolean result; + + // ROMƒwƒbƒ_‚̃`ƒFƒbƒN + + // •¶ŽšƒR[ƒhƒ`ƒFƒbƒN + result = true; + for( i=0; i < TITLE_NAME_MAX; i++ ) + { + char c = this->pRomHeader->s.title_name[i]; + if( ((c < 0x20) || (0x5f < c)) && (c != 0x00) ) + { + result = false; + } + } + if( !result ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒ\ƒtƒgƒ^ƒCƒgƒ‹", 0x0, 0xb, "Žg—p•s‰Â‚ÌASCIIƒR[ƒh‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B", + "Game Title", "Unusable ASCII code is used.", false, true ) ); + } + + result = true; + for( i=0; i < TITLE_NAME_MAX; i++ ) + { + char c = this->pRomHeader->s.title_name[TITLE_NAME_MAX - i - 1]; // ––”ö‚©‚ç’Tõ + if( ((0x21 <= c ) && (c <= 0x5f)) || (c == 0x00) ) // 00h‚Æ20hˆÈŠO‚ÌŽg—p‰Â”\‚È•¶Žš‚ªo‚Ä‚­‚é‚܂łɃXƒy[ƒX‚ª‘¶Ý‚µ‚½‚çƒ_ƒ + { + break; + } + else if( c == 0x20 ) + { + result = false; + } + } + if( !result ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒ\ƒtƒgƒ^ƒCƒgƒ‹", 0x0, 0xb, "––”ö‚Ì–¢Žg—p•”•ª‚É‚Í00h‚ð“o˜^‚µ‚Ä‚­‚¾‚³‚¢B", + "Game Title", "Please use 00h for an unused part.", false, true ) ); + } + + result = true; + for( i=1; i < TITLE_NAME_MAX; i++ ) + { + char prev = this->pRomHeader->s.title_name[i-1]; + char curr = this->pRomHeader->s.title_name[i]; + if( (prev == 0x00) && (0x21 <= curr) && (curr <= 0x5f) ) // “r’†‚É00h‚ª‚ ‚邯ƒ_ƒ + { + result = false; + break; + } + } + if( !result ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒ\ƒtƒgƒ^ƒCƒgƒ‹", 0x0, 0xb, "ƒXƒy[ƒX•”•ª‚É‚Í20h‚ð“o˜^‚µ‚Ä‚­‚¾‚³‚¢B", + "Game Title", "Please use 20h for an space part.", false, true ) ); + } + + result = true; + for( i=0; i < GAME_CODE_MAX; i++ ) + { + char c = this->pRomHeader->s.game_code[i]; + if( (c < 0x20) || (0x5f < c) ) // 00h‚ð‹–‚³‚È‚¢ + { + result = false; + } + } + if( !result ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒCƒjƒVƒƒƒ‹ƒR[ƒh", 0xc, 0xf, "Žg—p•s‰Â‚ÌASCIIƒR[ƒh‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B", + "Game Code", "Unusable ASCII code is used.", false, true ) ); + } + if( memcmp( this->pRomHeader->s.game_code, "NTRJ", GAME_CODE_MAX ) == 0 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒCƒjƒVƒƒƒ‹ƒR[ƒh", 0xc, 0xf, "SDKƒfƒtƒHƒ‹ƒg‚̃R[ƒh(NTRJ)‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B", + "Game Code", "SDK default code(NTRJ) is used.", false, true ) ); + } + + result = true; + for( i=0; i < MAKER_CODE_MAX; i++ ) + { + char c = this->pRomHeader->s.maker_code[i]; + if( (c < 0x20) || (0x5f < c) ) + { + result = false; + } + } + if( !result ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒ[ƒJ[ƒR[ƒh", 0x10, 0x11, "Žg—p•s‰Â‚ÌASCIIƒR[ƒh‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B", + "Maker Code", "Unusable ASCII code is used.", false, true ) ); + } + + // ’lƒ`ƒFƒbƒN + + if( this->pRomHeader->s.rom_type != 0x00 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒfƒoƒCƒXƒ^ƒCƒv", 0x13, 0x13, "•s³‚È’l‚Å‚·B00h‚ðݒ肵‚Ä‚­‚¾‚³‚¢B", + "Device Type", "Invalid data. Please set 00h.", false, true ) ); + } + + u8 romver = this->pRomHeader->s.rom_version; + if( ((romver < 0x00) || (0x0f < romver)) && (romver != 0xE0) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒŠƒ}ƒXƒ^[ƒo[ƒWƒ‡ƒ“", 0x1e, 0x1e, "•s³‚È’l‚Å‚·B³Ž®”łłÍ01h-0Fh‚Ì‚¢‚¸‚ê‚©‚Ì’lAŽ–‘O”łłÍE0h‚ðݒ肵‚Ä‚­‚¾‚³‚¢B", + "Release Ver.", "Invalid data. Please set either one of 01h-0Fh(Regular ver.), or E0h(Preliminary ver.)", false, true ) ); + } + if( this->pRomHeader->s.banner_offset == 0 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒoƒi[ƒIƒtƒZƒbƒg", 0x68, 0x6b, "ƒoƒi[ƒf[ƒ^‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB", + "Banner Offset.", "Banner data is not set.", false, true ) ); + } + if( this->pRomHeader->s.rom_valid_size == 0 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ROMŽÀŒøƒTƒCƒY", 0x80, 0x83, "’l‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB", + "ROM Valid Size.", "Data is not set.", false, true ) ); + } + + // CRC + u16 crc; + // ƒZƒLƒ…ƒA—̈æ + if( *this->hIsMediaNand == false ) // ƒJ[ƒhƒAƒvƒŠ‚̂Ƃ«‚Ì‚Ý + { + // ƒZƒLƒ…ƒA—̈æ‚ÍROMƒwƒbƒ_ŠO + u8 *secures; + s32 secure_size = SECURE_AREA_END - this->pRomHeader->s.main_rom_offset; + if (secure_size > SECURE_AREA_SIZE) + { + secure_size = SECURE_AREA_SIZE; + } + if (secure_size <= 0) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒZƒLƒ…ƒA—̈æCRC", 0x15e, 0x15f, "ƒZƒLƒ…ƒA—̈æ‚̃AƒhƒŒƒXŽw’肪•s³‚Å‚·B", + "Secure Area CRC.", "Illegal address of secure area.", false, true ) ); + } + secures = new u8[secure_size]; // never return if not allocated + fseek( fp, (u32)this->pRomHeader->s.main_rom_offset, SEEK_SET ); + if( secure_size != fread( secures, 1, secure_size, fp ) ) + { + delete []secures; + return ECSrlResult::ERROR_FILE_READ; + } + crc = calcCRC(CRC16_INIT_VALUE, (u8 *)secures, secure_size); + delete []secures; + if( crc != this->pRomHeader->s.secure_area_crc16 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒZƒLƒ…ƒA—̈æCRC", 0x07c, 0x07d, "ŒvŽZŒ‹‰Ê‚ƈê’v‚µ‚Ü‚¹‚ñBƒZƒLƒ…ƒA—̈悪‰ü‚´‚ñ‚³‚ꂽ‰Â”\«‚ª‚ ‚è‚Ü‚·B", + "Secure Area CRC.", "Calclated CRC is different from Registered one.", false, true ) ); + } + } + + // ƒƒS—̈æ + crc = 0xcf56; + if( crc != this->pRomHeader->s.nintendo_logo_crc16 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒLƒƒƒ‰ƒNƒ^[ƒf[ƒ^CRC", 0x15c, 0x15d, "ŒvŽZŒ‹‰Ê‚ƈê’v‚µ‚Ü‚¹‚ñBƒLƒƒƒ‰ƒNƒ^[ƒf[ƒ^‚ª‰ü‚´‚ñ‚³‚ꂽ‰Â”\«‚ª‚ ‚è‚Ü‚·B", + "Charactor Data CRC.", "Calclated CRC is different from Registered one.", false, true ) ); + } + + // ƒwƒbƒ_CRC + crc = calcCRC( CRC16_INIT_VALUE, (u8*)this->pRomHeader, CALC_CRC16_SIZE ); + if( crc != this->pRomHeader->s.header_crc16 ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ROMƒwƒbƒ_CRC", 0x15e, 0x15f, "ŒvŽZŒ‹‰Ê‚ƈê’v‚µ‚Ü‚¹‚ñBROMƒwƒbƒ_‚ª‰ü‚´‚ñ‚³‚ꂽ‰Â”\«‚ª‚ ‚è‚Ü‚·B", + "ROM Header CRC.", "Calclated CRC is different from Registered one.", false, true ) ); + } + + // ROMƒwƒbƒ_ˆÈŠO‚̗̈æ‚̃`ƒFƒbƒN (ƒtƒ@ƒCƒ‹‚©‚ç“K‹XƒŠ[ƒh‚·‚é) + + // ƒVƒXƒeƒ€ƒR[ƒ‹ƒ‰ƒCƒuƒ‰ƒŠ + u8 syscall[32]; + u32 offset = this->pRomHeader->s.main_rom_offset; + fseek( fp, offset, SEEK_SET ); + if( 32 != fread( syscall, 1, 32, fp ) ) + { + return ECSrlResult::ERROR_FILE_READ; + } + for( i=0; i < 32; i++ ) + { + if( syscall[i] != 0x00 ) + break; + } + if( i == 32 ) // ‘S•”0 + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒVƒXƒeƒ€ƒR[ƒ‹ƒ‰ƒCƒuƒ‰ƒŠ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "SDKƒfƒtƒHƒ‹ƒg‚Å‚·B", + "System-Call Library", "This Library is SDK default one.", false, true ) ); + } + return ECSrlResult::NOERROR; +} // mrcNTR() + +// TWLê—p +ECSrlResult RCSrl::mrcTWL( FILE *fp ) +{ + System::Int32 i; + + // ROMƒwƒbƒ_‚̃`ƒFƒbƒN (NTRŒÝŠ·—̈æ) + +#ifdef METWL_WHETHER_PLATFORM_CHECK + // ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚̃`ƒFƒbƒN + if( (this->pRomHeader->s.platform_code != PLATFORM_CODE_TWL_HYBLID) && + (this->pRomHeader->s.platform_code != PLATFORM_CODE_TWL_LIMITED) && + (this->pRomHeader->s.enable_signature == 0) ) + { + return ECSrlResult::ERROR_PLATFORM; + } +#endif + + if( *this->hIsOldDevEncrypt && *this->hHasDSDLPlaySign ) + { + this->hErrorList->Add( gcnew RCMrcError( + "‹ŒŠJ”­—pˆÃ†ƒtƒ‰ƒO", 0x1c, 0x1c, + "‚±‚ÌROM‚̓Nƒ[ƒ“ƒu[ƒg‘ΉžƒAƒvƒŠ‚Å‚·‚ªA»•i—p–{‘̂ł̓Nƒ[ƒ“ƒu[ƒg‚ª‚Å‚«‚È‚­‚È‚è‚Ü‚·B", + "Old Development Flag", + "This ROM supports Clone-Boot, and the flag is old type. Therefore, Clone-Boot can't be done.", + false, true ) ); + } + + // ’lƒ`ƒFƒbƒN + + fseek( fp, 0, SEEK_END ); + u32 filesize = ftell(fp); // ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY(’PˆÊMbit) + u32 romsize = 1 << (this->pRomHeader->s.rom_size); // ROM—e—Ê + if( *(this->hIsMediaNand) == false ) // ƒJ[ƒhƒAƒvƒŠ‚̂Ƃ«‚݂̂̃`ƒFƒbƒN + { + u32 filesizeMb = (filesize / (1024*1024)) * 8; + if( romsize < filesizeMb ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒfƒoƒCƒX—e—Ê", 0x14, 0x14, "ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY‚æ‚è‚ଂ³‚¢’l‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚·B", + "Device Capacity", "Setting data is less than the actual file size.", false, true ) ); + } + else if( filesizeMb < romsize ) + { + this->hWarnList->Add( gcnew RCMrcError( // Œx + "ƒfƒoƒCƒX—e—Ê", 0x14, 0x14, "ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY‚É”ä‚ׂ˳‘ʂ̂ ‚é’l‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚·B", + "Device Capacity", "Setting data is larger than the actual file size.", false, true ) ); + } + if( (romsize < METWL_ROMSIZE_MIN) || (METWL_ROMSIZE_MAX < romsize) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒfƒoƒCƒX—e—Ê", 0x14, 0x14, "Žw’è‰Â”\‚È—e—ʂł͂ ‚è‚Ü‚¹‚ñB", + "Device Capacity", "Invalid capacity.", false, true ) ); + } + if( (filesizeMb < 1) || (MasterEditorTWL::countBits(filesizeMb) != 1) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "’†“r”¼’[‚È’l‚Å‚·B’Êí‚Å‚Í2‚ׂ̂«æ[Mbit]‚Ì’l‚Å‚·B", + "Actual File Size", "Invalid size. This size is usually power of 2.", false, true ) ); + } + // 1GbitˆÈã‚̂Ƃ«‚ÌÅI—̈悪ŒÅ’è’l‚©‚Ç‚¤‚© + this->mrcPadding( fp ); + + // ƒZƒOƒƒ“ƒg3‚ÌCRC + u16 crcseg3; + BOOL crcret = getSeg3CRCInFp( fp, &crcseg3 ); + if( !crcret || (crcseg3 != METWL_SEG3_CRC) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒZƒOƒƒ“ƒg3 CRC", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "ƒZƒOƒƒ“ƒg3—̈æ‚ÉŒë‚肪‚ ‚è‚Ü‚·B", + "Segment-3 CRC", "Invalid data exist in Segment-3 area.", false, true ) ); + } + + u16 NA = this->pRomHeader->s.twl_card_normal_area_rom_offset & 0x7fffUL; + u16 KA = this->pRomHeader->s.twl_card_keytable_area_rom_offset; + if( (NA == 0) || (KA == 0) || (NA > KA) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "TWL ROMƒIƒtƒZƒbƒg", 0x90, 0x93, + "TWLƒm[ƒ}ƒ‹—̈æROMƒIƒtƒZƒbƒg(NA)‚¨‚æ‚ÑTWLê—p—̈æROMƒIƒtƒZƒbƒg(KA)‚͂Ƃà‚É1ˆÈã‚ÅA‚©‚ÂNA‚ÍKA‚ð’´‚¦‚Ă͂¢‚¯‚Ü‚¹‚ñB", + "TWL ROM Offset", + "Both TWL Normal Area ROM Offset(NA) and TWL Limited Area ROM Offset(KA) are bigger than 0. And NA must be smaller than KA, or equals to KA.", + false, true ) ); + } + } //if( *(this->hIsNAND) == false ) + else // NANDƒAƒvƒŠ‚̂Ƃ«‚݂̂̃`ƒFƒbƒN + { + if( (romsize < METWL_ROMSIZE_MIN_NAND) || (METWL_ROMSIZE_MAX_NAND < romsize) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒfƒoƒCƒX—e—Ê", 0x14, 0x14, "NANDƒAƒvƒŠ‚ɑ΂µ‚ÄŽw’è‰Â”\‚È—e—ʂł͂ ‚è‚Ü‚¹‚ñB", + "Device Capacity", "Invalid capacity.", false, true ) ); + } + u32 allsizeMB = filesize + this->pRomHeader->s.public_save_data_size + this->pRomHeader->s.private_save_data_size; + if( allsizeMB > METWL_ALLSIZE_MAX_NAND ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "ROMƒf[ƒ^‚ÌŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY‚ÆPublicƒZ[ƒuƒf[ƒ^‚¨‚æ‚ÑPrivateƒZ[ƒuƒf[ƒ^‚̃TƒCƒY‚Ì‘˜a‚ª32MByte‚ð’´‚¦‚Ä‚¢‚Ü‚·B", + "Actual File Size", + "The sum of this size, the public save data size and private save data size exceed 32MByte.", false, true ) ); + } + } + + if( *this->hIsAppLauncher || *this->hIsAppSecure || *this->hIsAppSystem ) + { + if( this->pRomHeader->s.disable_debug == 0 ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒfƒoƒbƒK“®ì‹ÖŽ~ƒtƒ‰ƒO", 0x1f, 0x1f, + "ƒfƒoƒbƒKã‚ʼnð͉”\‚ÈÝ’è‚ɂȂÁ‚Ä‚¢‚Ü‚·BƒfƒoƒbƒKŒü‚¯ƒ\ƒtƒg‚Æ‚µ‚ÄROM‚ðƒŠƒŠ[ƒX‚·‚éꇂɂ̓ZƒLƒ…ƒŠƒeƒBã‚Ì–â‘肪‚È‚¢‚©‚²Šm”F‚­‚¾‚³‚¢B", + "Disable Launch on Debugger Flag", + "This ROM can be analyzed on the debugger. If the ROM is released for the debugger, please check the security settings.", + false, true ) ); + } + } + + if( this->pRomHeader->s.warning_no_spec_rom_speed != 0 ) + { + this->hWarnList->Add( gcnew RCMrcError( + "”ƒtƒ‰ƒO", 0x1f, 0x1f, "rsfƒtƒ@ƒCƒ‹‚ÅROMSpeedType‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB", + "Setting Flags", "In a RSF file, the item \"ROMSpeedType\" is not set.", false, true ) ); + } + if( (this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK) != CARD_1TROM_GAME_LATENCY ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ROMƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x60, 0x67, "TWL‚ł̓}ƒXƒNROM‚Í—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñBƒƒ“ƒ^ƒCƒ€PROMÝ’è‚É‚µ‚Ä‚­‚¾‚³‚¢B", + "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false, true ) ); + } + + if( *this->hIsMediaNand == false ) + { + if( (this->pRomHeader->s.enable_aes == 0) || (this->pRomHeader->s.aes_target_size == 0) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "AESˆÃ†", 0x60, 0x67, "AESˆÃ†‚ª–³Œø‚ɂȂÁ‚Ä‚¢‚Ü‚·BƒZƒLƒ…ƒŠƒeƒBã‚Ì–â‘肪‚ ‚è‚Ü‚·B", + "AES Encryption", "AES Encryption is disable. It is a security problem.", false, true ) ); + } + } + else // NANDƒAƒvƒŠ + { + if( (this->pRomHeader->s.enable_aes == 0) || (this->pRomHeader->s.aes_target_size == 0) || (this->pRomHeader->s.aes_target2_size == 0) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "AESˆÃ†", 0x60, 0x67, "AESˆÃ†‚ª–³Œø‚ɂȂÁ‚Ä‚¢‚Ü‚·BƒZƒLƒ…ƒŠƒeƒBã‚Ì–â‘肪‚ ‚è‚Ü‚·B", + "AES Encryption", "AES Encryption is disable. It is a security problem.", false, true ) ); + } + } + + // ROMƒwƒbƒ_‚̃`ƒFƒbƒN (TWLê—p—̈æ) + + // ’lƒ`ƒFƒbƒN + { + u32 idH; + u8 idL[4]; + int apptype; + const int appUser = 0; + const int appSystem = 1; + const int appSecure = 2; + const int appLauncher = 3; + System::String ^appstrJ = gcnew System::String(""); + System::String ^appstrE = gcnew System::String(""); + + idH = this->pRomHeader->s.titleID_Hi; + memcpy( idL, &(this->pRomHeader->s.titleID_Lo[0]), 4 ); + + if( (idL[3]=='H') && (idL[2]=='N') && (idL[1]=='A') ) // ƒ‰ƒ“ƒ`ƒƒƒAƒvƒŠ‚©‚Ç‚¤‚©‚ÍTitleID_Lo‚Ì’l‚ÅŒˆ’è + { + apptype = appLauncher; + appstrJ = "ƒ‰ƒ“ƒ`ƒƒ[ƒAƒvƒŠ"; + appstrE = "Launcher-App."; + } + else if( idH & TITLE_ID_HI_SECURE_FLAG_MASK ) // —§‚Á‚Ä‚½‚çƒZƒLƒ…ƒAƒAƒvƒŠ + { + apptype = appSecure; + appstrJ = "ƒZƒLƒ…ƒAƒAƒvƒŠ"; + appstrE = "Secure-App."; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 1 ) // —§‚Á‚Ä‚½‚çƒVƒXƒeƒ€ƒAƒvƒŠ + { + apptype = appSystem; + appstrJ = "ƒVƒXƒeƒ€ƒAƒvƒŠ"; + appstrE = "System-App."; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 0 ) // Žc‚é‚̓†[ƒUƒAƒvƒŠ + { + apptype = appUser; + appstrJ = "ƒ†[ƒUƒAƒvƒŠ"; + appstrE = "User-App."; + } + else + { + apptype = -1; + } + + if( apptype < 0 ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒAƒvƒŠŽí•Ê", 0x230, 0x237, "•s³‚È’l‚Å‚·B", + "Application Type", "Illigal type.", false, true ) ); + } + + System::Boolean bApp = false; +#ifdef METWL_VER_APPTYPE_LAUNCHER + if( apptype == appLauncher ) + { + bApp = true; + } + else +#endif //#ifdef METWL_VER_APPTYPE_LAUNCHER +#ifdef METWL_VER_APPTYPE_SECURE + if( apptype == appSecure ) + { + bApp = true; + } + else +#endif //#ifdef METWL_VER_APPTYPE_SECURE +#ifdef METWL_VER_APPTYPE_SYSTEM + if( apptype == appSystem ) + { + bApp = true; + } + else +#endif //#ifdef METWL_VER_APPTYPE_SYSTEM +#ifdef METWL_VER_APPTYPE_USER + if( apptype == appUser ) + { + bApp = true; + } +#endif //#ifdef METWL_VER_APPTYPE_USER + + if( !bApp ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒAƒvƒŠŽí•Ê", 0x230, 0x237, "‚±‚ÌROMƒf[ƒ^‚Í" + appstrJ + "‚Å‚·B–{ƒvƒƒOƒ‰ƒ€‚ł͔ñ‘Ήž‚Å‚·B", + "Application Type", "This ROM is " + appstrE + " which is unsurpported by this editor.", false, true ) ); + } + + } // ƒAƒvƒŠŽí•ʂ̃`ƒFƒbƒN + + if( (this->pRomHeader->s.access_control.game_card_on != 0) && + (this->pRomHeader->s.access_control.game_card_nitro_mode != 0) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x1b4, 0x1b7, "ƒQ[ƒ€ƒJ[ƒh“dŒ¹Ý’è‚Ƀm[ƒ}ƒ‹ƒ‚[ƒh‚ÆNTRƒ‚[ƒh‚Ì—¼•û‚ðÝ’è‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñB", + "Access Control Info.", "Game card power setting is either normal mode or NTR mode.", false, true ) ); + } + if( ((this->pRomHeader->s.titleID_Hi & TITLE_ID_HI_MEDIA_MASK) == 0) && // ƒJ[ƒhƒAƒvƒŠ + ((this->pRomHeader->s.access_control.game_card_on != 0) || (this->pRomHeader->s.access_control.game_card_nitro_mode != 0)) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x1b4, 0x1b7, "ƒQ[ƒ€ƒJ[ƒh—pƒ\ƒtƒg‚ɑ΂µ‚ăQ[ƒ€ƒJ[ƒh“dŒ¹Ý’è‚ð‚·‚é‚±‚Ƃ͂ł«‚Ü‚¹‚ñB", + "Access Control Info.", "Game card power setting is not for Game Card Soft.", false, true ) ); + } + if( this->pRomHeader->s.access_control.shared2_file == 0 ) + { + if( (this->pRomHeader->s.shared2_file0_size != 0) || (this->pRomHeader->s.shared2_file1_size != 0) || + (this->pRomHeader->s.shared2_file2_size != 0) || (this->pRomHeader->s.shared2_file3_size != 0) || + (this->pRomHeader->s.shared2_file4_size != 0) || (this->pRomHeader->s.shared2_file5_size != 0) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x1b4, 0x1b7, "Shared2ƒtƒ@ƒCƒ‹‚̃TƒCƒY‚ªÝ’肳‚ê‚Ä‚¢‚é‚É‚à‚©‚©‚í‚炸•sŽg—pÝ’è‚ɂȂÁ‚Ä‚¢‚Ü‚·B", + "Access Control Info.", "Sizes of shared2 files is setting, but using them is not enabled.", false, true ) ); + } + } + if( *this->hIsMediaNand == false ) // ƒJ[ƒhƒAƒvƒŠ‚̂Ƃ«‚Ì‚Ý + { + if( (this->pRomHeader->s.access_control.nand_access != 0) || (this->pRomHeader->s.access_control.sd_card_access != 0) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹î•ñ", 0x1b4, 0x1b7, + "ƒQ[ƒ€ƒJ[ƒh—pƒ\ƒtƒg‚ÍANANDƒtƒ‰ƒbƒVƒ…ƒƒ‚ƒŠ‚ÆSDƒJ[ƒh‚ÖƒAƒNƒZƒX‚Å‚«‚Ü‚¹‚ñBƒAƒNƒZƒX‚ðŠó–]‚³‚ê‚éê‡A•¾ŽÐ‘‹Œû‚É‚²‘Š’k‚­‚¾‚³‚¢B", + "Access Control Info.", + "Game soft for Game Card does'nt access to NAND frash memory and SD Card. If the soft wish to access them, please contact us.", + false, true ) ); + } + } + + if( (*this->hIsWiFiIcon == true) && (*this->hIsWirelessIcon == true) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒAƒCƒRƒ“•\ަƒtƒ‰ƒO", 0x1bf, 0x1bf, + "ƒƒCƒ„ƒŒƒX’ÊMƒAƒCƒRƒ“‚ÆWi-Fi’ÊMƒAƒCƒRƒ“‚Í“¯Žž‚É•\ަ‚Å‚«‚Ü‚¹‚ñBÝ’è‚𖳎‹‚µ‚ēǂݞ‚݂܂·B", + "Icon Displaying", + "Icon displayed on menu is either Wireless Icon or Wi-Fi Icon. This setting was ignored in reading.", + true, true ) ); // C³‰Â”\ + } + + if( *this->hIsMediaNand == false ) // ƒJ[ƒhƒAƒvƒŠ‚̂Ƃ«‚Ì‚Ý + { + u32 ideal = (this->pRomHeader->s.twl_card_keytable_area_rom_offset * 0x80000) + 0x3000; // TWL KeyTable—̈æ‚ÌŠJŽn + KeyTableƒTƒCƒY + u32 actual = this->pRomHeader->s.main_ltd_rom_offset; + if( ideal > actual ) + { + this->hErrorList->Add( gcnew RCMrcError( + "Šg’£í’“ƒ‚ƒWƒ…[ƒ‹", 0x1c0, 0x1c3, + "TWLŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ì”z’u‚É–â‘肪‚ ‚è‚Ü‚·B•¾ŽÐ‘‹Œû‚É‚²˜A—‚­‚¾‚³‚¢B", + "Extended Static Module", + "Alignment of TWL Extended Static Module is illegal. Please contact us, sorry.", + false, true ) ); + } + } + + if( (*this->hIsAppLauncher == false) && (*this->hIsSCFGAccess == true) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "SCFGÝ’è", 0x1b8, 0x1bb, "SCFGƒŒƒWƒXƒ^‚ÖƒAƒNƒZƒX‰Â”\‚ɂȂÁ‚Ä‚¢‚Ü‚·B", + "SCFG Setting", "In this setting, SCFG register is accessible.", false, true ) ); + } + + if( (this->pRomHeader->s.titleID_Lo[0] != this->pRomHeader->s.game_code[3]) || + (this->pRomHeader->s.titleID_Lo[1] != this->pRomHeader->s.game_code[2]) || + (this->pRomHeader->s.titleID_Lo[2] != this->pRomHeader->s.game_code[1]) || + (this->pRomHeader->s.titleID_Lo[3] != this->pRomHeader->s.game_code[0]) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "ƒ^ƒCƒgƒ‹ID", 0x230, 0x233, "‰ºˆÊ4ƒoƒCƒg‚ªƒCƒjƒVƒƒƒ‹ƒR[ƒh‚ƈê’v‚µ‚Ü‚¹‚ñB", + "Title ID", "Lower 4 bytes don't match ones of Game Code.", false, true ) ); + } + + // ROMƒwƒbƒ_ˆÈŠO‚̗̈æ‚̃`ƒFƒbƒN + + this->mrcBanner( fp ); + this->mrcReservedArea(fp); + + // ’ljÁƒ`ƒFƒbƒN + if( *(this->hMrcSpecialList->hIsCheck) == true ) + { + // SDKƒo[ƒWƒ‡ƒ“ + System::Boolean match = true; + for each( RCSDKVersion ^sdk in this->hSDKList ) + { + if( sdk->IsStatic && (sdk->Code != *(this->hMrcSpecialList->hSDKVer) ) ) + { + match = false; + } + } + if( !match ) + { + this->hWarnList->Add( gcnew RCMrcError( + "SDKƒo[ƒWƒ‡ƒ“", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "–{ƒvƒƒOƒ‰ƒ€‚É“o˜^‚³‚ê‚Ä‚¢‚éƒo[ƒWƒ‡ƒ“î•ñ‚ƈê’v‚µ‚Ü‚¹‚ñB", + "SDK Version", "The data doesn't match one registered in this program.", false, true ) ); + } + + // Shared2ƒtƒ@ƒCƒ‹ƒTƒCƒY + for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) + { + if( *(this->hShared2SizeArray[i]) > 0 ) // 0‚Í–¢Žg—p‚ð•\‚·‚̂Ń`ƒFƒbƒN‚µ‚È‚¢ + { + if( *(this->hShared2SizeArray[i]) != *(this->hMrcSpecialList->hShared2SizeArray[i]) ) + { + this->hWarnList->Add( gcnew RCMrcError( + "Shared2ƒtƒ@ƒCƒ‹" + i.ToString(), METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "–{ƒvƒƒOƒ‰ƒ€‚É“o˜^‚³‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹ƒTƒCƒYî•ñ‚ƈê’v‚µ‚Ü‚¹‚ñB", + "Shared2 file" + i.ToString(), "The size doesn't match one registered in this program.", false, true ) ); + } + } + } + } //if( *(this->hMrcSpecialList->hIsCheck) ) + + return ECSrlResult::NOERROR; +} // mrcTWL() + +// ƒpƒfƒBƒ“ƒO‚̃`ƒFƒbƒN +void RCSrl::mrcPadding(FILE *fp) +{ + u32 romsize = 1 << (this->pRomHeader->s.rom_size); // ROM—e—Ê + u32 padsize = 0; // ’PˆÊ‚ÍByte + System::String ^padstrJ = gcnew System::String(""); + System::String ^padstrE = gcnew System::String(""); + System::String ^romstr = gcnew System::String(""); + + switch( romsize ) + { + case 1024: + padsize = 0x00280000; // 20Mbit = 2.5MB + padstrJ = "ÅI20Mbit"; + padstrE = "Last 20Mbit"; + romstr = "1Gbit"; + break; + case 2048: + padsize = 0x00500000; // 40Mbit = 5MB + padstrJ = "ÅI40Mbit"; + padstrE = "Last 40Mbit"; + romstr = "2Gbit"; + break; + case 4096: + padsize = 0x00A60000; // 83Mbit = 10.375MB + padstrJ = "ÅI83Mbit"; + padstrE = "Last 83Mbit"; + romstr = "4Gbit"; + break; + default: + padsize = 0; + break; + } + if( padsize == 0 ) + { + return; + } + + fseek( fp, 0, SEEK_END ); + u32 filesize = ftell(fp); // ŽÀƒtƒ@ƒCƒ‹ƒTƒCƒY(’PˆÊMbit) + u32 offset = ((romsize / 8) * 1024 * 1024) - padsize; + if( (offset + padsize) > filesize ) + { + this->hErrorList->Add( gcnew RCMrcError( + padstrJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "“Ç‚Ýo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B", + padstrE, "This area couldn't be read", false, true ) ); + return; + } + + u8 *buf = new u8[ padsize ]; + fseek( fp, offset, SEEK_SET ); + if( padsize != fread( buf, 1, padsize, fp ) ) + { + this->hErrorList->Add( gcnew RCMrcError( + padstrJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "“Ç‚Ýo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B", + padstrE, "This area couldn't be read", false, true ) ); + delete []buf; + return; + } + + System::Boolean bResult = true; + u32 i; + for( i=0; i < padsize; i++ ) + { + if( buf[i] != 0xff ) + { + bResult = false; + } + } + if( !bResult ) + { + this->hErrorList->Add( gcnew RCMrcError( + padstrJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "FFhˆÈŠO‚Ì’l‚ªŠi”[‚³‚ê‚Ä‚¢‚Ü‚·B " + romstr + " ROM‚Ì—e—ʧŒÀ‚ªŽç‚ç‚ê‚Ä‚¢‚Ü‚¹‚ñB", + padstrE, + "This area includes illegai data. " + romstr + " Volume constraint is violated.", + false, true ) ); + } + delete []buf; +} + +// —\–ñ—̈æ +void RCSrl::mrcReservedArea(FILE *fp) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + try + { + doc->Load( "../resource/ini.xml" ); + } + catch( System::Exception ^ex ) + { + (void)ex; + this->hErrorList->Add( gcnew RCMrcError( + "—\–ñ—̈æ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "Ý’èƒtƒ@ƒCƒ‹‚©‚ç—\–ñ—̈æ‚ÌƒŠƒXƒg‚ð“Ç‚Ýo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B", + "Reserved Area", + "The list of reserved areas is not found in the setting file.", + false, true ) ); + return; + } + + // Ý’èƒtƒ@ƒCƒ‹‚©‚ç—\–ñ—̈æ‚Ìî•ñ‚ð“Ç‚Ýo‚· + System::Xml::XmlNodeList ^list = doc->SelectNodes( "/init/reserved-list/reserved" ); + System::Collections::IEnumerator^ iter = list->GetEnumerator(); + while( iter->MoveNext() ) + { + System::Xml::XmlNode ^area = safe_cast(iter->Current); + System::Xml::XmlNode ^begin = area->SelectSingleNode( "begin" ); // ‘Š‘ÎƒpƒX + System::Xml::XmlNode ^end = area->SelectSingleNode( "end" ); // ‘Š‘ÎƒpƒX + if( begin && begin->FirstChild && begin->FirstChild->Value && + end && end->FirstChild && end->FirstChild->Value ) + { + System::UInt32 ibeg = System::UInt32::Parse( begin->FirstChild->Value, System::Globalization::NumberStyles::AllowHexSpecifier ); + System::UInt32 iend = System::UInt32::Parse( end->FirstChild->Value, System::Globalization::NumberStyles::AllowHexSpecifier ); + System::UInt32 size = iend - ibeg + 1; + System::UInt32 i; + System::Boolean bReserved = true; + for( i=0; i < size; i++ ) + { + u8 *p = (u8*)this->pRomHeader; + if( p[ ibeg + i ] != 0 ) + { + bReserved = false; + break; + } + } + if( !bReserved ) + { + this->hErrorList->Add( gcnew RCMrcError( + "—\–ñ—̈æ", ibeg, iend, "•s³‚È’l‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B‚±‚̗̈æ‚ð‚·‚×‚Ä0‚Å–„‚߂Ă­‚¾‚³‚¢B", + "Reserved Area", "Invalid data is included. Please set 0 into this area.", false, true ) ); + } + + } + } +} + +// ƒoƒi[ +void RCSrl::mrcBanner(FILE *fp) +{ + u8 map[ 0x10000 ]; + u32 i; + + // –{‘Ìݒ肾‚¯‚̓KƒCƒhƒ‰ƒCƒ“–³Ž‹ + if( memcmp( this->pRomHeader->s.game_code, "HNB", 3 ) == 0 ) + { + //this->hWarnList->Add( gcnew RCMrcError( + // "ƒoƒi[ƒtƒ@ƒCƒ‹", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + // "–{‘ÌÝ’èƒAƒvƒŠ‚ÉŒÀ‚Á‚Ă̓oƒi[‚Ì•¶ŽšƒR[ƒhƒ`ƒFƒbƒN‚ðƒXƒLƒbƒv‚µ‚Ü‚·B", + // "Banner File", + // "Only a machine setting app., a charactor code check of the banner file is skip.", + // false, true ) ); + return; + } + + // ƒoƒi[ƒIƒtƒZƒbƒg‚ɃGƒ‰[‚ª‚ ‚邯‚«‚ɂ͒²‚ׂȂ¢ + if( this->pRomHeader->s.banner_offset == 0 ) + { + return; + } + + // Žg—p‰Â”\‚È•¶Žš‚̃}ƒbƒv‚ð‚‚­‚é + // •¶ŽšƒR[ƒh‚ðƒCƒ“ƒfƒbƒNƒX‚Æ‚µ‚ÄŽg—p‰Â”\‚È‚ç 1 ‚ª“ü‚é + // ‚»‚¤‚łȂ¢‚È‚ç 0 ‚ª“ü‚é + for( i=0; i < 0x10000; i++ ) + { + map[i] = 0; + } + for( i=2; ; i+=2 ) // 0ŒÂ–Ú‚Ì—v‘f‚̓}ƒWƒbƒNƒR[ƒh‚Ȃ̂Ŋ܂߂Ȃ¢ + { + u16 index = (u16)gBannerFont[i+1]; + index = (index << 8) + gBannerFont[i]; + if( index == 0xFEFF ) + { + break; + } + map[ index ] = 1; + } + map[ 0x0000 ] = 1; // 0x0000‚Í‹–‚³‚ê‚é + + // ƒoƒi[‚ð“ǂݞ‚Þ + u32 size = this->pRomHeader->s.banner_size; + u8 *banner = new u8[size]; + fseek( fp, this->pRomHeader->s.banner_offset, SEEK_SET ); + if( size != fread( banner, 1, size, fp ) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒoƒi[ƒtƒ@ƒCƒ‹", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "“Ç‚Ýo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B", + "Banner File", + "The file can't be read.", + false, true ) ); + } + + // ƒoƒi[‚ÌŠe•¶Žš‚ªƒ}ƒbƒv‚É“o˜^‚³‚ê‚Ä‚¢‚é‚©ƒ`ƒFƒbƒN + System::Boolean bResult = true; + u32 start = 0x240; + u32 end = (size < 0x1240)?(size):(0x1240); // NTRŒÝŠ·—̈æ‚܂ł̂Ƃ«‚ÍTWLŠg’£—̈æ‚ðƒT[ƒ`‚µ‚È‚¢ + for( i=0x240; i < end; i+=2 ) + { + if( (0x840 <= i) && (i < 0xA40) ) // ’†ŠØ‚̃tƒHƒ“ƒg‰ÓŠ‚Íƒ`ƒFƒbƒN‚µ‚È‚¢ + { + continue; + } + u16 index = banner[i+1]; + u16 indexbak = index; + index = (index << 8) + banner[i]; + if( map[ index ] == 0 ) + { + //System::Diagnostics::Debug::WriteLine( i.ToString("X") + ":" + index.ToString("X") + ":" + indexbak.ToString("X") ); + bResult = false; + break; + } + } + if( !bResult ) + { + this->hErrorList->Add( gcnew RCMrcError( + "ƒoƒi[ƒtƒ@ƒCƒ‹", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "Žg—p•s‰Â”\‚È•¶ŽšƒZƒbƒg‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B", + "Banner File", + "A set of illegal charactor code is used.", + false, true ) ); + } + delete []banner; +} + +// ƒoƒi[‚Æ‚µ‚ÄŽg—p‰Â”\‚ȃtƒHƒ“ƒgƒŠƒXƒg(u16ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“) +const u8 gBannerFont[] = +{ + 0xff, 0xfe, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x7f, 0x00, 0xac, 0x20, 0x1a, 0x20, 0x1e, 0x20, 0x26, 0x20, 0xc6, 0x02, 0x52, 0x01, 0x18, 0x20, + 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22, 0x20, 0xdc, 0x02, 0x22, 0x21, 0x3a, 0x20, 0x53, 0x01, + 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xae, 0x00, 0xb7, 0x00, 0xbf, 0x00, + 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, + 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd8, 0x00, + 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, + 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, + 0xfa, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0x00, 0x30, 0x01, 0x30, 0x02, 0x30, 0x0c, 0xff, + 0x0e, 0xff, 0xfb, 0x30, 0x3a, 0x00, 0x3b, 0x00, 0x1f, 0xff, 0x01, 0xff, 0xfc, 0x30, 0x41, 0x30, + 0x42, 0x30, 0x43, 0x30, 0x44, 0x30, 0x45, 0x30, 0x46, 0x30, 0x47, 0x30, 0x48, 0x30, 0x49, 0x30, + 0x4a, 0x30, 0x4b, 0x30, 0x4c, 0x30, 0x4d, 0x30, 0x4e, 0x30, 0x4f, 0x30, 0x50, 0x30, 0x51, 0x30, + 0x52, 0x30, 0x53, 0x30, 0x54, 0x30, 0x55, 0x30, 0x56, 0x30, 0x57, 0x30, 0x58, 0x30, 0x59, 0x30, + 0x5a, 0x30, 0x5b, 0x30, 0x5c, 0x30, 0x5d, 0x30, 0x5e, 0x30, 0x5f, 0x30, 0x60, 0x30, 0x61, 0x30, + 0x62, 0x30, 0x63, 0x30, 0x64, 0x30, 0x65, 0x30, 0x66, 0x30, 0x67, 0x30, 0x68, 0x30, 0x69, 0x30, + 0x6a, 0x30, 0x6b, 0x30, 0x6c, 0x30, 0x6d, 0x30, 0x6e, 0x30, 0x6f, 0x30, 0x70, 0x30, 0x71, 0x30, + 0x72, 0x30, 0x73, 0x30, 0x74, 0x30, 0x75, 0x30, 0x76, 0x30, 0x77, 0x30, 0x78, 0x30, 0x79, 0x30, + 0x7a, 0x30, 0x7b, 0x30, 0x7c, 0x30, 0x7d, 0x30, 0x7e, 0x30, 0x7f, 0x30, 0x80, 0x30, 0x81, 0x30, + 0x82, 0x30, 0x83, 0x30, 0x84, 0x30, 0x85, 0x30, 0x86, 0x30, 0x87, 0x30, 0x88, 0x30, 0x89, 0x30, + 0x8a, 0x30, 0x8b, 0x30, 0x8c, 0x30, 0x8d, 0x30, 0x8e, 0x30, 0x8f, 0x30, 0x90, 0x30, 0x91, 0x30, + 0x92, 0x30, 0x93, 0x30, 0x9b, 0x30, 0x9c, 0x30, 0x9d, 0x30, 0x9e, 0x30, 0xa1, 0x30, 0xa2, 0x30, + 0xa3, 0x30, 0xa4, 0x30, 0xa5, 0x30, 0xa6, 0x30, 0xa7, 0x30, 0xa8, 0x30, 0xa9, 0x30, 0xaa, 0x30, + 0xab, 0x30, 0xac, 0x30, 0xad, 0x30, 0xae, 0x30, 0xaf, 0x30, 0xb0, 0x30, 0xb1, 0x30, 0xb2, 0x30, + 0xb3, 0x30, 0xb4, 0x30, 0xb5, 0x30, 0xb6, 0x30, 0xb7, 0x30, 0xb8, 0x30, 0xb9, 0x30, 0xba, 0x30, + 0xbb, 0x30, 0xbc, 0x30, 0xbd, 0x30, 0xbe, 0x30, 0xbf, 0x30, 0xc0, 0x30, 0xc1, 0x30, 0xc2, 0x30, + 0xc3, 0x30, 0xc4, 0x30, 0xc5, 0x30, 0xc6, 0x30, 0xc7, 0x30, 0xc8, 0x30, 0xc9, 0x30, 0xca, 0x30, + 0xcb, 0x30, 0xcc, 0x30, 0xcd, 0x30, 0xce, 0x30, 0xcf, 0x30, 0xd0, 0x30, 0xd1, 0x30, 0xd2, 0x30, + 0xd3, 0x30, 0xd4, 0x30, 0xd5, 0x30, 0xd6, 0x30, 0xd7, 0x30, 0xd8, 0x30, 0xd9, 0x30, 0xda, 0x30, + 0xdb, 0x30, 0xdc, 0x30, 0xdd, 0x30, 0xde, 0x30, 0xdf, 0x30, 0xe0, 0x30, 0xe1, 0x30, 0xe2, 0x30, + 0xe3, 0x30, 0xe4, 0x30, 0xe5, 0x30, 0xe6, 0x30, 0xe7, 0x30, 0xe8, 0x30, 0xe9, 0x30, 0xea, 0x30, + 0xeb, 0x30, 0xec, 0x30, 0xed, 0x30, 0xee, 0x30, 0xef, 0x30, 0xf0, 0x30, 0xf1, 0x30, 0xf2, 0x30, + 0xf3, 0x30, 0xf4, 0x30, 0xf5, 0x30, 0xf6, 0x30, 0x01, 0x30, 0x02, 0x30, 0x0c, 0xff, 0x0e, 0xff, + 0xfb, 0x30, 0x1a, 0xff, 0x1b, 0xff, 0x1f, 0xff, 0x01, 0xff, 0x9b, 0x30, 0x9c, 0x30, 0xb4, 0x00, + 0x40, 0xff, 0x3e, 0xff, 0xe3, 0xff, 0x3f, 0xff, 0x05, 0x30, 0xfc, 0x30, 0x15, 0x20, 0x10, 0x20, + 0x0f, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x26, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, + 0x1d, 0x20, 0x08, 0xff, 0x09, 0xff, 0x14, 0x30, 0x15, 0x30, 0x3b, 0xff, 0x3d, 0xff, 0x5b, 0xff, + 0x5d, 0xff, 0x08, 0x30, 0x09, 0x30, 0x0c, 0x30, 0x0d, 0x30, 0x0b, 0xff, 0x0d, 0xff, 0xb1, 0x00, + 0xd7, 0x00, 0xf7, 0x00, 0x1d, 0xff, 0x1e, 0x22, 0x34, 0x22, 0xb0, 0x00, 0x32, 0x20, 0x33, 0x20, + 0x06, 0xff, 0x06, 0x26, 0x05, 0x26, 0xcb, 0x25, 0xcf, 0x25, 0xce, 0x25, 0xc7, 0x25, 0xc6, 0x25, + 0xa1, 0x25, 0xa0, 0x25, 0xb3, 0x25, 0xb2, 0x25, 0xbd, 0x25, 0xbc, 0x25, 0x3b, 0x20, 0x12, 0x30, + 0x92, 0x21, 0x90, 0x21, 0x91, 0x21, 0x93, 0x21, 0x6f, 0x26, 0x6d, 0x26, 0x6a, 0x26, 0x0a, 0x00, + 0xff, 0xfe, // I‚í‚è‚ð•\‚·ˆÓ–¡‚Å0xFEFF‚ðÅŒã‚ɂ‚¯‚é +}; diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h new file mode 100644 index 0000000..cac8be9 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h @@ -0,0 +1,393 @@ +#pragma once + +// ROMƒf[ƒ^(SRL)ƒNƒ‰ƒX‚ÆŠÖ˜AƒNƒ‰ƒX‚Ì錾 + +#include +#include "common.h" +#include +#include +#include + +namespace MasterEditorTWL +{ + // ------------------------------------------------------------------- + // Type : enum class + // Name : ECSrlResult + // + // Description : RCSrlƒNƒ‰ƒX‚Ì‘€ì‚ł̃Gƒ‰[‚ð錾 + // ------------------------------------------------------------------- + enum class ECSrlResult + { + NOERROR = 0, + // ƒGƒ‰[“Á’肵‚È‚­‚Ä‚àŒ´ˆö‚ª‚í‚©‚邯‚«‚̕Ԃè’l + // (ƒGƒ‰[‚ª¶‚¶‚é‰Â”\«‚Ì‚ ‚é‰ÓŠ‚ª1‚ etc.) + ERROR, + // ƒtƒ@ƒCƒ‹‘€ì‚ł̃Gƒ‰[ + ERROR_FILE_OPEN, + ERROR_FILE_READ, + ERROR_FILE_WRITE, + // –¼‚ł̃Gƒ‰[ + ERROR_SIGN_ENCRYPT, // –¼‚Å‚«‚È‚¢ + ERROR_SIGN_DECRYPT, // –¼‰ðœ‚Å‚«‚È‚¢ + ERROR_SIGN_VERIFY, // –¼‰ðœ‚µ‚½Œã‚̃_ƒCƒWƒFƒXƒg‚ª‡‚í‚È‚¢ + // CRCŽZo‚ł̃Gƒ‰[ + ERROR_SIGN_CRC, + // SDKƒo[ƒWƒ‡ƒ“Žæ“¾‚ł̃Gƒ‰[ + ERROR_SDK, + // ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ªNTRê—p or •s³ƒoƒCƒiƒŠ + ERROR_PLATFORM, + }; + + // ------------------------------------------------------------------- + // Type : enum class + // Name : ECAppType + // + // Description : RCSrlƒNƒ‰ƒX‚̃AƒvƒŠŽí•Ê‚ð錾 + // ------------------------------------------------------------------- + enum class ECAppType + { + USER = 0, + SYSTEM, + SECURE, + LAUNCHER, + ILLEGAL, // •s’è + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCSDKVersion + // + // Description : RCSrlƒNƒ‰ƒX‚ÉŽ‚½‚¹‚éSDKƒo[ƒWƒ‡ƒ“î•ñƒNƒ‰ƒX + // + // Role : \‘¢‘̂Ƃµ‚ăf[ƒ^‚ð‚܂Ƃ߂è‚­ + // ------------------------------------------------------------------- + ref class RCSDKVersion + { + private: + System::String ^hVersion; + System::UInt32 ^hCode; + System::Boolean ^hIsStatic; + private: + RCSDKVersion(){} // ••‚¶‚é + public: + RCSDKVersion( System::String ^ver, System::UInt32 code, System::Boolean isStatic ) // ¶¬Žž‚ɂ̂݃tƒB[ƒ‹ƒh‚ðÝ’è‰Â”\ + { + if( ver == nullptr ) + this->hVersion = gcnew System::String(""); // NULLŽQƃoƒO‚ð”ð‚¯‚é + else + this->hVersion = ver; + this->hCode = gcnew System::UInt32( code ); + this->hIsStatic = gcnew System::Boolean( isStatic ); + } + public: + property System::String ^Version // ¶¬Œã‚ɂ̓tƒB[ƒ‹ƒh‚ÍRead Only + { + System::String^ get(){ return this->hVersion; } + } + public: + property System::Boolean IsStatic + { + System::Boolean get(){ return *(this->hIsStatic); } + } + public: + property System::UInt32 Code + { + System::UInt32 get(){ return *(this->hCode); } + } + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCLicense + // + // Description : RCSrlƒNƒ‰ƒX‚ÉŽ‚½‚¹‚郉ƒCƒZƒ“ƒXî•ñƒNƒ‰ƒX + // + // Role : \‘¢‘̂Ƃµ‚ăf[ƒ^‚ð‚܂Ƃ߂è‚­ + // ------------------------------------------------------------------- + ref class RCLicense + { + private: + System::String ^hPublisher; + System::String ^hName; + private: + RCLicense(){} // ••‚¶‚é + public: + RCLicense( System::String ^pub, System::String ^name ) // ¶¬Žž‚ɂ̂݃tƒB[ƒ‹ƒh‚ðÝ’è‰Â”\ + { + if( pub == nullptr ) + this->hPublisher = gcnew System::String(""); + else + this->hPublisher = pub; + + if( name == nullptr ) + this->hName = gcnew System::String(""); + else + this->hName = name; + } + public: + property System::String ^Name // ¶¬Œã‚ɂ̓tƒB[ƒ‹ƒh‚ÍRead Only + { + System::String^ get(){ return this->hName; } + } + public: + property System::String ^Publisher + { + System::String^ get(){ return this->hPublisher; } + } + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCMrcError + // + // Description : RCSrlƒNƒ‰ƒX‚ÉŽ‚½‚¹‚éMRCƒGƒ‰[î•ñƒNƒ‰ƒX + // + // Role : \‘¢‘̂Ƃµ‚ăf[ƒ^‚ð‚܂Ƃ߂è‚­ + // ------------------------------------------------------------------- + public ref class RCMrcError + { + private: + System::String ^hName; // €–Ú–¼ + System::UInt32 ^hBegin; // ŠJŽnƒAƒhƒŒƒX + System::UInt32 ^hEnd; // I—¹ƒAƒhƒŒƒX + System::String ^hMsg; // ƒGƒ‰[ƒƒbƒZ[ƒW + System::String ^hNameE; // ‰pŒê”Å + System::String ^hMsgE; + System::Boolean ^hEnableModify; // ƒ}ƒXƒ^ƒGƒfƒBƒ^‚ÅC³‰Â”\‚©‚Ç‚¤‚© + System::Boolean ^hAffectRom; // •ÏX‚·‚邯SRL(ROMƒoƒCƒiƒŠ)‚ª•ÏX‚³‚ê‚é‚© + private: + RCMrcError(){} // ••‚¶‚é + public: + RCMrcError( + System::String ^name, System::UInt32 beg, System::UInt32 end, System::String ^msg, + System::String ^nameE, System::String ^msgE, System::Boolean enableModify, System::Boolean affectRom ) + { + if( name == nullptr ) + this->hName = gcnew System::String(""); + else + this->hName = name; + + if( nameE == nullptr ) + this->hNameE = gcnew System::String(""); + else + this->hNameE = nameE; + + this->hBegin = gcnew System::UInt32( beg ); + this->hEnd = gcnew System::UInt32( end ); + + if( msg == nullptr ) + this->hMsg = gcnew System::String(""); + else + this->hMsg = msg; + + if( msgE == nullptr ) + this->hMsgE = gcnew System::String(""); + else + this->hMsgE = msgE; + + this->hEnableModify = gcnew System::Boolean( enableModify ); + this->hAffectRom = gcnew System::Boolean( affectRom ); + } + public: + property System::Boolean EnableModify + { + System::Boolean get(){ return *(this->hEnableModify); } // Read Only + } + property System::Boolean AffectRom + { + System::Boolean get(){ return *(this->hAffectRom); } + } + public: + // gridView‚Ì•\ަŒ`Ž®‚É‚ ‚킹‚é + cli::array^ getAll( System::Boolean isJapanese ) + { + if( (*this->hBegin == METWL_ERRLIST_NORANGE) && (*this->hEnd == METWL_ERRLIST_NORANGE) ) + { + if( isJapanese ) + return (gcnew array{this->hName, "-", "-", this->hMsg}); + else + return (gcnew array{this->hNameE, "-", "-", this->hMsgE}); + } + + if( isJapanese ) + return (gcnew array{this->hName, this->hBegin->ToString("X04")+"h", this->hEnd->ToString("X04")+"h", this->hMsg}); + else + return (gcnew array{this->hNameE, this->hBegin->ToString("X04")+"h", this->hEnd->ToString("X04")+"h", this->hMsgE}); + } + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCMrcSpecialList + // + // Description : MRC‚̒ljÁƒGƒ‰[€–ÚƒNƒ‰ƒX + // + // Role : \‘¢‘̂Ƃµ‚ăf[ƒ^‚ð‚܂Ƃ߂è‚­ + // ------------------------------------------------------------------- + ref class RCMrcSpecialList + { + public: + property System::Boolean ^hIsCheck; + property System::UInt32 ^hSDKVer; + property System::Byte ^hEULAVer; + property cli::array ^hShared2SizeArray; + public: + RCMrcSpecialList() + { + this->hIsCheck = gcnew System::Boolean( false ); + this->hSDKVer = gcnew System::UInt32( 0 ); + this->hShared2SizeArray = gcnew cli::array(METWL_NUMOF_SHARED2FILES); // ƒtƒ@ƒCƒ‹ƒTƒCƒY‚Ì”‚ɇ‚킹‚é + System::Int32 i; + for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) + { + this->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + } + } + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCSrl + // + // Description : ROMƒf[ƒ^(SRL)‚ÌÝ’èî•ñƒNƒ‰ƒX + // + // Role : ROMƒf[ƒ^‚̃tƒ@ƒCƒ‹“üo—ÍE“à•”î•ñ‚ÌXV + // ------------------------------------------------------------------- + ref class RCSrl + { + // field + private: + // ROMƒwƒbƒ_ + ROM_Header *pRomHeader; + + public: + // (GUI‚É•\ަ‚³‚ê‚é)ROMƒwƒbƒ_ŒÅ—Lî•ñ + + // NTRŒÝŠ·î•ñ ReadOnly + property System::String ^hTitleName; + property System::String ^hGameCode; + property System::String ^hMakerCode; + property System::String ^hPlatform; + property System::String ^hRomSize; + property System::Byte ^hRomVersion; + property System::UInt16 ^hHeaderCRC; + property System::String ^hLatency; // MROM/1TROM/Illegal + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹ + property cli::array ^hArrayParentalIndex; // •\ަ—p‚̃Rƒ“ƒ{ƒ{ƒbƒNƒX‚̃Cƒ“ƒfƒbƒNƒX + + // TWLê—pî•ñ ˆê•”•ÒW‰Â”\ + property System::UInt32 ^hNormalRomOffset; + property System::UInt32 ^hKeyTableRomOffset; + property System::String ^hTitleIDLo; + property System::UInt32 ^hTitleIDHi; + property System::Boolean ^hIsAppLauncher; // TitleIDLo‚©‚ç‚í‚©‚éƒAƒvƒŠŽí•Ê + property System::Boolean ^hIsAppUser; // TitleIDHi‚©‚ç‚í‚©‚éƒAƒvƒŠŽí•Ê + property System::Boolean ^hIsAppSystem; // + property System::Boolean ^hIsAppSecure; // + property System::Boolean ^hIsLaunch; // + property System::Boolean ^hIsMediaNand; // + property System::Boolean ^hIsDataOnly; // + property System::UInt16 ^hPublisherCode; // + property System::UInt32 ^hPublicSize; + property System::UInt32 ^hPrivateSize; + property System::Boolean ^hIsNormalJump; + property System::Boolean ^hIsTmpJump; + property System::Boolean ^hHasDSDLPlaySign; // ROMƒwƒbƒ_ŠO‚ÌSRL‚©‚ç‚í‚©‚é–¼‚Ì—L–³ + property System::Boolean ^hIsOldDevEncrypt; // ‹ŒŠJ”­—pˆÃ†ƒtƒ‰ƒO‚ª—§‚Á‚Ä‚¢‚é + property System::Boolean ^hIsSCFGAccess; // SCFGƒŒƒWƒXƒ^‚ðƒƒbƒN‚µ‚Ä‚¢‚é + + // TWLŠg’£ƒtƒ‰ƒO ˆê•”•ÒW‰Â”\ + property System::Boolean ^hIsCodecTWL; + property System::Boolean ^hIsEULA; // •ÒW‰Â”\ + property System::Boolean ^hIsSubBanner; + property System::Boolean ^hIsWiFiIcon; // •ÒW‰Â”\ + property System::Boolean ^hIsWirelessIcon; // •ÒW‰Â”\ + property System::Boolean ^hIsWL; + + // TWLƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹ Read Only + property System::Boolean ^hIsCommonClientKey; + property System::Boolean ^hIsAesSlotBForES; + property System::Boolean ^hIsAesSlotCForNAM; + property System::Boolean ^hIsSD; + property System::Boolean ^hIsNAND; + property System::Boolean ^hIsGameCardOn; + property System::Boolean ^hIsShared2; + property System::Boolean ^hIsAesSlotBForJpegEnc; + property System::Boolean ^hIsAesSlotBForJpegEncUser; + property System::Boolean ^hIsGameCardNitro; + property System::Boolean ^hIsAesSlotAForSSL; + property System::Boolean ^hIsCommonClientKeyForDebugger; + + // Shared2ƒtƒ@ƒCƒ‹ƒTƒCƒY Read Only + property cli::array ^hShared2SizeArray; + + // ƒJ[ƒhƒŠ[ƒWƒ‡ƒ“ Read Only + property System::Boolean ^hIsRegionJapan; + property System::Boolean ^hIsRegionAmerica; + property System::Boolean ^hIsRegionEurope; + property System::Boolean ^hIsRegionAustralia; + + // SDKƒo[ƒWƒ‡ƒ“‚ÆŽg—pƒ‰ƒCƒuƒ‰ƒŠ‚ÌƒŠƒXƒg + property System::Collections::Generic::List ^hSDKList; + property System::Collections::Generic::List ^hLicenseList; + + // MRC‹@”\‚Ń`ƒFƒbƒN‚³‚ꂽƒGƒ‰[î•ñ‚ÌƒŠƒXƒg + property System::Collections::Generic::List ^hErrorList; + property System::Collections::Generic::List ^hWarnList; + property System::Collections::Generic::List ^hParentalErrorList; // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚̃`ƒFƒbƒN‚Íset‚Æ“¯Žž‚És‚È‚¤ + + // MRC’ljÁ€–Ú + property RCMrcSpecialList ^hMrcSpecialList; + + // constructor and destructor + public: + RCSrl(); + ~RCSrl(); + + // method + public: + + // + // ROMƒwƒbƒ_‚̃tƒ@ƒCƒ‹“üo—Í + // + // @arg [in/out] “üo—̓tƒ@ƒCƒ‹–¼ + // + ECSrlResult readFromFile ( System::String ^filename ); + ECSrlResult writeToFile( System::String ^filename ); + + // internal method + private: + // ROMŒÅ—Lî•ñ‚ÆROMƒwƒbƒ_‚ÌÝ’è + ECSrlResult setRomInfo(void); // ROMƒwƒbƒ_‚©‚çŽæ“¾‚µ‚½ROMŒÅ—Lî•ñ‚ðƒtƒB[ƒ‹ƒh‚É”½‰f‚³‚¹‚é + ECSrlResult setRomHeader(void); // ROMƒwƒbƒ_‚ÉROMŒÅ—Lî•ñƒtƒB[ƒ‹ƒh‚Ì’l‚𔽉f‚³‚¹‚é + + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚ÌÝ’è + void setParentalControlInfo(void); + void setOneRatingOrgInfo( int ogn ); + void setParentalControlHeader(void); + + // ROMƒwƒbƒ_‚ÌXV + ECSrlResult calcRomHeaderCRC(void); // ROMƒwƒbƒ_‚ÌCRC‚ðÄŒvŽZ + ECSrlResult signRomHeader(void); // ROMƒwƒbƒ_XVŒã‚ÌÄ–¼ + ECSrlResult decryptRomHeader(void); // ROMƒwƒbƒ_‚Ì–¼‚ðŠO‚· + + // SRLƒoƒCƒiƒŠ‚©‚ç“ÁŽê‚ÈÝ’è‚𒲂ׂé + ECSrlResult hasDSDLPlaySign( FILE *fp ); + // DSƒ_ƒEƒ“ƒ[ƒh–¼‚ªSRL‚ÉŠi”[‚³‚ê‚Ä‚¢‚é‚©’²‚ׂé + // @arg [in] “ü—̓tƒ@ƒCƒ‹‚ÌFP (->SRL“ǂݞ‚ÝŽž‚ÉŽÀs‚³‚ê‚é‚ׂ«)] + ECSrlResult searchSDKVersion( FILE *fp ); // SDKƒo[ƒWƒ‡ƒ“‚ðŽæ“¾‚·‚é + ECSrlResult searchLicenses( FILE *fp ); // Žg—pƒ‰ƒCƒZƒ“ƒX‚ðŽæ“¾‚·‚é + ECAppType selectAppType(void); + + // MRC(Master ROM Checker)‹@”\ + ECSrlResult mrc( FILE *fp ); + ECSrlResult mrcNTR( FILE *fp ); + ECSrlResult mrcTWL( FILE *fp ); + void mrcPadding( FILE *fp ); + void mrcBanner( FILE *fp ); + void mrcReservedArea( FILE *fp ); + + }; // end of ref class RCSrl + +} // end of namespace MasterEditorTWL diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.cpp new file mode 100644 index 0000000..5fa2061 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.cpp @@ -0,0 +1,7 @@ +// stdafx.cpp : •W€ƒCƒ“ƒNƒ‹[ƒh MasterEditorTWL.pch ‚݂̂ð +// ŠÜ‚Þƒ\[ƒX ƒtƒ@ƒCƒ‹‚ÍAƒvƒŠƒRƒ“ƒpƒCƒ‹Ï‚݃wƒbƒ_[‚ɂȂè‚Ü‚·B +// stdafx.obj ‚ɂ̓vƒŠƒRƒ“ƒpƒCƒ‹Ï‚ÝŒ^î•ñ‚ªŠÜ‚Ü‚ê‚Ü‚·B + +#include "stdafx.h" + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.h new file mode 100644 index 0000000..6c1fb4b --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/stdafx.h @@ -0,0 +1,6 @@ +// stdafx.h : •W€‚̃VƒXƒeƒ€ ƒCƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹A‚Ü‚½‚Í +// ŽQƉñ”‚ª‘½‚­A‚©‚‚ ‚Ü‚è•ÏX‚³‚ê‚È‚¢AƒvƒƒWƒFƒNƒgê—p‚̃Cƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹ +// ‚ð‹Lq‚µ‚Ü‚·B +#pragma once + +// TODO: ƒvƒƒOƒ‰ƒ€‚É•K—v‚ȒljÁƒwƒbƒ_[‚ð‚±‚±‚ÅŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp new file mode 100644 index 0000000..cdd0ea4 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -0,0 +1,384 @@ +// utility.h ‚ÌŽÀ‘• + +#include "stdafx.h" +#include +#include "common.h" +#include "utility.h" +#include +#include +#include +#include +#include + +// +// String ‚ð char ”z—ñ‚ÉŠi”[ +// +// @arg [out] Ši”[æ +// @arg [in] Ši”[Œ³ +// @arg [in] •¶Žš—ñ’· +// @arg [in] —]‚è‚ð–„‚ß‚é padding +// +void MasterEditorTWL::setStringToChars( char *pDst, System::String ^hSrc, + const System::Int32 nMax, const System::SByte pad ) +{ + System::Int32 i; + + memset( pDst, pad, nMax ); + for( i=0; (i < hSrc->Length) && (i < nMax); i++ ) + { + pDst[i] = (char)hSrc[i]; + } +} + +// +// ROMƒwƒbƒ_’†‚ÌROM—e—ÊÝ’èƒoƒCƒg‚©‚çROM—e—Ê‚ð•\‚·•¶Žš—ñ‚ðŽæ“¾ +// +// @arg [in] ROM—e—ÊÝ’èƒoƒCƒg +// +// @ret •¶Žš—ñ(’PˆÊ‚‚«) +// +System::String^ MasterEditorTWL::transRomSizeToString( System::Byte ^byte ) +{ + System::UInt32 size; + System::String ^unit; + + // RomSize = 2^(byte) [Mbit] + size = 1 << *(byte); + + if(size >= 1024) + { + unit = gcnew System::String("Gbit"); + size = size / 1024; + } + else + { + unit = gcnew System::String("Mbit"); + } + return (size.ToString() + unit); +} + +// +// ƒTƒCƒY‚©‚ç’PˆÊ‚‚«‚Ì•¶Žš—ñ‚ðŽæ“¾ +// +// @arg [in] ƒoƒCƒg” +// +// @ret •¶Žš—ñ(’PˆÊ‚‚«) +// +System::String^ MasterEditorTWL::transSizeToString( System::UInt32 ^size ) +{ + if( size == nullptr ) + { + return (gcnew System::String("")); + } + + System::UInt32 val = *size; + + // Byte’PˆÊ + if( val == 0 ) + { + return val.ToString(); + } + if( val < 1024 ) + { + return (val.ToString() + " Byte"); + } + + // KB’PˆÊ‚ɕϊ· + if( (val % 1024) != 0 ) + { + return (val.ToString() + " Byte"); // ’[”‚̂Ƃ«‚Í’PˆÊ•ÏŠ·‚µ‚È‚¢ + } + val = val / 1024; + if( val < 1024 ) + { + return (val.ToString() + " KB"); + } + + // MB’PˆÊ‚ɕϊ· + if( (val % 1024) != 0 ) + { + return (val.ToString() + " KB"); + } + val = val / 1024; + if( val < 1024) + { + return (val.ToString() + " MB"); + } + + // GB’PˆÊ‚ɕϊ· + if( (val % 1024) != 0 ) + { + return (val.ToString() + " MB"); + } + val = val / 1024; + return (val.ToString() + " GB"); +} + +// Ý’è‰Â”\‚ȃCƒ“ƒfƒbƒNƒX‚ÌƒŠƒXƒg‚ðŽæ“¾‚·‚é +cli::array^ MasterEditorTWL::getOgnRatingAges( int ogn ) +{ + cli::array ^ages = gcnew cli::array{0}; + + if( ogn == OS_TWL_PCTL_OGN_CERO ) + { + ages = gcnew cli::array{0,12,15,17,18}; + } + else if( ogn == OS_TWL_PCTL_OGN_ESRB ) + { + ages = gcnew cli::array{0,3,6,10,13,17}; + } + else if( ogn == OS_TWL_PCTL_OGN_USK ) + { + ages = gcnew cli::array{0,6,12,16,18}; + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_GEN ) + { + ages = gcnew cli::array{0,3,7,12,16,18}; + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_PRT ) + { + ages = gcnew cli::array{0,4,6,12,16,18}; + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_BBFC ) + { + ages = gcnew cli::array{0,3,4,7,8,12,15,16,18}; + } + else if( ogn == OS_TWL_PCTL_OGN_OFLC ) + { + ages = gcnew cli::array{0,7,14,15}; + } + return ages; +} + +// Ý’è‰Â”\‚ȃCƒ“ƒfƒbƒNƒX‚ÌƒŠƒXƒg‚ðŽæ“¾‚·‚é +System::String^ MasterEditorTWL::getOgnName( int ogn ) +{ + System::String ^name = gcnew System::String(""); + + if( ogn == OS_TWL_PCTL_OGN_CERO ) + { + name = gcnew System::String("CERO"); + } + else if( ogn == OS_TWL_PCTL_OGN_ESRB ) + { + name = gcnew System::String("ESRB"); + } + else if( ogn == OS_TWL_PCTL_OGN_USK ) + { + name = gcnew System::String("USK"); + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_GEN ) + { + name = gcnew System::String("PEGI(General)"); + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_PRT ) + { + name = gcnew System::String("PEGI(Portugal)"); + } + else if( ogn == OS_TWL_PCTL_OGN_PEGI_BBFC ) + { + name = gcnew System::String("PEGI and BBFC"); + } + else if( ogn == OS_TWL_PCTL_OGN_OFLC ) + { + name = gcnew System::String("OFLC"); + } + return name; +} + +// +// ƒoƒCƒg—ñ‚É“Á’è‚̃pƒ^[ƒ“‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©ƒ}ƒbƒ`ƒ“ƒO‚·‚é +// +// @arg [in] ƒeƒLƒXƒg +// [in] ƒeƒLƒXƒg‚Ì’·‚³ +// [in] ƒpƒ^[ƒ“ +// [in] ƒpƒ^[ƒ“‚Ì’·‚³ +// [in] ƒeƒLƒXƒg‚ÌI’[‚܂Œ²‚ׂ½Žž“_‚ŃeƒLƒXƒg‚ª“r’†‚܂Ń}ƒbƒ`‚µ‚Ä‚¢‚½ê‡‚ð¬Œ÷‚Ƃ݂Ȃ·‚© +// +// @ret ƒ}ƒbƒ`‚µ‚½ƒeƒLƒXƒg‚̃IƒtƒZƒbƒg‚ðƒŠƒXƒg‚ŕԂ·B +// +System::Collections::Generic::List^ MasterEditorTWL::patternMatch( + const u8 *text, const u32 textLen, const u8 *pattern, const u32 patternLen, const System::Boolean enableLast ) +{ + // ‚ЂƂ܂¸ƒVƒ“ƒvƒ‹‚È•û–@‚ÅŽÀ‘•‚·‚é + u32 first; + u32 len; + System::Collections::Generic::List ^list = gcnew System::Collections::Generic::List(); + list->Clear(); + + // ƒpƒ^[ƒ“‚ð1•¶Žš‚¸‚‚¸‚炵‚È‚ª‚çƒ}ƒbƒ`ƒ“ƒO + for( first=0; first < textLen; first++ ) + { + len = (patternLen < (textLen-first))?patternLen:(textLen-first); // ÅŒã‚̂ق¤‚Í“r’†‚܂łµ‚©ƒ}ƒbƒ`ƒ“ƒO‚µ‚È‚¢ + if( *(text+first) == pattern[0] ) // ‚‘¬‰»‚Ì‚½‚ßʼn‚Ì•¶Žš‚ªˆê’v‚µ‚½‚Æ‚«‚̂ݑS•¶ƒ}ƒbƒ`ƒ“ƒO + { + if( memcmp( text+first, pattern, len ) == 0 ) + { + if( (enableLast == true) ) + { + list->Add( first ); + } + else if( len == patternLen ) // Š®‘Sˆê’v‚µ‚È‚¢‚ƃ_ƒ + { + list->Add( first ); + } + } + } + } + return list; +} // MasterEditorTWL::patternMatch + +// +// ƒtƒ@ƒCƒ‹‚ɃoƒCƒg—ñ‚̃pƒ^[ƒ“‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©ƒ}ƒbƒ`ƒ“ƒO‚·‚é +// +// @arg [in] ƒ}ƒbƒ`‘ÎۂƂȂéƒtƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ +// @arg [in] ƒpƒ^[ƒ“ +// @arg [in] ƒpƒ^[ƒ“‚Ì’·‚³(PATTERN_MATCH_LEN_MAXˆÈ‰º‚łȂ¯‚ê‚΂Ȃç‚È‚¢) +// +// @ret ƒ}ƒbƒ`‚µ‚½ƒeƒLƒXƒg‚̃IƒtƒZƒbƒg‚ðƒŠƒXƒg‚ŕԂ·B +// ÅŒã‚܂Ń}ƒbƒ`‚µ‚½ê‡‚̂ݬŒ÷‚µ‚½‚Ƃ݂Ȃ·B +// +#define PATTERN_MATCH_LEN_MAX (10*1024) +System::Collections::Generic::List^ MasterEditorTWL::patternMatch( FILE *fp, const u8 *pattern, const u32 patternLen ) +{ + u8 text[ 2 * PATTERN_MATCH_LEN_MAX ]; // ƒoƒbƒtƒ@‚ÌØ‚ê–Ú‚ð’Tõ‚·‚邽‚ß‘½‚߂ɓǂݞ‚Þ‚Ì‚ÅÅ‘å‚Ńpƒ^[ƒ“‚Ì2”{‚¾‚¯ƒoƒbƒtƒ@‚ª•K—v‚ɂȂé + u32 cur; + u32 filesize; + u32 len; + u32 extra; + System::Collections::Generic::List ^tmplist; + System::Collections::Generic::List ^list = gcnew System::Collections::Generic::List; + list->Clear(); + + if( patternLen > PATTERN_MATCH_LEN_MAX ) + return nullptr; + + fseek( fp, 0, SEEK_END ); + filesize = ftell( fp ); + + cur = 0; + while( cur < filesize ) + { + // ƒoƒbƒtƒ@‚ÌØ‚ê–ڂ𒲂ׂ½‚¢‚½‚ߎÀÛ‚É‚Í(ƒpƒ^[ƒ“‚Ì’·‚³-1)‚¾‚¯‘½‚߂ɃŠ[ƒh‚·‚é + len = ((filesize - cur) < PATTERN_MATCH_LEN_MAX)?(filesize - cur):PATTERN_MATCH_LEN_MAX; + extra = (len <= PATTERN_MATCH_LEN_MAX)?0:(patternLen-1); // ÅŒã‚܂ł¢‚Á‚½‚Æ‚«‚ɂ͗]•ª‚ɃŠ[ƒh‚µ‚Ă͂¢‚¯‚È‚¢ + fseek( fp, cur, SEEK_SET ); + u32 readlen = fread( text, 1, len + extra, fp ); + if( (len + extra) != readlen ) + { + //System::Diagnostics::Debug::WriteLine( "actual len = " + readlen.ToString() ); + //System::Diagnostics::Debug::WriteLine( "expect len = " + (len + extra).ToString() ); + return nullptr; + } + + // ƒeƒLƒXƒgI’[‚É“r’†‚܂Ń}ƒbƒ`ƒ“ƒO‚µ‚½‚Æ‚«‚ÍŽ¸”s‚Ƃ݂Ȃ· + tmplist = MasterEditorTWL::patternMatch( text, len+extra, pattern, patternLen, false ); + if( tmplist != nullptr ) + { + for each( u32 tmpval in tmplist ) + { + list->Add( tmpval + cur ); // ŽÀۂ̃IƒtƒZƒbƒg‚̓tƒ@ƒCƒ‹ƒIƒtƒZƒbƒg‚ð‰Á‚¦‚½’l + } + } + + // ŽŸ‚ÌSEEKˆÊ’u:‘½‚߂ɃŠ[ƒh‚µ‚½‚Í‚¸‚ç‚· + cur += len; + } + return list; +} + +// +// XML‚̃‹[ƒgƒm[ƒh‚©‚çŽw’肵‚½–¼‘O‚̃^ƒO‚ðŒŸõ‚µ‚ĕԂ· +// +// @arg [in] XML‚̃‹[ƒgƒm[ƒh +// @arg [in] ƒ^ƒO–¼ +// +// @ret ŒŸõ‚Ń}ƒbƒ`‚µ‚½‚Æ‚«ƒm[ƒh‚ð•Ô‚·B‚È‚¢‚Æ‚«‚Í nullptrB +// ‚½‚¾‚µAʼn‚Ƀ}ƒbƒ`‚µ‚½‚à‚̂̂ݕԂ· +// +System::Xml::XmlNode^ MasterEditorTWL::searchXmlNode( System::Xml::XmlElement ^root, System::String ^tag ) +{ + System::Xml::XmlNodeList ^list = root->GetElementsByTagName( tag ); + System::Xml::XmlNode ^item = nullptr; + if( list != nullptr ) + { + item = list->Item(0); + } + return item; +} + +// +// ƒ^ƒO‚ðŒŸõ‚µ‚Ä‚»‚̃eƒLƒXƒg‚ªŽw’肵‚½ƒeƒLƒXƒg‚ƈê’v‚·‚é‚©’²‚ׂé +// +// @arg [in] XML‚̃‹[ƒgƒm[ƒh +// @arg [in] ƒ^ƒO–¼ +// @arg [in] ’l +// +// @ret ˆê’v‚·‚邯‚«trueBˆê’v‚µ‚È‚¢‚Æ‚«Aƒ^ƒO‚ª‘¶Ý‚µ‚È‚¢‚Æ‚«‚ÍfalseB +// +System::Boolean MasterEditorTWL::isXmlEqual( System::Xml::XmlElement ^root, System::String ^tag, System::String ^val ) +{ + System::Xml::XmlNode ^item = MasterEditorTWL::searchXmlNode( root, tag ); + if( (item != nullptr) && (item->FirstChild != nullptr) && (item->FirstChild->Value->Equals( val )) ) + { + return true; + } + return false; +} + +// +// ƒ^ƒO‚ðŒŸõ‚µ‚Ä‚»‚̃eƒLƒXƒg‚ð•Ô‚· +// +// @arg [in] XML‚̃‹[ƒgƒm[ƒh +// @arg [in] ƒ^ƒO‚ÌXPath +// +// @ret ƒeƒLƒXƒg‚ª‘¶Ý‚·‚邯‚«‚»‚̃eƒLƒXƒg‚ð•Ô‚·B‘¶Ý‚µ‚È‚¢‚Æ‚«nullptrB +// +System::String^ MasterEditorTWL::getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ) +{ + System::Xml::XmlNode ^tmp = root->SelectSingleNode( xpath ); + if( tmp && tmp->FirstChild && tmp->FirstChild->Value ) + { + return tmp->FirstChild->Value; + } + return nullptr; +} + +// +// XML‚Ƀ^ƒO‚ð’ljÁ‚·‚é +// +// @arg [in] XMLƒhƒLƒ…ƒƒ“ƒg +// @arg [in] eƒm[ƒh +// @arg [in] ƒ^ƒO–¼ +// @arg [in] ƒeƒLƒXƒg +// +void MasterEditorTWL::appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml::XmlElement ^parent, + System::String ^tag, System::String ^text ) +{ + if( System::String::IsNullOrEmpty( text ) ) + return; + + System::Xml::XmlElement ^node = doc->CreateElement( tag ); + node->AppendChild( doc->CreateTextNode( text ) ); + parent->AppendChild( node ); +} + +// +// ƒrƒbƒg”‚ðƒJƒEƒ“ƒg‚·‚é +// +// @arg [in] ’l +// +// @ret ƒrƒbƒg” +// +u32 MasterEditorTWL::countBits( const u32 val ) +{ + // •ªŠ„“Ž¡–@:—ׂ臂¤‚©‚½‚܂育‚ƂɃrƒbƒg”‚ðƒJƒEƒ“ƒg‚µ‚Ä‚¢‚­ + u32 n = val; + + n = ((n>>1) & 0x55555555) + (n & 0x55555555); + n = ((n>>2) & 0x33333333) + (n & 0x33333333); + n = ((n>>4) & 0x0f0f0f0f) + (n & 0x0f0f0f0f); + n = ((n>>8) & 0x00ff00ff) + (n & 0x00ff00ff); + n = (n>>16) + (n & 0x0000ffff); + return n; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h new file mode 100644 index 0000000..180a888 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h @@ -0,0 +1,136 @@ +#pragma once + +// ‹¤—pƒ‰ƒCƒuƒ‰ƒŠEƒNƒ‰ƒX‚Ì錾 + +#include +#include +#include + +namespace MasterEditorTWL +{ + + // ------------------------------------------------------------------- + // functions + // ------------------------------------------------------------------- + + // + // String ‚ð char ”z—ñ‚ÉŠi”[ + // + // @arg [out] Ši”[æ + // @arg [in] Ši”[Œ³ + // @arg [in] •¶Žš—ñ’· + // @arg [in] —]‚è‚ð–„‚ß‚é padding + // + void setStringToChars( char *pDst, System::String ^hSrc, const System::Int32 nMax, const System::SByte pad ); + + // + // ROMƒwƒbƒ_’†‚ÌROM—e—ÊÝ’èƒoƒCƒg‚©‚çROM—e—Ê‚ð•\‚·•¶Žš—ñ‚ðŽæ“¾ + // + // @arg [in] ROM—e—ÊÝ’èƒoƒCƒg + // + // @ret •¶Žš—ñ(’PˆÊ‚‚«) + // + System::String^ transRomSizeToString( System::Byte ^byte ); + + // + // ƒTƒCƒY‚©‚ç’PˆÊ‚‚«‚Ì•¶Žš—ñ‚ðŽæ“¾ + // + // @arg [in] ƒoƒCƒg” + // + // @ret •¶Žš—ñ(’PˆÊ‚‚«) + // + System::String^ transSizeToString( System::UInt32 ^size ); + + // + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚ÌŠe’c‘Ì‚ÌÝ’è‰Â”\”N—î‚ðŽæ“¾‚·‚é + // + // @arg [in] ’c‘Ì + // + cli::array^ getOgnRatingAges( int ogn ); + + // + // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚ÌŠe’c‘̂̒c‘Ì–¼‚ðŽæ“¾‚·‚é + // + // @arg [in] ’c‘Ì + // + System::String^ getOgnName( int ogn ); + + // + // ƒoƒCƒg—ñ‚É“Á’è‚̃pƒ^[ƒ“‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©ƒ}ƒbƒ`ƒ“ƒO‚·‚é + // + // @arg [in] ƒeƒLƒXƒg + // [in] ƒeƒLƒXƒg‚Ì’·‚³ + // [in] ƒpƒ^[ƒ“ + // [in] ƒpƒ^[ƒ“‚Ì’·‚³ + // [in] ƒeƒLƒXƒg‚ÌI’[‚܂Œ²‚ׂ½Žž“_‚ŃeƒLƒXƒg‚ª“r’†‚܂Ń}ƒbƒ`‚µ‚Ä‚¢‚½ê‡‚ð¬Œ÷‚Ƃ݂Ȃ·‚© + // + // @ret ƒ}ƒbƒ`‚µ‚½ƒeƒLƒXƒg‚̃Cƒ“ƒfƒbƒNƒX‚ðƒŠƒXƒg‚ŕԂ·B + // + System::Collections::Generic::List^ patternMatch( + const u8 *text, const u32 textLen, const u8 *pattern, const u32 patternLen, const System::Boolean enableLast ); + + // + // ƒtƒ@ƒCƒ‹‚ɃoƒCƒg—ñ‚̃pƒ^[ƒ“‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©ƒ}ƒbƒ`ƒ“ƒO‚·‚é + // + // @arg [in] ƒ}ƒbƒ`‘ÎۂƂȂéƒtƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + // @arg [in] ƒpƒ^[ƒ“ + // @arg [in] ƒpƒ^[ƒ“‚Ì’·‚³ + // + // @ret ƒ}ƒbƒ`‚µ‚½ƒeƒLƒXƒg‚̃Cƒ“ƒfƒbƒNƒX‚ðƒŠƒXƒg‚ŕԂ·B + // ÅŒã‚܂Ń}ƒbƒ`‚µ‚½ê‡‚̂ݬŒ÷‚µ‚½‚Ƃ݂Ȃ·B + // + System::Collections::Generic::List^ patternMatch( FILE *fp, const u8 *pattern, const u32 patternLen ); + + // + // XML‚̃‹[ƒgƒm[ƒh‚©‚çŽw’肵‚½–¼‘O‚̃^ƒO‚ðŒŸõ‚µ‚ĕԂ· + // + // @arg [in] XML‚̃‹[ƒgƒm[ƒh + // @arg [in] ƒ^ƒO–¼ + // + // @ret ŒŸõ‚Ń}ƒbƒ`‚µ‚½‚Æ‚«ƒm[ƒh‚ð•Ô‚·B‚È‚¢‚Æ‚«‚Í nullptrB + // ‚½‚¾‚µAʼn‚Ƀ}ƒbƒ`‚µ‚½‚à‚̂̂ݕԂ· + // + System::Xml::XmlNode^ searchXmlNode( System::Xml::XmlElement ^root, System::String ^tag ); + + // + // ƒ^ƒO‚ðŒŸõ‚µ‚Ä‚»‚̃eƒLƒXƒg‚ªŽw’肵‚½ƒeƒLƒXƒg‚ƈê’v‚·‚é‚©’²‚ׂé + // + // @arg [in] XML‚̃‹[ƒgƒm[ƒh + // @arg [in] ƒ^ƒO–¼ + // @arg [in] ’l + // + // @ret ˆê’v‚·‚邯‚«trueBˆê’v‚µ‚È‚¢‚Æ‚«Aƒ^ƒO‚ª‘¶Ý‚µ‚È‚¢‚Æ‚«‚ÍfalseB + // + System::Boolean isXmlEqual( System::Xml::XmlElement ^root, System::String ^tag, System::String ^val ); + + // + // ƒ^ƒO‚ðŒŸõ‚µ‚Ä‚»‚̃eƒLƒXƒg‚ð•Ô‚· + // + // @arg [in] XML‚̃‹[ƒgƒm[ƒh + // @arg [in] ƒ^ƒO‚ÌXPath + // + // @ret ƒeƒLƒXƒg‚ª‘¶Ý‚·‚邯‚«‚»‚̃eƒLƒXƒg‚ð•Ô‚·B‘¶Ý‚µ‚È‚¢‚Æ‚«nullptrB + // + System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ); + + // + // XML‚Ƀ^ƒO‚ð’ljÁ‚·‚é + // + // @arg [in] XMLƒhƒLƒ…ƒƒ“ƒg + // @arg [in] eƒm[ƒh + // @arg [in] ƒ^ƒO–¼ + // @arg [in] ƒeƒLƒXƒg + // + void appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml::XmlElement ^parent, + System::String ^tag, System::String ^text ); + + // + // ƒrƒbƒg”‚ðƒJƒEƒ“ƒg‚·‚é + // + // @arg [in] ’l + // + // @ret ƒrƒbƒg” + // + u32 countBits( const u32 val ); + +} // end of namespace MasterEditorTWL diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWLSetup/MasterEditorTWLSetup.vdproj b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWLSetup/MasterEditorTWLSetup.vdproj new file mode 100644 index 0000000..2bb851a --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWLSetup/MasterEditorTWLSetup.vdproj @@ -0,0 +1,1051 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:MasterEditorTWLSetup" +"LanguageId" = "3:1041" +"CodePage" = "3:932" +"UILanguageId" = "3:1041" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_23206E985D4D45889DEAA959C37C4BC9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2FBB21F2C72D420C96323E9B01AE98FE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_491C89DAB2F34A939F356C47975E7BD0" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_51367776DB1B459A9BC61A9375741F99" + "OwnerKey" = "8:_7746D2D347F0423FB46FA2300F6158A4" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_52A795D53BFB42E2AEDA0D7C06CE7BEF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_6EC739CA561443E48045379A268C1657" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7746D2D347F0423FB46FA2300F6158A4" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A3417E9C9F294832AE49B5BDAF95E373" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F2F774D4BB00497E9255EE39B3BE8568" + "OwnerKey" = "8:_51367776DB1B459A9BC61A9375741F99" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_2FBB21F2C72D420C96323E9B01AE98FE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7746D2D347F0423FB46FA2300F6158A4" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\MasterEditorTWLSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.2.0" + { + "Name" = "8:.NET Framework 2.0 (x86)" + "ProductCode" = "8:Microsoft.Net.Framework.2.0" + } + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" + { + "Name" = "8:Windows インストーラ 3.1" + "ProductCode" = "8:Microsoft.Windows.Installer.3.1" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\MasterEditorTWLSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.2.0" + { + "Name" = "8:.NET Framework 2.0 (x86)" + "ProductCode" = "8:Microsoft.Net.Framework.2.0" + } + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" + { + "Name" = "8:Windows インストーラ 3.1" + "ProductCode" = "8:Microsoft.Windows.Installer.3.1" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E5C132F9C6994C919F7171673A5DB7A8" + { + "Name" = "8:ResourceTransition.exe" + "Condition" = "8:" + "Object" = "8:_2FBB21F2C72D420C96323E9B01AE98FE" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:\"[TARGETDIR]\\bin" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_3CFA3BCE_7F42_4725_B7E0_C89AF8C8B930" + "InstallerClass" = "11:FALSE" + "CustomActionData" = "8:" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_6924DDEBAA3847838D980F2E7456B5FF" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "Version" = "8:2.0.50727" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_23206E985D4D45889DEAA959C37C4BC9" + { + "SourcePath" = "8:..\\resource\\sheet_templete.xml" + "TargetName" = "8:sheet_templete.xml" + "Tag" = "8:" + "Folder" = "8:_99EFE6B595C5432FB4712560C9D29AE5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2FBB21F2C72D420C96323E9B01AE98FE" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:ResourceTransition, Version=1.0.3223.26316, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_2FBB21F2C72D420C96323E9B01AE98FE" + { + "Name" = "8:ResourceTransition.exe" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:..\\ResourceTransition\\Release\\ResourceTransition.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_2E7532FD56764A0B8349AAA9E97FD1A4" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_491C89DAB2F34A939F356C47975E7BD0" + { + "SourcePath" = "8:..\\resource\\middleware.xsl" + "TargetName" = "8:middleware.xsl" + "Tag" = "8:" + "Folder" = "8:_99EFE6B595C5432FB4712560C9D29AE5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_52A795D53BFB42E2AEDA0D7C06CE7BEF" + { + "SourcePath" = "8:..\\MasterEditorTWL.resources.dll" + "TargetName" = "8:MasterEditorTWL.resources.dll" + "Tag" = "8:" + "Folder" = "8:_AB6CC39E2A774B2AB387F6F4C81BE36E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6EC739CA561443E48045379A268C1657" + { + "SourcePath" = "8:..\\resource\\middleware_e.xsl" + "TargetName" = "8:middleware_e.xsl" + "Tag" = "8:" + "Folder" = "8:_99EFE6B595C5432FB4712560C9D29AE5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A3417E9C9F294832AE49B5BDAF95E373" + { + "SourcePath" = "8:..\\resource\\ini.xml" + "TargetName" = "8:ini.xml" + "Tag" = "8:" + "Folder" = "8:_99EFE6B595C5432FB4712560C9D29AE5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_511CA14EE892474E9A4F78537CA4FD5F" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_DB36135A1FB84606BA18105F8B898FB2" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_1494B8B199184797B9C812877A4DFB7F" + { + "Name" = "8:bin" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B23854B2049F4A97BCD9477AFCDBE7EB" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_2E7532FD56764A0B8349AAA9E97FD1A4" + { + "Name" = "8:install_bin" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_BA900236A2504EA0BAB88A628C3904DC" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_AB6CC39E2A774B2AB387F6F4C81BE36E" + { + "Name" = "8:ja" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_0CDFCC11878746AE8F009DBFCAD3F129" + "Folders" + { + } + } + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_99EFE6B595C5432FB4712560C9D29AE5" + { + "Name" = "8:resource" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_640331DE98B247AD89E624136F7BF429" + "Folders" + { + } + } + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_F871EA43D66E4C2C868D277F17AE8F52" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1041" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:MasterEditorTWL" + "ProductCode" = "8:{B12B5AFF-26D1-47B5-85B6-1E2A7B5106F5}" + "PackageCode" = "8:{69879F78-483D-4A0A-9732-8D5A72E33723}" + "UpgradeCode" = "8:{CE22C209-7AE1-4F58-8F6B-6D044BA2A118}" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:nintendo" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:MasterEditorTWLSetup" + "Subject" = "8:" + "ARPCONTACT" = "8:nintendo" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_DE3525327D5741C8B8F00223FB033E80" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_064E90E490674DEEA974094B5467A386" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_E41443B9DF754797AA265044ED843A52" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_2BC1D936E6DC45A7A1BD166F48CE31C3" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_1E9C816FBE5C44DC8A2649DF40760892" + { + "Name" = "8:MasterEditorTWL" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_7746D2D347F0423FB46FA2300F6158A4" + "Folder" = "8:_511CA14EE892474E9A4F78537CA4FD5F" + "WorkingFolder" = "8:_1494B8B199184797B9C812877A4DFB7F" + "Icon" = "8:" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_4CCE54AD98074A3BBD623BDEC20B9752" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_75F92E28CF004D259861A9FED348A478" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_03D0563E96ED4290A1F39B1089754E46" + { + "Sequence" = "3:200" + "DisplayName" = "8:インストール フォルダ" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_15934606B52D491287A665833C86963C" + { + "Sequence" = "3:100" + "DisplayName" = "8:よã†ã“ã" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C16356A19FD541E68225C5E34F2ACBD1" + { + "Sequence" = "3:300" + "DisplayName" = "8:インストールã®ç¢ºèª" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_84553AE7657346C0BEFFACC6DEE8BA3E" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_46AE50DF1B9A458FA932AB9BDEB8C097" + { + "Sequence" = "3:100" + "DisplayName" = "8:進行状æ³" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_856D1D3282D44811B9EEF57A521CB8A0" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0E61C8F6C89747558C33BD69BACE7158" + { + "Sequence" = "3:300" + "DisplayName" = "8:インストールã®ç¢ºèª" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_43EBFD558AA44619A26A25D5AE33C315" + { + "Sequence" = "3:100" + "DisplayName" = "8:よã†ã“ã" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D4B799BD07FD4AE5890E6319153B8CCF" + { + "Sequence" = "3:200" + "DisplayName" = "8:インストール フォルダ" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_95CC2394B4924E52BEF9CC6A51AA8BBF" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F7EC3CF49FA04B88A1CBE0B6963F0875" + { + "Sequence" = "3:100" + "DisplayName" = "8:完了" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A8FC0955E1E54111A186CB9467EF1132" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_28866486C3004ECAAF88E207A435EF0D" + { + "Sequence" = "3:100" + "DisplayName" = "8:完了" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DAB148986A654428A42E413FD4B68E8F" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_61716D98ACBB4CBCB78E425A1C6A4E53" + { + "Sequence" = "3:100" + "DisplayName" = "8:進行状æ³" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_E0E8980863E24B64A2A4D12136B5027B" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + } + "MergeModule" + { + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_51367776DB1B459A9BC61A9375741F99" + { + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:TRUE" + "SourcePath" = "8:policy_9_0_Microsoft_VC90_CRT_x86.msm" + "Properties" + { + } + "LanguageId" = "3:0" + "Exclude" = "11:FALSE" + "Folder" = "8:" + "Feature" = "8:" + "IsolateTo" = "8:" + } + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_F2F774D4BB00497E9255EE39B3BE8568" + { + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:TRUE" + "SourcePath" = "8:microsoft_vc90_crt_x86.msm" + "Properties" + { + } + "LanguageId" = "3:0" + "Exclude" = "11:FALSE" + "Folder" = "8:" + "Feature" = "8:" + "IsolateTo" = "8:" + } + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_65C3DCC3F0554E0F88386C691DC81AD9" + { + "SourcePath" = "8:" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_1494B8B199184797B9C812877A4DFB7F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:LocalizedResourceDlls" + "OutputProjectGuid" = "8:{F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7746D2D347F0423FB46FA2300F6158A4" + { + "SourcePath" = "8:..\\Release\\MasterEditorTWL.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_1494B8B199184797B9C812877A4DFB7F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{F8A4F8F7-A3BD-4DCA-B054-5FF8A09082F5}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/Release/ResourceTransition.exe b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/Release/ResourceTransition.exe new file mode 100644 index 0000000..3aef75a Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/Release/ResourceTransition.exe differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.ncb b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.ncb new file mode 100644 index 0000000..9937dd7 Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.ncb differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.sln b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.sln new file mode 100644 index 0000000..8854dc7 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ResourceTransition", "ResourceTransition\ResourceTransition.vcproj", "{A8AE9F94-E10F-4962-B5F7-059FEA220583}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A8AE9F94-E10F-4962-B5F7-059FEA220583}.Debug|Win32.ActiveCfg = Debug|Win32 + {A8AE9F94-E10F-4962-B5F7-059FEA220583}.Debug|Win32.Build.0 = Debug|Win32 + {A8AE9F94-E10F-4962-B5F7-059FEA220583}.Release|Win32.ActiveCfg = Release|Win32 + {A8AE9F94-E10F-4962-B5F7-059FEA220583}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.suo b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.suo new file mode 100644 index 0000000..5765f0d Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition.suo differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/AssemblyInfo.cpp b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/AssemblyInfo.cpp new file mode 100644 index 0000000..f032724 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/AssemblyInfo.cpp @@ -0,0 +1,40 @@ +#include "stdafx.h" + +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// ƒAƒZƒ“ƒuƒŠ‚ÉŠÖ‚·‚éˆê”Êî•ñ‚͈ȉº‚Ì‘®«ƒZƒbƒg‚ð‚Æ‚¨‚µ‚ħŒä‚³‚ê‚Ü‚·B +// ƒAƒZƒ“ƒuƒŠ‚ÉŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚éî•ñ‚ð•ÏX‚·‚é‚É‚ÍA +// ‚±‚ê‚ç‚Ì‘®«’l‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢B +// +[assembly:AssemblyTitleAttribute("ResourceTransition")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("”C“V“°Š”Ž®‰ïŽÐ")]; +[assembly:AssemblyProductAttribute("ResourceTransition")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) ”C“V“°Š”Ž®‰ïŽÐ 2008")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// ƒAƒZƒ“ƒuƒŠ‚̃o[ƒWƒ‡ƒ“î•ñ‚ÍAˆÈ‰º‚Ì 4 ‚‚̒l‚Å\¬‚³‚ê‚Ä‚¢‚Ü‚·: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// ‚·‚ׂĂ̒l‚ðŽw’è‚·‚é‚©A‰º‚̂悤‚É '*' ‚ðŽg‚Á‚ÄƒŠƒrƒWƒ‡ƒ“‚¨‚æ‚уrƒ‹ƒh”Ô†‚ð +// Šù’è’l‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ReadMe.txt b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ReadMe.txt new file mode 100644 index 0000000..a80eed9 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ReadMe.txt @@ -0,0 +1,29 @@ +=============================================================================== + ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ : ResourceTransition ƒvƒƒWƒFƒNƒg‚ÌŠT—v +=============================================================================== + +‚±‚Ì ResourceTransition ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAAppWizard ‚É‚æ‚Á‚Ä쬂³‚ê‚Ü‚µ‚½B + +‚±‚̃tƒ@ƒCƒ‹‚É‚ÍAResourceTransition ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\¬‚·‚éŠeƒtƒ@ƒCƒ‹‚Ì +“à—e‚ÌŠT—ª‚ª‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B + +ResourceTransition.vcproj + ‚±‚ê‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒEƒBƒU[ƒh‚Ŷ¬‚³‚ê‚é VC++ ƒvƒƒWƒFƒNƒg‚̃ƒCƒ“‚Ì + ƒvƒƒWƒFƒNƒg ƒtƒ@ƒCƒ‹‚Å‚·B + ƒtƒ@ƒCƒ‹‚𶬂µ‚½ Visual C++ ‚̃o[ƒWƒ‡ƒ“î•ñ‚ÆAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒEƒBƒU[ + ƒh‚Å‘I‘ð‚µ‚½ƒvƒ‰ƒbƒgƒtƒH[ƒ€A\¬A‚¨‚æ‚уvƒƒWƒFƒNƒg‚Ì‹@”\‚ÉŠÖ‚·‚éî•ñ‚ª + ‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B + +ResourceTransition.cpp + ‚±‚ê‚ÍAƒƒCƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ ƒ\[ƒX ƒtƒ@ƒCƒ‹‚Å‚·B + +AssemblyInfo.cpp + ƒAƒZƒ“ƒuƒŠ ƒƒ^ƒf[ƒ^‚ð•ÏX‚·‚邽‚߂̃JƒXƒ^ƒ€‘®«‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + +/////////////////////////////////////////////////////////////////////////////// +‚»‚Ì‘¼‚̃ƒ‚ : + +AppWizard ‚Å‚ÍA"TODO:" ‚ðŽg—p‚µ‚ÄAƒ†[ƒU[‚ª’ljÁ‚Ü‚½‚̓JƒXƒ^ƒ}ƒCƒY‚·‚éƒ\[ƒX +•”•ª‚ðŽ¦‚µ‚Ü‚·B + +/////////////////////////////////////////////////////////////////////////////// diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/Release/BuildLog.htm b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/Release/BuildLog.htm new file mode 100644 index 0000000..e46c11f Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/Release/BuildLog.htm differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.cpp b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.cpp new file mode 100644 index 0000000..799c59e --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.cpp @@ -0,0 +1,55 @@ +// ResourceTransition.cpp : ƒƒCƒ“ ƒvƒƒWƒFƒNƒg ƒtƒ@ƒCƒ‹‚Å‚·B + +#include "stdafx.h" + +using namespace System; + +#define ROOT_PATH "..\\" + +int main(array ^args) +{ + // ì‹Æƒ‹[ƒg‚ðˆø”‚©‚çƒQƒbƒg + System::String ^root; + if( (args->Length <= 0) || (System::String::IsNullOrEmpty( args[0] )) ) + { + root = gcnew System::String(ROOT_PATH); // ‚È‚¢ê‡‚̓fƒtƒHƒ‹ƒg + } + else + { + root = args[0]; + if( !root->EndsWith( "\\" ) ) + { + root += "\\"; + } + } + Console::WriteLine( "Root path: " + root ); + + // V‚µ‚¢ƒtƒHƒ‹ƒ_/jp/Œ¾ŒêƒŠƒ\[ƒX.dll ‚ð jp/ ‚Ɉڂ·(ƒRƒs[) + try + { + if( System::IO::File::Exists( root + "V‚µ‚¢ƒtƒHƒ‹ƒ_\\ja\\MasterEditorTWL.resources.dll" ) ) + { + Console::WriteLine( "File Exists." ); + if( !System::IO::Directory::Exists( root + "ja" ) ) + { + System::IO::Directory::CreateDirectory( root + "ja" ); + Console::WriteLine( "Create New Directory." ); + } + System::IO::File::Copy( root + "V‚µ‚¢ƒtƒHƒ‹ƒ_\\ja\\MasterEditorTWL.resources.dll", + root + "ja\\MasterEditorTWL.resources.dll", true ); // ã‘‚« + Console::WriteLine( "Copy Resource DLL." ); + } + else + { + Console::WriteLine( "No File Exists." ); + } + } + catch( System::Exception ^ex ) + { + Console::WriteLine( "error: " + ex->Message ); + } + + //Console::ReadKey(); + + return 0; +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj new file mode 100644 index 0000000..5c76944 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj.RED.nishikawa_takeshi.user b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj.RED.nishikawa_takeshi.user new file mode 100644 index 0000000..7963a7f --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/ResourceTransition.vcproj.RED.nishikawa_takeshi.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.ico b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.ico new file mode 100644 index 0000000..3a5525f Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.ico differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.rc b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.rc new file mode 100644 index 0000000..2ad8e34 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/app.rc @@ -0,0 +1,63 @@ +// Microsoft Visual C++ ‚Ŷ¬‚³‚ꂽƒŠƒ\[ƒX ƒXƒNƒŠƒvƒg‚Å‚·B +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// ‰pŒê (•Ä‘) ƒŠƒ\[ƒX + + +///////////////////////////////////////////////////////////////////////////// +// +// ƒAƒCƒRƒ“ +// + +// ʼn‚É”z’u‚³‚ꂽƒAƒCƒRƒ“A‚Ü‚½‚Í ID ’l‚ªÅ‚à’á‚¢ƒAƒCƒRƒ“‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒAƒCƒRƒ“‚ɂȂè‚Ü‚·B + +LANGUAGE 17, 1 +#pragma code_page(932) +1 ICON "app.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE 3 ƒŠƒ\[ƒX‚©‚綬‚³‚ê‚Ü‚µ‚½B +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // APSTUDIO_INVOKED ‚łȂ¢ê‡ + diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/resource.h b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/resource.h new file mode 100644 index 0000000..1f2251c --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/resource.h @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.cpp b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.cpp new file mode 100644 index 0000000..f0478ef --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.cpp @@ -0,0 +1,7 @@ +// stdafx.cpp : •W€ƒCƒ“ƒNƒ‹[ƒh ResourceTransition.pch ‚݂̂ð +// ŠÜ‚Þƒ\[ƒX ƒtƒ@ƒCƒ‹‚ÍAƒvƒŠƒRƒ“ƒpƒCƒ‹Ï‚݃wƒbƒ_[‚ɂȂè‚Ü‚·B +// stdafx.obj ‚ɂ̓vƒŠƒRƒ“ƒpƒCƒ‹Ï‚ÝŒ^î•ñ‚ªŠÜ‚Ü‚ê‚Ü‚·B + +#include "stdafx.h" + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.h b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.h new file mode 100644 index 0000000..d0e2c99 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/ResourceTransition/ResourceTransition/stdafx.h @@ -0,0 +1,8 @@ +// stdafx.h : •W€‚̃VƒXƒeƒ€ ƒCƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹A‚Ü‚½‚Í +// ŽQƉñ”‚ª‘½‚­A‚©‚‚ ‚Ü‚è•ÏX‚³‚ê‚È‚¢AƒvƒƒWƒFƒNƒgê—p‚̃Cƒ“ƒNƒ‹[ƒh ƒtƒ@ƒCƒ‹ +// ‚ð‹Lq‚µ‚Ü‚·B +// + +#pragma once + +// TODO: ƒvƒƒOƒ‰ƒ€‚É•K—v‚ȒljÁƒwƒbƒ_[‚ð‚±‚±‚ÅŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B diff --git a/build/tools/MasterEditor/MasterEditorTWL/TWL-MasterROM_Submission_Sheet_080729A.xls b/build/tools/MasterEditor/MasterEditorTWL/TWL-MasterROM_Submission_Sheet_080729A.xls new file mode 100644 index 0000000..2ec5966 Binary files /dev/null and b/build/tools/MasterEditor/MasterEditorTWL/TWL-MasterROM_Submission_Sheet_080729A.xls differ diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/ini.xml b/build/tools/MasterEditor/MasterEditorTWL/resource/ini.xml new file mode 100644 index 0000000..60e26ef --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/ini.xml @@ -0,0 +1,29 @@ + + + w + J + Sheet + OFF + + 5 + 0 + 20200 + + + 0 + 0 + 0 + 0 + 0 + 0 + + + 787f + 16017f + 151b + 99bf + 2402ef + 37839f + 3b4f7f + + diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/middleware.xsl b/build/tools/MasterEditor/MasterEditorTWL/resource/middleware.xsl new file mode 100644 index 0000000..776cb97 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/middleware.xsl @@ -0,0 +1,92 @@ + + + + + + TWL Middleware List + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ () +
+
+ version: - +
+
+ + + + + + + + + + +
PublisherMiddleware Name
+
+ + + + + + + + +
diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/middleware_e.xsl b/build/tools/MasterEditor/MasterEditorTWL/resource/middleware_e.xsl new file mode 100644 index 0000000..958d9f9 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/middleware_e.xsl @@ -0,0 +1,92 @@ + + + + + + TWL Middleware List + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ () +
+
+ version: - +
+
+ + + + + + + + + + +
PublisherMiddleware Name
+
+ + + + + + + + +
diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml b/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml new file mode 100644 index 0000000..6bced51 --- /dev/null +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml @@ -0,0 +1,11888 @@ + + + + + ニンテンドーDS マスターROMæå‡ºç¢ºèªæ›¸ã€€ï¼ˆ2005-00å·ï¼‰ + Osamu Kurokawa + nishikawa_takeshi + 2008-10-16T04:14:25Z + 2004-08-25T05:17:34Z + 2008-09-08T09:49:23Z + Nintendo Co.,Ltd. + 11.9999 + + + 14625 + 19335 + 1260 + 195 + + False + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + テイシュツカクニンショニンテンドーDSiマスターROMæå‡ºç¢ºèªæ›¸ + ã‚·ãƒ§ã‚·ã‚­ã‚´ã‚¦æ›¸å¼ 2008-10å· + + + + + + ã‚»ã‚¤ãƒ’ãƒ³ã‚¸ãƒ§ã‚¦ãƒ›ã‚¦â—†è£½å“æƒ…å ± + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + セイヒンメイ製å“å + TagProductName + + + + + + セイヒン製å“コード + TWL - + TagProductCode1 + - + TagProductCode2 + (JPN) + + + + + + カイガイãƒãƒ³ã‚¦ãƒ æµ·å¤–ç‰ˆã®æœ‰ç„¡ + TagReleaseForeign + セイヒンメイ製å“å + TagProductNameForeign + + + + + + (予定もå«ã‚€) + セイヒン製å“コード + TWL - + TagProductCode1Foreign + - + TagProductCode2Foreign + + + + + + カイシャジョウホウ◆会社情報1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + キシャメイ貴社åï¼éƒ¨ç½²å + TagCompany1 + + + + + + ãµã‚ŠãŒãª + TagFurigana1 + ã‚¤ãƒ³å° + TEL + TagTel1 + + + + + + ã‚´ã‚·ãƒ¡ã‚¤ã”æ°å + TagPerson1 + FAX + TagFax1 + + + + + + E-Mail + TagMail1 + NTSC ユーザーID + TagNTSC1 + + + + + + カイシャジョウホウ◆会社情報2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + キシャメイブショメイ貴社åï¼éƒ¨ç½²å + TagCompany2 + + + + + + ãµã‚ŠãŒãª + TagFurigana2 + ã‚¤ãƒ³å° + TEL + TagTel2 + + + + + + ã‚´ã‚·ãƒ¡ã‚¤ã”æ°å + TagPerson2 + FAX + TagFax2 + + + + + + E-Mail + TagMail2 + NTSC ユーザーID + TagNTSC2 + + + + + + テイシュツジョウホウ◆æå‡ºæƒ…å ± + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + テイシュツビæå‡ºæ—¥ + TagSubmitYear + ãƒãƒ³å¹´ + TagSubmitMonth + ツキ月 + TagSubmitDay + ãƒ‹ãƒæ—¥ + ホウホウ方法 + TagSubmitWay + + + + + + ãƒãƒ„ãƒã‚¤ãƒ¨ãƒ†ã‚¤ãƒ“発売予定日 + TagReleaseYear + ãƒãƒ³å¹´ + TagReleaseMonth + ゲツ月 + TagReleaseDay + ãƒ‹ãƒæ—¥ + ヨウト用途 + TagUsage + + + + + + ジョウホウ◆マスターデータ情報 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + メイマスターファイルå + TagSrlFilename + CRC + TagCRC + イニシャルコード + TagGameCode + + + + + + メーカーコード + TagMakerCode + メイゲームå + TagTitleName0 + TagTitleName1 + TagTitleName2 + TagTitleName3 + TagTitleName4 + TagTitleName5 + TagTitleName6 + TagTitleName7 + TagTitleName8 + TagTitleName9 + TagTitleName10 + TagTitleName11 + + + + + + リマスターãƒãƒ¼ã‚¸ãƒ§ãƒ³ + TagRomVersion + テイシュツæå‡ºãƒãƒ¼ã‚¸ãƒ§ãƒ³ + TagSubmitVersion + プラットフォーム + TagPlatform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + セッテイROMタイプ設定 + TagLatency + ヨウリョウROMå®¹é‡ + TagRomSize + ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—メモリ + TagBackupMemory + + + + + + Title ID High + TagTitleIDHi + TitleID Low + TagTitleIDLo + メディア + TagMedia + + + + + + シュベツアプリ種別 + TagAppType + タジョウホウãã®ä»–アプリ情報 + TagAppTypeOther + + + + + + リョウイキTWLノーマル領域ROMオフセット + TagNormalRomOffset + センヨウリョウイキTWL専用領域ROMオフセット + TagKeyTableRomOffset + + + + + + Publicセーブデータサイズ + TagPublicSize + Privateセーブデータサイズ + TagPrivateSize + + + + + + ツウシンヒョウジWiFi通信アイコン表示 + TagIsWiFiIcon + ツウシンヒョウジDSワイヤレス通信アイコï¾è¡¨ç¤º + TagIsWirelessIcon + ヨウショメイユウコウNTRホワイトリストï¾ï½ªï½¯ï½¸ç”¨ç½²å有効 + TagIsWL + + + + + + Codec NTR/TWLモード + TagIsCodec + ユウコウサブãƒãƒŠãƒ¼ãƒ•ァイル有効 + TagIsSubBanner + ドウイEULAåŒæ„ + TagIsEULA + + + + + + ã‚­ãƒ§ã‚«ãƒŽãƒ¼ãƒžãƒ«ã‚¸ãƒ£ãƒ³ãƒ—è¨±å¯ + TagIsNormalJump + キョカtmpã‚¸ãƒ£ãƒ³ãƒ—è¨±å¯ + TagIsTmpJump + タイオウUser Generated Contents対応 + TagIsUGC + + + + + + カードリージョン + TagRegion + シャシンコウカンタイオウ写真交æ›å¯¾å¿œ + TagIsPhotoEx + + + + + + ジョウホウ◆アクセスコントロール情報 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SDカード + TagIsSD + NANDフラッシュ + TagIsNAND + シヨウSharedファイル使用 + TagIsShared2 + ãƒ‡ãƒ³ã‚²ãƒ³ã‚²ãƒ¼ãƒ ã‚«ãƒ¼ãƒ‰é›»æº + TagIsGameCardOn + + + + + + ã‚¿ãã®ä»– + TagAccessOther + + + + + + â—†Share2ファイルサイズ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + File0 + TagShared2Size0 + File1 + TagShared2Size1 + File2 + TagShared2Size2 + File3 + TagShared2Size3 + File4 + TagShared2Size4 + File5 + TagShared2Size5 + + + + + + ◆ペアレンタルコントロール + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ダンタイ団体 + レーティング + ダンタイ団体 + レーティング + + + + + + CERO + TagRatingCERO + ESRB + TagRatingESRB + + + + + + USK + TagRatingUSK + PEGI(Gen.) + TagRatingPEGI + + + + + + PEGI(Prt.) + TagRatingPEGI_PRT + PEGI+BBFC + TagRatingPEGI_BBFC + + + + + + OFLC + TagRatingOFLC + + + + + + + + シヨウ◆使用SDK/ライブラリ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SDK + TagSDK + + + + + + ライブラリ + TagLibrary + + + + + + + + + + + ビコウ◆備考 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TagCaption + + + ニンテンドウウケツケイン任天堂å—ä»˜å° + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+