From 1d16d6132c31862caebd8f502b1902c967025c9a Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Tue, 11 Nov 2008 02:21:34 +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=AF=E3=83=84=E3=83=BC=E3=83=AB?= =?UTF-8?q?:TAD=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E8=A8=88?= =?UTF-8?q?=E7=AE=97=E3=81=97=E3=81=A610=E9=80=B2=E3=81=A7=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=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@48 7061adef-622a-194b-ae81-725974e89856 --- .../SheetCheckerTWL/SheetCheckerTWL.ncb | Bin 6687744 -> 6687744 bytes .../SheetCheckerTWL/SheetCheckerTWL.suo | Bin 16384 -> 16384 bytes .../SheetCheckerTWL/Debug/BuildLog.htm | Bin 8900 -> 11440 bytes .../SheetCheckerTWL/SheetCheckerTWL.cpp | 119 ++++++++++++------ .../SheetCheckerTWL/SheetCheckerTWL.h | 23 +++- .../SheetCheckerTWL/extract_sheet.xsl | 3 + 6 files changed, 106 insertions(+), 39 deletions(-) diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL.ncb index 9194ae790f02f6664e76d9923bcc5ecdf2384a92..3479e385701459bdc420baef48c61c89472e8e6a 100644 GIT binary patch delta 12573 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�hQ#x=-87SD8GNpdou3GBJfkk^A)@;I4(dO92s3vZ4N<4=;GY1(IR(ijHkCx zPvpW8QG8~HW)+7{$22MY{Hv)Z)%LnKYQ@4cF%!)!UA%KPW-$xs0d85+ZP~_eY}2fZ z7oLj&#EOOIy3H$X9=%mIur_q;`e>A&s^ZHz?{(2(3-rYq?yEoHd~IZ$jlUNh7h?_wB|@-} zxHkh?fHq>BkNJjy9B`w+HqgAns0#%S}d7tV4nWM&IU>p7d@w27o!oH;6t6F@e;;C2w^%yDjE z5I=xE;_)|uPH@wH*0 zU0cn(d!i#s9AL?XOvNq6E1eyE#2Yb4B&o?6eN~hnmsjGYdC3!1Ty4C}8kp<(+CE_3 zm6yChQ6Ac$yUgOMfytt3U`j(P&mR)!C%*eCW!D;WB>XE%>{yYiGUgDwA4**u#WKb4 zKcuRDtd|(|T&hr5mZ*K~x~mnIEyiw3y+LIzvH6A6oeJwMYX6*i++>c$idG)KKh-9x zUQCTqSe#h!QtGS#mL$G>H5CJ$V&H43_bV(}>^qwJWCZgSx134c`6^#qmu}~AcV`50 z|J~^+V#IILTbWOlAIh|1zWWJn4j;WEEp+jH+tUE)fF6JhK&H5Fd(S)Wk^eH_jn78@ z{_|;(d`&@mfaq4(>(q<&XQs5Cxv^*mD&k_BlAX;@_AYjqva`!v{Jq}AcKO!((pwJC z-j-(Ne|R|C%DdaM&9?M3y5`PX=Tz6`Z-D=EUcOxm(HJQ$kO`!R8L0S zHPfoA=M2ZnaW|&XZP|Ug5~hQ!&zk?!WB&^~#?QQU`qY`#RdKgYn>Bk*+^w@~DrZ;f zGi3jr8Lk*`g*3X*-F|vlr_elXQf3-Ik&+Rrb}sZYMx?ARbBOxAd!T>0jTHSKl(Az9qlDWng{FRrM_e^(}?< zEkzq!2CaGW*yq`PYK@PdIPrCMtiNNR*^g#~m}&0oz7!MXL)W8y8=%o_eA2Rrf$iDb z?dr!E(q?sK+SMa?%jo4=!~*3XwH+sYXzuS=V^I`8oaHK27eTtDY}fZpeHeUky=phDpqWs>Uzaj#ox%q+*z)Hp+4_n^^<0P_>rmzaqzdU z&+O`0OthW52FJ8EmFK3Y8k+s?E?y8|I)E#-IJ49pqXsFsP~COWmlgnoWrh1|HK_eu z`#D+Mufb)6H+S^xB?cTSZ#BitaaY}5jqmBRYH3=e;tWpEZ-@JCA?E9c$Lf z^0k|4(7Z3x-*6|EULKK`H??{Wp-t09RaZ@SQ>Ud77=KIo8y20Am&Yv`#qs>+AB%!I z1F;kP%7DnryH$@wZeLm)#^aI)nR#YTaX8OiieGOwW$WR4b55~SGKBKgImN;J^WMcl zKNZb<;hSy?e``Rojjwsr9mUOk@wQvOW#tzKa!cQ0U54`fVh8`=4R<(i$Oi*^)2;FD z1HmBY<;k+SU3OgkraPub@vOQ#yKdarmDJ1-Du!CUaV3#Bf3*Bqu3ER=A`S$&n*)^D zYx$SUtGkKEqTB}@^0W~(S?(~ix(XcgbKQ6P>W5NWzWWLF1Ufeibeq%FCcJH$>i$in zJcLBXJogl)u3Tpk4Zm^6C#noXx2$m&IhDcd^~oDcEh6@JgXfs!sUVvE>YnB=+LjDn z8=}U7bxG1GkNjF28l~2+wc#(MHr)7Ws`9f+L6n0%Q4aRHqvY3`Pu7fAlyLugHJ|~= z$P}mSu5M~zm%>d1#<;#w{a5tNX6Y~5hWiNrRaF;!yIfh6E?Z^T=w+Ii_a)sf0C@PC505G4-;D7w8h^~iOAMepzwL;%l5aa~&FQ~4 zjOb;+D}a4~zXJ9H4gmfga1ih+;1J+2;5EPzz)^AbrK(ChZlnL)|0n)4HV_M$y8+s5 zDA@Dox%Q}h+R3VsV&r@mE-+2y^-b>jri%Ke%8gA`Ciyu)3_Dc$ey+L-Rntjxb!L*h z?2C}}>VaYE4pc&;2UK4hDDU**eEU$hqMimVV0iWWHuZBvOk)*ut0OKt!dZR^GqtHOC9sk&j8q1^fViAOHviMEzhO1TX^@AQT7#8Uf)z1oscJe(zF^6LT$A{}JI-VIsQULiCA& zsD;r&@5ZZX&s!5hZVDg@GZL-D@RI!0fzMkj=A6pyZACT0Bjf}40*i3-v4uY}!@9tt zj(*#^(I-5VC?b>xEU;czqKBd0a9|`b3K$LK0`~zAsM8Kw?@>4Ix3+0N1NScgF9JnC zF)$M-0cHWSfjNK*lmc^smw=b~`GwZ8cAp1vz1gJ3e3<(Y4|>NsFM^jH&7GzAH9{AO zl*zo)A?ry$mxCtacDUIh`|ozscrgZ|D3-)DUW`rffszlSFyu4+8|s@SKc8xKzP`Tp zqEN!%>5-?*p7w3B{uELL-ya3_4>Xnq7J}?4C!*njSjk_a2y{sB_4N}aZzj=!J25#S z$kEY}Now>-tId`yi{1DK8fBH26)M?G>hzP=X|C;s_0Lg)m2=@D2MZK8kB0XhnS6{DJ{d4;Z0hmJmS9A^9tg~-Cl zffiF}3eBf7TGWv?&?P()#TH;d;-PC4&KBU+LYq?PChA8!A!G5fWprk~Me=vhSYk{a zJl)!<^-}N$UbaYK454v!f=<(?QaqvsGsU3&@n~BN#f)pleAHdjt+B3ZI)aKBke61` zfx@G!LS!e(shqa=Hp&vM-osD~Q7;UgjbSs;5z$~vNTvr3qE%&D7Z=fA&zNM17_AuN zE~{B~z8&2?&m!C2MF**>%;J(ai)bme(MQ{fhSS3|4AsPF_fTPHgRJuLG%yPWAp^&(ZZ!#^RXv9ii(Jw>^& zjItJo=!*&j+Zd)PNW+v6Mk~5-g#wwGrDM^FHPDI%LrCJPfF6J_{c&}ps)}{=xM!WT zLM!kA^ehb549IXM&8Br>E=|;C*rOO}kuG`WEEF>q&L-$H){7=YYNHelEJ3rPOXbkv z^>m`Yb|=#TCoTV%!x4hOLT>vtQ> z=Ps;zk@g`~!gv z$O>C8?4M@u>n(muXpwkozO?*hF7$FCEs|-4REjDHbc0Yvj8~ZEPo>$oghh8nx{|A8 zhMy2Ah7F2rP)BQ#ws2eGsbQ1FCodFTa4n;Q5TY=k;&z98 zt>!%Dc~-+z-9UArS9NW;g+{?!3U$&JsaTXnG)kWspSL#)j6_dPU6WGh z!=AFg#+Dktu=;Uho5-(?u1>5A>%(%S{T6DH!qUOuUT?gX`a)mCtaf5!&~>5rbJ6vM z^cpRvRgmGE#3>IYV!XRC{!(0vE__SZ;rEP4HDE*w&Da%4~F}3s!9=$*pAgCVH<9w2O`LaYoK1!9jPwj`BPEtD;JWwPj6Abd_cUr_5Kx&VK zEteNB6g!YQAQ3I`;)VDEsUs5n+(r~M!aOUaPZNxoh3f1*Djf7^?X zgrCO)cOyadyc!al%tl!FgOOj=A83SzVkAEhZUG~M?GPgqe4OM5!N-tviaj79OkZEY zHzq5ra>Eo`F~u71cDuwJUxDcsb7{qXJ6=BEfN3In*Jk$c36hT_tZcdjn^|8!QS!q3 z5*xpDg)k63<01(54K0g;U(af;BfrA#a`X>CX+Hntd3INPh9LcVW@h}QRm0&9=96}OJ+F+R8`xR0bDuj81Lsg1c!La;|hH|uF&Ce zh1Eaf3U|S^o}va<_^Ujj>tDLU#jwK1FgP)Fzt|N@Pq>s`M_NN~(>m+}L>EOTPr(a* zPUn%nm8SRtxdNC?CWprf3LD+v1P^#QLGjoH3h+3=02XwE6MXFkAGlS%wuX-5wa2BK z5Nk16w@x42E_e7Yp^EqB$O5s^BWkY|NEH=)29n@+=zJDbQJAp|YJ&uW@5T3%d~3ON zDD&d)l6)&^Ri5+W`-|_E46G!vmLBse5OyyEVi$rR;>8QImjOK!YwT7pUf9nJYKDXk z_3?bfZyX@`XR%qtX@eJkujHShXM{a{$g4ou$qc!*A^LOghK7Wl%)rM}C**f~@xtC_ zXs(H}ym;XvGjvy$>ctP0yyp5$;Cl)ehAG%MOcrRq@-uy8f*&sVwj`{@2Kedv`XeN- zSqX*g>bOVkP1Jsm+T%>=Sg;w~ecAE35xZgo>SfCBzV=iMyDjd!koX1^8wKH6TcP|Z z9G3`17fXFHzUWF(CTh0D5W2`s2l_HTn2F<{8l?u+Lgr|j5y6K_{)ln}yvd7?aLIzh z%3%~-oZaw%L-Ow{?}M-P;$tL#P&o+xN+}#6OlxOS#wSYtfN}u*=cum>p(q)=FE#LD zcO*KLF8Te6Yd;=1?e&6|vY=Y22JbspdqFq6pq=FRDf__h^LjxC@P5?5*T3Lq$?sM6 zqW(^=_IpWwkFp26b*?xSzzDkI1$WAV-O6qh6nnj(FL-}y;Ok#-ujF?ryHNj0uNMrJ z{1#;k_@Q3>Xvx2!yaE0$5AUM!56FVomDf?w(^Ej>$4P#bvI=}>FaB}KuT)loZ|%kB zN&fH3-@&JQ@e?G!LRkSm!Hdrqyo;7A%TZwSDkzW-EK`<&H+%8ZCBIZz3f|Ta9W>RRd|OSR1t)_R8VYO{*MCBzD~7TcVUF#>b7njT{7ZV89t`_uA}2;^?}@(?vY#1_X|sS87F zPa%sk+q#4_h5Hvyy9ihl!^hki*^jvvhZwOZNTJ0cCO!Ajb6@1C;QjPmcsy|*fIJO( zpq>Zmc`)*H@F99Gb{gW|f;_zu?KI!{cCcE9Qe0%MRd&)ky zyK~)RZr3^Ubyxe#{Kaz{+#iOz-FGIq-FI(rZ}|H9q$dx!m%6)7n*WOX>ynlq?sDIA z-CeQh`qk~VYn)H27b@(3^4a%kY_0n<_0Bc+5p(kFN&L_n`*B0nMEfTOoDq5di^C19 z7Wr8ys|OJ;UuVCAG2-rb>@J1ntF8_9mMovMXYC&{q0dQn_8#|NVE-b3#j4*dv*)sj ze86(M%Rl-T_ll!eGc7Dm{b-9l*FT>qi!53Bq&_;dhpjlrpO4>azsFxKOmhq`&v{7U zB`J=F8&y?D#s&M^uz@xJZ>W8nIcz-ZMC8fk>g$6Y0j!sLdP-w3g^jm51I20)E5%HS z-28guwIfX-;*RgJMBSfj3c_`8Vf!bdc>5=!U9EkcXz;d(Ky_R*M+85#Ji1h2k^JG6 z(T|x}0zX|IUC3Bs;R9=;ff)Y4n%I|fxG^Zs?@4uhGe@|;A=W_cfYxg0Zm)@>5jW z`gxqaiSqK(YRpk*Bo8;o&)VVZhaRoFaXaS@rk1tC<@gTHG6gFpw6pWFLA7*t z8d-(PTBC`iZq6|Z3+FSkoxX~11lpeX&k(KGtGhcVW-vQ%`e$dY!lHQeUz~1*Mf2!9 zr_ErBLDfukgbQutOmNn;S8sXKxtd$5obND0XoX3wZSRPvddsKO>)gut z#&x308EW56pt9CGFDN``le3q>aBvC9*Q&d>Iu98#CNZrOhu(80F=bWC*&ZT#GX)D{X$24eiI*^oBfVm)=8X{ z-Bi1}Yfko5COGw&n*FdWyuCF0s-$?&m$K(JS9f&kVJXh><5zZOR~n0RjC}Rp?6bbI z>MMt{JDd5NBZuG4c$3ew*V_2n3B!9v6;!q=sBB$O*`}Z}v!L>(g37i9mF)^D+ZR-J zD5&gMP}!-VvU5RYmx9W!1(jI^mED$9-dt8yI{e+1+-w|?tpqA?%THbNrODTP`4FEG z7Y#wzYp>U0&q1flETooiY2KW7?0-vzk)J;_-0bG-26bN;B0Dtf!S0!T3y-!P$&a=j zRXta7EBB8Y@IuvbYb5*0kY)l)!@fX-I_o!&KNr%xh|Y*mXMO$OIiy)fjnSdsE2Oyx za`^W{n&-Sinw#-Kd=Mw^37(MVb%b?(K}fR>k0f|Png$m6i$a>dT1YdqKBOr=T879l z*Gc+_KD!~PS?3khti#D{kQUV3Pc^9M9n`G*(V(VQuOXh(E~_)J*!hpk@+FmZ`~a3~DB`CO;C?-02n66hpW%sCmu>>c*g^Sd${C zdFBUUO<}TrDy;eAfz2(n9cT0Pfz4w$p*c<`gFVc1-g&AZru>eHlM2O7B>^BBBUGmhZA+X7q9}9-||2u)rZ*B-|)_4M& z)tw}x2o)g_9&x!8gpE=RhG-22yuKMWauR78t@q>n+ z3vP;&%bz{bbs-!le%Deak97ZkaC1LKUL#HPXONLFAazLBk=#fT@EIZ{c}{i(-*B>9 z<8`tto)S;ghc_cIwe$S(b1k9!BA|I=cyp(GvF1j8OL$ZN6$-!grby1JvLe@*_`Ye@ zhnT6#f>WX5ZpX!WggWxL^{t=Web^8y|8={MFEOM)aQAVZEWhLKL;X#=k59dJAMYX< zy9dj}=GlFS!+f#((1M9S_JgW*83+}KWnTYtsw)V5|M<_TUZXSWozt!5RlOsl8%~VQ zKol?5c%K*@GifJA$4uhH=!1wG&xq`|VsfaJI?ik>o|6;#_Ww?caGLW+pBC|`evzdL zuN-3^pr}D5jzRqXvG%W+_qkDHre=?`Z&po%BS-NuHP%w?1j%QywT}U(IcYrYImcn` zG$&3A*u~?BulZN?KO3n%uU(1RRgFcCD?Del)oA#!W1R2(`G)k|Ovc-f7+u}gIBX_9 z(n3$?URG4&GW$RO$RnNs{_3|+_H>lzRQ#76@gy4lb53(`l9O;S((atHB1VS3Zwz)KpVUM+xfVYxmR3|;TJxS15W@? z0(rn+fv128z(n9_U=rX0#4my-15^=(@vw=B)3X}qKftP@nfqB4uU;*$7PzEdn76GpUi-FgGCBRZ(8L%8!0sI|U z39JHM2i^cy1LZ&ku*QzCdnGR31gZcIyalWU-UikI?*Q)t>wyixMqm@L8Q21B1>OU; z0o#Ecz)s*Fz%F1num{)+>;tNS{lEd>pb+UH;Ce1il7pfpfrl;2Xg8E&f~pE&`W;%fJ=jD)1ff zJx~W+1Fi#ZK>Wsv0SaIMi~vq~$p`QS`~ZI-00;zvfM6g5Fas7K6bN(R=VOg<5e`HE zR=@_>0S6EXGzOx8XdniN1>%5sAOT1Ol7M8u3GBqLlK!F2Z#LY<4)RUShL5tVy-(!s z_BjOJ>;G#!8xgP#%ywW$D4%&Wccv1u3pe|L13+s#&%ZKiuR)DkXzk5ksv8wMRvmkP g?rh#?%;(CIu3hJjh7@Y^xet-PZW5*4D-z>_J&%|$X4+|PB|#b zCyxcYKWi_Y&HB>yTCYkSGul3ru9QEF%yeohIPflPRv4=&uJ~CQdQAyxeP<7rvguOo zy(8P^L=?}zb9GG~6^qVER7^%+7Vb`%$KT(yBfmAsZj>IDUc)QRpMRo^obC{)SnpfM z=~e5lTephwhILP@a!{nbTVcrB5sTZ7}h^I--{OJE;h!-IhCFqj8fa0JlR z!BIfB0O(kA9MCNRjs7FayP<4Rf+}Dm#xkJe=XMsb@g+bv1$uz)GN9wzxdQ0c09_sM nt@P9#6{vM}Q{5UNh4xZT^MYr_-;MQW(N~BFr!TmJHZ~j2>tEX7YNn!RddiR~R4&rDLhpawro2OKE7=k$r@2C(REhlN ziXl4DZAPV9H#SMww3RA)exjlbc>(pNsO}_ftzlXt<0oy}v_{BHm8qP^s??U0Ir^A+ zX-ET|iKx?Q-;?pi%&N*{IP-kVRyu=rD^%ok?dTj#Tf^k)@9p`yYFuU;I&bSPG{!>X z`S~x}kbFCr8?JBLGG3x}~}fCgq!#vE4Frg=9?XeJ-a?`>(hZ^qZP1c546c^q6P(LtV~?qd=YDB>Q* zQDWp@?!3$#8^{w`MFlIEXPq+Y`~+L9A_)0;-X5KadyMAQ>r9^^pIYfup|vZuVSSFt zkJfKBZeMJRWXqj2VyKlucMB?W`Bp5FXeP7jRYn-yE{0n<)KsCShMY?Dt6$yk3_Ai* zd)bj#*BMjE@xtybnDR$%A{QBC3*w8Ny?Tm=a*y0k?i;snC0)5TDTowc9UQp3%)Dnt z{>=5tZ|#@X9bCaQ`f2?G)bNa>@wqDj?|;E#x_6%tEMa?{@qToIRae delta 259 zcmdlGdBk;t1)HD?gAs!<5L*CA69zK|lg&SQ{TVk;V^?6F949TaIe=S&5mV9RnZmJ~ z?uaQ#N+$G7wjH!O}Qkh~# zK{qVM7;lb}vtz;{HB(r6^C1O2Mqxt+19W|x8I@jQm-wx0&NMkgO=~lc#u63) ^args, SheetCheckerContext ^c System::Boolean readRomHeader( System::String ^srlfile, ROM_Header *rh ); System::Boolean readSheet( System::String ^sheetfile, SheetItem ^item ); System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ); +void printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ); // ------------------------------------------------------------------ @@ -26,6 +28,9 @@ System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpa int main(array ^args) { SheetCheckerContext ^hContext = gcnew SheetCheckerContext; + ROM_Header rh; + memset( (void*)&rh, 0, sizeof(ROM_Header) ); + SheetItem ^hItem = gcnew SheetItem; // getopt int argc = parseOption( args, hContext ); @@ -34,96 +39,127 @@ int main(array ^args) if( argc != 2 ) { hContext->ErrorCode = SheetCheckerError::ERROR_ARG; - Console::WriteLine( "error arguments" ); - return 0; + printResult( hContext, &rh, hItem, nullptr, nullptr, 0 ); + return -1; } System::String ^hSrlFile = args[0]; System::String ^hSheetFile = args[1]; // ROMヘッダの読み込み - ROM_Header rh; - memset( (void*)&rh, 0, sizeof(ROM_Header) ); if( !readRomHeader( hSrlFile, &rh ) ) { hContext->ErrorCode = SheetCheckerError::ERROR_READ_SRL; + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, 0 ); + return -1; } System::UInt16 crc; getWholeCRCInFile( hSrlFile, &crc ); // 提出確認書の読み込み - SheetItem ^hItem = gcnew SheetItem; if( !readSheet( hSheetFile, hItem ) ) { hContext->ErrorCode = SheetCheckerError::ERROR_READ_SHEET; + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); + return -1; } // 一致判定 - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( memcmp( rh.s.game_code, hItem->GameCode, 4 ) != 0 ) { - if( memcmp( rh.s.game_code, hItem->GameCode, 4 ) != 0 ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_GAME_CODE; - } - else if( rh.s.rom_version != hItem->RomVersion ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_ROM_VERSION; - } - else if( crc != hItem->FileCRC ) - { - hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_CRC; - } + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_GAME_CODE; + } + else if( rh.s.rom_version != hItem->RomVersion ) + { + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_ROM_VERSION; + } + else if( crc != hItem->FileCRC ) + { + hContext->ErrorCode = SheetCheckerError::ERROR_VERIFY_CRC; } - // 通常の表示 - if( !hContext->bSubmitVersion && !hContext->bResult ) - { + // 結果表示 + printResult( hContext, &rh, hItem, hSrlFile, hSheetFile, crc ); + return 0; +} + +// ------------------------------------------------------------------ +// 結果表示 +// ------------------------------------------------------------------ + +void printResult( SheetCheckerContext ^context, ROM_Header *rh, SheetItem ^item, + System::String ^srlfile, System::String ^sheetfile, System::UInt16 srlcrc ) +{ + System::UInt16 tadver = item->RomVersion; + tadver = (tadver << 8) | item->SubmitVersion; + + // 通常の表示 + if( !context->bSubmitVersion && !context->bResult && !context->bTadVersion ) + { Console::WriteLine( "" ); - Console::WriteLine( "SRL: " + hSrlFile ); - Console::WriteLine( "Sheet: " + hSheetFile ); + 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], - hItem->GameCode[0], hItem->GameCode[1], hItem->GameCode[2], hItem->GameCode[3] ); - printf( "RemasterVersion: %02X %02X\n", rh.s.rom_version, hItem->RomVersion ); - printf( "File CRC: %04X %04X\n", crc, hItem->FileCRC ); + 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( "SubmitVersion: - %d (%02X)\n", hItem->SubmitVersion, hItem->SubmitVersion ); + printf( "SubmitVersion: - %d (%02X)\n", item->SubmitVersion, item->SubmitVersion ); + if( item->Media->Equals("NAND") ) + { + printf( "TAD Version: %d (%04X)\n", tadver, tadver ); + } printf( "------------------------------------\n" ); printf( "Result: " ); - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( context->ErrorCode == SheetCheckerError::NOERROR ) { printf( "OK\n" ); } else { - printf( "NG (%d)\n", hContext->ErrorCode ); + printf( "NG (%d)\n", context->ErrorCode ); } } // オプションのときの表示 - if( hContext->bSubmitVersion ) + if( context->bSubmitVersion ) { - if( hContext->ErrorCode == SheetCheckerError::NOERROR ) + if( context->ErrorCode == SheetCheckerError::NOERROR ) { - printf( "%d\n", hItem->SubmitVersion ); + printf( "%d\n", item->SubmitVersion ); } else { - printf( "%d\n", hContext->ErrorCode ); // エラーのときはエラーコード + printf( "%d\n", context->ErrorCode ); // エラーのときはエラーコード } } - if( hContext->bResult ) + if( context->bTadVersion ) { - printf( "%d\n", hContext->ErrorCode ); + if( !item->Media->Equals("NAND") ) + { + context->ErrorCode = SheetCheckerError::ERROR_ARG; + } + if( context->ErrorCode == SheetCheckerError::NOERROR ) + { + printf( "%d\n", tadver ); + } + else + { + printf( "%d\n", context->ErrorCode ); + } + } + if( context->bResult ) + { + printf( "%d\n", context->ErrorCode ); } - - return 0; } + // ------------------------------------------------------------------ // ROMヘッダの読み込み // ------------------------------------------------------------------ @@ -192,6 +228,8 @@ System::Boolean readSheet( System::String ^sheetfile, SheetItem ^item ) System::String ^text; try { + item->Media = getXPathText( root, "/Sheet/Media" ); + text = getXPathText( root, "/Sheet/GameCode" ); char code[4]; int i; @@ -269,6 +307,11 @@ System::Int32 parseOption( array ^args, SheetCheckerContext ^c context->bResult = true; numopt++; } + else if( args[i]->StartsWith( "-t" ) ) + { + context->bTadVersion = true; + numopt++; + } else if( !args[i]->StartsWith( "-" ) ) // オプションでない引数のindexを記録 { indexList->Add(i); diff --git a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h index da775ca..11ba604 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h +++ b/build/tools/MasterEditor/SheetCheckerTWL/SheetCheckerTWL/SheetCheckerTWL.h @@ -16,7 +16,7 @@ enum class SheetCheckerError ERROR_VERIFY_ROM_VERSION = -3, ERROR_READ_SRL = -8, ERROR_READ_SHEET = -9, - ERROR_ARG = -0xA, + ERROR_ARG = -10, }; // 実行Context @@ -25,12 +25,14 @@ ref class SheetCheckerContext private: System::Boolean ^hbSubmitVersion; // オプションフラグ System::Boolean ^hbResult; + System::Boolean ^hbTadVersion; SheetCheckerError ^hErrorCode; // エラー情報 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 ); } property System::Boolean bSubmitVersion @@ -43,6 +45,11 @@ public: 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 SheetCheckerError ErrorCode { void set( SheetCheckerError code ){ this->hErrorCode = gcnew SheetCheckerError(code); } @@ -58,6 +65,8 @@ private: System::Byte ^hRomVersion; System::UInt16 ^hFileCRC; System::Byte ^hSubmitVersion; +public: + System::String ^hMedia; public: SheetItem() { @@ -66,6 +75,7 @@ public: this->hRomVersion = gcnew System::Byte(0xFF); this->hFileCRC = gcnew System::UInt16(0); this->hSubmitVersion = gcnew System::Byte(0xFF); + this->hMedia = gcnew System::String(""); } ~SheetItem() { @@ -91,4 +101,15 @@ public: void set( System::Byte v ){ *this->hSubmitVersion = v; } System::Byte get(){ return *this->hSubmitVersion; } } + property System::String ^Media + { + void set( System::String ^str ) + { + if( str != nullptr ) + this->hMedia = System::String::Copy(str); + else + this->hMedia = gcnew System::String(""); + } + System::String^ get(){ return System::String::Copy( this->hMedia ); } + } }; diff --git a/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl b/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl index 3859138..2952996 100644 --- a/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl +++ b/build/tools/MasterEditor/SheetCheckerTWL/extract_sheet.xsl @@ -30,6 +30,9 @@ + + +