From 6d5cb0e56d062ff9376918723330fe979fb0e41f Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Tue, 2 Sep 2008 03:35:16 +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=A8=E3=83=A9=E3=83=BC=E3=81=AE?= =?UTF-8?q?=E7=A8=AE=E9=A1=9E=E3=82=92=E6=8F=90=E5=87=BA=E6=9B=B8=E9=A1=9E?= =?UTF-8?q?=E4=B8=8A=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=A8SRL?= =?UTF-8?q?=E3=81=AB=E5=BD=B1=E9=9F=BF=E3=81=99=E3=82=8B=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=81=AE2=E3=81=A4=E3=81=AB=E5=88=86=E9=A1=9E?= =?UTF-8?q?=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/TwlIPL/trunk@2356 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11119616 -> 11185152 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 41472 -> 41984 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 10660 -> 10612 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 407 +++++++++--------- .../MasterEditorTWL/Form1.resX | 30 ++ .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 125 +++--- .../MasterEditorTWL/MasterEditorTWL/srl.h | 10 +- 7 files changed, 320 insertions(+), 252 deletions(-) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index fc8dc67caac2c7e04b821910757a304a45bde0dc..94ede63966d9682b5692ac857b7e8ee1929c3caf 100644 GIT binary patch delta 76534 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

Y?*&~%Q$;$oj~dT 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

