From d30dd83d52d0a98b871aa46bfcc9001a98e513b8 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Fri, 16 Jan 2009 09:07:20 +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:NAND=E6=B6=88=E8=B2=BB=E3=82=B5=E3=82=A4?= =?UTF-8?q?=E3=82=BA=E3=81=AE=E7=AE=97=E5=87=BA=E3=82=92=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E3=80=82GUI=E3=81=AF=E3=81=BE=E3=81=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@114 7061adef-622a-194b-ae81-725974e89856 --- .../MasterEditorTWL/MasterEditorTWL.ncb | Bin 11373568 -> 11398144 bytes .../MasterEditorTWL/MasterEditorTWL.suo | Bin 65024 -> 65024 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 20662 -> 12036 bytes .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 24 ++++ .../MasterEditorTWL/MasterEditorTWL/srl.h | 127 ++++++++++++++++-- .../MasterEditorTWL/utility.cpp | 13 ++ .../MasterEditorTWL/MasterEditorTWL/utility.h | 5 + 7 files changed, 155 insertions(+), 14 deletions(-) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb index 4bc8e434c30bae6ad2d8369a54d9fd0fe8fd598b..393c9f32e0ef24ad0b8c15155a7a73b1bf04fe32 100644 GIT binary patch delta 65212 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 diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.suo index 5ce118992b6beef8bd48e03f5ff322603e6696e6..ca155ba68f3b73748f4b5d189bb3ac1fad97d5c6 100644 GIT binary patch delta 5140 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 delta 2623 zcmaJ@2~d+q6#n`{od}&9&h7n z(6|~jMJr@B16Il}wI3}>Qctw*Xz^&Tq76cegP-Ld`bCKBXizOjYhw_kL#QTS8;NKp zlxceF`ygucdcE*iI-uE&lNu9B6MSGdY zoA((E%aGcP)}GggE|gg;%tZA$$$ziJb23po!#1?!-kE?hYb{qbRk^_;ffhLoz=RBr26S8 zFkCz@jE#+eI7P=DZ>*42chrkM?RdJol(|PG`UMQfp+=zjcEmPjC~M3c-vdg=gyc<% z*0`7i;p%k=T5SefyuzQ1)v>|}GW0xY;g83Lx(!qs^R+9?==5m-jPzJnbJh=&0#V`lwO6HSTj`T zDp0+u(I7vUaPK(mo)u;0W;H>>v)0UDkh~@sl)zqfrkaBpy*viONSBz$$A9E)6D$lh7NwtXLuB7Ka({gMu;E^K z;r9y6zEcAyYW%eqNTBYtaZj~{F)N&}v2s_Djp3P00k&t#iwE1xbN0-|{t^%O>_XwS z{M$4Vi|4f^VT>j6Hy?+w)=3xuT^89Soryab2evXBxawWF#k4WyIVRBmR1Xi;5D4At zYH5;vds7%>pBn_#+5QlOf8$QsThje?Dv-hcCzttU&jbcpYwZv;*%UbH%SWHnclWIU z#kh9A(hYBxu|b>?HadL6f``Ed#Br z8Fv;jCB*ZBi^O^}8kMo=^n99e2xz?Vf}>Oj#{ga1@d%xPoTfI>Bue9NoM^ z#Q2f62(ByQ`9xsZFF1rw=>Rrp;$H+w0Ubk3YjQ$x6wGgkDVTGDqhKxw?n*Q6n&55< zj)J*`7(Y^#;AoBp#8zB=Fs|JRJ1Vjup(?2e6M|K6n&||e= z3iA}6kYT)Ps_y&r`l)~XdnkUo7_(+P)Rr9M>|^{D<%LZpSt5ts1Dw#gQ(Mo#H_@s>)4A6Bm=rJTQBr=pt4rJ5ZY-YcMQ5cJ&&5Vwg aOx#5bIY8CP3-92;o#kB%oHcY{xbQCr)h# zQVG=;gj9qC_1riVRpLky>H?w&6bT^&2M$PZMJl&~1P3m>4tz7)-5oodV`c5yGygZ= zeE(zq@#_~qz3KTV-eo2yRh>E>Q(fgRYQjsRLc1ELPTlS1df`ALT3(;2)2TAF!D)8aSw;(p{QkJ@hga z!C!CVX^jRP#IU6^3nlB&r*J7YQ)Bu)nK8Yw)u~+ZNyMCE(+?`<~!G?(2U_BOPLk z5LCu{144_mjYp#?+LAJ#g$rBKp(33HbpuWbYXS2jX`+;h)H?Kg%u1(Pb|&{Wc6pR^ z{+@o6e;qpP)dk)T_cV4janCEbxzM7G-#!6UWI`BG&5|T~Ou=JT^II z48;N>Z^vEpmg!$Pz%zqB{@B5<_&f1F{(-I;?+*2LyR9(pXqN?5%7tp4KRy_+Sj;$d zP4IMRfa^U0uK9gYk*||7dVca#H#}&-8<9V8EE@cpzQiv++{=>@pMOeP@_4V&Nq#*% zCUkKp!ZCsJXnffp_2i7IKj(D1w7XjB1X9UWB4bZl)Mw8PfXLFFEoN5V(k_UP!K5_>li zbj5abP>EfR40qYQ{O|CDGP)HGH*FhIC~hE^4l30f>_7G$Yq987fBtADi3lg}&;QAO zVDGcvm^!;hzirElWIW%*(_w}Up0|_&GhQzINKPV+uKwHe<(}^*j?-{^NFiGd=5$IdRDc!*N ztm1O6V{FZzL$|9dH=TyNLA~ESgMm7BQOYe1H9 zTQ<7oMyG`Up6eMrW0KbZ693c0m1setRomInfo(); + (void)this->calcNandUsedSize( fp ); // NAND消費サイズ // すべて設定したあとにMRC { @@ -967,3 +968,26 @@ ECSrlResult RCSrl::searchLicenses(FILE *fp) return ECSrlResult::NOERROR; } //RCSrl::searchLicenses +// ------------------------------------------------------------------- +// NAND消費サイズを計算する +// ------------------------------------------------------------------- +void RCSrl::calcNandUsedSize(FILE *fp) +{ + this->hNandUsedSize = gcnew MasterEditorTWL::RCNandUsedSize; + + this->hNandUsedSize->IsMediaNand = this->IsMediaNand; + this->hNandUsedSize->IsUseSubBanner = this->IsSubBanner; + + // SRLの情報を登録 + this->hNandUsedSize->PublicSaveSize = this->PublicSize; + this->hNandUsedSize->PrivateSaveSize = this->PrivateSize; + fseek( fp, 0, SEEK_END ); + this->hNandUsedSize->SrlSize = ftell(fp); + + //System::Diagnostics::Debug::WriteLine( "SRL " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->SrlSizeRoundUp) ); + //System::Diagnostics::Debug::WriteLine( "PUB " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->PublicSaveSizeRoundUp) ); + //System::Diagnostics::Debug::WriteLine( "PRI " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->PrivateSaveSizeRoundUp) ); + //System::Diagnostics::Debug::WriteLine( "TMD " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->TmdSizeRoundUp) ); + //System::Diagnostics::Debug::WriteLine( "SUB " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->SubBannerSizeRoundUp) ); + //System::Diagnostics::Debug::WriteLine( "ALL " + MasterEditorTWL::transSizeToString(this->hNandUsedSize->NandUsedSize) ); +}//RCSrl::calcNandUsedSize() diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h index fdfbf69..8e12c63 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/srl.h @@ -7,6 +7,7 @@ #include #include #include +#include "utility.h" namespace MasterEditorTWL { @@ -51,7 +52,7 @@ namespace MasterEditorTWL SECURE, LAUNCHER, ILLEGAL, // 不定 - }; + }; //ECAppType // ------------------------------------------------------------------- // Type : ref class @@ -94,7 +95,7 @@ namespace MasterEditorTWL { System::UInt32 get(){ return (this->code); } } - }; + }; //RCSDKVersion // ------------------------------------------------------------------- // Type : ref class @@ -134,7 +135,7 @@ namespace MasterEditorTWL { System::String^ get(){ return System::String::Copy(this->hPublisher); } } - }; + }; //RCLicense // ------------------------------------------------------------------- // Type : ref class @@ -214,7 +215,7 @@ namespace MasterEditorTWL else return (gcnew array{this->hNameE, this->begin.ToString("X04")+"h", this->end.ToString("X04")+"h", this->hMsgE}); } - }; + }; //RCMrcError // ------------------------------------------------------------------- // Type : value class @@ -244,7 +245,7 @@ namespace MasterEditorTWL { System::UInt32 get(){ return this->end; } } - }; + }; //VCReservedArea // ------------------------------------------------------------------- // Type : ref class @@ -280,7 +281,101 @@ namespace MasterEditorTWL this->hReservedAreaList = gcnew System::Collections::Generic::List; this->hReservedAreaList->Clear(); } - }; + }; //RCMrcExternalCheckItems + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCNandUsedSize + // + // Description : アプリのインポート時NAND消費サイズクラス + // + // Role : 構造体としてデータをまとめておく + // ------------------------------------------------------------------- + ref class RCNandUsedSize + { + public: + property System::UInt32 SrlSize; + property System::UInt32 PublicSaveSize; + property System::UInt32 PrivateSaveSize; + property System::Boolean IsMediaNand; // NANDアプリかどうか + property System::Boolean IsUseSubBanner; // サブバナーを使用するかどうか + public: + static const System::UInt32 TmdSize = 16 * 1024; + static const System::UInt32 SubBannerSize = 16 * 1024; + private: + static const System::UInt32 NandClusterSize = 16 * 1024; + static const System::UInt32 ShopBlockSize = 128 * 1024; + public: + property System::UInt32 SrlSizeRoundUp + { + System::UInt32 get() + { + if( !this->IsMediaNand ) + { + return 0; + } + return (MasterEditorTWL::roundUp( this->SrlSize, NandClusterSize )); + } + } + property System::UInt32 PublicSaveSizeRoundUp + { + System::UInt32 get(){ return (MasterEditorTWL::roundUp( this->PublicSaveSize, NandClusterSize )); } + } + property System::UInt32 PrivateSaveSizeRoundUp + { + System::UInt32 get(){ return (MasterEditorTWL::roundUp( this->PrivateSaveSize, NandClusterSize )); } + } + property System::UInt32 TmdSizeRoundUp + { + System::UInt32 get() + { + if( !this->IsMediaNand ) + { + return 0; + } + return (MasterEditorTWL::roundUp( this->TmdSize, NandClusterSize )); + } + } + property System::UInt32 SubBannerSizeRoundUp + { + System::UInt32 get() + { + if( !this->IsUseSubBanner ) + { + return 0; + } + return (MasterEditorTWL::roundUp( this->SubBannerSize, NandClusterSize )); + } + } + property System::UInt32 NandUsedSize // 全体のNAND消費サイズは変数で持たず property で提供 + { + System::UInt32 get() + { + // NAND消費量の計算式 + // 以下のファイルをNANDクラスタ単位(=16KB)に切り上げて合計する + // + // SRLの実ファイルサイズ + // Publicセーブデータサイズ + // Privateセーブデータサイズ + // TMDサイズ(=16KB固定) + // サブバナーサイズ(使用時には16KB固定 不使用時には0KB) + if( !this->IsMediaNand ) + { + return 0; // カードアプリのとき0 + } + System::UInt32 size = this->SrlSizeRoundUp + this->PublicSaveSizeRoundUp + this->PrivateSaveSizeRoundUp + + this->TmdSizeRoundUp + this->SubBannerSizeRoundUp; + return size; + } + } + property System::UInt32 NandUsedSizeBlock // ショップでのブロック数 + { + System::UInt32 get() + { + return (MasterEditorTWL::roundUp( this->NandUsedSize, ShopBlockSize )); + } + } + }; //RCNandUsedSize // ------------------------------------------------------------------- // Type : ref class @@ -314,26 +409,29 @@ namespace MasterEditorTWL property cli::array ^hArrayParentalIndex; // 表示用のコンボボックスのインデックス property System::Boolean IsUnnecessaryRating; // レーティング表示不要フラグ - // TWL専用情報 一部編集可能 + // TWL専用情報 Read Only property System::UInt32 NormalRomOffset; property System::UInt32 KeyTableRomOffset; property System::String ^hTitleIDLo; property System::UInt32 TitleIDHi; property System::Boolean IsAppLauncher; // TitleIDLoからわかるアプリ種別 property System::Boolean IsAppUser; // TitleIDHiからわかるアプリ種別 - property System::Boolean IsAppSystem; // - property System::Boolean IsAppSecure; // - property System::Boolean IsLaunch; // - property System::Boolean IsMediaNand; // - property System::Boolean IsDataOnly; // + property System::Boolean IsAppSystem; // + property System::Boolean IsAppSecure; // + property System::Boolean IsLaunch; // + property System::Boolean IsMediaNand; // + property System::Boolean IsDataOnly; // property System::UInt16 PublisherCode; // - property System::UInt32 PublicSize; - property System::UInt32 PrivateSize; property System::Boolean IsNormalJump; property System::Boolean IsTmpJump; property System::Boolean HasDSDLPlaySign; // ROMヘッダ外のSRLからわかる署名の有無 property System::Boolean IsOldDevEncrypt; // 旧開発用暗号フラグが立っている property System::Boolean IsSCFGAccess; // SCFGレジスタをロックしている + property System::UInt32 PublicSize; // セーブデータサイズ + property System::UInt32 PrivateSize; + + // NAND消費サイズ + RCNandUsedSize ^hNandUsedSize; // TWL拡張フラグ Read Only property System::Boolean IsCodecTWL; @@ -420,6 +518,7 @@ namespace MasterEditorTWL ECSrlResult searchSDKVersion( FILE *fp ); // SDKバージョンを取得する ECSrlResult searchLicenses( FILE *fp ); // 使用ライセンスを取得する ECAppType selectAppType( ROM_Header *prh ); // TitleIDからアプリ種別を決定する + void calcNandUsedSize( FILE *fp ); // NAND消費サイズを計算する // MRC(Master ROM Checker)機能 ECSrlResult mrc( FILE *fp ); diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp index 016b703..97d7ecd 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -576,3 +576,16 @@ System::Boolean MasterEditorTWL::IsSDKVersionRC( u32 target ) } return false; } + +// ---------------------------------------------------------------------- +// src を base 単位に切り上げる +// ---------------------------------------------------------------------- +System::UInt32 MasterEditorTWL::roundUp( const System::UInt32 src, const System::UInt32 base ) +{ + System::UInt32 div = src / base; + if( src % base ) + { + div++; + } + return (div*base); +} diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h index db36f1b..eef629f 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h @@ -193,4 +193,9 @@ namespace MasterEditorTWL // System::Boolean IsSDKVersionRC( u32 target ); + // + // src を base 単位に切り上げる + // + System::UInt32 roundUp( const System::UInt32 src, const System::UInt32 base ); + } // end of namespace MasterEditorTWL