From 679243cc5975fb6473f7be2ef0f720309b187f8e Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Fri, 26 Dec 2008 01:42:01 +0000 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=87=BA=E7=A2=BA=E8=AA=8D=E6=9B=B8?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=83=E3=82=AB:TWL=5FAPP/TWL=5FGAME?= =?UTF-8?q?=E3=81=AE=E5=88=A4=E5=88=A5=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=81=A8GUI=E3=82=92=E8=BF=BD=E5=8A=A0=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@100 7061adef-622a-194b-ae81-725974e89856 --- .../SheetCheckerTWL/SheetCheckerTWL.ncb | Bin 10603520 -> 10603520 bytes .../SheetCheckerTWL/SheetCheckerTWL.suo | Bin 17920 -> 18432 bytes .../SheetCheckerTWL/AssemblyInfo.cpp | 2 +- .../SheetCheckerTWL/Debug/BuildLog.htm | Bin 13250 -> 13496 bytes .../SheetCheckerTWL/SheetCheckerTWL/Form1.h | 63 ++- .../SheetCheckerTWL/SheetCheckerTWL.cpp | 447 ++++++------------ .../SheetCheckerTWL/SheetCheckerTWL.h | 90 +--- .../SheetCheckerTWL/SheetCheckerTWL.vcproj | 4 + 8 files changed, 225 insertions(+), 381 deletions(-) diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb index 31c740e9406208288766214b56e6764c34a8e90c..1bc28b9cf2b9fb90f2ae9621a6dc164bb5055ce9 100644 GIT binary patch delta 30646 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

W>(1%w&Uw(C)6JdJ-JR3J zozv5u)61RH+nv+LozvHy^N>5IpF5|&J7<79XP`T0kUM9vJ7UaT&Tx0m z2zSm%ch0D7IiuHZt2Jiqw)ka9RqkB9bCuSyfveRjIpcpdZJR&FELOccI!s)BVvI$N z$Q}P6SFd#&e|Lu|AZd}|dOug;SGY1ss;sdL- z@-LI%o~bvY@*T;=t)kVOF8P-qkWjNH^WXAS{bxLNlU5F<-a5UiNk{pV7Qea}D>AU7 znX9+%kWVhL_G=&c^w9OyUu&=Ka(b<$gTy*cThpS3=vb#D$fMRO&RwF;U%ICG9QE46 z8&{b{znV`as|}abk8MJy8>2R7PMErT^v0Hf>ammS8g^A{9o^_3qTY_(u)tTlMvz`3 z{z&8hZiUbFY5$U9r!~g>U5cH?_fhQBgi`q~P0pSGsEPLLnjCTdV9HAT&g-LdR7^nd0j;DfW6;xB>df3ZN&_HRLs8CH4B{fiLQa}4m?oBGE`|6@d z=X5_^6e*tmpo=1%)BSW&q;tBTE~+N*yL3^Jck7}^<8*&r6sex>(nZwSX%@Zh10RByOd6;AiST_DIK^`=>%m)CNxmq zO@QC6UxLn-V!#GclNnS=&2?2$3q;(dN+QkAJ*uP(U6quntCCvks-#x;sFK>;qe^Ov z3@cSh?f_G?QmHk1f8`o!PUKD8+O)`;=5C)dP%=tIAyh3`9@ zp2zvS8ZD_gOGWVSs8NoR-dcO9tY-zk4auLT3-s{Z5QadfY)KC{K_#dL`lNR?@xB_6 zMrH9!FEszxbLI1Dh-!5v1Xdm=idQbr3sMV$n&-6nujbcBj{G0Op7&NS_j8x(%sG9l zm>Bd*<~*ZKT$pbxx|ojEf0aEauKS;`=Oi5ZXY4s;qqFC@G=m@i{S3M|aNSu&o!m6* z`G1{1Z}z{5KTlUQ7VY0mx>@|2N&inV=~@2*lb#VY?^CbO{~~)1mb~L*bv%C+q&T-& z#7tP)Oq2%Y#EQ~}IiX_Lj2tf!6q=JJ&bR0S`9VldJ(2WSP8IRPKEz(jL~Qg^IbQQj z!8!1q;5)0P;4Z&6bVECEx)XB!VmRd{&3Ucj{fS&TVs73l0!Y8G;VdU zns;`&f7Rj+(dydE%NM1|hz7AMEE)2t`H^u^Q^bfS`N8VwjPWb|)EnQfXyRX-YgSwM zue@xk+PfJ(7xrMAtjz9h;&F+Lw;CI!?rk$RM+s2y_ks3?__0^v{X|LjSp3!c_G8~O z`FaEd3sv8o@r%9xOcs#XLlyvx|An{yjI}=n>F$9s)x`q`#)OEgN5)iF@$~3Vch~ym z0GUzrM`L$1{8#G#T8>PAJ8XRa1{E#g?I*!8->&Fv+BWDZv-wzbNW1p8z6F6+dG!BoCi^Y`q1??33b(7!#93v zQXwSR(nj_7Uq3%eonLLkq6fq)ejD2QE^m~~_u{WE`KZ3>B~z-3!L!z?lwJgWy!x%C z$#~kCk9(X|@u2^Ey;%(F2$An8U^8(=JYLjfE8q2(hDA5S$W9L5Yw#CMFU1Z~1_g@s zmtw1nz3ofFRt~aG3V9O->xbdrf`1$S1*_UQyJTggx@7fwv!&`&fY!pVgI`}?+_}1b za+3piehvP0_=E7J@Q2{vfXBz(*;4rB@GIa~!VCB{@K33O1Fau%wRy1hbZm&r%2)wB zee7*E{2Z(J@KWq#(S7y$)Wo$Qp8`J>ej5CA_{H!~!jrvJAB273AA%pLHd$KoYHZX{ zJP(7P0lybFf*(LQ6Fvyf!D_@q)~kHw%O%Zg&jQvD{$cpx@FU%uSHnMV#YNgSYkJ_)a#d^ds-K{?r{F(@{|qhj#Ri+&zWo{>`fIRE9q6;} gmnhk7kQSYhP=o1f&eX?1nwS2=1~vVMjYrP^9|k4WI{*Lx diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.suo index 8dbd2af30cfe26759bbb723f31dde2ae63e750aa..b90ed74a601ba23dc24acbffc01848ca6292cb51 100644 GIT binary patch delta 1755 zcmZ{kUrbw79LLYOy@i(E7W-$&q-$v@e