J!0<91F}MS8*KV#@!@Ug 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 X*=uyY%R?*(UDUsH36sintIhr&e#y_3 diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditorTWL/MasterEditorTWL.suo index af6f0bd7c09d2312a76ac9cf745d18dbbd63320e..799ab985033b1c2e33846d2ddbc076306855e2a8 100644 GIT binary patch delta 3697 zcma)SeuUbxLnYOfrI?MHkZY@#UocGKm1^Rx^d9+ibtp}bx-{0qbe!u5;dEfV( zv*xt9=8SpZis=}rlxk{jZl*soeb0=J&cKCX@GkIY7Z`P%Uq^c`U|)FE*yGi<(y#+v zd+goY>a5`hG$h@suq`od98fDdK?lc>Q zQY%cQ_Q93a&?(BWv6$tEEi#M|R(aey!#^H5N~hH{+l&rhZmsPyz_87jST?k}yTi)u zy4SQtsV!Bt-9I$FJ$Ll%5oC1HXI&kFdbU%l5bm&UyPlZ#Cm6;bV_En5+rx}_t0BYf zXQl^R6`4tlt8=Rv0If1x<^>8d-Fqr=?Uj z8f?eF?ZR>Zc#z6+P8wr`?!{u6LjO#!n!L_E6oYUTqhzo?&@tRRSgucj$tU{lxBIr0=D;CBIuR+Hn&JosBH8vtB0MiYG+pW;4 z^+w3QALZCW(`@_CM;u#fxr#3Oxl1q(ZLy5UlL={!O+ajmh*1?cr=759VbNga(zmlP z-otUwv=@bOwY{NxAtnmrN#{TZ^Hj$ROaSZ)O{?=syavrWH-xdsdC8lDS0HCS51PBMK-eJYMUuDNhpiCyhA{SB56v5Gldx>)?a+CMH9qVr zbTaCzdVvd(a1Hup#OuOFLf?btEBC$+dnD`+VOhBT6gmX4(I?N0@G?I{?&@f`U04tq z&p!tqh6dkUttF9LSBZgW?S*kAF6b$U{e0Lm=&4}Kg>fMj(45o?VO+=t=t{(mKFs|# z8r6VX1hP{#^io9allUHV1=#z-xRUL{YJ_niyP#(w?iSV_x)U_*pfDa&Ep#f+|BygF zHOHX&)SM8;T{r?wJ1LAe+_#eVoiG;pTJq|IvB)`S6j2w1vBpo(tZ~`Hu>bwg_*vjp z4^%1+>>@Pp_-n#g_@?CD5#|DWAnbQxv0&GsX^(~R>>Hr@Vb>_EmG_71%5%f}F8-;O!o1pn_+3aP3Dj$t44t-(Mo$Bf^>(9Bv{rF5MEqx|H zzY9(KKp4AxBmA#YXj#gqFVb zXD)eY=!{t{{vuesti9P%pZyiVE%M7NG1hR2Z>8IeNBVx*VV#y0sl%!s)NXYcR(N$Q?o5+TuepT_cD;XEfR5hw d06P`@eDnYRmLB%k={uh8Os_GFCY-^^zW`#+{VxCj delta 3406 zcmZ{m3rtpJ7{|{!-{Gc0+yX^WuA-(O7gMfc4iQvTzVHTf7%G)IML~hYkESeBv-n^X>KNGnl-P}H8jn%Ew?nsq%|u`=V*zkU;jTm)VKEaz_aIne&;#w<$2%te5bL^ zXuM#2ddmoX=5o2{v`kIYvf%20(O-{M6Ko;oWL`$u2B}=z+2(T7X)X;2oPA_?e7}pj z4YzV9SoP*=!!&fHb$V|wbqH&%&!awihE)?>(O0zxnUP@KcIA__;QP;hcQGl*OVftK zZB|!gxUS5EKvkY=T5&^W=z6|Y6SZE~3$3nbn{K8ZI&-2mcARc5Ie%)HGa=NP5qH=y zODaBUX-#M`Og3)q9zM)Z_f;2D2KsFc)wG>(oAq1DUxsh*+^h#I@@DAUdeWsc19Q>L^%XcqO3S7gT9dyc%tKTh&vi+q`uaX;?4w z8i$PAs%v_oI&UUh)ibh;f+C=eaMorooXxVK{cy4aaI%T;LvS(+PBsW$2d5oVUB&rh zNRPww;iurdHsD{vpNF@>d)e2}!{Ap{jeSaX6tIb_I7DVpr$HnmvRSe~_-Qz8lCS~L zzWbiq4Z}O!a+Rd(j&0z_918(qO57dqbi$>y6VV?=(V6vfUUYIvKt?Itgw8^;O8fxlF zVXBooXSD8r9Ft=T{e)_myWWw6hdAnVc{mZ;hXsV?xHXs$&3=l6VKZyfg_Q_P2g`+~ zy()}@xd`oxcwHD*?gljab!hDH3mFy%auS;5J}Zn%e-4`VL|6*6OIW*Gqa8hsYQG4} zK;G-nw1>imLw5?x_6q5#MH=9EP6?K$f=ZLJlLC6~aLzA6<6lb`#_m%HU^9hr=yvF6 z#M!E$G{0aV)EvpGam!i*9ff;qg|P<*bPVE~!g}9RHY}8BMV58w&Ejkqa?o*gTUyEYw~mM4t!odi7s zak4P3btQBkuIn;^+@S@~w4dA(pF*=AmoRp6SMt_l18{(Y;Z58Ou*<^O@fGMW#B0Kq zKwpPuDQ|Z(ysb9jqFvyxlK3vzJzl%deE}Xxh+B++_1vK z8mr8vCI`x_^_QndL5K2bSg|mU#tzN7%@!61JxB7&-16o_v-qzFn+jbEZAYwgV<(|` zSWX3FiCLN|_-VjA#50mu2z?2f@7J%~*f+wi2`j+;@1Xl4-f+viCF}=b({TTeunu8G z=wG{w3!dkn1@g#MK+`&faVGt6%;zEc%W)?whAu<23*$syhUTD3gmEI}&~GCyaAS+1 zo#vUuyxRth>gM`p#PMKY!=4l+yb4AxE0aC z@^g1>#|3xS4oPGc-h-y?6vkigJ(9Oy7&~c^yaU46$;Z&_?d_nTsgr$I87Isw_e+AD#)2<8S1iyvmPrwafi=e-UwsHO21ug`< z15JA(67CB5iqSe~#c!q~|)XxdC+<;0LEQ zfOUV4K=W&WcCweLnH5Q`%W_R;^I6q8xY)l!TY*2k9hqfCSL?bn4Q_9_3<8FjaGhrryjS}Yn%=5N0%$h=$;Fk*_i3!>vz@K2#-IaN7nW6$Zs}w>i_p8 z?Xy1E<1?8}p84{(43GIk=5N$h;$B}ByLqLD8LFF&1?ueT6YA<40e-!O@>4<0_tnTO ze)Yez^O%?ZSOpDeXmy6_Dzy2Y>bE`E3RV4d=g=oA;{6ABG!VxbpFzr%?)s;$R&Ju9 W>;G-a8S_NMg8JyQ%0?CdDo7c+ZGhvm`m-hteaKzBjt?&}NM7xqX)8tEH L3Y(9qtYZNH_!TUX diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h index 46b2e876..5a406e51 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -626,7 +626,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; private: System::Windows::Forms::TextBox^ tboxFile; protected: - private: System::Windows::Forms::TextBox^ tboxMsg; + private: System::Windows::Forms::GroupBox^ gboxSrl; private: System::Windows::Forms::TextBox^ tboxTitleName; @@ -646,7 +646,6 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; void InitializeComponent(void) { this->tboxFile = (gcnew System::Windows::Forms::TextBox()); - this->tboxMsg = (gcnew System::Windows::Forms::TextBox()); this->gboxSrl = (gcnew System::Windows::Forms::GroupBox()); this->tboxRemasterVer = (gcnew System::Windows::Forms::TextBox()); this->tboxRomSize = (gcnew System::Windows::Forms::TextBox()); @@ -891,11 +890,11 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->colWarnEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); this->colWarnCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); this->gridError = (gcnew System::Windows::Forms::DataGridView()); - this->labFile = (gcnew System::Windows::Forms::Label()); - this->colErrorCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); - this->colErrorEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); - this->colErrorBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); this->colErrorName = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorBegin = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorEnd = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->colErrorCause = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn()); + this->labFile = (gcnew System::Windows::Forms::Label()); this->gboxSrl->SuspendLayout(); this->gboxCRC->SuspendLayout(); (cli::safe_cast(this->numEULA))->BeginInit(); @@ -939,14 +938,6 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->tboxFile->DragDrop += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::tboxFile_DragDrop); this->tboxFile->DragEnter += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::tboxFile_DragEnter); // - // tboxMsg - // - this->tboxMsg->Location = System::Drawing::Point(12, 486); - this->tboxMsg->Name = L"tboxMsg"; - this->tboxMsg->ReadOnly = true; - this->tboxMsg->Size = System::Drawing::Size(745, 19); - this->tboxMsg->TabIndex = 2; - // // gboxSrl // this->gboxSrl->Controls->Add(this->tboxRemasterVer); @@ -3272,7 +3263,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->tabError->Name = L"tabError"; this->tabError->Size = System::Drawing::Size(741, 352); this->tabError->TabIndex = 5; - this->tabError->Text = L"エラー(要修正)"; + this->tabError->Text = L"エラー情報(要修正)"; this->tabError->UseVisualStyleBackColor = true; this->tabError->Click += gcnew System::EventHandler(this, &Form1::tabError_Click); // @@ -3400,6 +3391,34 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->gridError->Size = System::Drawing::Size(699, 103); this->gridError->TabIndex = 37; // + // colErrorName + // + this->colErrorName->HeaderText = L"項目名"; + this->colErrorName->Name = L"colErrorName"; + this->colErrorName->ReadOnly = true; + this->colErrorName->Width = 120; + // + // colErrorBegin + // + this->colErrorBegin->HeaderText = L"開始"; + this->colErrorBegin->Name = L"colErrorBegin"; + this->colErrorBegin->ReadOnly = true; + this->colErrorBegin->Width = 60; + // + // colErrorEnd + // + this->colErrorEnd->HeaderText = L"終了"; + this->colErrorEnd->Name = L"colErrorEnd"; + this->colErrorEnd->ReadOnly = true; + this->colErrorEnd->Width = 60; + // + // colErrorCause + // + this->colErrorCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; + this->colErrorCause->HeaderText = L"要因"; + this->colErrorCause->Name = L"colErrorCause"; + this->colErrorCause->ReadOnly = true; + // // labFile // this->labFile->AutoSize = true; @@ -3409,43 +3428,14 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->labFile->TabIndex = 36; this->labFile->Text = L"ROMデータファイル"; // - // colErrorCause - // - this->colErrorCause->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill; - this->colErrorCause->HeaderText = L"要因"; - this->colErrorCause->Name = L"colErrorCause"; - this->colErrorCause->ReadOnly = true; - // - // colErrorEnd - // - this->colErrorEnd->HeaderText = L"終了"; - this->colErrorEnd->Name = L"colErrorEnd"; - this->colErrorEnd->ReadOnly = true; - this->colErrorEnd->Width = 60; - // - // colErrorBegin - // - this->colErrorBegin->HeaderText = L"開始"; - this->colErrorBegin->Name = L"colErrorBegin"; - this->colErrorBegin->ReadOnly = true; - this->colErrorBegin->Width = 60; - // - // colErrorName - // - this->colErrorName->HeaderText = L"項目名"; - this->colErrorName->Name = L"colErrorName"; - this->colErrorName->ReadOnly = true; - this->colErrorName->Width = 120; - // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 12); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; - this->ClientSize = System::Drawing::Size(777, 519); + this->ClientSize = System::Drawing::Size(777, 482); this->Controls->Add(this->labFile); this->Controls->Add(this->tabMain); this->Controls->Add(this->tboxFile); - this->Controls->Add(this->tboxMsg); this->Controls->Add(this->menuStripAbove); this->MainMenuStrip = this->menuStripAbove; this->Name = L"Form1"; @@ -3531,32 +3521,29 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; catch( System::IO::FileNotFoundException ^s ) { (void)s; - this->tboxMsg->Text = "設定ファイルを開くことができませんでした。"; + this->sucMsg( "設定ファイルを開くことができませんでした。", "Setting file can't be opened." ); return; } // タグ : ルート System::Xml::XmlElement ^root = doc->DocumentElement; - System::String ^msg = gcnew System::String(""); // タグ + System::Boolean bReadOnly = false; System::Xml::XmlNodeList ^rwlist = root->GetElementsByTagName( "rw" ); if( rwlist != nullptr ) { System::Xml::XmlNode ^rw = rwlist->Item(0); if( rw->FirstChild->Value->Equals( "r" ) ) { - // リードオンリモード - this->disableForms(); - if( !System::String::IsNullOrEmpty(msg) ) - { - msg += "・"; - } - msg += "リードオンリモード"; + // リードオンリーモード + this->readOnly(); + bReadOnly = true; } } // タグ + System::Boolean bXML = false; System::Xml::XmlNodeList ^outlist = root->GetElementsByTagName( "output" ); if( outlist != nullptr ) { @@ -3564,19 +3551,26 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( out->FirstChild->Value->Equals( "XML" ) ) { // ノーマルXML出力モード - this->disableForms(); - if( !System::String::IsNullOrEmpty(msg) ) - { - msg += "・"; - } - msg += "XML文書出力モード"; + bXML = true; } } - if( !System::String::IsNullOrEmpty(msg) ) + + if( bReadOnly || bXML ) { - msg += "で動作しています。"; + System::String ^msgJ = gcnew System::String("動作モード:"); + System::String ^msgE = gcnew System::String("Processing Mode:"); + if( bReadOnly ) + { + msgJ += "\n リードオンリーモード"; + msgE += "\n Read Only Mode"; + } + if( bXML ) + { + msgJ += "\n XML出力モード"; + msgE += "\n XML Output Mode"; + } + this->sucMsg( msgJ, msgE ); } - this->tboxMsg->Text = msg; } private: @@ -3589,17 +3583,12 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; switch( result ) { case ECSrlResult::ERROR_PLATFORM: - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "本ツールはTWL対応ROM専用です。NTR専用ROMなどのTWL対応ROM以外を読み込むことはできません。" ); - else - this->errMsg( "This tool can only read TWL ROM. This can't read Other data e.g. NTR limited ROM." ); + this->errMsg( "本ツールはTWL対応ROM専用です。NTR専用ROMなどのTWL非対応ROMを読み込むことはできません。", + "This tool can only read TWL ROM. This can't read Other data e.g. NTR limited ROM." ); break; default: - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "リードに失敗しました。" ); - else - this->errMsg( "Reading the file failed." ); + this->errMsg( "ROMデータファイルの読み込みに失敗しました。", "Reading the ROM data file failed." ); break; } return; // 前のファイルが正常である保証なしなので前のファイルも上書き保存できないようにする @@ -3613,21 +3602,15 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; u16 crc; if( !getWholeCRCInFile( filename, &crc ) ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "CRCの計算に失敗しました。" ); - else - this->errMsg( "Calc CRC failed." ); + this->errMsg( "ROMデータのCRC計算に失敗しました。ROMデータの読み込みはキャンセルされました。", + "Calculating CRC of the ROM data failed. Therefore reading ROM data is canceled." ); return; } System::UInt16 ^hcrc = gcnew System::UInt16( crc ); this->tboxWholeCRC->Clear(); this->tboxWholeCRC->AppendText( "0x" ); this->tboxWholeCRC->AppendText( hcrc->ToString("X") ); - - if( this->stripItemJapanese->Checked == true ) - this->tboxMsg->Text = "ファイルオープンに成功しました。"; - else - this->tboxMsg->Text = "Opening the file succeeded."; + this->sucMsg( "ROMデータファイルのオープンに成功しました。", "The ROM data file is opened successfully." ); } // openSrl private: @@ -3648,16 +3631,10 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // コピーしたファイルにROMヘッダを上書き if( this->hSrl->writeToFile( filename ) != ECSrlResult::NOERROR ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "保存に失敗しました。" ); - else - this->errMsg( "Saving the file failed." ); + this->errMsg( "ROMデータの保存に失敗しました。", "Saving the ROM data file failed." ); return; } - if( this->stripItemJapanese->Checked == true ) - this->tboxMsg->Text = "保存が成功しました。"; - else - this->tboxMsg->Text = "Saving the file succeeded."; + this->sucMsg( "ROMデータの保存が成功しました。", "Saving the ROM data file succeeded." ); this->tboxFile->Text = filename; // 再リード @@ -3670,7 +3647,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // ---------------------------------------------- // 設定/選択可能なフォームをすべて disable にする - void disableForms( void ) + void readOnly( void ) { this->cboxIsEULA->Enabled = false; this->numEULA->Enabled = false; @@ -3748,10 +3725,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( this->hSrl->hPlatform == nullptr ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "プラットホーム指定が不正です。ROMデータのビルド設定を見直してください。" ); - else - this->errMsg( "Illegal Platform: Please check build settings of the ROM data." ); + this->errMsg( "プラットホーム指定が不正です。ROMデータのビルド設定を見直してください。", + "Illegal Platform: Please check build settings of the ROM data."); } // TWL拡張情報 @@ -4304,7 +4279,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // ---------------------------------------------- // テキスト入力がされているかチェック - System::Boolean checkTextForm( System::String ^formtext, System::String ^labelJ, System::String ^labelE ) + System::Boolean checkTextForm( System::String ^formtext, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) { System::String ^msgJ = gcnew System::String( "入力されていません。" ); System::String ^msgE = gcnew System::String( "No setting. Please retry to input." ); @@ -4312,39 +4287,41 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; System::String ^tmp = formtext->Replace( " ", "" ); // スペースのみの文字列もエラー if( (formtext == nullptr) || formtext->Equals("") || tmp->Equals("") ) { - this->hErrorList->Add( gcnew RCMRCError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true ) ); + this->hErrorList->Add( gcnew RCMRCError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); return false; } return true; } // 数値入力が正常かどうかチェック - System::Boolean checkNumRange( System::Int32 val, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE ) + System::Boolean checkNumRange( + System::Int32 val, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) { System::String ^msgJ = gcnew System::String( "値の範囲が不正です。やり直してください。" ); System::String ^msgE = gcnew System::String( "Invalidate range of value. Please retry." ); if( (val < min) || (max < val) ) { - this->hErrorList->Add( gcnew RCMRCError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true ) ); + this->hErrorList->Add( gcnew RCMRCError( labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); return false; } return true; } - System::Boolean checkNumRange( System::String ^strval, System::Int32 min, System::Int32 max, System::String ^labelJ, System::String ^labelE ) + System::Boolean checkNumRange( System::String ^strval, System::Int32 min, System::Int32 max, + System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) { try { System::Int32 i = System::Int32::Parse(strval); - return (this->checkNumRange( i, min, max, labelJ, labelE )); + return (this->checkNumRange( i, min, max, labelJ, labelE, affectRom )); } catch ( System::FormatException ^ex ) { (void)ex; - return (this->checkNumRange( max+1, min, max, labelJ, labelE )); + return (this->checkNumRange( max+1, min, max, labelJ, labelE, affectRom )); // 必ず失敗するように max+1 を検査 } } // コンボボックスをチェック - System::Boolean checkBoxIndex( System::Windows::Forms::ComboBox ^box, System::String ^labelJ, System::String ^labelE ) + System::Boolean checkBoxIndex( System::Windows::Forms::ComboBox ^box, System::String ^labelJ, System::String ^labelE, System::Boolean affectRom ) { System::String ^msgJ = gcnew System::String( "選択されていません。やり直してください。" ); System::String ^msgE = gcnew System::String( "Not selected. Please retry." ); @@ -4352,7 +4329,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( box->SelectedIndex < 0 ) { this->hWarnList->Add( gcnew RCMRCError( - labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true ) ); + labelJ, METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msgJ, labelE, msgE, true, affectRom ) ); } return true; } @@ -4361,7 +4338,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; System::Boolean checkSrlForms(void) { // リージョン - if( this->checkBoxIndex( this->combRegion, LANG_REGION_J, LANG_REGION_E ) == false ) + if( this->checkBoxIndex( this->combRegion, LANG_REGION_J, LANG_REGION_E, true ) == false ) return false; // リージョンを決める @@ -4410,7 +4387,9 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->labPEGIBBFC->Text + " " + this->labPEGIBBFC2->Text ); this->checkParentalForms( bAustralia, this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC, this->labOFLC->Text ); - return (this->hErrorList->Count > 0); + // ひととおりエラー登録をした後で + // SRLバイナリに影響を与えるエラーが存在するかチェック + return this->isErrorAffectRom(); } // ペアレンタルコントロール関連のフォーム入力が正しいか書き込み前チェック @@ -4430,14 +4409,14 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msg + ": レーティング審査を必要としないソフトであるとみなしてデータを保存します。", - "Parental Control", msg + ": Save ROM data as Game soft which needs rating examinination.", true ) ); + "Parental Control", msg + ": Save ROM data as Game soft which needs rating examinination.", true, true ) ); } else { this->hErrorList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msg + ": 制限が無効であるにもかかわらずレーティング情報が設定されています。", - "Parental Control", msg + "Rating can be set only when control is enable.", true ) ); + "Parental Control", msg + "Rating can be set only when control is enable.", true, true ) ); } } else // 有効フラグが立っているとき @@ -4447,27 +4426,27 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; this->hErrorList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msg + ": 制限が有効であるにもかかわらずレーティング情報が設定されていません。", - "Parental Control", msg + ": Rating must be set when control is enable.", true ) ); + "Parental Control", msg + ": Rating must be set when control is enable.", true, true ) ); } else if( always->Checked ) { this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, msg + ": Rating Pendingが指定されています。レーティング年齢が審査されしだい、再度、ROMを提出してください。", - "Parental Control", ": Rating Pending is setting. When rating age is examined, Please submit again.", true ) ); + "Parental Control", ": Rating Pending is setting. When rating age is examined, Please submit again.", true, true ) ); } else if( comb->SelectedIndex == (comb->Items->Count - 1) ) { this->hErrorList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, ": Rating Pending指定とレーティング年齢を同時に指定することはできません。", - "Parental Control", ": Rating setting is either rating pending or rating age.", true ) ); + "Parental Control", ": Rating setting is either rating pending or rating age.", true, true ) ); } } } //checkParentalForms() // ---------------------------------------------- - // マスタ書類情報をフォームから取得 + // マスタ書類情報(SRL影響なし)をフォームから取得 // ---------------------------------------------- void setDeliverableProperties(void) @@ -4625,78 +4604,137 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; } } - // フォームの入力をチェックする + // ---------------------------------------------- + // マスタ書類情報(SRL影響なし)のフォームチェック + // ---------------------------------------------- + System::Boolean checkDeliverableForms(void) { // 不正な場合はダイアログで注意してreturn // 提出情報 - this->checkTextForm( this->tboxProductName->Text, LANG_PRODUCT_NAME_J, LANG_PRODUCT_NAME_E ); - this->checkTextForm( this->tboxProductCode1->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E ); - this->checkTextForm( this->tboxProductCode2->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E ); + this->checkTextForm( this->tboxProductName->Text, LANG_PRODUCT_NAME_J, LANG_PRODUCT_NAME_E, false ); // SRL作成には問題のないエラー + this->checkTextForm( this->tboxProductCode1->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E, false ); + this->checkTextForm( this->tboxProductCode2->Text, LANG_PRODUCT_CODE_J, LANG_PRODUCT_CODE_E, false ); if( this->cboxReleaseForeign->Checked == true ) { - this->checkTextForm( this->tboxProductNameForeign->Text, LANG_PRODUCT_NAME_F_J, LANG_PRODUCT_NAME_F_E ); - this->checkTextForm( this->tboxProductCode1Foreign->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E ); - this->checkTextForm( this->tboxProductCode2Foreign1->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E ); + this->checkTextForm( this->tboxProductNameForeign->Text, LANG_PRODUCT_NAME_F_J, LANG_PRODUCT_NAME_F_E, false ); + this->checkTextForm( this->tboxProductCode1Foreign->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E, false ); + this->checkTextForm( this->tboxProductCode2Foreign1->Text, LANG_PRODUCT_CODE_F_J, LANG_PRODUCT_CODE_F_E, false ); } if( this->rUsageOther->Checked == true ) { - this->checkTextForm( this->tboxUsageOther->Text, LANG_USAGE_J, LANG_USAGE_E ); + this->checkTextForm( this->tboxUsageOther->Text, LANG_USAGE_J, LANG_USAGE_E, false ); } // 会社情報 - this->checkTextForm( this->tboxPerson1->Text, LANG_PERSON_1_J, LANG_PERSON_1_E ); - this->checkTextForm( this->tboxCompany1->Text, LANG_COMPANY_J, LANG_COMPANY_E ); - this->checkTextForm( this->tboxDepart1->Text, LANG_DEPART_J, LANG_DEPART_E ); + this->checkTextForm( this->tboxPerson1->Text, LANG_PERSON_1_J, LANG_PERSON_1_E, false ); + this->checkTextForm( this->tboxCompany1->Text, LANG_COMPANY_J, LANG_COMPANY_E, false ); + this->checkTextForm( this->tboxDepart1->Text, LANG_DEPART_J, LANG_DEPART_E, false ); if( this->stripItemJapanese->Checked == true ) { - this->checkTextForm( this->tboxFurigana1->Text, LANG_FURIGANA_J, LANG_FURIGANA_J ); + this->checkTextForm( this->tboxFurigana1->Text, LANG_FURIGANA_J, LANG_FURIGANA_J, false ); } - this->checkTextForm( this->tboxTel1->Text, LANG_TEL_J, LANG_TEL_E ); - this->checkTextForm( this->tboxFax1->Text, LANG_FAX_J, LANG_FAX_E ); - this->checkTextForm( this->tboxMail1->Text, LANG_MAIL_J, LANG_MAIL_E ); + this->checkTextForm( this->tboxTel1->Text, LANG_TEL_J, LANG_TEL_E, false ); + this->checkTextForm( this->tboxFax1->Text, LANG_FAX_J, LANG_FAX_E, false ); + this->checkTextForm( this->tboxMail1->Text, LANG_MAIL_J, LANG_MAIL_E, false ); if( this->stripItemJapanese->Checked == true ) { - this->checkTextForm( this->tboxNTSC1->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J ); + this->checkTextForm( this->tboxNTSC1->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, false ); } if( this->cboxIsInputPerson2->Checked == true ) { - this->checkTextForm( this->tboxPerson2->Text, LANG_PERSON_2_J, LANG_PERSON_2_E ); - this->checkTextForm( this->tboxCompany2->Text, LANG_COMPANY_J, LANG_COMPANY_E ); - this->checkTextForm( this->tboxDepart2->Text, LANG_DEPART_J, LANG_DEPART_E ); + this->checkTextForm( this->tboxPerson2->Text, LANG_PERSON_2_J, LANG_PERSON_2_E, false ); + this->checkTextForm( this->tboxCompany2->Text, LANG_COMPANY_J, LANG_COMPANY_E, false ); + this->checkTextForm( this->tboxDepart2->Text, LANG_DEPART_J, LANG_DEPART_E, false ); if( this->stripItemJapanese->Checked == true ) { - this->checkTextForm( this->tboxFurigana2->Text, LANG_FURIGANA_J, LANG_FURIGANA_J ); + this->checkTextForm( this->tboxFurigana2->Text, LANG_FURIGANA_J, LANG_FURIGANA_J, false ); } - this->checkTextForm( this->tboxTel2->Text, LANG_TEL_J, LANG_TEL_E ); - this->checkTextForm( this->tboxFax2->Text, LANG_FAX_J, LANG_FAX_E ); - this->checkTextForm( this->tboxMail2->Text, LANG_MAIL_J, LANG_MAIL_E ); + this->checkTextForm( this->tboxTel2->Text, LANG_TEL_J, LANG_TEL_E, false ); + this->checkTextForm( this->tboxFax2->Text, LANG_FAX_J, LANG_FAX_E, false ); + this->checkTextForm( this->tboxMail2->Text, LANG_MAIL_J, LANG_MAIL_E, false ); if( this->stripItemJapanese->Checked == true ) { - this->checkTextForm( this->tboxNTSC2->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J ); + this->checkTextForm( this->tboxNTSC2->Text, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, LANG_NTSC_1_J + " " + LANG_NTSC_2_J, false ); } } // 一部のROM情報(SRLバイナリに反映されない情報)をここでチェックする - this->checkBoxIndex( this->combBackup, LANG_BACKUP_J, LANG_BACKUP_E ); + this->checkBoxIndex( this->combBackup, LANG_BACKUP_J, LANG_BACKUP_E, false ); if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) { - this->checkTextForm( this->tboxBackupOther->Text, LANG_BACKUP_J, LANG_BACKUP_E ); + this->checkTextForm( this->tboxBackupOther->Text, LANG_BACKUP_J, LANG_BACKUP_E, false ); } - return (this->hErrorList->Count > 0); + // ひととおりエラー登録をした後で + // 書類上のエラー(SRLバイナリには影響しない)が存在するかチェック + return this->isErrorOnlyDeliverable(); } // ---------------------------------------------- // エラー処理 // ---------------------------------------------- - // エラーメッセージを出力 - void errMsg( System::String ^str ) + // SRLには関係しない書類上のエラーをチェック + System::Boolean isErrorOnlyDeliverable(void) { - MessageBox::Show( str, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error ); + System::Int32 count = 0; + + // SRLクラスのエラーリストはすべてSRLに関係するのでチェックしない + // -> 入力エラーのみのチェックでよい + for each( RCMRCError ^err in this->hErrorList ) + { + if( !err->AffectRom ) + count++; + } + return (count > 0); + } + + // SRLのバイナリに影響する項目にエラーがあるかチェック + System::Boolean isErrorAffectRom(void) + { + System::Int32 count = 0; + + // SRLクラスの修正不可エラーをカウント + // (修正可エラーは入力によって修正されてるかもしれないのでチェックしない) + for each( RCMRCError ^err in this->hSrl->hErrorList ) + { + if( !err->EnableModify ) // すべてSRLバイナリに影響する + count++; + } + + // SRLバイナリに影響するエラーの中で + // 修正可エラーがフォーム入力によって修正されているかカウント + // (エラーリストが更新されていることが前提) + for each( RCMRCError ^err in this->hErrorList ) + { + if( err->AffectRom ) // 修正不可エラーは存在しない + count++; + } + return (count > 0); + } + + // ---------------------------------------------- + // ダイアログ + // ---------------------------------------------- + + void sucMsg( System::String ^msgJ, System::String ^msgE ) + { + if( this->stripItemJapanese->Checked ) + MessageBox::Show( msgJ, "Information", MessageBoxButtons::OK, MessageBoxIcon::None ); + else + MessageBox::Show( msgE, "Information", MessageBoxButtons::OK, MessageBoxIcon::None ); + } + + // エラーメッセージを出力 + void errMsg( System::String ^msgJ, System::String ^msgE ) + { + if( this->stripItemJapanese->Checked ) + MessageBox::Show( msgJ, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error ); + else + MessageBox::Show( msgE, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error ); } private: @@ -5095,10 +5133,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( System::IO::File::Exists(filename) == false ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "ファイルが存在しませんので開くことができません。" ); - else - this->errMsg( "The file is not found, therefore the file can not be opened." ); + this->errMsg( "ROMデータファイルが存在しませんので開くことができません。", + "The ROM data file is not found. Therefore the file can not be opened." ); return; } this->loadSrl( filename ); // ドラッグアンドドロップの時点でボタンを押さなくてもファイルを開く @@ -5255,10 +5291,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "ファイルオープンがキャンセルされました。" ); - else - this->errMsg( "Opening the file is canceled." ); + this->errMsg( "ROMデータファイルのオープンがキャンセルされました。", "Opening the ROM data file is canceled by user." ); return; } filename = dlg->FileName; @@ -5269,6 +5302,11 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; 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 \"Error\"." ); + } } //stripItemOpenRom_Click() private: @@ -5279,10 +5317,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // SRLが読み込まれていないときにはリードさせない if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "ROMデータファイルがオープンされていません。" ); - else - this->errMsg( "ROM file has not opened yet." ); + this->errMsg( "ROMデータファイルがオープンされていませんので、提出書類の作成ができません。", + "ROM data file has not opened yet. Therefore a submission sheet can't be made." ); return; } @@ -5304,10 +5340,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "保存がキャンセルされましたのでROMファイルデータは作成(更新)されません。" ); - else - this->errMsg( "ROM file is not updated since saving the file is canceled." ); + this->errMsg( "保存がキャンセルされましたのでROMファイルデータおよび提出書類は作成されません。", + "A ROM data file and a submission sheet are not updated, since saving the file is canceled." ); return; } filename = dlg->FileName; @@ -5331,39 +5365,30 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // SRLが読み込まれていないときにはリードさせない if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "ROMデータファイルがオープンされていません。" ); - else - this->errMsg( "ROM file has not opened yet." ); + this->errMsg( "ROMデータファイルがオープンされていません。", "ROM file has not opened yet." ); return; } // SRLと書類の両方のフォーム入力をチェックする if( this->checkSrlForms() == false ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "ROMデータに不正な設定があるためROMデータを保存できません。" ); - else - this->errMsg( "This ROM data can't be saved, since it has illegal info." ); + this->errMsg( "ROMデータに不正な設定があるためROMデータの保存および提出書類の作成ができません。", + "A ROM data and a submission sheet can't be saved, since it has illegal info." ); return; } if( this->checkDeliverableForms() == false ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "入力情報に不正な設定があるため提出書類を作成できません。" ); - else - this->errMsg( "Making a submission sheet can't be done, since input data is illegal." ); + this->errMsg( "入力情報に不正な設定があるため提出書類を作成できません。", + "Making a submission sheet can't be done, since input data is illegal." ); return; } // 注意書き { - System::String ^stmp; - if( this->stripItemJapanese->Checked == true ) - stmp = "Step1/2: ROMデータファイル(SRL)と提出書類の情報を一致させるため、まず、入力情報を反映させたSRLを作成します。\n(キャンセルされたとき、SRLおよび提出書類は作成されません。)"; - else - stmp = "Step1/2: Firstly, We save ROM file(SRL) because several information in a submission sheet are match those in the SRL.\n(When it is canceled, both the SRL and a submission sheet are not made.)"; - MessageBox::Show( stmp, "Caution", MessageBoxButtons::OK, MessageBoxIcon::Information ); + this->sucMsg( + "Step1/2: ROMデータファイル(SRL)と提出書類の情報を一致させるため、まず、入力情報を反映させたSRLを作成します。\n(キャンセルされたとき、SRLおよび提出書類は作成されません。)", + "Step1/2: Firstly, We save ROM file(SRL) because several information in a submission sheet are match those in the SRL.\n(When it is canceled, both the SRL and a submission sheet are not made.)" + ); } // ダイアログからSrl名を取得する { @@ -5376,10 +5401,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "SRLの保存がキャンセルされましたので提出書類は作成されません。"); - else - this->errMsg( "A submission sheet can not be made, since saving SRL is canceled." ); + this->errMsg( "SRLの保存がキャンセルされましたので提出書類は作成されません。", + "A submission sheet can not be made, since saving SRL is canceled." ); return; } srlfile = dlg->FileName; @@ -5395,12 +5418,10 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; // 注意書き { - System::String ^stmp; - if( this->stripItemJapanese->Checked == true ) - stmp = "Step2/2: 続いて提出書類を作成します。\nここでキャンセルされたとき、提出書類はもとよりSRLも作成(更新)されませんのでご注意ください。"; - else - stmp = "Step2/2: Secondly, We should make a submission sheet. \n(CAUTION: When it is canceled, not only a submission sheet is not made, but also the SRL is selected previously.)"; - MessageBox::Show( stmp, "Caution", MessageBoxButtons::OK, MessageBoxIcon::Information ); + this->sucMsg( + "Step2/2: 続いて提出書類を作成します。\nここでキャンセルされたとき、提出書類はもとよりSRLも作成(更新)されませんのでご注意ください。", + "Step2/2: Secondly, We should make a submission sheet. \n(CAUTION: When it is canceled, not only a submission sheet is not made, but also the SRL is selected previously.)" + ); } // ダイアログでファイルパスを決定 { @@ -5413,10 +5434,7 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "提出書類の作成がキャンセルされました。" ); - else - this->errMsg( "Making a submission sheet is canceled." ); + this->errMsg( "提出書類の作成がキャンセルされました。", "Making a submission sheet is canceled." ); return; } delivfile = dlg->FileName; @@ -5431,10 +5449,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; u16 crc; // SRL全体のCRCを計算する(書類に記述するため) if( !getWholeCRCInFile( srlfile, &crc ) ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "CRCの計算に失敗しました。提出書類の作成をキャンセルします。" ); - else - this->errMsg( "Calc CRC is failed. Therefore, Making a submission sheet is canceled." ); + this->errMsg( "CRCの計算に失敗しました。提出書類の作成はキャンセルされます。", + "Calc CRC is failed. Therefore, Making a submission sheet is canceled." ); return; } hcrc = gcnew System::UInt16( crc ); @@ -5449,13 +5465,10 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; result = this->hDeliv->writeSpreadsheet( delivfile, this->hSrl, hcrc, srlfile, !(this->stripItemJapanese->Checked) ); if( result != ECDeliverableResult::NOERROR ) { - if( this->stripItemJapanese->Checked == true ) - this->errMsg( "書類の作成に失敗しました。" ); - else - this->errMsg( "Making a submission sheet is failed." ); + this->errMsg( "提出書類の作成に失敗しました。", "Making the submission sheet is failed." ); return; } - this->tboxMsg->Text = "書類の作成に成功しました。"; + this->sucMsg( "提出書類の作成に成功しました。", "The submission sheet is made successfully." ); } //stripItemSheet_Click() private: diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.resX b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.resX index 1f0e93fa..c2b117db 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.resX +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.resX @@ -150,4 +150,34 @@ True + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + \ No newline at end of file diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp index fb932369..c67e34f4 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -635,53 +635,71 @@ ECSrlResult RCSrl::mrc( FILE *fp ) ECSrlResult RCSrl::mrcNTR( FILE *fp ) { System::Int32 i; + System::Boolean result; // ROMヘッダのチェック // 文字コードチェック + result = true; for( i=0; i < TITLE_NAME_MAX; i++ ) { char c = this->pRomHeader->s.title_name[i]; if( ((c < 0x20) || (0x5f < c)) && (c != 0x00) ) { - this->hErrorList->Add( gcnew RCMRCError( - "ソフトタイトル", 0x0, 0xb, "使用不可のASCIIコードが使用されています。", - "Game Title", "Unusable ASCII code is used.", false ) ); + result = false; } } + if( !result ) + { + this->hErrorList->Add( gcnew RCMRCError( + "ソフトタイトル", 0x0, 0xb, "使用不可のASCIIコードが使用されています。", + "Game Title", "Unusable ASCII code is used.", false, true ) ); + } + + result = true; for( i=0; i < GAME_CODE_MAX; i++ ) { char c = this->pRomHeader->s.game_code[i]; - if( (c < 0x20) || (0x5f < c) ) + if( ((c < 0x20) || (0x5f < c)) && (c != 0x00) ) { - this->hErrorList->Add( gcnew RCMRCError( - "イニシャルコード", 0xc, 0xf, "使用不可のASCIIコードが使用されています。", - "Game Code", "Unusable ASCII code is used.", false ) ); + result = false; } } + if( !result ) + { + this->hErrorList->Add( gcnew RCMRCError( + "イニシャルコード", 0xc, 0xf, "使用不可のASCIIコードが使用されています。", + "Game Code", "Unusable ASCII code is used.", false, true ) ); + } if( memcmp( this->pRomHeader->s.game_code, "NTRJ", GAME_CODE_MAX ) == 0 ) { this->hErrorList->Add( gcnew RCMRCError( "イニシャルコード", 0xc, 0xf, "SDKデフォルトのコード(NTRJ)が使用されています。", - "Game Code", "SDK default code(NTRJ) is used.", false ) ); + "Game Code", "SDK default code(NTRJ) is used.", false, true ) ); } + + result = true; for( i=0; i < MAKER_CODE_MAX; i++ ) { char c = this->pRomHeader->s.maker_code[i]; - if( (c < 0x20) || (0x5f < c) ) + if( ((c < 0x20) || (0x5f < c)) && (c != 0x00) ) { - this->hErrorList->Add( gcnew RCMRCError( - "メーカーコード", 0x10, 0x11, "使用不可のASCIIコードが使用されています。", - "Maker Code", "Unusable ASCII code is used.", false ) ); + result = false; } } + if( !result ) + { + this->hErrorList->Add( gcnew RCMRCError( + "メーカーコード", 0x10, 0x11, "使用不可のASCIIコードが使用されています。", + "Maker Code", "Unusable ASCII code is used.", false, true ) ); + } // 値チェック if( this->pRomHeader->s.rom_type != 0x00 ) { this->hErrorList->Add( gcnew RCMRCError( "デバイスタイプ", 0x13, 0x13, "不正な値です。00hを設定してください。", - "Device Type", "Invalid data. Please set 00h.", false ) ); + "Device Type", "Invalid data. Please set 00h.", false, true ) ); } fseek( fp, 0, SEEK_END ); u32 filesize = ftell(fp); // 実ファイルサイズ(単位Mbit) @@ -690,44 +708,38 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "デバイス容量", 0x14, 0x14, "実ファイルサイズよりも小さい値が指定されています。", - "Device Capacity", "Setting data is less than the actual file size.", false ) ); + "Device Capacity", "Setting data is less than the actual file size.", false, true ) ); } else if( filesize < (romsize*1024*1024/8) ) { this->hWarnList->Add( gcnew RCMRCError( // 警告 "デバイス容量", 0x14, 0x14, "実ファイルサイズに比べて無駄のある値が設定されています。", - "Device Capacity", "Setting data is larger than the actual file size.", false ) ); + "Device Capacity", "Setting data is larger than the actual file size.", false, true ) ); } if( (filesize % 2) != 0 ) { this->hErrorList->Add( gcnew RCMRCError( "実ファイルサイズ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "中途半端な値です。通常では2のべき乗の値です。", - "Actual File Size", "Invalid size. This size is usually power of 2.", false ) ); + "Actual File Size", "Invalid size. This size is usually power of 2.", false, true ) ); } u8 romver = this->pRomHeader->s.rom_version; if( ((romver < 0x00) || (0x09 < romver)) && (romver != 0xE0) ) { this->hErrorList->Add( gcnew RCMRCError( "リマスターバージョン", 0x1e, 0x1e, "不正な値です。正式版では01h-09hのいずれかの値、事前版ではE0hです。", - "Release Ver.", "Invalid data. Please set either one of 01h-09h(Regular ver.), or E0h(Preliminary ver.)", false ) ); - } - if( this->pRomHeader->s.warning_no_spec_rom_speed != 0 ) - { - this->hErrorList->Add( gcnew RCMRCError( - "諸フラグ", 0x1f, 0x1f, "rsfファイルでROMSpeedTypeが設定されていません。", - "Setting Flags", "In a RSF file, the item \"ROMSpeedType\" is not set.", false ) ); + "Release Ver.", "Invalid data. Please set either one of 01h-09h(Regular ver.), or E0h(Preliminary ver.)", false, true ) ); } if( this->pRomHeader->s.banner_offset == 0 ) { this->hErrorList->Add( gcnew RCMRCError( "バナーオフセット", 0x68, 0x6b, "バナーデータが設定されていません。", - "Banner Offset.", "Banner data is not set.", false ) ); + "Banner Offset.", "Banner data is not set.", false, true ) ); } if( this->pRomHeader->s.rom_valid_size == 0 ) { this->hErrorList->Add( gcnew RCMRCError( "ROM実効サイズ", 0x80, 0x83, "値が設定されていません。", - "ROM Valid Size.", "Data is not set.", false ) ); + "ROM Valid Size.", "Data is not set.", false, true ) ); } // CRC @@ -745,7 +757,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "セキュア領域CRC", 0x15e, 0x15f, "セキュア領域のアドレス指定が不正です。", - "Secure Area CRC.", "Illegal address of secure area.", false ) ); + "Secure Area CRC.", "Illegal address of secure area.", false, true ) ); } secures = new u8[secure_size]; // never return if not allocated fseek( fp, (u32)this->pRomHeader->s.main_rom_offset, SEEK_SET ); @@ -760,7 +772,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "セキュア領域CRC", 0x07c, 0x07d, "計算結果と一致しません。セキュア領域が改ざんされた可能性があります。", - "Secure Area CRC.", "Calclated CRC is different from Registered one.", false ) ); + "Secure Area CRC.", "Calclated CRC is different from Registered one.", false, true ) ); } } @@ -770,7 +782,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "キャラクターデータCRC", 0x15c, 0x15d, "計算結果と一致しません。キャラクターデータが改ざんされた可能性があります。", - "Charactor Data CRC.", "Calclated CRC is different from Registered one.", false ) ); + "Charactor Data CRC.", "Calclated CRC is different from Registered one.", false, true ) ); } // ヘッダCRC @@ -779,7 +791,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "ROMヘッダCRC", 0x15e, 0x15f, "計算結果と一致しません。ROMヘッダが改ざんされた可能性があります。", - "ROM Header CRC.", "Calclated CRC is different from Registered one.", false ) ); + "ROM Header CRC.", "Calclated CRC is different from Registered one.", false, true ) ); } // 予約領域 @@ -789,7 +801,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "ROM情報予約領域", 0x078, 0x07f, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area for ROM Info.", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area for ROM Info.", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } for( i=0; i < 32; i++ ) @@ -798,7 +810,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "予約領域C", 0x078, 0x07f, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area C", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area C", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } @@ -821,7 +833,7 @@ ECSrlResult RCSrl::mrcNTR( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "システムコールライブラリ", METWL_ERRLIST_NORANGE, METWL_ERRLIST_NORANGE, "SDKデフォルトです。", - "System-Call Library", "This Library is SDK default one.", false ) ); + "System-Call Library", "This Library is SDK default one.", false, true ) ); } return ECSrlResult::NOERROR; @@ -848,13 +860,19 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "デバイス容量", 0x14, 0x14, "指定可能な容量ではありません。", - "Device Capacity", "Invalid capacity.", false ) ); + "Device Capacity", "Invalid capacity.", false, true ) ); + } + if( this->pRomHeader->s.warning_no_spec_rom_speed != 0 ) + { + this->hWarnList->Add( gcnew RCMRCError( + "諸フラグ", 0x1f, 0x1f, "rsfファイルでROMSpeedTypeが設定されていません。", + "Setting Flags", "In a RSF file, the item \"ROMSpeedType\" is not set.", false, true ) ); } if( (this->pRomHeader->s.game_cmd_param & CARD_LATENCY_MASK) != CARD_1TROM_GAME_LATENCY ) { this->hErrorList->Add( gcnew RCMRCError( "ROMコントロール情報", 0x60, 0x67, "TWLではマスクROMは用意されていません。ワンタイムPROM設定にしてください。", - "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false ) ); + "ROM Control Info.", "Mask ROM can be set. Please set One-time PROM.", false, true ) ); } // 予約領域 @@ -864,7 +882,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "予約領域A", 0x015, 0x01b, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area A", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area A", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } for( i=0; i < 39; i++ ) @@ -873,7 +891,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "予約領域B", 0x099, 0x0bf, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area B", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area B", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } @@ -917,14 +935,14 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hWarnList->Add( gcnew RCMRCError( "アプリ種別", 0x230, 0x237, "不正な値です。", - "Application Type", "Illigal type.", false ) ); + "Application Type", "Illigal type.", false, true ) ); } #ifdef METWL_VER_APPTYPE_USER if( apptype != appUser ) { this->hWarnList->Add( gcnew RCMRCError( "アプリ種別", 0x230, 0x237, "ユーザアプリではありません。", - "Application Type", "Not USER application.", false ) ); + "Application Type", "Not USER application.", false, true ) ); } #endif #ifdef METWL_VER_APPTYPE_SYSTEM @@ -958,14 +976,14 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "アクセスコントロール情報", 0x1b4, 0x1b7, "ゲームカード電源設定にノーマルモードとNTRモードの両方を設定することはできません。", - "Access Control Info.", "Game card power setting is either normal mode or NTR mode.", false ) ); + "Access Control Info.", "Game card power setting is either normal mode or NTR mode.", false, true ) ); } if( ((this->pRomHeader->s.titleID_Hi & TITLE_ID_HI_MEDIA_MASK) == 0) && // カードアプリ ((this->pRomHeader->s.access_control.game_card_on != 0) || (this->pRomHeader->s.access_control.game_card_nitro_mode != 0)) ) { this->hErrorList->Add( gcnew RCMRCError( "アクセスコントロール情報", 0x1b4, 0x1b7, "ゲームカード用ソフトに対してゲームカード電源設定をすることはできません。", - "Access Control Info.", "Game card power setting is not for Game Card Soft.", false ) ); + "Access Control Info.", "Game card power setting is not for Game Card Soft.", false, true ) ); } if( this->pRomHeader->s.access_control.shared2_file == 0 ) { @@ -975,7 +993,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "アクセスコントロール情報", 0x1b4, 0x1b7, "Shared2ファイルのサイズが設定されているにもかかわらず不使用設定になっています。", - "Access Control Info.", "Sizes of shared2 files is setting, but using them is not enabled.", false ) ); + "Access Control Info.", "Sizes of shared2 files is setting, but using them is not enabled.", false, true ) ); } } @@ -983,7 +1001,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hWarnList->Add( gcnew RCMRCError( "SCFG設定", 0x1b8, 0x1bb, "SCFGレジスタへアクセス可能になっています。", - "SCFG Setting", "In this setting, SCFG register is accessible.", false ) ); + "SCFG Setting", "In this setting, SCFG register is accessible.", false, true ) ); } if( (this->pRomHeader->s.titleID_Lo[0] != this->pRomHeader->s.game_code[3]) || @@ -993,7 +1011,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hWarnList->Add( gcnew RCMRCError( "タイトルID", 0x230, 0x233, "下位4バイトがイニシャルコードと一致しません。", - "Title ID", "Lower 4 bytes don't match ones of Game Code.", false ) ); + "Title ID", "Lower 4 bytes don't match ones of Game Code.", false, true ) ); } for( i=0; i < (0x2f0 - 0x240); i++ ) @@ -1002,7 +1020,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "予約領域F", 0x240, 0x2ef, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area F", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area F", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } @@ -1013,7 +1031,7 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) { this->hErrorList->Add( gcnew RCMRCError( "予約領域D", 0x378, 0xf7f, "不正な値が含まれています。この領域をすべて0で埋めてください。", - "Reserved Area D", "Invalid data is included. Please set 0 into this area.", false ) ); + "Reserved Area D", "Invalid data is included. Please set 0 into this area.", false, true ) ); } } @@ -1105,7 +1123,7 @@ System::Boolean RCSrl::mrcRegion( System::UInt32 region ) { this->hErrorList->Add( gcnew RCMRCError( "カードリージョン", 0x1b0, 0x1b3, "仕向地の組み合わせが不正です。本ツールを用いて修正してください。", - "Card Region", "Illigal Region. Please modify this information using this tool.", true ) ); + "Card Region", "Illigal Region. Please modify this information using this tool.", true, true ) ); bRegionResult = false; } #endif @@ -1121,8 +1139,9 @@ System::Boolean RCSrl::mrcRegion( System::UInt32 region ) this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, "仕向地の設定が不正のため、ROMデータ内のすべてのレーティング団体の情報を無視して読み込みました。本ツールを用いて修正してください。", - "Parental Control", "Illigal region. In reading, therefore, settings for all rating organizations are ignored. Please set this infomation using this tool.", - true ) ); + "Parental Control", + "Illigal region. In reading, therefore, settings for all rating organizations are ignored. Please set this infomation using this tool.", + true, true ) ); } return bRegionResult; } @@ -1243,7 +1262,7 @@ void RCSrl::mrcRegionOrganization( System::UInt32 region ) { this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, ognArray[ogn] + warnEmptyJ, - "Parental Control", ognArray[ogn] + warnEmptyE, true ) ); + "Parental Control", ognArray[ogn] + warnEmptyE, true, true ) ); this->clearParentalControl( ogn ); } } @@ -1261,7 +1280,7 @@ void RCSrl::mrcRegionOrganization( System::UInt32 region ) { this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, warnFillJ, - "Parental Control", warnFillE, true ) ); + "Parental Control", warnFillE, true, true ) ); } } //mrcRegion @@ -1309,7 +1328,7 @@ void RCSrl::mrcRating( System::Byte ogn ) { this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, ognArray[ ogn ] + warnDisableJ, - "Parental Control", ognArray[ ogn ] + warnDisableE, true ) ); + "Parental Control", ognArray[ ogn ] + warnDisableE, true, true ) ); this->clearParentalControl( ogn ); } else @@ -1325,7 +1344,7 @@ void RCSrl::mrcRating( System::Byte ogn ) { this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, ognArray[ ogn ] + warnIllegalJ, - "Parental Control", ognArray[ ogn ] + warnIllegalE, true ) ); + "Parental Control", ognArray[ ogn ] + warnIllegalE, true, true ) ); this->clearParentalControl( ogn ); } } @@ -1334,7 +1353,7 @@ void RCSrl::mrcRating( System::Byte ogn ) // RPが立っていたら問答無用に警告 this->hWarnList->Add( gcnew RCMRCError( "ペアレンタルコントロール情報", 0x2f0, 0x2ff, ognArray[ ogn ] + warnPendingJ, - "Parental Control", ognArray[ ogn ] + warnPendingE, true ) ); + "Parental Control", ognArray[ ogn ] + warnPendingE, true, true ) ); this->clearParentalControl( ogn ); } } diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h index 808ba9ab..1852f051 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h @@ -129,12 +129,13 @@ namespace MasterEditorTWL System::String ^hNameE; // 英語版 System::String ^hMsgE; System::Boolean ^hEnableModify; // マスタエディタで修正可能かどうか + System::Boolean ^hAffectRom; // 変更すると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::String ^nameE, System::String ^msgE, System::Boolean enableModify, System::Boolean affectRom ) { if( name == nullptr ) this->hName = gcnew System::String(""); @@ -160,11 +161,16 @@ namespace MasterEditorTWL this->hMsgE = msgE; this->hEnableModify = gcnew System::Boolean( enableModify ); + this->hAffectRom = gcnew System::Boolean( affectRom ); } public: property System::Boolean EnableModify { - System::Boolean get(){ return *(this->hEnableModify); } + System::Boolean get(){ return *(this->hEnableModify); } // Read Only + } + property System::Boolean AffectRom + { + System::Boolean get(){ return *(this->hAffectRom); } } public: // gridViewの表示形式にあわせる