From b626b4a88e205639b920f9f47670d9b91fc37f19 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Mon, 8 Dec 2008 10:54:01 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=E3=82=BD=E3=83=BC=E3=82=B9=E3=83=96?= =?UTF-8?q?=E3=83=A9=E3=83=83=E3=82=B7=E3=83=A5=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=80=82value=20class=E3=81=AE=E3=83=A1=E3=83=B3=E3=83=90?= =?UTF-8?q?=E3=82=92=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AB=E3=81=8B=E3=82=89?= =?UTF-8?q?=E5=80=A4=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@63 7061adef-622a-194b-ae81-725974e89856 --- .../MasterEditorTWL/MasterEditorTWL.ncb | Bin 11340800 -> 11340800 bytes .../MasterEditorTWL/MasterEditorTWL.suo | Bin 59392 -> 62976 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 82 ++++---- .../MasterEditorTWL/FormError.h | 4 +- .../MasterEditorTWL/Form_deliv.cpp | 26 +-- .../MasterEditorTWL/Form_file.cpp | 49 +++-- .../MasterEditorTWL/Form_pctl.cpp | 36 ++-- .../MasterEditorTWL/Form_srl.cpp | 82 ++++---- .../MasterEditorTWL/Form_util.cpp | 20 +- .../MasterEditorTWL/Release/BuildLog.htm | Bin 11920 -> 12610 bytes .../MasterEditorTWL/deliverable.cpp | 94 ++++----- .../MasterEditorTWL/deliverable.h | 22 +-- .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 178 +++++++++--------- .../MasterEditorTWL/MasterEditorTWL/srl.h | 153 +++++++-------- .../MasterEditorTWL/utility.cpp | 9 +- .../MasterEditorTWL/MasterEditorTWL/utility.h | 2 +- 16 files changed, 376 insertions(+), 381 deletions(-) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb index 28f9f25acd42136263b83c9727a6a23c8f5b4950..c8d244abec20bcf1bede27df845056b3ad6d91e1 100644 GIT binary patch delta 66939 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 delta 119708 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 delta 3941 zcmZ{n2~?HG7018%cs_PPHbId^G2n&|1eIX)Aw~mkplIU8;u3|Rf-K5&c`uC%(Fpi% zs!@y@k0(7bF)CxNwk{Bj)uTy_G1Q)(T0>J!OjK0R%1NdF`xrdL=!GA1=Rf!RzS(E6 z{p@7B=yYI@9vH1@T7S?N#DE0wxV5#Fj_Gk>>?A`-2XPuoqz(vR{28Ey(SOQ)Io6_U#hWySK4+j3# zIPIKpf@EGGEr!i{(mO)aMk7B4yaG~y1=?7oT(9w90$2@=zs_}^1SW$F5KZaM8w?vz zDz7>FxfqM!^%Szj>#T@$*93BGc}Us);^R1c2(>6*|R?mW;9bo^`;^7SD8DZLr_ zL{uwQKI-8mIvw{-eNm$>KlsY9&Vgu51o-);;dei^_-SXqI&8WfBI% zH!WfINI#ht5hpzSOI-7w6j$}m7lxSb`_p$vicS^x^^&$X2Sy!o_4v#_ud+RmuEaD3 z4n~g0ovmZV<+a!hVd#x2%As*T8xna2Eyo;+#rVCf4Z)0h8B=ZmW)%B_;Kkr)6#8la zqPQ#xo(VrmGAkj-O`mQgOY$o3Z9E-d3&7;{M@zT~!J}sC`aPX2qaTY!R5qquZmJzF zsP<@Q3Tn>pZ1&wX%Ed{ zWx~q>*&qkZ26Mn;+Bj=OTrs>7Pzsi^ig&fM9QhSsC0GTlzy@UYops!r%*7u)9$%C`Mti1*3Pj|L3x#|dVQHrvB8JvP+owc zuwvi0JUk6~o1H{3l`R_U!YculXr;`7J;`J+%BDpgg6#FXX>aaS$}ZhTU)8zM;XFTi zq##YVzKII`4!i}p;%ktu1?xaLcpIz-?Ty+9zXDW(DzFLI0fBeH@4;rU1-u8gf^DE0 zYzOay9bhNeB{V9U)#G6HTv1aRCWMa+Um7i(ebE9PZ%oR~#Y|i(^_nmdVr0=t*erR$fY`~uYV-;lYrOQXMmrIkUv^Og(2{btR>Rp%@v&t=e}L-f?*Bqt^#pGEWhH7=&Yf5T_Sgu`z?4QRev~dcti)XjC5dSpbV+F=|(ldakPEDj~u;C z7ePKP4L1?|q?uje^PqL7@ztSLKIz!F(p*tK@%R*EwTv?CgOT;Wx^n%TEz_bA=U!Tc>AmPnLSZoi_`~7$1S)Mg{JVfHOlj=%Hq0O9tr)*r9>%V)@}xZR;YiVk_g}U+RmeW? z%lyDgN-KpwoEDz%YGrkzQu&BagU>ciY3xsj&vCqmb1|QmypOZxD~5;nGu#j_x-%7KJMTcZv;g{5rt%glz=g*!Cdh6a?)4NLUFfNAa-m zJ%_D*sMvpx|G=sN$MH35J7C)fSepVq1#Go|HMY98L_3X?HD2T20j}K*0FA7B>*#`C zH;PDjfoh5-P-9@M{fy0ic9)gkTHt{{u(y!%8+h%lQQCQ>@f!U?X)`?A;-*5I1)ptx z2Q61=MM|52@)D)3R@zKxYdsyeSsWosu^XFP@HJ_VlQ{+NQXqf)I*z*nX!aij(eVG~X zoSTyNQ&Cob9K!M7xcYHIBQZG@cjjak_FkDUD~mQEB~^#*Yn9 znn`K=FH;QeHYZQlk*(Th-)ob$Gd4lykIiI0Z6h0oc}XRXmvgsuTH+Dn8I4_cHa0*{ z?Cr_arSyh(M}yJoWrR8vl5N>kopOCoABS(;U$XCA)5#)EmpWKd@Qu_RGstD{%p-oM6r*S6FNzY$h v)ydwRNjb-=$oquhS9PYdH-?hwg$vG__6a)GTYhsdM0j;UBXpl9cfkJx%1uII diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h index 2d1db6a..ba8f0de 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -38,21 +38,21 @@ namespace MasterEditorTWL { RCDeliverable ^hDeliv; // TADを読み込んだかどうか(SRLを読み込んだ場合はfalse) - System::Boolean ^hIsLoadTad; + System::Boolean IsLoadTad; // 書類出力モード(ノーマルXML or XML Spread Sheet) - System::Boolean ^hIsSpreadSheet; + System::Boolean IsSpreadSheet; // リードオンリーモード - System::Boolean ^hIsReadOnly; + System::Boolean IsReadOnly; // 入力エラー情報 System::Collections::Generic::List ^hErrorList; System::Collections::Generic::List ^hWarnList; // SRLに登録されないROM仕様を読み込み時の状態に戻せる仕組み - System::Boolean ^hIsCheckedUGC; // 読み込み時にチェックされていたか - System::Boolean ^hIsCheckedPhotoEx; + System::Boolean IsCheckedUGC; // 読み込み時にチェックされていたか + System::Boolean IsCheckedPhotoEx; // VC自動追加フィールド private: System::Windows::Forms::GroupBox^ gboxCRC; @@ -696,13 +696,13 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; // this->hSrl = gcnew (RCSrl); this->hDeliv = gcnew (RCDeliverable); - this->hIsLoadTad = gcnew System::Boolean(false); + this->IsLoadTad = false; 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); + this->IsCheckedUGC = false; + this->IsCheckedPhotoEx = false; // バージョン情報を表示 //this->labAssemblyVersion->Text = System::Windows::Forms::Application::ProductVersion; @@ -720,8 +720,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; // デフォルト値 - this->hIsSpreadSheet = gcnew System::Boolean( true ); - this->hIsReadOnly = gcnew System::Boolean( false ); + this->IsSpreadSheet = true; + this->IsReadOnly = 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) @@ -2832,22 +2832,22 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; void loadInit(void); // ファイルの読み込み (TAD/SRL読み込みをラップ) - void loadRom( System::String ^infile ); + System::Boolean loadRom( System::String ^infile ); // ファイルの書き出し (SRL書き出しをラップ) System::Boolean saveRom( System::String ^outname ); // SRLの読み込み - System::Void loadSrl( System::String ^srlfile ); + System::Boolean loadSrl( System::String ^srlfile ); - // SRLの保存と再読み込み + // SRLの書き出しと再読み込み System::Boolean saveSrl( System::String ^infile, System::String ^outfile ); - // SRLの保存のみ @ret 成否 + // SRLの書き出しのみ @ret 成否 System::Boolean saveSrlCore( System::String ^infile, System::String ^outfile ); // tadの読み込み - System::Void loadTad( System::String ^tadfile ); + System::Boolean loadTad( System::String ^tadfile ); // tadの読み込みで生成する一時SRLファイル名を返す System::String ^getSplitTadTmpFilename(void) @@ -2864,19 +2864,19 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; // ミドルウェアリストの作成(XML形式) System::Void makeMiddlewareListXml(System::Xml::XmlDocument^ doc); - // ミドルウェアリストの保存 + // ミドルウェアリストの書き出し System::Boolean saveMiddlewareListXml( System::String ^filename ); - // ミドルウェアリストの保存(XML->HTML変換) + // ミドルウェアリストの書き出し(XML->HTML変換) System::Boolean saveMiddlewareListHtml( System::String ^filename ); - // ミドルウェアリストの保存(XSL埋め込み) + // ミドルウェアリストの書き出し(XSL埋め込み) System::Boolean saveMiddlewareListXmlEmbeddedXsl( System::String ^filename ); // 提出ファイル名をゲームコードなどから決定 System::String^ getSubmitFilePrefix(void) { - System::Byte romver = *this->hSrl->hRomVersion & 0x0F; // 下位1桁 + System::Byte romver = this->hSrl->RomVersion & 0x0F; // 下位1桁 System::Byte subver = System::Decimal::ToByte(this->numSubmitVersion->Value) & 0x0F; System::String ^prefix = "T" + this->hSrl->hGameCode + romver.ToString("X") + subver.ToString("X"); @@ -2948,18 +2948,18 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; { this->cboxIsUGC->Checked = false; this->cboxIsPhotoEx->Checked = false; - this->hIsCheckedUGC = gcnew System::Boolean(false); - this->hIsCheckedPhotoEx = gcnew System::Boolean(false); + this->IsCheckedUGC = false; + this->IsCheckedPhotoEx = false; } void saveOtherForms(void) { - this->hIsCheckedUGC = gcnew System::Boolean(this->cboxIsUGC->Checked); - this->hIsCheckedPhotoEx = gcnew System::Boolean(this->cboxIsPhotoEx->Checked); + this->IsCheckedUGC = this->cboxIsUGC->Checked; + this->IsCheckedPhotoEx = this->cboxIsPhotoEx->Checked; } void loadOtherForms(void) { - this->cboxIsUGC->Checked = *(this->hIsCheckedUGC); - this->cboxIsPhotoEx->Checked = *(this->hIsCheckedPhotoEx); + this->cboxIsUGC->Checked = this->IsCheckedUGC; + this->cboxIsPhotoEx->Checked = this->IsCheckedPhotoEx; } private: @@ -3195,15 +3195,17 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; } // 拡張子で tad 読み込みにするかを判定 - this->loadRom( filename ); + if( !this->loadRom( filename ) ) + { + return; + } this->tboxFile->Text = filename; - - this->clearOtherForms(); + this->clearOtherForms(); // ROMヘッダには反映されない編集情報を更新 //this->sucMsg( "ROMデータファイルのオープンに成功しました。", "The ROM data file is opened successfully." ); } //stripItemOpenRom_Click() private: - System::Void stripItemMasterRom_Click(System::Object^ sender, System::EventArgs^ e) + System::Void stripItemMasterRom_Click(System::Object^ sender, System::EventArgs^ e) // SRLのみ出力 { // SRLが読み込まれていないときにはリードさせない if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) @@ -3275,7 +3277,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; } //stripItemMasterRom_Click() private: - System::Void stripItemSheet_Click(System::Object^ sender, System::EventArgs^ e) + System::Void stripItemSheet_Click(System::Object^ sender, System::EventArgs^ e) // 一式を出力 { ECDeliverableResult result; @@ -3377,10 +3379,9 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; "Calculating CRC is failed. Therefore, a part of files can't be made." ); return; } - System::UInt16 ^hcrc = gcnew System::UInt16( crc ); this->tboxWholeCRC->Clear(); this->tboxWholeCRC->AppendText( "0x" ); - this->tboxWholeCRC->AppendText( hcrc->ToString("X") ); + this->tboxWholeCRC->AppendText( crc.ToString("X4") ); // 書き出したSRLを再読み込みするのでCRCを再計算する // ミドルウェアのリストを作成 if( !this->saveMiddlewareListXmlEmbeddedXsl( middlefile ) || !this->saveMiddlewareListHtml( middlefilePrint ) ) @@ -3393,7 +3394,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; // 書類作成 srlfile = System::IO::Path::GetFileName( srlfile ); //result = this->hDeliv->write( delivfile, this->hSrl, hcrc, srlfile, !this->isJapanese() ); - result = this->hDeliv->writeSpreadsheet( delivfile, this->hSrl, hcrc, srlfile, !this->isJapanese() ); + result = this->hDeliv->writeSpreadsheet( delivfile, this->hSrl, crc, srlfile, !this->isJapanese() ); if( result != ECDeliverableResult::NOERROR ) { switch( result ) @@ -3422,7 +3423,6 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; System::Void stripItemSaveTemp_Click(System::Object^ sender, System::EventArgs^ e) { System::String ^filename = this->saveFileDlg( "xml format (*.xml)|*.xml", ".xml" ); - if( !filename ) { return; @@ -3434,7 +3434,6 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; System::Void stripItemLoadTemp_Click(System::Object^ sender, System::EventArgs^ e) { System::String ^filename = this->openFileDlg( "xml format (*.xml)|*.xml" ); - if( filename == nullptr ) { return; @@ -3503,7 +3502,10 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; "The ROM data file is not found. Therefore the file can not be opened." ); return; } - this->loadRom( filename ); + if( !this->loadRom( filename ) ) + { + return; + } this->tboxFile->Text = filename; this->clearOtherForms(); //this->sucMsg( "ROMデータファイルのオープンに成功しました。", "The ROM data file is opened successfully." ); @@ -3621,13 +3623,13 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colWarnCause; return; // 編集可能情報を読み込み時の設定に戻す - this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); - if( ( *this->hSrl->hIsWiFiIcon && *this->hSrl->hIsWirelessIcon) || - (!(*this->hSrl->hIsWiFiIcon) && !(*this->hSrl->hIsWirelessIcon)) ) + this->cboxIsEULA->Checked = this->hSrl->IsEULA; + if( ( this->hSrl->IsWiFiIcon && this->hSrl->IsWirelessIcon) || + (!this->hSrl->IsWiFiIcon && !this->hSrl->IsWirelessIcon) ) { this->rIsNoIcon->Checked = true; } - else if( *(this->hSrl->hIsWiFiIcon) && !*(this->hSrl->hIsWirelessIcon) ) + else if( this->hSrl->IsWiFiIcon && !this->hSrl->IsWirelessIcon ) { this->rIsWiFiIcon->Checked = true; } diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h index 53592b9..cfe668a 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/FormError.h @@ -294,7 +294,7 @@ namespace MasterEditorTWL { { for each( RCMrcError ^err in listLo ) { - if( !err->EnableModify ) // 修正可能な情報は表示しない + if( !err->IsEnableModify ) // 修正可能な情報は表示しない this->gridError->Rows->Add( err->getAll( isJapanese ) ); } } @@ -316,7 +316,7 @@ namespace MasterEditorTWL { { for each( RCMrcError ^err in listLo ) { - if( !err->EnableModify ) // 修正可能な情報は表示しない + if( !err->IsEnableModify ) // 修正可能な情報は表示しない this->gridWarn->Rows->Add( err->getAll( isJapanese ) ); } } diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp index 1755313..9d292a7 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_deliv.cpp @@ -24,10 +24,10 @@ using namespace MasterEditorTWL; void Form1::setDeliverableProperties(void) { // 提出情報 - 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 ); + this->hDeliv->hProductName = this->tboxProductName->Text; + this->hDeliv->hProductCode1 = this->tboxProductCode1->Text; + this->hDeliv->hProductCode2 = this->tboxProductCode2->Text; + this->hDeliv->IsReleaseForeign = this->cboxReleaseForeign->Checked; if( this->cboxReleaseForeign->Checked == true ) { this->hDeliv->hProductNameForeign = this->tboxProductNameForeign->Text; @@ -49,13 +49,13 @@ void Form1::setDeliverableProperties(void) 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 ) ); + this->hDeliv->ReleaseYear = this->dateRelease->Value.Year; + this->hDeliv->ReleaseMonth = this->dateRelease->Value.Month; + this->hDeliv->ReleaseDay = this->dateRelease->Value.Day; + this->hDeliv->SubmitYear = this->dateSubmit->Value.Year; + this->hDeliv->SubmitMonth = this->dateSubmit->Value.Month; + this->hDeliv->SubmitDay = this->dateSubmit->Value.Day; + this->hDeliv->SubmitVersion = System::Decimal::ToInt32( this->numSubmitVersion->Value ); // SDK this->hDeliv->hSDK = nullptr; if( this->hSrl->hSDKList ) @@ -290,8 +290,8 @@ void Form1::setDeliverableProperties(void) } // SRLには登録されないROM仕様 - this->hDeliv->hIsUGC = System::Boolean( this->cboxIsUGC->Checked ); - this->hDeliv->hIsPhotoEx = System::Boolean( this->cboxIsPhotoEx->Checked ); + this->hDeliv->IsUGC = this->cboxIsUGC->Checked; + this->hDeliv->IsPhotoEx = this->cboxIsPhotoEx->Checked; } // ---------------------------------------------- diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp index eceab51..c9e4c77 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_file.cpp @@ -26,18 +26,20 @@ using namespace MasterEditorTWL; // ファイルの読み込み (TAD/SRL読み込みをラップ) // ---------------------------------------------- -void Form1::loadRom( System::String ^infile ) +System::Boolean Form1::loadRom( System::String ^infile ) { - this->hIsLoadTad = gcnew System::Boolean(false); + System::Boolean result = false; + this->IsLoadTad = false; if( System::IO::Path::GetExtension( infile )->ToUpper()->Equals( ".TAD" ) ) // 拡張子で判別 { - *this->hIsLoadTad = true; - this->loadTad( infile ); + this->IsLoadTad = true; + result = this->loadTad( infile ); } else { - this->loadSrl( infile ); + result = this->loadSrl( infile ); } + return result; } // ---------------------------------------------- @@ -47,7 +49,7 @@ void Form1::loadRom( System::String ^infile ) System::Boolean Form1::saveRom( System::String ^outfile ) { System::Boolean result = false; - if( *this->hIsLoadTad ) + if( this->IsLoadTad ) { // 一時ファイルにSRLを書き出しているのでその一時ファイルから出力ファイルを作成 System::String ^tmpsrl = this->getSplitTadTmpFilename(); @@ -65,7 +67,7 @@ System::Boolean Form1::saveRom( System::String ^outfile ) // tadの読み込み // ---------------------------------------------- -System::Void Form1::loadTad( System::String ^tadfile ) +System::Boolean Form1::loadTad( System::String ^tadfile ) { // tadファイルを変換したSRLを一時ファイルに保存 System::String ^srlfile = this->getSplitTadTmpFilename(); @@ -77,16 +79,17 @@ System::Void Form1::loadTad( System::String ^tadfile ) { this->errMsg( "TADファイルの読み出しに失敗しました。", "Reading TAD file failed." ); System::IO::File::Delete( srlfile ); - return; + return false; } - this->loadSrl( srlfile ); // 一時保存したSRLを読み込み + System::Boolean result = this->loadSrl( srlfile ); // 一時保存したSRLを読み込み + return result; } // ---------------------------------------------- // SRLの読み込み // ---------------------------------------------- -System::Void Form1::loadSrl( System::String ^srlfile ) +System::Boolean Form1::loadSrl( System::String ^srlfile ) { ECSrlResult result = this->hSrl->readFromFile( srlfile ); if( result != ECSrlResult::NOERROR ) @@ -109,12 +112,12 @@ System::Void Form1::loadSrl( System::String ^srlfile ) "Reading the ROM data file failed. \nPlease read a ROM data file again, with \"Open a ROM data file\"" ); break; } - return; + return false; } // GUIにROM情報を格納 this->setSrlForms(); - if( *(this->hIsReadOnly) ) + if( this->IsReadOnly ) { this->readOnly(); // リードオンリーモードのときフォームをEnableにする } @@ -129,7 +132,7 @@ System::Void Form1::loadSrl( System::String ^srlfile ) { this->errMsg( "ROMデータのCRC計算に失敗しました。ROMデータの読み込みはキャンセルされました。", "Calculating CRC of the ROM data failed. Therefore reading ROM data is canceled." ); - return; + return false; } System::UInt16 ^hcrc = gcnew System::UInt16( crc ); this->tboxWholeCRC->Clear(); @@ -140,14 +143,8 @@ System::Void Form1::loadSrl( System::String ^srlfile ) this->rErrorReading->Checked = true; this->setGridError(); this->setGridWarn(); - //if( this->hSrl->hErrorList->Count > 0 ) - //{ - // this->errMsg( "ROMデータにエラーがあります。「エラー情報」タブをご確認ください。", - // "ROM data include error. Please look the tab \"Setting Error\"." ); - // return; - //} - return; + return true; } // loadSrl() // ---------------------------------------------- @@ -359,7 +356,7 @@ void Form1::loadInit(void) // タグ System::Boolean bReadOnly = MasterEditorTWL::isXmlEqual( root, "rw", "r" ); - this->hIsReadOnly = System::Boolean( bReadOnly ); + this->IsReadOnly = bReadOnly; if( bReadOnly ) { this->readOnly(); @@ -382,7 +379,7 @@ void Form1::loadInit(void) if( bCheck ) // チェックするときのみ追加チェック項目を設定 { // チェックするかどうか - this->hSrl->hMrcSpecialList->hIsCheck = gcnew System::Boolean( true ); + this->hSrl->hMrcSpecialList->IsCheck = true; // SDK try @@ -391,14 +388,14 @@ void Form1::loadInit(void) 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 ); + this->hSrl->hMrcSpecialList->SDKVer = sdkver; } catch ( System::Exception ^ex ) { (void)ex; this->errMsg( "設定ファイル中のSDKバージョンが読み込めませんでした。バージョンは0とみなされます。", "SDK ver. can't be read from setting file. Therefore it is set by 0." ); - this->hSrl->hMrcSpecialList->hSDKVer = gcnew System::UInt32( 0 ); + this->hSrl->hMrcSpecialList->SDKVer = 0; } // Shared2File @@ -408,7 +405,7 @@ void Form1::loadInit(void) 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 ); + this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = size; } } catch ( System::Exception ^ex ) @@ -419,7 +416,7 @@ void Form1::loadInit(void) System::Int32 i; for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) { - this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = 0; } } } //if( bCheck ) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp index bd7d810..77b614f 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_pctl.cpp @@ -28,39 +28,39 @@ using namespace MasterEditorTWL; // フォーム入力をSRLに反映させる 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); + this->hSrl->IsRegionJapan = false; + this->hSrl->IsRegionAmerica = false; + this->hSrl->IsRegionEurope = false; + this->hSrl->IsRegionAustralia = false; switch( this->combRegion->SelectedIndex ) { case 0: - this->hSrl->hIsRegionJapan = gcnew System::Boolean(true); + this->hSrl->IsRegionJapan = true; break; case 1: - this->hSrl->hIsRegionAmerica = gcnew System::Boolean(true); + this->hSrl->IsRegionAmerica = true; break; case 2: - this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + this->hSrl->IsRegionEurope = true; break; case 3: - this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + this->hSrl->IsRegionAustralia = true; break; case 4: - this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); - this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + this->hSrl->IsRegionEurope = true; + this->hSrl->IsRegionAustralia = 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); + this->hSrl->IsRegionJapan = true; + this->hSrl->IsRegionAmerica = true; + this->hSrl->IsRegionEurope = true; + this->hSrl->IsRegionAustralia = true; break; #endif //defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) default: @@ -75,10 +75,10 @@ void Form1::setRegionSrlPropaties(void) // SRL情報をフォームに反映させる void Form1::setRegionForms(void) { - System::Boolean isJapan = *(this->hSrl->hIsRegionJapan); // リージョン - System::Boolean isAmerica = *(this->hSrl->hIsRegionAmerica); - System::Boolean isEurope = *(this->hSrl->hIsRegionEurope); - System::Boolean isAustralia = *(this->hSrl->hIsRegionAustralia); + System::Boolean isJapan = this->hSrl->IsRegionJapan; // リージョン + System::Boolean isAmerica = this->hSrl->IsRegionAmerica; + System::Boolean isEurope = this->hSrl->IsRegionEurope; + System::Boolean isAustralia = this->hSrl->IsRegionAustralia; System::Int32 index; if( isJapan && !isAmerica && !isEurope && !isAustralia ) index = 0; diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp index 1e06546..89519df 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_srl.cpp @@ -28,9 +28,9 @@ void Form1::setSrlProperties(void) // ROMヘッダの[0,0x160)の領域はRead Onlyで変更しない // TWL拡張領域のいくつかの情報をROMヘッダに反映させる - this->hSrl->hIsEULA = this->cboxIsEULA->Checked; - this->hSrl->hIsWiFiIcon = this->rIsWiFiIcon->Checked; - this->hSrl->hIsWirelessIcon = this->rIsWirelessIcon->Checked; + this->hSrl->IsEULA = this->cboxIsEULA->Checked; + this->hSrl->IsWiFiIcon = this->rIsWiFiIcon->Checked; + this->hSrl->IsWirelessIcon = this->rIsWirelessIcon->Checked; // リージョン this->setRegionSrlPropaties(); @@ -49,8 +49,8 @@ void Form1::setSrlForms(void) 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->tboxRemasterVer->Text = this->hSrl->RomVersion.ToString("X2"); + if( this->hSrl->RomVersion == 0xE0 ) { this->cboxRemasterVerE->Checked = true; } @@ -61,7 +61,7 @@ void Form1::setSrlForms(void) this->tboxHeaderCRC->Clear(); this->tboxHeaderCRC->AppendText( "0x" ); - this->tboxHeaderCRC->AppendText( this->hSrl->hHeaderCRC->ToString("X") ); + this->tboxHeaderCRC->AppendText( this->hSrl->HeaderCRC.ToString("X4") ); if( this->hSrl->hPlatform == nullptr ) { @@ -71,16 +71,16 @@ void Form1::setSrlForms(void) // TWL拡張情報 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->tboxTitleIDHi->Text = this->hSrl->TitleIDHi.ToString("X8"); + this->tboxNormalRomOffset->Text = this->hSrl->NormalRomOffset.ToString("X8"); + this->tboxKeyTableRomOffset->Text = this->hSrl->KeyTableRomOffset.ToString("X8"); + this->tboxPublicSize->Text = MasterEditorTWL::transSizeToString( this->hSrl->PublicSize ); + this->tboxPrivateSize->Text = MasterEditorTWL::transSizeToString( this->hSrl->PrivateSize ); + this->cboxIsNormalJump->Checked = this->hSrl->IsNormalJump; + this->cboxIsTmpJump->Checked = this->hSrl->IsTmpJump; + this->cboxIsSubBanner->Checked = this->hSrl->IsSubBanner; + this->cboxIsWL->Checked = this->hSrl->IsWL; + if( this->hSrl->IsCodecTWL == true ) { this->tboxIsCodec->Text = gcnew System::String( "TWL" ); } @@ -88,13 +88,13 @@ void Form1::setSrlForms(void) { 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->cboxIsSD->Checked = this->hSrl->IsSD; + this->cboxIsNAND->Checked = this->hSrl->IsNAND; + if( this->hSrl->IsGameCardNitro ) { this->tboxIsGameCardOn->Text = gcnew System::String( "ON(NTR)" ); } - else if( *(this->hSrl->hIsGameCardOn) == true ) + else if( this->hSrl->IsGameCardOn == true ) { this->tboxIsGameCardOn->Text = gcnew System::String( "ON(normal)" ); } @@ -102,7 +102,7 @@ void Form1::setSrlForms(void) { this->tboxIsGameCardOn->Text = gcnew System::String( "OFF" ); } - this->cboxIsShared2->Checked = *(this->hSrl->hIsShared2); + this->cboxIsShared2->Checked = this->hSrl->IsShared2; 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] ); @@ -111,7 +111,7 @@ void Form1::setSrlForms(void) this->tboxShared2Size5->Text = MasterEditorTWL::transSizeToString( this->hSrl->hShared2SizeArray[5] ); // アプリ種別 - if( *this->hSrl->hIsMediaNand ) + if( this->hSrl->IsMediaNand ) { this->tboxMedia->Text = gcnew System::String( "NAND" ); } @@ -121,19 +121,19 @@ void Form1::setSrlForms(void) } - if( *(this->hSrl->hIsAppLauncher) == true ) + if( this->hSrl->IsAppLauncher == true ) { this->tboxAppType->Text = gcnew System::String( "Launcher" ); } - else if( *(this->hSrl->hIsAppSecure) == true ) + else if( this->hSrl->IsAppSecure == true ) { this->tboxAppType->Text = gcnew System::String( "Secure" ); } - else if( *(this->hSrl->hIsAppSystem) == true ) + else if( this->hSrl->IsAppSystem == true ) { this->tboxAppType->Text = gcnew System::String( "System" ); } - else if( *(this->hSrl->hIsAppUser) == true ) + else if( this->hSrl->IsAppUser == true ) { this->tboxAppType->Text = gcnew System::String( "User" ); } @@ -144,31 +144,31 @@ void Form1::setSrlForms(void) // アクセスコントロール その他 System::String ^acc = gcnew System::String(""); - if( *(this->hSrl->hIsCommonClientKey) == true ) + if( this->hSrl->IsCommonClientKey == true ) { acc += "commonClientKey.\r\n"; } - if( *(this->hSrl->hIsAesSlotBForES) == true ) + if( this->hSrl->IsAesSlotBForES == true ) { acc += "AES-SlotB(ES).\r\n"; } - if( *(this->hSrl->hIsAesSlotCForNAM) == true ) + if( this->hSrl->IsAesSlotCForNAM == true ) { acc += "AES-SlotC(NAM).\r\n"; } - if( *(this->hSrl->hIsAesSlotBForJpegEnc) == true ) + if( this->hSrl->IsAesSlotBForJpegEnc == true ) { acc += "AES-SlotB(Jpeg Launcher).\r\n"; } - if( *(this->hSrl->hIsAesSlotBForJpegEncUser) == true ) + if( this->hSrl->IsAesSlotBForJpegEncUser == true ) { acc += "AES-SlotB(Jpeg User).\r\n"; } - if( *(this->hSrl->hIsAesSlotAForSSL) == true ) + if( this->hSrl->IsAesSlotAForSSL == true ) { acc += "AES-SlotA(SSL).\r\n"; } - if( *(this->hSrl->hIsCommonClientKeyForDebugger) == true ) + if( this->hSrl->IsCommonClientKeyForDebugger == true ) { acc += "commonClientKey(Debug).\r\n"; } @@ -204,13 +204,13 @@ void Form1::setSrlForms(void) } // 編集可能情報 - this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); - if( ( *this->hSrl->hIsWiFiIcon && *this->hSrl->hIsWirelessIcon) || - (!(*this->hSrl->hIsWiFiIcon) && !(*this->hSrl->hIsWirelessIcon)) ) + this->cboxIsEULA->Checked = this->hSrl->IsEULA; + if( ( this->hSrl->IsWiFiIcon && this->hSrl->IsWirelessIcon) || + (!this->hSrl->IsWiFiIcon && !this->hSrl->IsWirelessIcon) ) { this->rIsNoIcon->Checked = true; } - else if( *(this->hSrl->hIsWiFiIcon) && !*(this->hSrl->hIsWirelessIcon) ) + else if( this->hSrl->IsWiFiIcon && !this->hSrl->IsWirelessIcon ) { this->rIsWiFiIcon->Checked = true; } @@ -230,14 +230,14 @@ void Form1::setSrlFormsCaptionEx() return; } System::String ^appother = gcnew System::String(""); - if( *(this->hSrl->hIsLaunch) == false ) + if( !this->hSrl->IsLaunch ) { if( this->isJapanese() == true ) appother += "ランチャー非表示.\r\n"; else appother += "Not Display On the Launcher.\r\n"; } - if( *(this->hSrl->hIsDataOnly) == true ) + if( this->hSrl->IsDataOnly ) { if( this->isJapanese() == true ) appother += "データ専用.\r\n"; @@ -247,14 +247,14 @@ void Form1::setSrlFormsCaptionEx() this->tboxAppTypeOther->Text = appother; this->tboxCaptionEx->Clear(); - if( (this->hSrl->hHasDSDLPlaySign != nullptr) && (*(this->hSrl->hHasDSDLPlaySign) == true) ) + if( this->hSrl->HasDSDLPlaySign ) { if( this->isJapanese() == true ) this->tboxCaptionEx->Text += gcnew System::String( "DSクローンブート対応.\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->hSrl->IsSCFGAccess ) { if( this->isJapanese() == true ) this->tboxCaptionEx->Text += gcnew System::String( "SCFGレジスタアクセス可能.\r\n" ); diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp index 39381c2..f5e1493 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form_util.cpp @@ -117,7 +117,7 @@ void Form1::overloadGridError( void ) { for each( RCMrcError ^err in this->hSrl->hErrorList ) { - if( !err->EnableModify ) // 修正可能な情報は表示しない + if( !err->IsEnableModify ) // 修正可能な情報は表示しない { this->gridError->Rows->Add( err->getAll(this->isJapanese()) ); this->colorGridError( err ); @@ -140,7 +140,7 @@ void Form1::overloadGridWarn( void ) { for each( RCMrcError ^err in this->hSrl->hWarnList ) { - if( !err->EnableModify ) + if( !err->IsEnableModify ) { this->gridWarn->Rows->Add( err->getAll(this->isJapanese()) ); this->colorGridWarn( err ); @@ -160,12 +160,12 @@ void Form1::overloadGridWarn( void ) // セルの色を変える void Form1::colorGridError( RCMrcError ^err ) { - if( err->AffectRom && !err->EnableModify ) // SRLに関係ありで修正不可 + if( err->IsAffectRom && !err->IsEnableModify ) // SRLに関係ありで修正不可 { System::Int32 last = this->gridError->Rows->Count - 2; // 追加直後の行 this->gridError->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Red; } - else if( err->AffectRom && err->EnableModify ) // SRLに関係ありで修正可 + else if( err->IsAffectRom && err->IsEnableModify ) // SRLに関係ありで修正可 { System::Int32 last = this->gridError->Rows->Count - 2; this->gridError->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Blue; @@ -173,12 +173,12 @@ void Form1::colorGridError( RCMrcError ^err ) } void Form1::colorGridWarn( RCMrcError ^err ) { - if( err->AffectRom && !err->EnableModify ) + if( err->IsAffectRom && !err->IsEnableModify ) { System::Int32 last = this->gridWarn->Rows->Count - 2; this->gridWarn->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Red; } - else if( err->AffectRom && err->EnableModify ) + else if( err->IsAffectRom && err->IsEnableModify ) { System::Int32 last = this->gridWarn->Rows->Count - 2; this->gridWarn->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Blue; @@ -220,7 +220,7 @@ System::Boolean Form1::isValidOnlyDeliverable(void) // -> 入力エラーのみのチェックでよい for each( RCMrcError ^err in this->hErrorList ) { - if( !err->AffectRom ) + if( !err->IsAffectRom ) count++; } return (count == 0); @@ -235,7 +235,7 @@ System::Boolean Form1::isValidAffectRom(void) // (修正可エラーは入力によって修正されてるかもしれないのでチェックしない) for each( RCMrcError ^err in this->hSrl->hErrorList ) { - if( !err->EnableModify ) // すべてSRLバイナリに影響する + if( !err->IsEnableModify ) // すべてSRLバイナリに影響する count++; } @@ -244,7 +244,7 @@ System::Boolean Form1::isValidAffectRom(void) // (エラーリストが更新されていることが前提) for each( RCMrcError ^err in this->hErrorList ) { - if( err->AffectRom ) // 修正不可エラーは存在しない + if( err->IsAffectRom ) // 修正不可エラーは存在しない count++; } return (count == 0); @@ -256,7 +256,7 @@ System::Boolean Form1::isValidAffectRomModified(void) System::Int32 count = 0; for each( RCMrcError ^err in this->hErrorList ) { - if( err->AffectRom ) // 修正不可エラーは存在しない + if( err->IsAffectRom ) // 修正不可エラーは存在しない count++; } return (count == 0); diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm index 7649dd4420c2249bd3e9cbcd56709568b6709341..3d5f037dd534acbfa479c9ebf67e66d048b6656f 100644 GIT binary patch delta 587 zcmbObdnjpx9hDz*c^&5?|%PIxNw3O!j9p-n>rHg9)e$ zQ*tGr^kyX$BSvW_21j(Azz|AeNMtCPtf(SBIgd?f^EA~1AV*;++?=j%&NR76OhFwS zh77z6Tnq@`qJ=j|cJe}LVP|Y=QNkO|9JKHTo3md^)Eb*PY2X-6g~c(NNr>=YtofD& E0Omw;*#H0l delta 223 zcmX?VQQyj`)BQP7;h0E>hIsAppLauncher ) + if( hSrl->IsAppLauncher ) { apptype = gcnew System::String( "Launcher" ); } - else if( *hSrl->hIsAppSecure ) + else if( hSrl->IsAppSecure ) { apptype = gcnew System::String( "Secure" ); } - else if( *hSrl->hIsAppSystem ) + else if( hSrl->IsAppSystem ) { apptype = gcnew System::String( "System" ); } - else if( *hSrl->hIsAppUser ) + else if( hSrl->IsAppUser ) { apptype = gcnew System::String( "User" ); } System::String ^media = gcnew System::String(""); - if( *hSrl->hIsMediaNand ) + if( hSrl->IsMediaNand ) { media = gcnew System::String( "NAND" ); } @@ -79,42 +79,42 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( media = gcnew System::String( "Game Card" ); } System::String ^appother = gcnew System::String(""); - if( *(hSrl->hIsLaunch) == false ) + if( !hSrl->IsLaunch ) { appother += "ランチャー非表示."; } - if( *(hSrl->hIsDataOnly) == true ) + if( hSrl->IsDataOnly ) { apptype += "データ専用."; } // アクセスコントロール その他 System::String ^access = gcnew System::String(""); - if( *(hSrl->hIsCommonClientKey) == true ) + if( hSrl->IsCommonClientKey ) { access += "commonClientKey. "; } - if( *(hSrl->hIsAesSlotBForES) == true ) + if( hSrl->IsAesSlotBForES ) { access += "AES-SlotB(ES). "; } - if( *(hSrl->hIsAesSlotCForNAM) == true ) + if( hSrl->IsAesSlotCForNAM ) { access += "AES-SlotC(NAM). "; } - if( *(hSrl->hIsAesSlotBForJpegEnc) == true ) + if( hSrl->IsAesSlotBForJpegEnc ) { access += "AES-SlotB(Jpeg Launcher). "; } - if( *(hSrl->hIsAesSlotBForJpegEncUser) == true ) + if( hSrl->IsAesSlotBForJpegEncUser ) { access += "AES-SlotB(Jpeg User). "; } - if( *(hSrl->hIsAesSlotAForSSL) == true ) + if( hSrl->IsAesSlotAForSSL ) { access += "AES-SlotA(SSL). "; } - if( *(hSrl->hIsCommonClientKeyForDebugger) == true ) + if( hSrl->IsCommonClientKeyForDebugger ) { access += "commonClientKey(Debug). "; } @@ -153,7 +153,7 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagReleaseForeign" ) ) { - if( *(this->hReleaseForeign) ) + if( this->IsReleaseForeign ) node->FirstChild->Value = gcnew System::String( "○" ); else node->FirstChild->Value = nullptr; @@ -172,27 +172,27 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagSubmitYear" ) ) { - node->FirstChild->Value = this->hSubmitYear->ToString(); + node->FirstChild->Value = this->SubmitYear.ToString(); } if( node->FirstChild->Value->Equals( "TagSubmitMonth" ) ) { - node->FirstChild->Value = this->hSubmitMonth->ToString(); + node->FirstChild->Value = this->SubmitMonth.ToString(); } if( node->FirstChild->Value->Equals( "TagSubmitDay" ) ) { - node->FirstChild->Value = this->hSubmitDay->ToString(); + node->FirstChild->Value = this->SubmitDay.ToString(); } if( node->FirstChild->Value->Equals( "TagReleaseYear" ) ) { - node->FirstChild->Value = this->hReleaseYear->ToString(); + node->FirstChild->Value = this->ReleaseYear.ToString(); } if( node->FirstChild->Value->Equals( "TagReleaseMonth" ) ) { - node->FirstChild->Value = this->hReleaseMonth->ToString(); + node->FirstChild->Value = this->ReleaseMonth.ToString(); } if( node->FirstChild->Value->Equals( "TagReleaseDay" ) ) { - node->FirstChild->Value = this->hReleaseDay->ToString(); + node->FirstChild->Value = this->ReleaseDay.ToString(); } if( node->FirstChild->Value->Equals( "TagSubmitWay" ) ) { @@ -208,8 +208,8 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagRomVersion" ) ) { - node->FirstChild->Value = hSrl->hRomVersion->ToString("X2"); - if( *(hSrl->hRomVersion) == 0xE0 ) + node->FirstChild->Value = hSrl->RomVersion.ToString("X2"); + if( hSrl->RomVersion == 0xE0 ) { if( english ) node->FirstChild->Value += "(Preliminary ver.)"; @@ -219,7 +219,7 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagSubmitVersion" ) ) { - node->FirstChild->Value = this->hSubmitVersion->ToString("X"); + node->FirstChild->Value = this->SubmitVersion.ToString("X"); } if( node->FirstChild->Value->Equals( "TagSrlFilename" ) ) { @@ -227,7 +227,7 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagCRC" ) ) { - node->FirstChild->Value = "0x" + hCRC->ToString("X"); + node->FirstChild->Value = "0x" + CRC.ToString("X4"); } // ROM情報 if( node->FirstChild->Value->Equals( "TagLatency" ) ) @@ -261,7 +261,7 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagTitleIDHi" ) ) { - node->FirstChild->Value = "0x" + hSrl->hTitleIDHi->ToString("X8"); + node->FirstChild->Value = "0x" + hSrl->TitleIDHi.ToString("X8"); } if( node->FirstChild->Value->Equals( "TagAppType" ) ) { @@ -277,102 +277,102 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( } if( node->FirstChild->Value->Equals( "TagIsNormalJump" ) ) { - if( *(hSrl->hIsNormalJump) == true ) + if( hSrl->IsNormalJump ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsTmpJump" ) ) { - if( *(hSrl->hIsTmpJump) == true ) + if( hSrl->IsTmpJump ) 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"); + node->FirstChild->Value = "0x" + hSrl->NormalRomOffset.ToString("X8"); } if( node->FirstChild->Value->Equals( "TagKeyTableRomOffset" ) ) { - node->FirstChild->Value = "0x" + hSrl->hKeyTableRomOffset->ToString("X8"); + node->FirstChild->Value = "0x" + hSrl->KeyTableRomOffset.ToString("X8"); } if( node->FirstChild->Value->Equals( "TagPublicSize" ) ) { - node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hPublicSize ); + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->PublicSize ); } if( node->FirstChild->Value->Equals( "TagPrivateSize" ) ) { - node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->hPrivateSize ); + node->FirstChild->Value = MasterEditorTWL::transSizeToString( hSrl->PrivateSize ); } if( node->FirstChild->Value->Equals( "TagIsCodec" ) ) { - if( *(hSrl->hIsCodecTWL) == true ) + if( hSrl->IsCodecTWL ) 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 ) + if( hSrl->IsEULA ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsSubBanner" ) ) { - if( *(hSrl->hIsSubBanner) == true ) + if( hSrl->IsSubBanner ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsWiFiIcon" ) ) { - if( *(hSrl->hIsWiFiIcon) == true ) + if( hSrl->IsWiFiIcon ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsWirelessIcon" ) ) { - if( *(hSrl->hIsWirelessIcon) == true ) + if( hSrl->IsWirelessIcon ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsWL" ) ) { - if( *(hSrl->hIsWL) == true ) + if( hSrl->IsWL ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsSD" ) ) { - if( *(hSrl->hIsSD) == true ) + if( hSrl->IsSD ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsNAND" ) ) { - if( *(hSrl->hIsNAND) == true ) + if( hSrl->IsNAND ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsShared2" ) ) { - if( *(hSrl->hIsShared2) == true ) + if( hSrl->IsShared2 ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsGameCardOn" ) ) { - if( *(hSrl->hIsGameCardNitro) == true ) + if( hSrl->IsGameCardNitro ) node->FirstChild->Value = gcnew System::String("ON(NTR)"); - else if( *(hSrl->hIsGameCardOn) == true ) + else if( hSrl->IsGameCardOn ) node->FirstChild->Value = gcnew System::String("ON(normal)"); else node->FirstChild->Value = gcnew System::String("OFF");; @@ -509,14 +509,14 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( // SRLに登録されないROM仕様 if( node->FirstChild->Value->Equals( "TagIsUGC" ) ) { - if( *(this->hIsUGC) == true ) + if( this->IsUGC ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; } if( node->FirstChild->Value->Equals( "TagIsPhotoEx" ) ) { - if( *(this->hIsPhotoEx) == true ) + if( this->IsPhotoEx ) node->FirstChild->Value = gcnew System::String("○"); else node->FirstChild->Value = nullptr; @@ -525,7 +525,7 @@ ECDeliverableResult RCDeliverable::writeSpreadsheet( // ROM内登録データを1バイトずつ表に書き込む if( node->FirstChild->Value->Equals( "TagRomVersionHex" ) ) { - node->FirstChild->Value = hSrl->hRomVersion->ToString("X2"); + node->FirstChild->Value = hSrl->RomVersion.ToString("X2"); } System::Int32 byte; for( byte=0; byte < TITLE_NAME_MAX; byte++ ) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h index f679fb6..193b8a9 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/deliverable.h @@ -45,18 +45,18 @@ namespace MasterEditorTWL property System::String ^hProductName; // 製品名 property System::String ^hProductCode1; // 製品コード property System::String ^hProductCode2; // 製品コード - property System::Int32 ^hReleaseYear; // 発売予定日 - property System::Int32 ^hReleaseMonth; - property System::Int32 ^hReleaseDay; - property System::Int32 ^hSubmitYear; // 提出日 - property System::Int32 ^hSubmitMonth; - property System::Int32 ^hSubmitDay; + property System::Int32 ReleaseYear; // 発売予定日 + property System::Int32 ReleaseMonth; + property System::Int32 ReleaseDay; + property System::Int32 SubmitYear; // 提出日 + property System::Int32 SubmitMonth; + property System::Int32 SubmitDay; property System::String ^hSubmitWay; // 提出方法 property System::String ^hUsage; // 用途 property System::String ^hUsageOther; // その他の用途 - property System::Int32 ^hSubmitVersion; // 提出バージョン + property System::Int32 SubmitVersion; // 提出バージョン property System::String ^hSDK; // SDKバージョン - property System::Boolean ^hReleaseForeign; // 海外版の予定 + property System::Boolean IsReleaseForeign; // 海外版の予定 property System::String ^hProductNameForeign; property System::String ^hProductCode1Foreign; property System::String ^hProductCode2Foreign; @@ -98,8 +98,8 @@ namespace MasterEditorTWL property System::String ^hAppTypeOther; // 特記事項 // SRLには登録されないROM仕様 - property System::Boolean ^hIsUGC; - property System::Boolean ^hIsPhotoEx; + property System::Boolean IsUGC; + property System::Boolean IsPhotoEx; // constructor and destructor public: @@ -117,7 +117,7 @@ namespace MasterEditorTWL // @arg [in] 英語フラグ // ECDeliverableResult writeSpreadsheet( - System::String ^hFilename, RCSrl ^hSrl, System::UInt16 ^hCRC, System::String ^hSrlFilename, System::Boolean english ); + System::String ^hFilename, RCSrl ^hSrl, System::UInt16 CRC, System::String ^hSrlFilename, System::Boolean english ); }; // end of ref class RCDeliverable diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp index 17b4f54..0afebe0 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -172,9 +172,9 @@ ECSrlResult RCSrl::setRomInfo(void) 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 ); + this->RomVersion = this->pRomHeader->s.rom_version; + this->HeaderCRC = this->pRomHeader->s.header_crc16; + this->IsOldDevEncrypt = (this->pRomHeader->s.developer_encrypt_old != 0)?true:false; switch( this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK ) { @@ -192,132 +192,132 @@ ECSrlResult RCSrl::setRomInfo(void) } // TWL専用情報 - 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 ); + this->IsNormalJump = (this->pRomHeader->s.permit_landing_normal_jump != 0)?true:false; + this->IsTmpJump = (this->pRomHeader->s.permit_landing_tmp_jump != 0)?true:false; + this->NormalRomOffset = (u32)(this->pRomHeader->s.twl_card_normal_area_rom_offset) * 0x80000; + this->KeyTableRomOffset = (u32)(this->pRomHeader->s.twl_card_keytable_area_rom_offset) * 0x80000; + this->PublicSize = this->pRomHeader->s.public_save_data_size; + this->PrivateSize = 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])); // ビッグエンディアン //this->hTitleIDLo = gcnew System::UInt32( val ); - this->hTitleIDLo = gcnew System::String( (char*)idL, 0, 4, utf8 ); - this->hTitleIDHi = gcnew System::UInt32( idH ); + this->hTitleIDLo = gcnew System::String( (char*)idL, 0, 4, utf8 ); + this->TitleIDHi = 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 ); + this->IsAppLauncher = false; + this->IsAppUser = false; + this->IsAppSystem = false; + this->IsAppSecure = false; + this->IsLaunch = false; + this->IsMediaNand = false; + this->IsDataOnly = false; if( (idL[3]=='H') && (idL[2]=='N') && (idL[1]=='A') ) // ランチャアプリかどうかはTitleID_Loの値で決定 { - *(this->hIsAppLauncher) = true; + this->IsAppLauncher = true; } else if( idH & TITLE_ID_HI_SECURE_FLAG_MASK ) // 各ビットは排他的とは限らないのでelse ifにはならない { - *(this->hIsAppSecure) = true; + this->IsAppSecure = true; } else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 1 ) { - *(this->hIsAppSystem) = true; + this->IsAppSystem = true; } else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 0 ) { - *(this->hIsAppUser) = true; + this->IsAppUser = true; } if( idH & TITLE_ID_HI_DATA_ONLY_FLAG_MASK ) { - *(this->hIsDataOnly) = true; + this->IsDataOnly = true; } if( idH & TITLE_ID_HI_MEDIA_MASK ) { - *(this->hIsMediaNand) = true; + this->IsMediaNand = true; } if( (idH & TITLE_ID_HI_NOT_LAUNCH_FLAG_MASK) == 0 ) // ビットが0のときLaunch { - *(this->hIsLaunch) = true; + this->IsLaunch = true; } u16 pub = (u16)((idH & TITLE_ID_HI_PUBLISHER_CODE_MASK) >> TITLE_ID_HI_PUBLISHER_CODE_SHIFT); - this->hPublisherCode = gcnew System::UInt16( pub ); + this->PublisherCode = pub; // TWL拡張フラグ - 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 ); + this->IsCodecTWL = (this->pRomHeader->s.exFlags.codec_mode != 0)?true:false; + this->IsEULA = (this->pRomHeader->s.exFlags.agree_EULA != 0)?true:false; + this->IsSubBanner = (this->pRomHeader->s.exFlags.availableSubBannerFile != 0)?true:false; + this->IsWiFiIcon = (this->pRomHeader->s.exFlags.WiFiConnectionIcon != 0)?true:false; + this->IsWirelessIcon = (this->pRomHeader->s.exFlags.DSWirelessIcon != 0)?true:false; + this->IsWL = (this->pRomHeader->s.exFlags.enable_nitro_whitelist_signature != 0)?true:false; // TWLアクセスコントロール - 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 ); + this->IsCommonClientKey = (this->pRomHeader->s.access_control.common_client_key != 0)?true:false; + this->IsAesSlotBForES = (this->pRomHeader->s.access_control.hw_aes_slot_B != 0)?true:false; + this->IsAesSlotCForNAM = (this->pRomHeader->s.access_control.hw_aes_slot_C != 0)?true:false; + this->IsSD = (this->pRomHeader->s.access_control.sd_card_access != 0)?true:false; + this->IsNAND = (this->pRomHeader->s.access_control.nand_access != 0)?true:false; + this->IsGameCardOn = (this->pRomHeader->s.access_control.game_card_on != 0)?true:false; + this->IsShared2 = (this->pRomHeader->s.access_control.shared2_file != 0)?true:false; + this->IsAesSlotBForJpegEnc = (this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForLauncher != 0)?true:false; + this->IsAesSlotBForJpegEncUser = (this->pRomHeader->s.access_control.hw_aes_slot_B_SignJPEGForUser != 0)?true:false; + this->IsGameCardNitro = (this->pRomHeader->s.access_control.game_card_nitro_mode != 0)?true:false; + this->IsAesSlotAForSSL = (this->pRomHeader->s.access_control.hw_aes_slot_A_SSLClientCert != 0)?true:false; + this->IsCommonClientKeyForDebugger + = (this->pRomHeader->s.access_control.common_client_key_for_debugger_sysmenu != 0)?true:false; // SCFG がロックされるか if( (this->pRomHeader->s.arm7_scfg_ext >> 31) != 0 ) { - this->hIsSCFGAccess = gcnew System::Boolean( true ); + this->IsSCFGAccess = true; } else { - this->hIsSCFGAccess = gcnew System::Boolean( false ); + this->IsSCFGAccess = false; } // Shared2ファイルサイズ - this->hShared2SizeArray = gcnew cli::array(METWL_NUMOF_SHARED2FILES); + this->hShared2SizeArray = gcnew cli::array(METWL_NUMOF_SHARED2FILES); for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) { - this->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + this->hShared2SizeArray[i] = 0; } u32 unit = 16 * 1024; // 16KBの乗数が格納されている if( this->pRomHeader->s.shared2_file0_size != 0 ) { - *(this->hShared2SizeArray[0]) = (this->pRomHeader->s.shared2_file0_size * unit) + unit; + 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; + 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; + 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; + 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; + 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; + this->hShared2SizeArray[5] = (this->pRomHeader->s.shared2_file5_size * unit) + unit; } // カードリージョン 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 ); + this->IsRegionJapan = ((map & METWL_MASK_REGION_JAPAN) != 0)?true:false; + this->IsRegionAmerica = ((map & METWL_MASK_REGION_AMERICA) != 0)?true:false; + this->IsRegionEurope = ((map & METWL_MASK_REGION_EUROPE) != 0)?true:false; + this->IsRegionAustralia = ((map & METWL_MASK_REGION_AUSTRALIA) != 0)?true:false; // ペアレンタルコントロール this->setParentalControlInfo(); @@ -460,19 +460,19 @@ ECSrlResult RCSrl::setRomHeader(void) // ROMヘッダの[0,0x160)の領域はRead Onlyで変更しない // いくつかのフラグをROMヘッダに反映 - 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; + this->pRomHeader->s.exFlags.agree_EULA = (this->IsEULA == true)?1:0; + this->pRomHeader->s.exFlags.WiFiConnectionIcon = (this->IsWiFiIcon == true)?1:0; + this->pRomHeader->s.exFlags.DSWirelessIcon = (this->IsWirelessIcon == true)?1:0; // レーティング 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( this->IsRegionJapan == true ) { map |= METWL_MASK_REGION_JAPAN; } + if( this->IsRegionAmerica == true ) { map |= METWL_MASK_REGION_AMERICA; } + if( this->IsRegionEurope == true ) { map |= METWL_MASK_REGION_EUROPE; } + if( this->IsRegionAustralia == 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) + if( (this->IsRegionJapan == true ) && (this->IsRegionAmerica == true) + && (this->IsRegionEurope == true ) && (this->IsRegionAustralia == true) ) { map |= METWL_MASK_REGION_ALL; // オールリージョンを許す @@ -594,7 +594,7 @@ ECSrlResult RCSrl::signRomHeader(void) // 鍵を選ぶ #ifdef METWL_VER_APPTYPE_LAUNCHER - if( *this->hIsAppLauncher ) + if( this->IsAppLauncher ) { privateKey = (u8*)g_devPrivKey_DER_launcher; publicKey = (u8*)g_devPubKey_DER_launcher; @@ -602,7 +602,7 @@ ECSrlResult RCSrl::signRomHeader(void) else #endif //METWL_VER_APPTYPE_LAUNCHER #ifdef METWL_VER_APPTYPE_SECURE - if( *this->hIsAppSecure ) + if( this->IsAppSecure ) { privateKey = (u8*)g_devPrivKey_DER_secure; publicKey = (u8*)g_devPubKey_DER_secure; @@ -610,7 +610,7 @@ ECSrlResult RCSrl::signRomHeader(void) else #endif //METWL_VER_APPTYPE_SECURE #ifdef METWL_VER_APPTYPE_SYSTEM - if( *this->hIsAppSystem ) + if( this->IsAppSystem ) { privateKey = (u8*)g_devPrivKey_DER_system; publicKey = (u8*)g_devPubKey_DER_system; @@ -761,23 +761,23 @@ ECSrlResult RCSrl::hasDSDLPlaySign( FILE *fp ) 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に署名が格納されていない場合はシークもリードもできない + this->HasDSDLPlaySign = false; // 署名はNTRのROM領域の最後に入るので + return ECSrlResult::ERROR_FILE_READ; // NTRのSRLに署名が格納されていない場合はシークもリードもできない } if( DSDLPLAY_SIZE != fread( buf, 1, DSDLPLAY_SIZE, fp ) ) { - this->hHasDSDLPlaySign = gcnew System::Boolean( false ); + this->HasDSDLPlaySign = false; return ECSrlResult::ERROR_FILE_READ; } // 最初の2バイトが固定の値となることが保証されているのでその値かどうかで判定 if( (buf[0] == 'a') && (buf[1] == 'c') ) { - this->hHasDSDLPlaySign = gcnew System::Boolean( true ); + this->HasDSDLPlaySign = true; } else { - this->hHasDSDLPlaySign = gcnew System::Boolean( false ); + this->HasDSDLPlaySign = false; } return (ECSrlResult::NOERROR); } @@ -1068,7 +1068,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) // CRC u16 crc; // セキュア領域 - if( *this->hIsMediaNand == false ) // カードアプリのときのみ + if( !this->IsMediaNand ) // カードアプリのときのみ { // セキュア領域はROMヘッダ外 u8 *secures; @@ -1159,7 +1159,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } #endif - if( *this->hIsOldDevEncrypt && *this->hHasDSDLPlaySign ) + if( this->IsOldDevEncrypt && this->HasDSDLPlaySign ) { this->hErrorList->Add( gcnew RCMrcError( "旧開発用暗号フラグ", 0x1c, 0x1c, @@ -1174,7 +1174,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) fseek( fp, 0, SEEK_END ); u32 filesize = ftell(fp); // 実ファイルサイズ(単位Mbit) u32 romsize = 1 << (this->pRomHeader->s.rom_size); // ROM容量 - if( *(this->hIsMediaNand) == false ) // カードアプリのときのみのチェック + if( !this->IsMediaNand ) // カードアプリのときのみのチェック { u32 filesizeMb = (filesize / (1024*1024)) * 8; if( romsize < filesizeMb ) @@ -1246,7 +1246,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } - if( *this->hIsAppLauncher || *this->hIsAppSecure || *this->hIsAppSystem ) + if( this->IsAppLauncher || this->IsAppSecure || this->IsAppSystem ) { if( this->pRomHeader->s.disable_debug == 0 ) { @@ -1272,7 +1272,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false, true ) ); } - if( *this->hIsMediaNand == false ) + if( !this->IsMediaNand ) { if( (this->pRomHeader->s.enable_aes == 0) || (this->pRomHeader->s.aes_target_size == 0) ) { @@ -1407,7 +1407,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "Access Control Info.", "Sizes of shared2 files is setting, but using them is not enabled.", false, true ) ); } } - if( *this->hIsMediaNand == false ) // カードアプリのときのみ + if( !this->IsMediaNand ) // カードアプリのときのみ { if( (this->pRomHeader->s.access_control.nand_access != 0) || (this->pRomHeader->s.access_control.sd_card_access != 0) ) { @@ -1420,7 +1420,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } - if( (*this->hIsWiFiIcon == true) && (*this->hIsWirelessIcon == true) ) + if( this->IsWiFiIcon && this->IsWirelessIcon ) { this->hErrorList->Add( gcnew RCMrcError( "アイコン表示フラグ", 0x1bf, 0x1bf, @@ -1430,7 +1430,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) true, true ) ); // 修正可能 } - if( *this->hIsMediaNand == false ) // カードアプリのときのみ + if( !this->IsMediaNand ) // カードアプリのときのみ { u32 ideal = (this->pRomHeader->s.twl_card_keytable_area_rom_offset * 0x80000) + 0x3000; // TWL KeyTable領域の開始 + KeyTableサイズ u32 actual = this->pRomHeader->s.main_ltd_rom_offset; @@ -1445,7 +1445,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } - if( (*this->hIsAppLauncher == false) && (*this->hIsSCFGAccess == true) ) + if( !this->IsAppLauncher && this->IsSCFGAccess ) { this->hWarnList->Add( gcnew RCMrcError( "SCFG設定", 0x1b8, 0x1bb, "SCFGレジスタへアクセス可能になっています。", @@ -1468,13 +1468,13 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) this->mrcReservedArea(fp); // 追加チェック - if( *(this->hMrcSpecialList->hIsCheck) == true ) + if( this->hMrcSpecialList->IsCheck ) { // SDKバージョン System::Boolean match = true; for each( RCSDKVersion ^sdk in this->hSDKList ) { - if( sdk->IsStatic && (sdk->Code != *(this->hMrcSpecialList->hSDKVer) ) ) + if( sdk->IsStatic && (sdk->Code != this->hMrcSpecialList->SDKVer) ) { match = false; } @@ -1489,9 +1489,9 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) // Shared2ファイルサイズ for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) { - if( *(this->hShared2SizeArray[i]) > 0 ) // 0は未使用を表すのでチェックしない + if( this->hShared2SizeArray[i] > 0 ) // 0は未使用を表すのでチェックしない { - if( *(this->hShared2SizeArray[i]) != *(this->hMrcSpecialList->hShared2SizeArray[i]) ) + if( this->hShared2SizeArray[i] != this->hMrcSpecialList->hShared2SizeArray[i] ) { this->hWarnList->Add( gcnew RCMrcError( "Shared2ファイル" + i.ToString(), METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h index cac8be9..5d70e4c 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h @@ -65,8 +65,8 @@ namespace MasterEditorTWL { private: System::String ^hVersion; - System::UInt32 ^hCode; - System::Boolean ^hIsStatic; + System::UInt32 code; + System::Boolean isStatic; private: RCSDKVersion(){} // 封じる public: @@ -76,23 +76,23 @@ namespace MasterEditorTWL this->hVersion = gcnew System::String(""); // NULL参照バグを避ける else this->hVersion = ver; - this->hCode = gcnew System::UInt32( code ); - this->hIsStatic = gcnew System::Boolean( isStatic ); + this->code = code; + this->isStatic = isStatic; } public: property System::String ^Version // 生成後にはフィールドはRead Only { - System::String^ get(){ return this->hVersion; } + System::String^ get(){ return System::String::Copy(this->hVersion); } } public: property System::Boolean IsStatic { - System::Boolean get(){ return *(this->hIsStatic); } + System::Boolean get(){ return (this->isStatic); } } public: property System::UInt32 Code { - System::UInt32 get(){ return *(this->hCode); } + System::UInt32 get(){ return (this->code); } } }; @@ -127,12 +127,12 @@ namespace MasterEditorTWL public: property System::String ^Name // 生成後にはフィールドはRead Only { - System::String^ get(){ return this->hName; } + System::String^ get(){ return System::String::Copy(this->hName); } } public: property System::String ^Publisher { - System::String^ get(){ return this->hPublisher; } + System::String^ get(){ return System::String::Copy(this->hPublisher); } } }; @@ -148,19 +148,19 @@ namespace MasterEditorTWL { private: System::String ^hName; // 項目名 - System::UInt32 ^hBegin; // 開始アドレス - System::UInt32 ^hEnd; // 終了アドレス + System::UInt32 begin; // 開始アドレス + System::UInt32 end; // 終了アドレス System::String ^hMsg; // エラーメッセージ System::String ^hNameE; // 英語版 System::String ^hMsgE; - System::Boolean ^hEnableModify; // マスタエディタで修正可能かどうか - System::Boolean ^hAffectRom; // 変更するとSRL(ROMバイナリ)が変更されるか + System::Boolean isEnableModify; // マスタエディタで修正可能かどうか + System::Boolean isAffectRom; // 変更するとSRL(ROMバイナリ)が変更されるか 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 ) + System::String ^nameE, System::String ^msgE, System::Boolean isEnableModify, System::Boolean isAffectRom ) { if( name == nullptr ) this->hName = gcnew System::String(""); @@ -172,8 +172,8 @@ namespace MasterEditorTWL else this->hNameE = nameE; - this->hBegin = gcnew System::UInt32( beg ); - this->hEnd = gcnew System::UInt32( end ); + this->begin = beg; + this->end = end; if( msg == nullptr ) this->hMsg = gcnew System::String(""); @@ -185,23 +185,23 @@ namespace MasterEditorTWL else this->hMsgE = msgE; - this->hEnableModify = gcnew System::Boolean( enableModify ); - this->hAffectRom = gcnew System::Boolean( affectRom ); + this->isEnableModify = isEnableModify; + this->isAffectRom = isAffectRom; } public: - property System::Boolean EnableModify + property System::Boolean IsEnableModify { - System::Boolean get(){ return *(this->hEnableModify); } // Read Only + System::Boolean get(){ return this->isEnableModify; } // Read Only } - property System::Boolean AffectRom + property System::Boolean IsAffectRom { - System::Boolean get(){ return *(this->hAffectRom); } + System::Boolean get(){ return this->isAffectRom; } } public: // gridViewの表示形式にあわせる cli::array^ getAll( System::Boolean isJapanese ) { - if( (*this->hBegin == METWL_ERRLIST_NORANGE) && (*this->hEnd == METWL_ERRLIST_NORANGE) ) + if( (this->begin == METWL_ERRLIST_NORANGE) && (this->end == METWL_ERRLIST_NORANGE) ) { if( isJapanese ) return (gcnew array{this->hName, "-", "-", this->hMsg}); @@ -210,9 +210,9 @@ namespace MasterEditorTWL } if( isJapanese ) - return (gcnew array{this->hName, this->hBegin->ToString("X04")+"h", this->hEnd->ToString("X04")+"h", this->hMsg}); + return (gcnew array{this->hName, this->begin.ToString("X04")+"h", this->end.ToString("X04")+"h", this->hMsg}); else - return (gcnew array{this->hNameE, this->hBegin->ToString("X04")+"h", this->hEnd->ToString("X04")+"h", this->hMsgE}); + return (gcnew array{this->hNameE, this->begin.ToString("X04")+"h", this->end.ToString("X04")+"h", this->hMsgE}); } }; @@ -227,20 +227,21 @@ namespace MasterEditorTWL ref class RCMrcSpecialList { public: - property System::Boolean ^hIsCheck; - property System::UInt32 ^hSDKVer; - property System::Byte ^hEULAVer; - property cli::array ^hShared2SizeArray; + property System::Boolean IsCheck; + property System::UInt32 SDKVer; + property System::Byte EULAVer; + 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); // ファイルサイズの数に合わせる + this->IsCheck = false; + this->SDKVer = 0; + this->EULAVer = 0; + this->hShared2SizeArray = gcnew cli::array(METWL_NUMOF_SHARED2FILES); // ファイルサイズの数に合わせる System::Int32 i; for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) { - this->hShared2SizeArray[i] = gcnew System::UInt32( 0 ); + this->hShared2SizeArray[i] = 0; } } }; @@ -269,64 +270,64 @@ namespace MasterEditorTWL property System::String ^hMakerCode; property System::String ^hPlatform; property System::String ^hRomSize; - property System::Byte ^hRomVersion; - property System::UInt16 ^hHeaderCRC; + property System::Byte RomVersion; + property System::UInt16 HeaderCRC; property System::String ^hLatency; // MROM/1TROM/Illegal // ペアレンタルコントロール property cli::array ^hArrayParentalIndex; // 表示用のコンボボックスのインデックス // TWL専用情報 一部編集可能 - property System::UInt32 ^hNormalRomOffset; - property System::UInt32 ^hKeyTableRomOffset; + property System::UInt32 NormalRomOffset; + property System::UInt32 KeyTableRomOffset; property System::String ^hTitleIDLo; - property System::UInt32 ^hTitleIDHi; - property System::Boolean ^hIsAppLauncher; // TitleIDLoからわかるアプリ種別 - property System::Boolean ^hIsAppUser; // TitleIDHiからわかるアプリ種別 - 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ヘッダ外のSRLからわかる署名の有無 - property System::Boolean ^hIsOldDevEncrypt; // 旧開発用暗号フラグが立っている - property System::Boolean ^hIsSCFGAccess; // SCFGレジスタをロックしている + property System::UInt32 TitleIDHi; + property System::Boolean IsAppLauncher; // TitleIDLoからわかるアプリ種別 + property System::Boolean IsAppUser; // TitleIDHiからわかるアプリ種別 + property System::Boolean IsAppSystem; // + property System::Boolean IsAppSecure; // + property System::Boolean IsLaunch; // + property System::Boolean IsMediaNand; // + property System::Boolean IsDataOnly; // + property System::UInt16 PublisherCode; // + property System::UInt32 PublicSize; + property System::UInt32 PrivateSize; + property System::Boolean IsNormalJump; + property System::Boolean IsTmpJump; + property System::Boolean HasDSDLPlaySign; // ROMヘッダ外のSRLからわかる署名の有無 + property System::Boolean IsOldDevEncrypt; // 旧開発用暗号フラグが立っている + property System::Boolean IsSCFGAccess; // SCFGレジスタをロックしている // TWL拡張フラグ 一部編集可能 - property System::Boolean ^hIsCodecTWL; - property System::Boolean ^hIsEULA; // 編集可能 - property System::Boolean ^hIsSubBanner; - property System::Boolean ^hIsWiFiIcon; // 編集可能 - property System::Boolean ^hIsWirelessIcon; // 編集可能 - property System::Boolean ^hIsWL; + property System::Boolean IsCodecTWL; + property System::Boolean IsEULA; // 編集可能 + property System::Boolean IsSubBanner; + property System::Boolean IsWiFiIcon; // 編集可能 + property System::Boolean IsWirelessIcon; // 編集可能 + property System::Boolean IsWL; // TWLアクセスコントロール 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; + property System::Boolean IsCommonClientKey; + property System::Boolean IsAesSlotBForES; + property System::Boolean IsAesSlotCForNAM; + property System::Boolean IsSD; + property System::Boolean IsNAND; + property System::Boolean IsGameCardOn; + property System::Boolean IsShared2; + property System::Boolean IsAesSlotBForJpegEnc; + property System::Boolean IsAesSlotBForJpegEncUser; + property System::Boolean IsGameCardNitro; + property System::Boolean IsAesSlotAForSSL; + property System::Boolean IsCommonClientKeyForDebugger; // Shared2ファイルサイズ Read Only - property cli::array ^hShared2SizeArray; + property cli::array ^hShared2SizeArray; // カードリージョン Read Only - property System::Boolean ^hIsRegionJapan; - property System::Boolean ^hIsRegionAmerica; - property System::Boolean ^hIsRegionEurope; - property System::Boolean ^hIsRegionAustralia; + property System::Boolean IsRegionJapan; + property System::Boolean IsRegionAmerica; + property System::Boolean IsRegionEurope; + property System::Boolean IsRegionAustralia; // SDKバージョンと使用ライブラリのリスト property System::Collections::Generic::List ^hSDKList; diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp index cdd0ea4..5ff8380 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -64,14 +64,9 @@ System::String^ MasterEditorTWL::transRomSizeToString( System::Byte ^byte ) // // @ret 文字列(単位つき) // -System::String^ MasterEditorTWL::transSizeToString( System::UInt32 ^size ) +System::String^ MasterEditorTWL::transSizeToString( const System::UInt32 size ) { - if( size == nullptr ) - { - return (gcnew System::String("")); - } - - System::UInt32 val = *size; + System::UInt32 val = size; // Byte単位 if( val == 0 ) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h index 180a888..1af73bf 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h @@ -39,7 +39,7 @@ namespace MasterEditorTWL // // @ret 文字列(単位つき) // - System::String^ transSizeToString( System::UInt32 ^size ); + System::String^ transSizeToString( const System::UInt32 size ); // // ペアレンタルコントロールの各団体の設定可能年齢を取得する