sYsV}}HyB1ymw?Hf_-_+Yqme~4HNk15 zCMG^?D)u)Ye8D;YkGV0Alc{5%Xu=W~(?sKg8lw+BsgR`)&Oe*qU%4gMhy9vQ&$*xT zyZ79C{^bwK{G^F=%b#-Ex&mFe(;>M2_Y6X(SH4$TX<2g0+$g~)MK>Z z(ABv8dQDELx$5U_Ml~AU)`Xt0PUEgy+){^iSXxxcHDGf~ev-$cDOWpaXr`!iqe`{k zOPXzqXwySPgD^%cUy$>ot1>8Li~4Yqf_^%c^YM zK5bn>^ooS&6B+#9Q2zCal$x*C@m8ExYk90HHSDxGxifw>C-sK6Qa=2rcEq9fH$Ed} zLS2lkllmhwo?9uO38Qy58~-%EbnaFoer0OR;ZgNsqf;f(%Lg2|>dfI%p*k zpq`dd+w@QsMf8ALY$-|l+8bFD%Wb;$KhfUatW_Z$FR6BSgtST~9oY0l4-ftM>9lY8 z(jS*4x*5Xt6yPtl`bMf-A2<90sq0Bj642Cg8TW zQN9D-1@D2QU>Y0)?*q;`fpP|%1Rnqe*jIw=dHvFS6O%+3!s^(ro+lKu)uWrm8r zX8K&;Z2t(-M;F6Q@;Y`NO$K57mivrZT>NTwO~XmTm+kRAjm7_{cwFp5V{&sUy`_r| zug`*eDW4dlv0$U~AvEzh5XIa(<;0ceo|hTN&*+5Tmh0T#2sn-kZy&yPgHFJa1?;$O zJGct;0(QLRb^wl>K{<~HmDevP-f2n{;vT>!)W3ieo4Di(q8cSvd8}(pcf09QaCe#R zG1F~?%bBiVx^}o%P%lsFF;nteoiGzWG~G_PS<{^{9gn~~>im^on(jW-mrVDq=^lXl z&U8PT?tZwRO!u1L(AxD1`QiY8VvS$*Je_Vh;DH= zHfpwIJ5GI`*U**cwdg#`i#{;H6Nhd@Kj3qlgZp8}(Y#uSHk9mc1U!};y!R`4eBAMp y=Dp9Z1MuqPui@>;j_3Fg;5ZB5Rv$Hwi#S+Zm0}mlF964Rz=ME8Ge|qO_WTDenU!<^ delta 2012 zcmaKsTWnNC7{_PMp53l?TUfT#Uej(`+G@MDUDg&XMKBE|4Y6Bn01ehHMTrsOZB;CU zUA2)1Dwd898bYa}c&XOXgFzpRBp4$JSTVlQ#6Fm4BC!cJUZN@f|J(0uq7Qz_Z)eVL zzL}ldIq4Cd9@bMsmR>y5b3l*Ud-LbMIyn*VyQn=%sdU5)+82Gg81)=;qO;00*?x20 zZ#(a#`GTl&+gzKBLXKy0A6l znCro9I@irK$rb2)0};ro1t@(p#>>m9WC*GZ%5s&n5Gt~~FiM$VVXZeGl~qoA;Xca~ zRc$70hn(|89!w&?eY$LeN9UOKs=G|O;twnCa|SC9X>XZE7pJ>5r~^OzS^OJE;yj#^ zs@t@ewPo&qnPhc5V}e<;Q2m|uxlg&Tpzox`5tQjKkC=vg_;Fz8YAJX zn6I-fGZPH^kbwm`CG{;FZ(%rE|OLu2kMK{Md7 zxt?t%v2hABC~yMJWqP{J*5;m;+0j^a!y?vn1j)nTWpEU{4@ST-FbWKqVi}KB_m81+ z5{!d4z?*=ByoK^@a2mV=-UaUgwoRb?0DK50!AF4p49aQXfV1FZfE!q^&0Ms=%-^2x zY-x>YGhUo9;~QTyz5b}VUjDZ|cJ$X8lU^IUsUG<}?uhAMQz2=u2CfD^sfAS72Ib7& zx!+0+%;kOS8kUR#uo5tf>4kv7G3gi$ONDAgNw)(uiMvl6AMY3UfVg{6_KACnhvW{J z6#1+q#!)^e?vl9C^_z9by+tOuzE_vJPrlcY^NeMB{9S%*Unb0WXQfH_cl=w-*+r?# zGVnJt@Me@(#Qi9ak3Wg~SzIT|YvOt^b9eGvQQ=FzO&ssuAnLs1hs1G*wxf<{SI>*& z(+j9`J6{sli~8ZEL^XnvYhj)nMn_A{NLj!O6PONhG_ZeYo!vb)I(IwXn5C9w-`Ox!7PTi{NMn-DhuH;Fn| zc~;ym)X$0gLfk`eUy8ewaahJ~$gf3SmBd@%N&p9(HCH-9sqfJuhq+rlf+MR`QM@!w zYK_{7rp$X5mL7cX=y(W(UoBn|I_B_((KQ3QRUiuJS^ypMd3baPBOc0| zZ_ZJe#)w6auu?IjpfkErK>rwTKBa8OgekRIQq7xD(gj@ygC0W?Ln1@TX_NGj5*2p2D&@gy#e!76rO|#f*ZMSoFPS z!y>#^>?yOLBf9Fz8~IH)-;jF4x>-YU8Y8Cs=JQHGOPsK1Gv3^$V#kCB`HP`?E diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Form1.h b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Form1.h index 80dba94..c1be512 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Form1.h +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/Form1.h @@ -35,6 +35,12 @@ namespace SheetCheckerTWL { private: System::Windows::Forms::DataGridViewTextBoxColumn^ colTitle; private: System::Windows::Forms::DataGridViewTextBoxColumn^ colSrl; private: System::Windows::Forms::DataGridViewTextBoxColumn^ colSheet; + + + + + + System::Boolean ^bReadSheet; public: @@ -92,10 +98,10 @@ namespace SheetCheckerTWL { /// void InitializeComponent(void) { - System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle17 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); - System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle18 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); - System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle19 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); - System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle20 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle5 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle6 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle7 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); + System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle8 = (gcnew System::Windows::Forms::DataGridViewCellStyle()); this->tboxSrl = (gcnew System::Windows::Forms::TextBox()); this->tboxSheet = (gcnew System::Windows::Forms::TextBox()); this->butSrl = (gcnew System::Windows::Forms::Button()); @@ -154,15 +160,15 @@ namespace SheetCheckerTWL { // // gridCompare // - dataGridViewCellStyle17->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; - dataGridViewCellStyle17->BackColor = System::Drawing::SystemColors::Control; - dataGridViewCellStyle17->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + dataGridViewCellStyle5->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; + dataGridViewCellStyle5->BackColor = System::Drawing::SystemColors::Control; + dataGridViewCellStyle5->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, static_cast(128))); - dataGridViewCellStyle17->ForeColor = System::Drawing::SystemColors::WindowText; - dataGridViewCellStyle17->SelectionBackColor = System::Drawing::SystemColors::Highlight; - dataGridViewCellStyle17->SelectionForeColor = System::Drawing::SystemColors::HighlightText; - dataGridViewCellStyle17->WrapMode = System::Windows::Forms::DataGridViewTriState::True; - this->gridCompare->ColumnHeadersDefaultCellStyle = dataGridViewCellStyle17; + dataGridViewCellStyle5->ForeColor = System::Drawing::SystemColors::WindowText; + dataGridViewCellStyle5->SelectionBackColor = System::Drawing::SystemColors::Highlight; + dataGridViewCellStyle5->SelectionForeColor = System::Drawing::SystemColors::HighlightText; + dataGridViewCellStyle5->WrapMode = System::Windows::Forms::DataGridViewTriState::True; + this->gridCompare->ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5; this->gridCompare->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize; this->gridCompare->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(3) {this->colTitle, this->colSrl, this->colSheet}); @@ -170,12 +176,12 @@ namespace SheetCheckerTWL { this->gridCompare->Name = L"gridCompare"; this->gridCompare->RowHeadersVisible = false; this->gridCompare->RowTemplate->Height = 21; - this->gridCompare->Size = System::Drawing::Size(363, 148); + this->gridCompare->Size = System::Drawing::Size(363, 170); this->gridCompare->TabIndex = 6; // // tboxResult // - this->tboxResult->Location = System::Drawing::Point(294, 273); + this->tboxResult->Location = System::Drawing::Point(294, 289); this->tboxResult->Name = L"tboxResult"; this->tboxResult->ReadOnly = true; this->tboxResult->Size = System::Drawing::Size(100, 19); @@ -184,7 +190,7 @@ namespace SheetCheckerTWL { // labResult // this->labResult->AutoSize = true; - this->labResult->Location = System::Drawing::Point(235, 276); + this->labResult->Location = System::Drawing::Point(235, 292); this->labResult->Name = L"labResult"; this->labResult->Size = System::Drawing::Size(53, 12); this->labResult->TabIndex = 8; @@ -201,26 +207,26 @@ namespace SheetCheckerTWL { // // colTitle // - dataGridViewCellStyle18->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; - dataGridViewCellStyle18->BackColor = System::Drawing::Color::FromArgb(static_cast(static_cast(224)), + dataGridViewCellStyle6->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; + dataGridViewCellStyle6->BackColor = System::Drawing::Color::FromArgb(static_cast(static_cast(224)), static_cast(static_cast(224)), static_cast(static_cast(224))); - this->colTitle->DefaultCellStyle = dataGridViewCellStyle18; + this->colTitle->DefaultCellStyle = dataGridViewCellStyle6; this->colTitle->HeaderText = L""; this->colTitle->Name = L"colTitle"; this->colTitle->Width = 120; // // colSrl // - dataGridViewCellStyle19->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; - this->colSrl->DefaultCellStyle = dataGridViewCellStyle19; + dataGridViewCellStyle7->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; + this->colSrl->DefaultCellStyle = dataGridViewCellStyle7; this->colSrl->HeaderText = L"SRL"; this->colSrl->Name = L"colSrl"; this->colSrl->Width = 120; // // colSheet // - dataGridViewCellStyle20->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; - this->colSheet->DefaultCellStyle = dataGridViewCellStyle20; + dataGridViewCellStyle8->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleCenter; + this->colSheet->DefaultCellStyle = dataGridViewCellStyle8; this->colSheet->HeaderText = L"提出確認書"; this->colSheet->Name = L"colSheet"; this->colSheet->Width = 120; @@ -229,7 +235,7 @@ namespace SheetCheckerTWL { // this->AutoScaleDimensions = System::Drawing::SizeF(6, 12); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; - this->ClientSize = System::Drawing::Size(428, 302); + this->ClientSize = System::Drawing::Size(429, 321); this->Controls->Add(this->labVersion); this->Controls->Add(this->labResult); this->Controls->Add(this->tboxResult); @@ -313,6 +319,17 @@ private: tmp2 = tadver.ToString() + " (" + tadver.ToString( "X04" ) + ")"; this->gridCompare->Rows->Add( "TADバージョン", "-", tmp2); + if( this->sheet->IsUnnecessaryRating ) + { + this->gridCompare->Rows->Add( "TITLE_TYPE", "-", "TWL_APP"); + System::Int32 last = this->gridCompare->Rows->Count - 2; + this->gridCompare->Rows[ last ]->DefaultCellStyle->ForeColor = System::Drawing::Color::Blue; // 青色で強調 + } + else + { + this->gridCompare->Rows->Add( "TITLE_TYPE", "-", "TWL_GAME"); + } + if( *this->error == SheetCheckerError::NOERROR ) { this->tboxResult->Text = "OK"; diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp index ff6eaab..73478b8 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.cpp @@ -15,21 +15,35 @@ using namespace SheetCheckerTWL; // ------------------------------------------------------------------ System::Int32 parseOption( array ^args, SheetCheckerContext ^context ); +int consoleRun( array ^args, int argc, SheetCheckerContext ^context ); +int consoleOptionRun( array ^args, int argc, SheetCheckerContext ^context ); int printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, - System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ); -int consoleRun( array ^args, int argc, SheetCheckerContext ^hContext ); + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc, SheetCheckerError error ); + +// ------------------------------------------------------------------ +// main +// ------------------------------------------------------------------ [STAThreadAttribute] int main(array ^args) { - SheetCheckerContext ^hContext = gcnew SheetCheckerContext; + SheetCheckerContext ^context = gcnew SheetCheckerContext; // getopt - int argc = parseOption( args, hContext ); + int argc = parseOption( args, context ); if( argc > 0 ) { - int ret = consoleRun( args, argc, hContext ); + int ret; + if( context->bResult || context->bSubmitVersion || context->bTadVersion || + context->bSubmitVersion || context->bUnnecessaryRating ) + { + ret = consoleOptionRun( args, argc, context ); + } + else + { + ret = consoleRun( args, argc, context ); + } return ret; } @@ -43,49 +57,142 @@ int main(array ^args) } // ------------------------------------------------------------------ -// コンソール処理 +// コンソール処理 (ノーマル) // ------------------------------------------------------------------ -int consoleRun( array ^args, int argc, SheetCheckerContext ^hContext ) +int consoleRun( array ^args, int argc, SheetCheckerContext ^context ) { + SheetCheckerError error = SheetCheckerError::NOERROR; ROM_Header rh; memset( (void*)&rh, 0, sizeof(ROM_Header) ); - SheetItem ^hItem = gcnew SheetItem; + SheetItem ^item = gcnew SheetItem; // 引数処理 if( argc != 2 ) { - hContext->ErrorCode = SheetCheckerError::ERROR_ARG; - printResult( hContext, &rh, hItem, nullptr, nullptr, 0 ); - return -1; + error = SheetCheckerError::ERROR_ARG; + printResult( context, &rh, item, nullptr, nullptr, 0, error ); + return ((int)error); } - System::String ^hSrlFile = args[0]; - System::String ^hSheetFile = args[1]; + System::String ^romfile = args[0]; + System::String ^sheetfile = args[1]; // ROMヘッダの読み込み - if( !readRomHeader( hSrlFile, &rh ) ) + if( !readRomHeader( romfile, &rh ) ) { - hContext->ErrorCode = SheetCheckerError::ERROR_READ_SRL; - printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, 0 ); - return -1; + error = SheetCheckerError::ERROR_READ_SRL; + printResult( context, &rh, item, romfile, sheetfile, 0, error ); + return ((int)error); } System::UInt16 crc; - getWholeCRCInFile( hSrlFile, &crc ); + getWholeCRCInFile( romfile, &crc ); // 提出確認書の読み込み - if( !readSheet( hSheetFile, hItem ) ) + if( !readSheet( sheetfile, item ) ) { - hContext->ErrorCode = SheetCheckerError::ERROR_READ_SHEET; - printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); - return -1; + error = SheetCheckerError::ERROR_READ_SHEET; + printResult( context, &rh, item, romfile, sheetfile, crc, error ); + return ((int)error); } // 一致判定 - hContext->ErrorCode = checkSheet( &rh, crc, hItem ); + error = checkSheet( &rh, crc, item ); + printResult( context, &rh, item, romfile, sheetfile, crc, error ); // 結果を表形式で表示 - // 結果表示 - int ret = printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); - return ret; + return ((int)error); +} + +// ------------------------------------------------------------------ +// コンソール処理 (オプション) +// ------------------------------------------------------------------ + +int consoleOptionRun( array ^args, const int argc, SheetCheckerContext ^context ) +{ + SheetCheckerError error = SheetCheckerError::NOERROR; + System::String ^romfile; + System::String ^sheetfile; + + // 引数解析 + switch( argc ) + { + case 1: + sheetfile = args[0]; + if( context->bResult ) // このオプションのときだけは引数1つを許さない + { + error = SheetCheckerError::ERROR_ARG; + printf( "%d", (int)error ); + return ((int)error); + } + break; + + case 2: + romfile = args[0]; + sheetfile = args[1]; + break; + + default: + error = SheetCheckerError::ERROR_ARG; + printf( "%d", (int)error ); + return ((int)error); + break; + } + + // 提出確認書の読み込み + SheetItem ^item = gcnew SheetItem; + if( !readSheet( sheetfile, item ) ) + { + error = SheetCheckerError::ERROR_READ_SHEET; + printf( "%d", (int)error ); + return ((int)error); + } + + // 引数が1つのときはSRLとの比較をしない + if( argc == 2 ) + { + ROM_Header rh; + memset( (void*)&rh, 0, sizeof(ROM_Header) ); + + // ROMヘッダの読み込み + if( !readRomHeader( romfile, &rh ) ) + { + error = SheetCheckerError::ERROR_READ_SHEET; + printf( "%d", (int)error ); + return ((int)error); + } + System::UInt16 crc; + getWholeCRCInFile( romfile, &crc ); + + // 比較 + error = checkSheet( &rh, crc, item ); + }//if( argc == 2 ) + + // 結果出力はオプションによって異なる(エラーのときには共通) + if( error != SheetCheckerError::NOERROR ) + { + if( context->bResult ) + { + printf( "0" ); // このパスは成功のときのみ + } + else if( context->bTadVersion ) + { + System::UInt16 tadver = item->RomVersion; + tadver = (tadver << 8) | item->SubmitVersion; + printf( "%d", tadver ); + } + else if( context->bSubmitVersion ) + { + printf( "%d", item->SubmitVersion ); + } + else if( context->bUnnecessaryRating ) + { + printf( "%d", (item->IsUnnecessaryRating)?1:0 ); + } + } + else + { + printf( "%d", (int)error ); + } + return ((int)error); } // ------------------------------------------------------------------ @@ -119,282 +226,40 @@ SheetCheckerError checkSheet( ROM_Header *rh, System::UInt16 crc, SheetItem ^ite // ------------------------------------------------------------------ int printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, - System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ) + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc, SheetCheckerError error ) { System::UInt16 tadver = item->RomVersion; tadver = (tadver << 8) | item->SubmitVersion; // 通常の表示 - if( !context->bSubmitVersion && !context->bResult && !context->bTadVersion && !context->bUnnecessaryRating ) - { - Console::WriteLine( "" ); - Console::WriteLine( "SRL: " + srlfile ); - Console::WriteLine( "Sheet: " + sheetfile ); - Console::WriteLine( "" ); + Console::WriteLine( "" ); + Console::WriteLine( "SRL: " + srlfile ); + Console::WriteLine( "Sheet: " + sheetfile ); + Console::WriteLine( "" ); - printf( " SRL Sheet\n" ); - printf( "---------------------------------------\n" ); - printf( "InitialCode: %c%c%c%c %c%c%c%c\n", - rh->s.game_code[0], rh->s.game_code[1], rh->s.game_code[2], rh->s.game_code[3], - item->GameCode[0], item->GameCode[1], item->GameCode[2], item->GameCode[3] ); - printf( "RemasterVersion: %02X %02X\n", rh->s.rom_version, item->RomVersion ); - printf( "File CRC: %04X %04X\n", srlcrc, item->FileCRC ); - printf( "---------------------------------------\n" ); - printf( "Rating Display: %s\n", (item->IsUnnecessaryRating)?"Unnecessary":"Necessary" ); - printf( "---------------------------------------\n" ); - printf( "SubmitVersion: - %d (%02X)\n", item->SubmitVersion, item->SubmitVersion ); - printf( "TAD Version: %d (%04X)\n", tadver, tadver ); - printf( "---------------------------------------\n" ); - printf( "Result: " ); - if( context->ErrorCode == SheetCheckerError::NOERROR ) - { - printf( "OK\n" ); - } - else - { - printf( "NG (%d)\n", context->ErrorCode ); - } - } - - // オプションのときの表示 - if( context->bSubmitVersion ) + printf( " SRL Sheet\n" ); + printf( "---------------------------------------\n" ); + printf( "InitialCode: %c%c%c%c %c%c%c%c\n", + rh->s.game_code[0], rh->s.game_code[1], rh->s.game_code[2], rh->s.game_code[3], + item->GameCode[0], item->GameCode[1], item->GameCode[2], item->GameCode[3] ); + printf( "RemasterVersion: %02X %02X\n", rh->s.rom_version, item->RomVersion ); + printf( "File CRC: %04X %04X\n", srlcrc, item->FileCRC ); + printf( "---------------------------------------\n" ); + printf( "Rating Display: %s\n", (item->IsUnnecessaryRating)?"Unnecessary":"Necessary" ); + printf( "---------------------------------------\n" ); + printf( "SubmitVersion: - %d (%02X)\n", item->SubmitVersion, item->SubmitVersion ); + printf( "TAD Version: %d (%04X)\n", tadver, tadver ); + printf( "---------------------------------------\n" ); + printf( "Result: " ); + if( error == SheetCheckerError::NOERROR ) { - if( context->ErrorCode == SheetCheckerError::NOERROR ) - { - printf( "%d", item->SubmitVersion ); - } - else - { - printf( "%d", context->ErrorCode ); // エラーのときはエラーコード - } + printf( "OK\n" ); } - if( context->bTadVersion ) + else { - if( context->ErrorCode == SheetCheckerError::NOERROR ) - { - printf( "%d", tadver ); - } - else - { - printf( "%d", context->ErrorCode ); - } - } - if( context->bUnnecessaryRating ) - { - if( context->ErrorCode == SheetCheckerError::NOERROR ) - { - printf( "%d", (item->IsUnnecessaryRating)?1:0 ); - } - else - { - printf( "%d", context->ErrorCode ); - } - } - if( context->bResult ) - { - printf( "%d", context->ErrorCode ); - } - - if( context->ErrorCode != SheetCheckerError::NOERROR ) - { - return -1; + printf( "NG (%d)\n", (int)error ); } return 0; } -// ------------------------------------------------------------------ -// ROMヘッダの読み込み -// ------------------------------------------------------------------ - -System::Boolean readRomHeader( System::String ^srlfile, ROM_Header *rh ) -{ - FILE *fp = NULL; - const char *pchFilename = - (const char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi( srlfile ).ToPointer(); - - // ファイルを開いてROMヘッダのみ読み出す - if( fopen_s( &fp, pchFilename, "rb" ) != NULL ) - { - return false; - } - (void)fseek( fp, 0, SEEK_SET ); // ROMヘッダはsrlの先頭から - - // 1バイトをsizeof(~)だけリード (逆だと返り値がsizeof(~)にならないので注意) - if( fread( (void*)rh, 1, sizeof(ROM_Header), fp ) != sizeof(ROM_Header) ) - { - fclose( fp ); - return false; - } - fclose( fp ); - return true; -} - -// ------------------------------------------------------------------ -// 提出確認書の読み込み -// ------------------------------------------------------------------ - -System::Boolean readSheet( System::String ^sheetfile, SheetItem ^item ) -{ - // XSLによってXML変換 - System::String ^tmpfile = ".\\temp" + System::DateTime::Now.ToString("yyyyMMddHHmmss") + ".xml"; - System::Xml::Xsl::XslCompiledTransform ^xslt = gcnew System::Xml::Xsl::XslCompiledTransform; - System::String ^xslpath = System::IO::Path::GetDirectoryName( System::Reflection::Assembly::GetEntryAssembly()->Location ) - + "\\extract_sheet.xsl"; - try - { - //Console::WriteLine( "xslpath: " + xslpath ); - xslt->Load( xslpath ); - xslt->Transform( sheetfile, tmpfile ); - } - catch( System::Exception ^ex ) - { - (void)ex; - //Console::WriteLine( "XSLT Error" ); - return false; - } - // 変換したXMLを読み込み - System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument; - try - { - doc->Load( tmpfile ); - } - catch( System::Exception ^ex ) - { - (void)ex; - //Console::WriteLine( "Load error" ); - return false; - } - - // XMLからデータを抽出 - System::Xml::XmlElement ^root = doc->DocumentElement; - System::String ^text; - try - { - item->Media = getXPathText( root, "/Sheet/Media" ); - - text = getXPathText( root, "/Sheet/GameCode" ); - char code[4]; - int i; - for(i=0; i<4; i++ ) - { - code[i] = (char)text[i]; - } - item->GameCode = code; // 代入したらコピーするように property を定義している - - text = getXPathText( root, "/Sheet/RomVersion" ); - if( text->Contains( "(" ) ) // 事前版のときには"(事前版)"が入る - { - text = text->Remove( text->IndexOf("(") ); - } - text = text->Trim(); - item->RomVersion = System::Byte::Parse( text, System::Globalization::NumberStyles::AllowHexSpecifier ); - - text = getXPathText( root, "/Sheet/CRC" ); - if( text->Contains( "0x" ) ) - { - text = text->Substring( text->IndexOf("x")+1 ); - } - item->FileCRC = System::UInt16::Parse( text, System::Globalization::NumberStyles::AllowHexSpecifier ); - - text = getXPathText( root, "/Sheet/SubmitVersion" ); - char c = (char)text[0]; - if( ('G' <= c) && (c <= 'Z') ) // Fより上はG..Zで表現されていく(可能性あり) - { - item->SubmitVersion = c - 'G' + 16; - } - else if( ('g' <= c) && (c <= 'z') ) - { - item->SubmitVersion = c - 'g' + 16; - } - else - { - item->SubmitVersion = System::Byte::Parse( text, System::Globalization::NumberStyles::AllowHexSpecifier ); - } - - text = getXPathText( root, "/Sheet/IsUnnecessaryRating" ); - if( !System::String::IsNullOrEmpty( text ) && text->Equals( "○" ) ) - { - item->IsUnnecessaryRating = true; - } - else - { - item->IsUnnecessaryRating = false; - } - } - catch( System::Exception ^ex ) - { - (void)ex; - return false; - } - - // 中間ファイルを削除 - if( System::IO::File::Exists( tmpfile ) ) - { - System::IO::File::Delete( tmpfile ); - } - return true; -} - -// ------------------------------------------------------------------ -// getopt -// ------------------------------------------------------------------ - -// @ret オプションを除いたときのargc -System::Int32 parseOption( array ^args, SheetCheckerContext ^context ) -{ - System::Collections::Generic::List ^indexList - = gcnew System::Collections::Generic::List; - - int numopt = 0; - int i; - for( i=0; i < args->Length; i++ ) - { - if( args[i]->StartsWith( "-s" ) ) - { - context->bSubmitVersion = true; - numopt++; - } - else if( args[i]->StartsWith( "-r" ) ) - { - context->bResult = true; - numopt++; - } - else if( args[i]->StartsWith( "-t" ) ) - { - context->bTadVersion = true; - numopt++; - } - else if( args[i]->StartsWith( "-u" ) ) - { - context->bUnnecessaryRating = true; - numopt++; - } - else if( !args[i]->StartsWith( "-" ) ) // オプションでない引数のindexを記録 - { - indexList->Add(i); - } - } - i=0; - for each( System::Int32 index in indexList ) // オプションでない引数を前につめていく - { - args[i] = args[index]; - i++; - } - return (args->Length - numopt); -} - -// ------------------------------------------------------------------ -// XMLタグ検索 -// ------------------------------------------------------------------ - -// @ret テキストが存在するときそのテキストを返す。存在しないときnullptr。 -System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ) -{ - System::Xml::XmlNode ^tmp = root->SelectSingleNode( xpath ); - if( tmp && tmp->FirstChild && tmp->FirstChild->Value ) - { - return tmp->FirstChild->Value; - } - return nullptr; -} diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h index 483f424..5d4a5cf 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h @@ -24,45 +24,19 @@ enum class SheetCheckerError // 実行Context ref class SheetCheckerContext { -private: - System::Boolean ^hbSubmitVersion; // オプションフラグ - System::Boolean ^hbResult; - System::Boolean ^hbTadVersion; - System::Boolean ^hbUnnecessaryRating; - SheetCheckerError ^hErrorCode; // エラー情報 +public: + property System::Boolean bSubmitVersion; // オプションフラグ + property System::Boolean bResult; + property System::Boolean bTadVersion; + property System::Boolean bUnnecessaryRating; public: SheetCheckerContext() { - this->hbSubmitVersion = gcnew System::Boolean(false); - this->hbResult = gcnew System::Boolean(false); - this->hbTadVersion = gcnew System::Boolean(false); - this->hErrorCode = gcnew SheetCheckerError( SheetCheckerError::NOERROR ); + this->bSubmitVersion = false; + this->bResult = false; + this->bTadVersion = false; + this->bUnnecessaryRating = false; } - property System::Boolean bSubmitVersion - { - void set( System::Boolean flg ){ this->hbSubmitVersion = gcnew System::Boolean(flg); } - System::Boolean get(){ return *this->hbSubmitVersion; } - }; - property System::Boolean bResult - { - void set( System::Boolean flg ){ this->hbResult = gcnew System::Boolean(flg); } - System::Boolean get(){ return *this->hbResult; } - }; - property System::Boolean bTadVersion - { - void set( System::Boolean flg ){ this->hbTadVersion = gcnew System::Boolean(flg); } - System::Boolean get(){ return *this->hbTadVersion; } - }; - property System::Boolean bUnnecessaryRating - { - void set( System::Boolean flg ){ this->hbUnnecessaryRating = gcnew System::Boolean(flg); } - System::Boolean get(){ return *this->hbUnnecessaryRating; } - }; - property SheetCheckerError ErrorCode - { - void set( SheetCheckerError code ){ this->hErrorCode = gcnew SheetCheckerError(code); } - SheetCheckerError get(){ return *this->hErrorCode; } - }; }; // 提出確認書内の情報 @@ -70,24 +44,28 @@ ref class SheetItem { private: char *pGameCode; - System::Byte ^hRomVersion; - System::UInt16 ^hFileCRC; - System::Byte ^hSubmitVersion; - System::Boolean ^hIsUnnecessaryRating; -public: System::String ^hMedia; +public: + property System::Byte RomVersion; + property System::UInt16 FileCRC; + property System::Byte SubmitVersion; + property System::Boolean IsUnnecessaryRating; public: SheetItem() { this->pGameCode = new char[4]; std::memset( this->pGameCode, 0, 4 ); - this->hRomVersion = gcnew System::Byte(0); - this->hFileCRC = gcnew System::UInt16(0); - this->hSubmitVersion = gcnew System::Byte(0); - this->hMedia = gcnew System::String(""); - this->hIsUnnecessaryRating = gcnew System::Boolean(false); + this->hMedia = gcnew System::String(""); + this->RomVersion = 0; + this->FileCRC = 0; + this->SubmitVersion = 0; + this->IsUnnecessaryRating = false; } ~SheetItem() + { + this->!SheetItem(); + } + !SheetItem() { delete []this->pGameCode; } @@ -96,21 +74,6 @@ public: void set( char* p ){ memcpy( this->pGameCode, p, 4 ); } char* get(){ return this->pGameCode; } } - property System::Byte RomVersion - { - void set( System::Byte v ){ *this->hRomVersion = v; } - System::Byte get(){ return *this->hRomVersion; } - } - property System::UInt16 FileCRC - { - void set( System::UInt16 v ){ *this->hFileCRC = v; } - System::UInt16 get(){ return *this->hFileCRC; } - } - property System::Byte SubmitVersion - { - void set( System::Byte v ){ *this->hSubmitVersion = v; } - System::Byte get(){ return *this->hSubmitVersion; } - } property System::String ^Media { void set( System::String ^str ) @@ -118,15 +81,10 @@ public: if( str != nullptr ) this->hMedia = System::String::Copy(str); else - this->hMedia = gcnew System::String(""); + this->hMedia = gcnew System::String(""); // nullptrが代入されることはない } System::String^ get(){ return System::String::Copy( this->hMedia ); } } - property System::Boolean IsUnnecessaryRating - { - void set( System::Boolean b ){ *this->hIsUnnecessaryRating = b; } - System::Boolean get(){ return *this->hIsUnnecessaryRating; } - } }; diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.vcproj b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.vcproj index 5cfb462..e156b73 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.vcproj +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.vcproj @@ -209,6 +209,10 @@ RelativePath=".\SheetCheckerTWL.cpp" > + +