From 537e1fd9a434cb6bd09c16dd8ed96221b8cdb965 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Wed, 7 Jan 2009 09:42:56 +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:=20=E3=83=BBNAND=E3=82=A2=E3=83=97=E3=83=AA?= =?UTF-8?q?=E3=81=AE=E3=81=A8=E3=81=8DRomSpeedType=E3=82=92=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=97=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8F=E3=81=A6?= =?UTF-8?q?=E3=82=82(=E6=9C=AA=E8=A8=AD=E5=AE=9A=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=B0=E3=81=8C=E7=AB=8B=E3=81=A3=E3=81=A6=E3=81=84=E3=81=A6?= =?UTF-8?q?=E3=82=82)=E8=AD=A6=E5=91=8A=E3=82=92=E5=87=BA=E3=81=95?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82=20=E3=83=BBShared2=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=A1=E3=83=83?= =?UTF-8?q?=E3=82=BB=E3=83=BC=E3=82=B8=E3=82=92=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E3=81=A8=E3=82=B7=E3=82=B9=E3=83=86?= =?UTF-8?q?=E3=83=A0=E3=82=A2=E3=83=97=E3=83=AA=E3=81=A7=E9=81=95=E3=81=86?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82=20=E3=83=BB=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E6=95=B4=E7=90=86=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@105 7061adef-622a-194b-ae81-725974e89856 --- .../MasterEditorTWL/MasterEditorTWL.ncb | Bin 11373568 -> 11373568 bytes .../MasterEditorTWL/MasterEditorTWL.suo | Bin 67584 -> 66048 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 20662 -> 20662 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 82 +++++---- .../MasterEditorTWL/srl_mrc.cpp | 171 ++++++++++++------ .../MasterEditorTWL/utility.cpp | 79 ++++---- .../MasterEditorTWL/MasterEditorTWL/utility.h | 4 +- 7 files changed, 214 insertions(+), 122 deletions(-) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb index a83fcd2797db33b0433ba23c9c5c2566b9f0f671..ee1aaf6f1078d5a3bf41b9d5c6a32204680b4737 100644 GIT binary patch delta 13922 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 C4V`fS delta 6013 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 diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo index 5856c973156d9a00192bee4feac631bf3280a274..0d9a9e0b1abdabef65f3347013085117c8546ba7 100644 GIT binary patch delta 4347 zcmZvg2~nQ@?K(ToD3aT}20-i(qOH4&`~IVMU1E{WQjfsD$*WguFk z(J0R67R9Bssm2AAYfXa-#F!e5NyX&kXj&7FTBF8l>QSSd1p5DGKGN5Q&-2aw-{1S+ z`?kA0EGe^=EVb_c(9lQGDI>|+)ZE-m-x?WuZ%VO@X;YwS+VjX+w8+w9;%unjAb*RT zgM1n3MJ6G+A;+`OT+SC(gt8d<1K0wT3z3VEi;;fhK>ES*a#)#n-~BzRz58#>>y8`Y&JRCn?jdS9CB^6PWeJ=Yp*T+yV|S+Hs7>c<$V z-b|UQTM9o=RQh-vIa6<1KfB&#Zy?pF61we=q=xhaYOq_w-r^QiZ*ON@i&9PL#qEqw zEL1#vu`$n}MigBmsQAfc)HyRnExP2%lO}dyvSrg*z-nKgid)o%j8kc3$G=n-_ zil>4*Jt;OnMhzTwvW>DgEY~R}FP1*O{9<*^SX=0QO_=NoiK5A8tZ$+N8ZqT*=M0D! zkuM=CrZcNeTO{DlUdCSJ@u{GhSsLUw0>C=tfG6nZ$y zCBnKwFBRVrlkcebYK6Jrs}r9c!;a6v;ebYee$6Rx8ejtSBPe?dOM#Aq=5PyRod(Sp z(^nXGnhEVf+0VqD6gI-dCPMR2&k3?&p+*^~aFmIW^;&2?2?=vUZ-(ZZsSuU~t?K;Q z;Z{8SW^%lCi_Vo~s>~T33^l>qL8oyuH&m>`E6B~EUwY$Ft)v~VKOO!O+F8-{<3lE@ z;{~xiT<+5s%j4C#LWfStc{kyXq+2T^)SVSJ?xm8>l83%r;cR2*Q?-HGWbFy64-BD$ z8{z{!eN?l)k?J3oC11JH{g);rEBwER3I4IrI>e+l1vnZx`P#lW({9_L_YA#COQ#`-}K$Ld>r{ zhYk;m@wCZ!MvR{bn+)II#P^jjzVHU<1e8~VL@-$7yXp#LlfkC}Y6(CquGu<6hz#dj9_CN)a>TDti9n|uSrHw-0DZ;jqd==uc?+#C$txomal?ytR&aYE-2k|*j zeIr+G`|grKo_B}Rt1I)V?z+R@9aqg`*l+}||553c2UZtozNhZOSoeaqp-dOXA51;O z*Vn`{g$*^aCxnd<#$zPvDS_EB8WkkYrSr?36mj?=ZN1nnrj?H^{7*ej<-agj4;=T9^Z8qWZ>;#}aYW~=zxO*_P;ju& z*eZ8$&h!+(2YMlS8R1dLFNgCQlBfI)si&aiU5=v}$(~?9a9aZ_xvwEGdiO}nzdF*ZxmIGZ5jqq!K z5XkrO7Bn~BDXbH84K#0hhlO#6yP!Fa3gfo5(A@StVb4Gx7hi;Ifb5HeX5VZrPn)k% z|JQd><*9MOr7;cI&K^V}O1?)PP!<-56k)8pLi2#))r${zMoxhaLzyq^QRr#HW}4V+ zVP0V!@dY;CtLv)dqY|qJwO}lfS=t`8C}GRMf@>e@qj6e(sz$8#x%+*0mHSKg_xR0F zp0funwmclYZ&8h(+6?-4pd&Sw#o|wqarDtwom!obp=oWW82n@3qH0%bzSP>gIvqaJ z>YVO#34gv+)y2}D&k9>>>%ZVITI1^Pt@E!h8m;*$s^KvzJ>sV6HyzZrHUW$5pLEK< z?o|cNYxKZ1kDs4AzZ1?bNPbG)q|S^dI5YD?k}ixtKU&%j5XQr$g?WUHGO=u7Jmlc> z2hIG&!6#V|f26}Jr1_m8Cg(`{-@(E**@ gl?#HE())g0=?n2+1I=`x=m4#LJ5n8f@T;i*0AAwtegFUf delta 3618 zcmc(ieNdFg9mjVc?v9t@3C9(Xf*dbSj6vW4jYTt_FM~=&$n2vN9GM7Fw(o79P2Z0L?`-eZc7@PSer-Wdzsa-x zv;XD*R~w0ZDrEaFz76@qkWfzh_VBnBDEc;({qlYk5SP=la`g1VvwqQSoDsM1=1^Ye%7!!T#phElFrQNvQsu zh8V*psi9z_VU^T}q&}1yW^M7E7!%!OePc?K71e~eR%sE!pv5Ew-4d(Go3O>@ZcZS-1Gi;P}pdcCMWV zdO0Y6`AR4-@CTnQ4rSw&LgA@F8Rz0vd~Kvu+4Y^0F29gtUV*MflPvFQtuhSy#G9uk zZcQ+#cjpaSHPt3fbZh5PvNgAC&h%sA1n6i_Ax%DVRf#QSZK@a4}JLo653MDcfWr_v@QOT?Q!ne(SX^ zjDpD=f=n3AYr0KsHFov)0|}uXH9`pfzQxeH@Em{8jQNM~DM-6CtAy`{=cYc@tOEWr zJja)smBZiBC_8ZQrl58lstuuv%3olT*y#3G zPx=nKqIfF{o-0&*Dx0QPwg<}C`!baGh)a?zn?`3(ZlU+PWB+&M*=cH5JC$$sP(`0# z`QJhL<~T3;JucsyUUL1?-+C}nrt_-fUm+LbmB)bvH#k9sC>1NkkI41jH2Q2^t!E;} zH4+63n>e3+ink~6jQ-d~@Qd^SED2&2nk@@r%Qai0Ssd!}e#B9y*(msL1&9!CFkUdc zeFnlgScv8|zf588-=$3liYe)Q4PCu3+&HL{=kH63IX3LGFS~ms9r){T&nWrgZ+-19 z@_*s-#NfTv5RcGUXgS2e#|$$Ev=-vn0x?U0wn7|#f|$*O&Osd4AZFagb%-MbfY~&N z4;hXKiPMQaD-M6S0|`hup9KwW(HKL`_=id1hluf-&4SO;Y^r8_noiTK5NTjj!s)q6 zWQrABSqzo*7*T<|cm#>A5$J{!`3%h-M|uq6#n-OcB&4S`8yW-tsmDVc7oef`F2Zwr zmo#%Ay$m5jghP_^x=Xn}cuRT=%)wYt3sSDkdyoyDkJZ>9mJHAHIz_X|@M-WI3aZP_Ye~d4kv`c>cB@YsTa7GJGb|ZJL$9zY5RsQ_V`@cWbs^v(aF! z@Yta}LTSjA-_Ql$)$Ds5(u|1l#XvUkyo0>f*DzJhm ze$PRA`=j}|jtxxmIiQ}RDB;?jEB7y)C2~B`}=?23h3vRarhxP z9@4rOxaU6HnSkX?&FQ!3_+M6i^AY(Nd5;P;sOl- diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm index 1e0dac8e09f37dfab064d5226e5c13b50e974e3b..0b920b02ac399e0a4ac41207ead9e09789a04836 100644 GIT binary patch delta 345 zcmdnCka62W#tmj{!X^x63`Rg~!C=B*2qeuI3^seRaq?o5m~1N>yZM5W2qRF^97ESj z5l0TJ61K9-LH1an>zM4xX1ZBNB}@RDG@H+iO#CMk9^+38D z(REFhG_%~CU~R^PRT838fpPK!2R>;N1}Ajg40;Sn42cXSlLOf_H=Eh-09k>dXfvbZ GR(=5D_dB=% delta 345 zcmdnCka62W#tmj{!p02d48{y*3?@Km%wP$`Mw>m^IC-&2OtzJc-F!hwgb^rdfuZZA zh$9D930v9aAbUV&qu4Xqlg)Iqj!KvSHp$IXO$tHwIHK#?ENM2M8Jh&qb<&%kS?Ymw zIic&CENN!BIlK;N-vP1$L(yhN H$F2MT;}ko( diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h index 0a86caf..2035958 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -3048,7 +3048,8 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; void maskRatingForms(void); // フォーム入力が正しいか書き込み前チェック - void checkRatingForms( System::Boolean inRegion, System::Windows::Forms::ComboBox ^comb, System::String ^msg ); + void checkRatingForms( System::Boolean inRegion, + System::Windows::Forms::ComboBox ^comb, System::String ^msg ); // クリアする void clearRating( System::Windows::Forms::ComboBox ^comb ); @@ -3077,16 +3078,19 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; // ---------------------------------------------- // テキスト入力がされているかチェック - System::Boolean checkTextForm( System::String ^formtext, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + System::Boolean checkTextForm( System::String ^formtext, + System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); // 数値入力が正常かどうかチェック System::Boolean checkNumRange( - System::Int32 val, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + 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 ); // コンボボックスをチェック - System::Boolean checkBoxIndex( System::Windows::Forms::ComboBox ^box, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); + System::Boolean checkBoxIndex( System::Windows::Forms::ComboBox ^box, + System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ); // ----------------------------------------------------------------- // 提出情報(SRLに影響しない箇所のみ)とフォーム間のデータのやりとり @@ -3212,6 +3216,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; ///////////////////////////////////////////// private: + // -------------------------------------------------------- + // 言語切り替え + // -------------------------------------------------------- System::Void stripItemEnglish_Click(System::Object^ sender, System::EventArgs^ e) { this->stripItemEnglish->Checked = true; @@ -3219,8 +3226,6 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; this->changeEnglish(); this->updateGrid(); } - - private: System::Void stripItemJapanese_Click(System::Object^ sender, System::EventArgs^ e) { this->stripItemEnglish->Checked = false; @@ -3230,6 +3235,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } private: + // -------------------------------------------------------- + // 「ROMファイルを開く」 + // -------------------------------------------------------- System::Void stripItemOpenRom_Click(System::Object^ sender, System::EventArgs^ e) { System::String^ filename; @@ -3253,7 +3261,10 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //stripItemOpenRom_Click() private: - System::Void stripItemMasterRom_Click(System::Object^ sender, System::EventArgs^ e) // SRLのみ出力 + // -------------------------------------------------------- + // 「SRLのみ作成する」 + // -------------------------------------------------------- + System::Void stripItemMasterRom_Click(System::Object^ sender, System::EventArgs^ e) { // SRLが読み込まれていないときにはリードさせない if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) @@ -3325,7 +3336,10 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //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; @@ -3468,6 +3482,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //stripItemSheet_Click() private: + // -------------------------------------------------------- + // 「提出情報を一時保存する」 + // -------------------------------------------------------- System::Void stripItemSaveTemp_Click(System::Object^ sender, System::EventArgs^ e) { System::String ^filename = this->saveFileDlg( "xml format (*.xml)|*.xml", ".xml" ); @@ -3479,6 +3496,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //stripItemSaveTemp_Click() private: + // -------------------------------------------------------- + // 「一時保存した提出情報を開く」 + // -------------------------------------------------------- System::Void stripItemLoadTemp_Click(System::Object^ sender, System::EventArgs^ e) { System::String ^filename = this->openFileDlg( "xml format (*.xml)|*.xml" ); @@ -3490,6 +3510,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //stripItemLoadTemp_Click() private: + // -------------------------------------------------------- + // 「ミドルウェアリストのみを作成する(XML形式)」 + // -------------------------------------------------------- System::Void stripItemMiddlewareXml_Click(System::Object^ sender, System::EventArgs^ e) { if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) @@ -3507,6 +3530,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } //stripItemMiddlewareXml_Click() private: + // -------------------------------------------------------- + // 「ミドルウェアリストのみを作成する(HTML形式)」 + // -------------------------------------------------------- System::Void stripItemMiddlewareHtml_Click(System::Object^ sender, System::EventArgs^ e) { if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) @@ -3528,18 +3554,7 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; // フォーム操作メソッド ///////////////////////////////////////////// - // ファイルパス表示用テキストボックス - //private: - // // ドラッグされてまだマウスのボタンが離されていないとき - // System::Void tboxFile_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) - // { - // } - // // ドラッグされたあとマウスのボタンが離されたとき - // System::Void tboxFile_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) - // { - // } - - // ドラッグアンドドロップを受け付ける領域をフォーム全体にする + // ドラッグアンドドロップでSRLを読み込む private: // ドラッグされてまだマウスのボタンが離されていないとき System::Void Form1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) @@ -3570,8 +3585,9 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; //this->sucMsg( "ROMデータファイルのオープンに成功しました。", "The ROM data file is opened successfully." ); } - // チェックボタンを押したときに他のフォームを有効にする + // フォームの状態に連動して他のフォームを有効/無効にする private: + // 担当者2を入力することが選択されたときに入力用のテキストボックスを有効にする System::Void cboxIsInputPerson2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { this->gboxPerson2->Enabled = this->cboxIsInputPerson2->Checked; @@ -3579,7 +3595,7 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; { if( (this->tboxCompany1->Text != nullptr) && !(this->tboxCompany1->Text->Equals("")) ) { - this->tboxCompany2->Text = gcnew System::String( this->tboxCompany1->Text ); + this->tboxCompany2->Text = gcnew System::String( this->tboxCompany1->Text ); // 会社と部署は担当者1と同じにする } if( (this->tboxDepart1->Text != nullptr) && !(this->tboxDepart1->Text->Equals("")) ) { @@ -3599,6 +3615,7 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; } } private: + // 用途に「その他」が選択されたときに入力用のテキストボックスを有効にする System::Void rUsageOther_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { this->tboxUsageOther->Enabled = this->rUsageOther->Checked; @@ -3610,6 +3627,7 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; private: System::Void cboxRemasterVerE_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { + // 設定不可になったため必要なし //this->numRemasterVer->Enabled = !(this->isEngilsh()); //if( this->isEngilsh() == false ) //{ @@ -3617,6 +3635,7 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; //} } private: + // バックアップメモリに「その他」が選択されたときに入力用のテキストボックスを有効にする System::Void combBackup_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) @@ -3626,35 +3645,35 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; else { this->tboxBackupOther->Enabled = false; - this->tboxBackupOther->Clear(); + this->tboxBackupOther->Clear(); // 前にテキストボックスに書かれていた内容を消去 } } private: + // リージョン変更に連動して表示するレーティング団体を変更する System::Void combRegion_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { this->maskRatingForms(); this->changeUnnecessaryRatingForms(false); // 一度コンボボックスがenableになるので再設定 } - private: + // レーティング表示不要が選択されたときにレーティングを選択不可にする System::Void cboxIsUnnecessaryRating_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { this->changeUnnecessaryRatingForms(false); } - private: + // レーティング情報をSRLを読み込んだ時点の情報に戻す System::Void butSetBack_Click(System::Object^ sender, System::EventArgs^ e) { if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) return; - // 編集可能情報を読み込み時の設定に戻す - this->setRegionForms(); + this->setRegionForms(); // フォームが更新されてもSRLクラスの情報は更新されないので再度読み出すだけ this->setRatingForms(); this->loadOtherForms(); // SRLに登録されていないROM仕様のフォームも戻す } - private: + // 海外版を発売予定であると選択されたときに海外版の製品コードetc.を入力可能にする System::Void cboxReleaseForeign_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { this->tboxProductNameForeign->Enabled = this->cboxReleaseForeign->Checked; @@ -3671,23 +3690,22 @@ private: System::Windows::Forms::CheckBox^ cboxIsUnnecessaryRating; 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) { - // エラータブを最新情報に更新 if( tabMain->SelectedIndex == 5 ) { this->updateGrid(); diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl_mrc.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl_mrc.cpp index 64fbd25..0cf8b7a 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl_mrc.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl_mrc.cpp @@ -51,9 +51,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) System::Int32 i; System::Boolean result; - // ROMヘッダのチェック - - // 文字コードチェック + // タイトル名の文字コードチェック result = true; for( i=0; i < TITLE_NAME_MAX; i++ ) { @@ -108,6 +106,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) "Game Title", "Please use 20h for an space part.", false, true ) ); } + // ゲームコードの文字コードチェック result = true; for( i=0; i < GAME_CODE_MAX; i++ ) { @@ -130,6 +129,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) "Game Code", "SDK default code(NTRJ) is used.", false, true ) ); } + // メーカコードの文字コードチェック result = true; for( i=0; i < MAKER_CODE_MAX; i++ ) { @@ -146,8 +146,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) "Maker Code", "Unusable ASCII code is used.", false, true ) ); } - // 値チェック - + // デバイスタイプは不使用なので00h固定 if( this->pRomHeader->s.rom_type != 0x00 ) { this->hErrorList->Add( gcnew RCMrcError( @@ -155,6 +154,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) "Device Type", "Invalid data. Please set 00h.", false, true ) ); } + // リマスターバージョンが16進2桁のときエラー u8 romver = this->pRomHeader->s.rom_version; if( ((romver < 0x00) || (0x0f < romver)) && (romver != 0xE0) ) { @@ -162,6 +162,8 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) "リマスターバージョン", 0x1e, 0x1e, "不正な値です。正式版では01h-0Fhのいずれかの値、事前版ではE0hを設定してください。", "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( @@ -180,7 +182,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) // セキュア領域 if( !this->IsMediaNand ) // カードアプリのときのみ { - // セキュア領域はROMヘッダ外 + // セキュア領域はROMヘッダ外なのでファイルから別途読み出してチェックする u8 *secures; s32 secure_size = SECURE_AREA_END - this->pRomHeader->s.main_rom_offset; if (secure_size > SECURE_AREA_SIZE) @@ -269,6 +271,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } #endif + // 旧開発用暗号フラグとクローンブートの組み合わせはマスタリングで矛盾が生じる if( this->IsOldDevEncrypt && this->HasDSDLPlaySign ) { this->hErrorList->Add( gcnew RCMrcError( @@ -279,8 +282,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) false, true ) ); } - // 値チェック - + // デバイス容量と実ファイルサイズ fseek( fp, 0, SEEK_END ); u32 filesize = ftell(fp); // 実ファイルサイズ u32 romsize = 1 << (this->pRomHeader->s.rom_size); // ROM容量(単位Mbit) @@ -311,31 +313,6 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "実ファイルサイズ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "中途半端な値です。通常では2のべき乗[Mbit]の値です。", "Actual File Size", "Invalid size. This size is usually power of 2.", false, true ) ); } - // 1Gbit以上のときの最終領域が固定値かどうか - this->mrcPadding( fp ); - - // セグメント3のCRC - u16 crcseg3; - BOOL crcret = getSeg3CRCInFp( fp, &crcseg3 ); - if( !crcret || (crcseg3 != METWL_SEG3_CRC) ) - { - this->hErrorList->Add( gcnew RCMrcError( - "セグメント3 CRC", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, - "セグメント3領域に誤りがあります。", - "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オフセット", 0x90, 0x93, - "TWLノーマル領域ROMオフセット(NA)およびTWL専用領域ROMオフセット(KA)はともに1以上で、かつNAはKAを超えてはいけません。", - "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アプリのときのみのチェック { @@ -356,6 +333,42 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } + // パディング + if( !this->IsMediaNand ) + { + // 1Gbit以上のときの最終領域が固定値かどうか + this->mrcPadding( fp ); + + // セグメント3のCRC + u16 crcseg3; + BOOL crcret = getSeg3CRCInFp( fp, &crcseg3 ); + if( !crcret || (crcseg3 != METWL_SEG3_CRC) ) + { + this->hErrorList->Add( gcnew RCMrcError( + "セグメント3 CRC", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "セグメント3領域に誤りがあります。", + "Segment-3 CRC", "Invalid data exist in Segment-3 area.", false, true ) ); + } + } + + // ROMオフセット + if( !this->IsMediaNand ) + { + 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オフセット", 0x90, 0x93, + "TWLノーマル領域ROMオフセット(NA)およびTWL専用領域ROMオフセット(KA)はともに1以上で、かつNAはKAを超えてはいけません。", + "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->IsAppLauncher || this->IsAppSecure || this->IsAppSystem ) { if( this->pRomHeader->s.disable_debug == 0 ) @@ -368,7 +381,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) false, true ) ); } } - else // ユーザのときのみ + else { if( this->pRomHeader->s.disable_debug != 0 ) { @@ -379,8 +392,12 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "This ROM can't be analyzed on the debugger. This setting is unavailable.", false, true ) ); } + } - u8 okbits = 0x02 | 0x40 | 0x80; + // ノーマルジャンプ + if( !(this->IsAppLauncher || this->IsAppSecure || this->IsAppSystem) ) + { + u8 okbits = 0x01 | 0x02 | 0x40 | 0x80; u8 *p = (u8*)&(this->pRomHeader->s); if( p[0x1d] & ~okbits ) { @@ -391,14 +408,27 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "Illegal bit is setting. This setting is unavailable.", false, true ) ); } + + if( (this->pRomHeader->s.permit_landing_normal_jump != 0) && + !this->hMrcExternalCheckItems->IsPermitNormalJump ) // 設定ファイルでアクセス許可されていないときにチェック + { + this->hErrorList->Add( gcnew RCMrcError( + "ノーマルアプリジャンプ", 0x1d, 0x1d, + "ノーマルアプリジャンプは許可されていません。", + "Normal App Jump", + "This setting is not permitted.", + false, true ) ); + } } - if( this->pRomHeader->s.warning_no_spec_rom_speed != 0 ) + // NANDアプリのときにはROMの種類(MROM/1TROM)が設定されていなくてもよい + if( (this->pRomHeader->s.warning_no_spec_rom_speed != 0) && !this->IsMediaNand ) { this->hWarnList->Add( gcnew RCMrcError( "諸フラグ", 0x1f, 0x1f, "rsfファイルでROMSpeedTypeが設定されていません。", "Setting Flags", "In a RSF file, the item \"ROMSpeedType\" is not set.", false, true ) ); } + // 1TROMのみ許可(ROMの種類が設定されないときデフォルトで1TROMとなる) if( (this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK) != CARD_1TROM_GAME_LATENCY ) { this->hErrorList->Add( gcnew RCMrcError( @@ -406,6 +436,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false, true ) ); } + // AESがかかっていないとエラー if( !this->IsMediaNand ) { if( (this->pRomHeader->s.enable_aes == 0) || (this->pRomHeader->s.aes_target_size == 0) ) @@ -425,8 +456,6 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } - // ROMヘッダのチェック (TWL専用領域) - // アプリ種別のチェック this->mrcAppType(fp); @@ -434,6 +463,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) this->mrcAccessControl(fp); this->mrcShared2(fp); + // NTRホワイトリスト署名 if( this->IsWL ) { this->hErrorList->Add( gcnew RCMrcError( @@ -444,6 +474,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) false, true ) ); } + // 通信アイコン表示 if( this->IsWiFiIcon && this->IsWirelessIcon ) { this->hErrorList->Add( gcnew RCMrcError( @@ -454,7 +485,8 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) false, true ) ); } - if( !this->IsMediaNand ) // カードアプリのときのみ + // TWL Limited static の位置が KeyTable 領域よりも前にあってはいけない + 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; @@ -469,6 +501,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } } + // ランチャー以外はSCFGにアクセスしてはならない if( !this->IsAppLauncher && this->IsSCFGAccess ) { this->hWarnList->Add( gcnew RCMrcError( @@ -476,6 +509,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "SCFG Setting", "In this setting, SCFG register is accessible.", false, true ) ); } + // TitleID Lo はゲームコードの逆順 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]) || @@ -486,11 +520,13 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) "Title ID", "Lower 4 bytes don't match ones of Game Code.", false, true ) ); } - // ROMヘッダ以外の領域のチェック - + // バナーの文字コード this->mrcBanner( fp ); + + // 予約領域に余計なデータが書かれていないか this->mrcReservedArea(fp); + // FINALROMビルドでないときSDにアクセスできてしまうのでエラー for each( RCLicense ^lic in this->hLicenseList ) { if( lic->Publisher->Equals( "NINTENDO" ) && lic->Name->Equals( "DEBUG" ) ) @@ -826,21 +862,50 @@ void RCSrl::mrcShared2(FILE *fp) System::String ^filenoE = "Shared File(No." + i.ToString() + ")"; if( !this->hMrcExternalCheckItems->hIsPermitShared2Array[i] ) { - this->hErrorList->Add( gcnew RCMrcError( - filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, - filenoJ + "へのアクセスは許可されていません。", - filenoE, - "Access to " + filenoE + " is not permitted.", - false, true ) ); + // 一般公開されていないのにファイルを使用する場合を考慮してシステムアプリ場合のメッセージを変更する + if( this->IsAppSystem || this->IsAppSecure || this->IsAppLauncher ) + { + this->hWarnList->Add( gcnew RCMrcError( + filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + "一般公開されていない" + filenoJ + "へのアクセスが設定されています。" + + "アクセス許可されているかご確認ください。", + filenoE, + filenoE + " is not revealed to licencies. Please check permission of access to this file.", + false, true ) ); + } + else + { + this->hErrorList->Add( gcnew RCMrcError( + filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + filenoJ + "へのアクセスは許可されていません。", + filenoE, + "Access to " + filenoE + " is not permitted.", + false, true ) ); + } } if( this->hShared2SizeArray[i] != this->hMrcExternalCheckItems->hShared2SizeArray[i] ) { - this->hErrorList->Add( gcnew RCMrcError( - filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, - filenoJ + "のファイルサイズに不正な値が設定されています。", - filenoE, - "Illegal file size of " + filenoE + ".", - false, true ) ); + if( this->IsAppSystem || this->IsAppSecure || this->IsAppLauncher ) + { + this->hWarnList->Add( gcnew RCMrcError( + filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + filenoJ + "のファイルサイズが " + + MasterEditorTWL::transSizeToString(this->hShared2SizeArray[i]) + " に設定されています。" + + "正しい値かどうかをご確認ください。", + filenoE, + "File size of " + filenoE + " is " + + MasterEditorTWL::transSizeToString(this->hShared2SizeArray[i]) + "." + + " Please check validation of this size.", + false, true ) ); + } + { + this->hErrorList->Add( gcnew RCMrcError( + filenoJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, + filenoJ + "のファイルサイズに不正な値が設定されています。", + filenoE, + "Illegal file size of " + filenoE + ".", + false, true ) ); + } } } //if( this->hShared2SizeArray[i] > 0 ) } //for diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp index 2b4ca97..016b703 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -10,14 +10,14 @@ #include #include -// +// ---------------------------------------------------------------------- // String を char 配列に格納 // // @arg [out] 格納先 // @arg [in] 格納元 // @arg [in] 文字列長 // @arg [in] 余りを埋める padding -// +// ---------------------------------------------------------------------- void MasterEditorTWL::setStringToChars( char *pDst, System::String ^hSrc, const System::Int32 nMax, const System::SByte pad ) { @@ -30,13 +30,13 @@ void MasterEditorTWL::setStringToChars( char *pDst, System::String ^hSrc, } } -// +// ---------------------------------------------------------------------- // ROMヘッダ中のROM容量設定バイトからROM容量を表す文字列を取得 // // @arg [in] ROM容量設定バイト // // @ret 文字列(単位つき) -// +// ---------------------------------------------------------------------- System::String^ MasterEditorTWL::transRomSizeToString( System::Byte ^byte ) { System::UInt32 size; @@ -57,13 +57,13 @@ System::String^ MasterEditorTWL::transRomSizeToString( System::Byte ^byte ) return (size.ToString() + unit); } -// +// ---------------------------------------------------------------------- // サイズから単位つきの文字列を取得 // // @arg [in] バイト数 // // @ret 文字列(単位つき) -// +// ---------------------------------------------------------------------- System::String^ MasterEditorTWL::transSizeToString( const System::UInt32 size ) { System::UInt32 val = size; @@ -109,7 +109,11 @@ System::String^ MasterEditorTWL::transSizeToString( const System::UInt32 size ) return (val.ToString() + " GB"); } -// 設定可能なインデックスのリストを取得する +// ---------------------------------------------------------------------- +// 各レーティング団体の設定可能年齢を取得する +// +// @arg [in] 団体No. +// ---------------------------------------------------------------------- cli::array^ MasterEditorTWL::getOgnRatingAges( int ogn ) { cli::array ^ages = gcnew cli::array{0}; @@ -145,7 +149,11 @@ cli::array^ MasterEditorTWL::getOgnRatingAges( int ogn ) return ages; } -// 設定可能なインデックスのリストを取得する +// ---------------------------------------------------------------------- +// 各レーティング団体の団体名を取得する +// +// @arg [in] 団体No. +// ---------------------------------------------------------------------- System::String^ MasterEditorTWL::getOgnName( int ogn ) { System::String ^name = gcnew System::String(""); @@ -181,11 +189,12 @@ System::String^ MasterEditorTWL::getOgnName( int ogn ) return name; } -// -// リージョンに含まれる団体のリストを返す(不正なリージョンのときはnullptr) +// ---------------------------------------------------------------------- +// リージョンに含まれるレーティング団体のリストを返す +// (不正なリージョンのときはnullptr) // // @arg [in] リージョン -// +// ---------------------------------------------------------------------- System::Collections::Generic::List^ MasterEditorTWL::getOgnListInRegion( u32 region ) { System::Collections::Generic::List ^list = gcnew System::Collections::Generic::List; @@ -239,7 +248,7 @@ System::Collections::Generic::List^ MasterEditorTWL::getOgnListInRegion( u3 return list; } -// +// ---------------------------------------------------------------------- // バイト列に特定のパターンが含まれるかどうかマッチングする // // @arg [in] テキスト @@ -249,7 +258,7 @@ System::Collections::Generic::List^ MasterEditorTWL::getOgnListInRegion( u3 // [in] テキストの終端まで調べた時点でテキストが途中までマッチしていた場合を成功とみなすか // // @ret マッチしたテキストのオフセットをリストで返す。 -// +// ---------------------------------------------------------------------- System::Collections::Generic::List^ MasterEditorTWL::patternMatch( const u8 *text, const u32 textLen, const u8 *pattern, const u32 patternLen, const System::Boolean enableLast ) { @@ -281,7 +290,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( return list; } // MasterEditorTWL::patternMatch -//// +//// ---------------------------------------------------------------------- //// バイト列に特定のパターンが含まれるかどうかマッチングする (Boyer-Moore法) //// //// @arg [in] テキスト @@ -291,7 +300,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( //// [in] skipマップ(あらかじめ生成しておく) //// //// @ret マッチしたテキストのインデックスをリストで返す。 -//// +//// ---------------------------------------------------------------------- //System::Collections::Generic::List^ MasterEditorTWL::patternMatchBM( // const u8 *text, const int textLen, const u8 *pattern, const int patternLen, const int skip[] ) //{ @@ -316,7 +325,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( // return list; //} // -//// +//// ---------------------------------------------------------------------- //// Boyer-Moore法のskipマップの生成 //// //// @arg [in] パターン @@ -324,7 +333,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( //// [out] skipマップの格納先 //// //// @ret なし -//// +//// ---------------------------------------------------------------------- //void MasterEditorTWL::makeSkipBM( const u8 *pattern, const int patternLen, int skip[] ) //{ // int i; @@ -338,7 +347,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( // } //} -// +// ---------------------------------------------------------------------- // ファイルにバイト列のパターンが含まれるかどうかマッチングする // // @arg [in] マッチ対象となるファイルポインタ @@ -347,7 +356,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( // // @ret マッチしたテキストのオフセットをリストで返す。 // 最後までマッチした場合のみ成功したとみなす。 -// +// ---------------------------------------------------------------------- #define PATTERN_MATCH_LEN_MAX (10*1024) System::Collections::Generic::List^ MasterEditorTWL::patternMatch( FILE *fp, const u8 *pattern, const u32 patternLen ) { @@ -397,7 +406,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( FILE *fp return list; } -// +// ---------------------------------------------------------------------- // XMLのルートノードから指定した名前のタグを検索して返す // // @arg [in] XMLのルートノード @@ -405,7 +414,7 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( FILE *fp // // @ret 検索でマッチしたときノードを返す。ないときは nullptr。 // ただし、最初にマッチしたもののみ返す -// +// ---------------------------------------------------------------------- System::Xml::XmlNode^ MasterEditorTWL::searchXmlNode( System::Xml::XmlElement ^root, System::String ^tag ) { System::Xml::XmlNodeList ^list = root->GetElementsByTagName( tag ); @@ -417,7 +426,7 @@ System::Xml::XmlNode^ MasterEditorTWL::searchXmlNode( System::Xml::XmlElement ^r return item; } -// +// ---------------------------------------------------------------------- // タグを検索してそのテキストが指定したテキストと一致するか調べる // // @arg [in] XMLのルートノード @@ -425,7 +434,7 @@ System::Xml::XmlNode^ MasterEditorTWL::searchXmlNode( System::Xml::XmlElement ^r // @arg [in] 値 // // @ret 一致するときtrue。一致しないとき、タグが存在しないときはfalse。 -// +// ---------------------------------------------------------------------- System::Boolean MasterEditorTWL::isXmlEqual( System::Xml::XmlElement ^root, System::String ^tag, System::String ^val ) { System::Xml::XmlNode ^item = MasterEditorTWL::searchXmlNode( root, tag ); @@ -436,14 +445,14 @@ System::Boolean MasterEditorTWL::isXmlEqual( System::Xml::XmlElement ^root, Syst return false; } -// +// ---------------------------------------------------------------------- // タグを検索してそのテキストを返す // // @arg [in] XMLのルートノード // @arg [in] タグのXPath // // @ret テキストが存在するときそのテキストを返す。存在しないときnullptr。 -// +// ---------------------------------------------------------------------- System::String^ MasterEditorTWL::getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ) { System::Xml::XmlNode ^tmp = root->SelectSingleNode( xpath ); @@ -454,14 +463,14 @@ System::String^ MasterEditorTWL::getXPathText( System::Xml::XmlElement ^root, Sy return nullptr; } -// +// ---------------------------------------------------------------------- // XMLにタグを追加する // // @arg [in] XMLドキュメント // @arg [in] 親ノード // @arg [in] タグ名 // @arg [in] テキスト -// +// ---------------------------------------------------------------------- void MasterEditorTWL::appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml::XmlElement ^parent, System::String ^tag, System::String ^text ) { @@ -473,13 +482,13 @@ void MasterEditorTWL::appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml:: parent->AppendChild( node ); } -// +// ---------------------------------------------------------------------- // ビット数をカウントする // // @arg [in] 値 // // @ret ビット数 -// +// ---------------------------------------------------------------------- u32 MasterEditorTWL::countBits( const u32 val ) { // 分割統治法:隣り合うかたまりごとにビット数をカウントしていく @@ -493,14 +502,14 @@ u32 MasterEditorTWL::countBits( const u32 val ) return n; } -// +// ---------------------------------------------------------------------- // SDKバージョンの大小判定をする // // @arg [in] 判定対象のSDKバージョン(SRLに含まれるもの) // @arg [in] 判定基準のSDKバージョン(設定ファイルに記述されるもの) // // @ret 判定対象が基準よりも旧バージョンのとき(認められないとき) true -// +// ---------------------------------------------------------------------- System::Boolean MasterEditorTWL::IsOldSDKVersion( u32 target, u32 criterion ) { // SDKバージョンからメジャーバージョン/マイナーバージョン/relstepを抽出 @@ -534,13 +543,13 @@ System::Boolean MasterEditorTWL::IsOldSDKVersion( u32 target, u32 criterion ) return false; } -// +// ---------------------------------------------------------------------- // SDKバージョンがPR版かどうか調べる // // @arg [in] 判定対象のSDKバージョン(SRLに含まれるもの) // // @ret PR版のとき true -// +// ---------------------------------------------------------------------- System::Boolean MasterEditorTWL::IsSDKVersionPR( u32 target ) { System::UInt16 relstep = (System::UInt16)(0xffff & target); @@ -551,13 +560,13 @@ System::Boolean MasterEditorTWL::IsSDKVersionPR( u32 target ) return false; } -// +// ---------------------------------------------------------------------- // SDKバージョンがRC版かどうか調べる // // @arg [in] 判定対象のSDKバージョン(SRLに含まれるもの) // // @ret PR版のとき true -// +// ---------------------------------------------------------------------- System::Boolean MasterEditorTWL::IsSDKVersionRC( u32 target ) { System::UInt16 relstep = (System::UInt16)(0xffff & target); diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h index e0dd408..db36f1b 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h @@ -42,14 +42,14 @@ namespace MasterEditorTWL System::String^ transSizeToString( const System::UInt32 size ); // - // ペアレンタルコントロールの各団体の設定可能年齢を取得する + // 各レーティング団体の設定可能年齢を取得する // // @arg [in] 団体 // cli::array^ getOgnRatingAges( int ogn ); // - // ペアレンタルコントロールの各団体の団体名を取得する + // 各レーティング団体の団体名を取得する // // @arg [in] 団体 //