From 28a159235036ee008dadaad387862c03c60ad322 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 28 Aug 2008 12:03:04 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=20=E3=83=BB=E3=83=93=E3=83=AB=E3=83=89?= =?UTF-8?q?=E3=82=B9=E3=82=A4=E3=83=83=E3=83=81=E3=81=A7=E3=82=B7=E3=82=B9?= =?UTF-8?q?=E3=83=86=E3=83=A0=E3=82=A2=E3=83=97=E3=83=AA=E7=89=88=E3=80=81?= =?UTF-8?q?=E3=82=BB=E3=82=AD=E3=83=A5=E3=82=A2=E3=82=A2=E3=83=97=E3=83=AA?= =?UTF-8?q?=E7=89=88=E3=80=81=E3=83=A9=E3=83=B3=E3=83=81=E3=83=A3=E3=82=A2?= =?UTF-8?q?=E3=83=97=E3=83=AA=E7=89=88=E3=81=AB=E5=88=87=E3=82=8A=E6=9B=BF?= =?UTF-8?q?=E3=82=8F=E3=82=8B=E3=80=82=E7=BD=B2=E5=90=8D=E3=81=AE=E9=8D=B5?= =?UTF-8?q?=E3=81=A8=E3=82=AA=E3=83=BC=E3=83=AB=E3=83=AA=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=81=8C=E7=95=B0?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E3=80=82=20=E3=83=BBTWL-MRC=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E8=BF=BD=E5=8A=A0=E4=B8=AD=E3=80=82=E7=BD=B2=E5=90=8D?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=81=A8=E3=83=9A=E3=82=A2?= =?UTF-8?q?=E3=83=AC=E3=83=B3=E3=82=BF=E3=83=AB=E3=82=B3=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=8C=E6=9C=AA=E5=AE=8C=E6=88=90=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@2313 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11103232 -> 11103232 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 41984 -> 39936 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 10706 -> 10938 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 57 +++++- .../MasterEditorTWL/MasterEditorTWL/keys.cpp | 182 ++++++++++++++++++ .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 138 ++++++++++++- .../MasterEditorTWL/MasterEditorTWL/srl.h | 3 + .../MasterEditorTWL/MasterEditorTWL/stdafx.h | 1 + 8 files changed, 370 insertions(+), 11 deletions(-) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index 809f9097a3b619c51ac10083fa99e07db9a969ab..0b887d0bebd01144b1511cf0558cf5c13c003f8e 100644 GIT binary patch delta 54067 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 delta 28100 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 pqI{qJynv>?Fhs!XWo6E z@AtjmIp6Jk=WOe*t=0?H@v~Oxc$drd1iTPl1n=zX>KcRi6nrdv9J~Zx3@?RGfKP;b z;X~n_yJiedp8`<@uZB;BPlMOMr^9O{H|k8lZuA^KUAy3eUKdRiVCzI@wcTmiyqm0z zsj$xj%GsC^_ID7@jhN3ZlPdL(50^YU+PM|`S#-aCE@My!v)~@NoRDOC$)^b^CRXkz ztcZRR^utV9o!DYk7^fpK+6-j!r$-7C|I_*JE;i0W`8jxhG|qOs$w9Z(;c{*bbQ|M# zItE=ga%@2~yC*xIpCR7#RyXhXwA@b`AI$JsX0p?qS!1L;Hox~Xs2IXpDc#g%7tS4f zC^+;fV>jJ>`AQ%=)0sD{&9ZMU$eR_+-e=huWS6w%9Ef(Mpha4ET;dy9>mCA<{(#&X zIX&8B0F4eK$M@JiTkPz3Co}IIOWM;@({7+XhWCc`9Nr9c-MLrbGkuSuW7$~cT~pm~X#WY|09PJ6{BV}^xq?f9OyjkPyMR##TJGm$tdTobn&r93pFISunG zO<-H9TwS}|bJEjRe9{xD`BizmWZB8`!n(fVee}J+)_7T8QCz~_bRvPhVb}C3t|;gP zppkLijC>UIXvERVEGeljFUdoRtqYa*hc1GqEmKwi-K6Y*GLH4IoT`2;+Vv>pW8u+= zZ|bFJ*I=N257D$%6O`N2YC?0r6LphiRgK?#AwSeqySeBi!nuxb`Yb$&4~n;HuNiYh zF4rabxuH1@`n&K-_(?76b_lHicGecVF$#;))iuw0FeS(96WkZ(C4?SlSJJW=w0vls z$KSy@`gS<)LB@w?1pK_qmG}UrqSgjXljfP#-c%@BHay%tHkkp>RmREU0ZZdK8P2PM zcG~=}8tH0T?(ebO|Kiqz-9ZfZ<$LInU>(YaLEqK9ZJzGDpMq_NrtMdj4&A1#xL8iJi`bSBG{c-UP~6 zUkA-cW|lJEuQuN0M{v1*sgSe(HuM0*L(1x)4@1-1mAwdk8k!frtn4M|E1LIbWedQ* zRCZe#JAFsl-FVzTJk|FBF&LM@GekBOo&r4+F|`M4g62!pr;O{_0?qTx--E4Jwm}(Z zbqjPK#I4~xj(?}ZU5K?P&xW%Dqu@V+)0*LAbdHpHFKc-M;wx~Pz?s9&aJp%`;h}>Q zku$a;u{&ozbm=M-XdfsXh1U5f=OXe#T#_dsvJeZEarWMa)5ge&IZ0-$oSQS=&;52( zkBS25gV3~d%F>`OD7&VN*Z%^V*Z-?B9wc9B9?xUkHq;LbIuklZ83z*!Jp?hXFZL1> zd6Qm%wEmjN&3g=*oA;!$anQd}c1jr^>lA3(8D+f5d1x-%AC>X+I;VO6P?pZU%nnS0 z@6jcF9g(aCz7IMF@#o4oN(-9yjA=Qq5})Gkoe?I?+&QqV&z{JTiZik-W_w$$7ak!kgK-x}5b3 zlf^$fC%AB-kt-?t{VVjcujplSajT8WwkhKQvP;<>Wkq0nm9;5jH{XJ$9aP3M;gGVU zJ=pPX=6AiPumOqhYvRYsW`bQ%_6KGBIOW39K2yd6gkNm5%V6OHWR2EyP_59M+YQP% zs4Ynq-EfCOj!HD~4P_kFo6xjhDC4Lej#SDPP2dp}`fv{S?YyS;?As?`-Cu)FPpOrh#fdUz>7axjFJP=X9!bYD|Gtq+z5x-g;*>X> zGE%!ZC)E7QCAIQ<-=GM2*0)AXV6&v|h{N}AMxb$cge3DfCv*NrBdvir^r+6tFOWWs zk*?-cHpW^JE&z`0*BXeGCf^*%Uz!;yC#D%WEk8*P!A|99(zQoDa7YvbFP?uduRv1O50^Xl@* zJf``ck$Qim{V2a(T>92}Oa3x0Lo#>R*lXA2(vo;Ql(v(#V~LTU?dp_mn|;!{WhE*+ qvT0YG69@#|Qt`$;(;+8PJ`8S&vqO8Rd$0ZhIsSpreadSheet = gcnew System::Boolean( true ); this->dateRelease->Value = System::DateTime::Now; this->dateSubmit->Value = System::DateTime::Now; +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + this->combRegion->Items->Add( gcnew System::String( L"全リージョン" ) ); +#endif + // アプリ種別をつける +#ifdef METWL_VER_APPTYPE_SYSTEM + this->Text += " [FOR SYSTEM APPLICATION]"; +#endif +#ifdef METWL_VER_APPTYPE_SECURE + this->Text += " [FOR SECURE APPLICATION]"; +#endif +#ifdef METWL_VER_APPTYPE_LAUNCHER + this->Text += " [FOR LAUNCHER APPLICATION]"; +#endif this->loadInit(); // 設定ファイルの読み込み } @@ -3239,9 +3252,9 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; System::Void saveSrl( System::String ^filename ) { // ROM情報をフォームから取得してSRLバイナリに反映させる - this->setSrlPropaties(); + this->setSrlProperties(); // マスタ書類情報をフォームから取得して書類に反映させる -> 必要なし - //this->setDeliverablePropaties(); + //this->setDeliverableProperties(); // ファイルをコピー if( !(filename->Equals( this->tboxFile->Text )) ) @@ -3334,7 +3347,7 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; // ROM情報をフォームから取得してSRLクラスのプロパティに反映させる // (ROMヘッダへの反映やCRCと署名の再計算をしない) - void setSrlPropaties(void) + void setSrlProperties(void) { // ROMヘッダの[0,0x160)の領域はRead Onlyで変更しない @@ -3345,7 +3358,7 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; this->hSrl->hIsWirelessIcon = this->cboxIsWirelessIcon->Checked; // Srlクラスのプロパティへの反映 - this->setParentalSrlPropaties(); + this->setParentalSrlProperties(); } // SRLのROM情報をフォームに反映させる(ファイルが読み込まれていることが前提) @@ -3577,7 +3590,7 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; // ペアレンタルコントロール情報はSRL内にあるが設定が大変なので切り出す // ペアレンタルコントロール関連の情報をフォームから取得してSRLに反映させる - void setParentalSrlPropaties(void) + void setParentalSrlProperties(void) { // リージョン this->hSrl->hIsRegionJapan = gcnew System::Boolean(false); @@ -3598,11 +3611,23 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); break; + case 3: + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; + case 4: this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); break; +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + case 5: + this->hSrl->hIsRegionJapan = gcnew System::Boolean(true); + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(true); + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; +#endif default: break; } @@ -3757,10 +3782,16 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; index = 1; else if( !isJapan && !isAmerica && isEurope && !isAustralia ) index = 2; - else if( !isJapan && !isAmerica && isEurope && isAustralia ) + else if( !isJapan && !isAmerica && !isEurope && isAustralia ) index = 3; + else if( !isJapan && !isAmerica && isEurope && isAustralia ) + index = 4; else index = -1; // 不正 +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + if( isJapan && isAmerica && isEurope && isAustralia ) + index = 5; +#endif this->combRegion->SelectedIndex = index; this->maskParentalForms(); @@ -4015,7 +4046,7 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; } // マスタ書類情報をフォームから取得して書類に反映させる - void setDeliverablePropaties(void) + void setDeliverableProperties(void) { // 提出情報 this->hDeliv->hProductName = this->tboxProductName->Text; @@ -4467,6 +4498,9 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; this->combRegion->Items->Clear(); this->combRegion->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"日本のみ", L"米国のみ", L"欧州のみ", L"豪州のみ", L"欧州および豪州"}); +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + this->combRegion->Items->Add( gcnew System::String( L"全リージョン" ) ); +#endif this->combRegion->SelectedIndex = index; // ペアレンタルコントロール @@ -4637,7 +4671,10 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; index = this->combRegion->SelectedIndex; this->combRegion->Items->Clear(); this->combRegion->Items->AddRange(gcnew cli::array< System::Object^ >(5) - {L"Japan Only", L"USA Only", L"Europe Only", L"Australia only", L"Europe and Australia"}); + {L"Japan Only", L"USA Only", L"Europe Only", L"Australia Only", L"Europe and Australia"}); +#if defined(METWL_VER_APPTYPE_SYSTEM) || defined(METWL_VER_APPTYPE_SECURE) || defined(METWL_VER_APPTYPE_LAUNCHER) + this->combRegion->Items->Add( gcnew System::String( L"All Region" ) ); +#endif this->combRegion->SelectedIndex = index; // ペアレンタルコントロール @@ -4865,8 +4902,8 @@ private: System::Windows::Forms::GroupBox^ gboxMakeMaster; } // マスタ提出書類に必要な情報をフォームから取得して更新 - this->setSrlPropaties(); // 先にSrlを更新しておく - this->setDeliverablePropaties(); + this->setSrlProperties(); // 先にSrlを更新しておく + this->setDeliverableProperties(); // 注意書き { diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp index 1c2d2f5c..42cae43d 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/keys.cpp @@ -8,6 +8,7 @@ namespace MasterEditorTWL { // ユーザアプリ用 +#ifdef METWL_VER_APPTYPE_USER // 開発機用ROMヘッダ署名公開鍵 const u8 g_devPubKey_DER[ 0xa2 ] = { 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, @@ -64,5 +65,186 @@ namespace MasterEditorTWL 0x43, 0x34, 0xF4, 0xD2, 0xB2, 0x36, 0x56, 0xB9, 0x96, 0x78, 0x4D, 0x7A, 0xE3, 0x4D, 0xA9, 0x5E, 0xF5, 0x3E, 0x88, }; +#endif //#ifdef METWL_VER_APPTYPE_USER + +#ifdef METWL_VER_APPTYPE_SYSTEM + // 開発用システムアプリ ROMヘッダ署名用公開鍵 + const u8 g_devPubKey_DER[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, + 0x9F, 0x59, 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, + 0x47, 0x39, 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, + 0x4E, 0x13, 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, + 0x4D, 0xB4, 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, + 0xC3, 0xB7, 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, + 0xAC, 0xD6, 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, + 0x93, 0xEA, 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, + 0xA7, 0x54, 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // 開発用システムアプリ ROMヘッダ署名用秘密鍵 + const u8 g_devPrivKey_DER[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5E, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, 0x9F, 0x59, + 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, 0x47, 0x39, + 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, 0x4E, 0x13, + 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, 0x4D, 0xB4, + 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, 0xC3, 0xB7, + 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, 0xAC, 0xD6, + 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, 0x93, 0xEA, + 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, 0xA7, 0x54, + 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0xCF, 0x67, 0xAA, 0x3B, 0x1F, 0x26, 0xC5, 0x68, 0x7F, 0x27, 0x55, 0xFF, + 0xF5, 0x29, 0x6C, 0xF9, 0x62, 0xD5, 0xCF, 0x50, 0xF3, 0xD5, 0xD8, 0x4B, 0x06, 0xE0, 0xC9, 0x64, + 0xD4, 0x3B, 0x96, 0x73, 0x74, 0xF1, 0x71, 0xB2, 0x67, 0x07, 0x0F, 0xA9, 0x68, 0x06, 0x8B, 0x97, + 0x99, 0x70, 0x6A, 0xC4, 0xE1, 0x16, 0x9B, 0xA8, 0x0F, 0xDF, 0xCC, 0x2B, 0xE7, 0x37, 0xFC, 0x6A, + 0x67, 0x8B, 0x99, 0x9E, 0xD1, 0xDA, 0xCC, 0x68, 0xFC, 0xEB, 0x8D, 0xFE, 0x42, 0x84, 0x72, 0x88, + 0x05, 0xAF, 0x23, 0x32, 0x30, 0x1F, 0xFA, 0xCC, 0x67, 0x52, 0x93, 0x6C, 0xC1, 0x0A, 0xCF, 0xD6, + 0xD3, 0x5F, 0x75, 0xE9, 0x4D, 0x32, 0xC0, 0x31, 0x1B, 0xD4, 0xB5, 0x4B, 0xB4, 0x4E, 0xB0, 0x3E, + 0xD5, 0x6C, 0x3C, 0xDC, 0x57, 0xBB, 0x32, 0x24, 0x41, 0x9C, 0x79, 0xBE, 0xFC, 0xC0, 0x3B, 0x63, + 0x0C, 0x5D, 0xC6, 0xE5, 0x02, 0x41, 0x00, 0xF6, 0x77, 0x12, 0x72, 0x63, 0xD0, 0x9B, 0x22, 0xC6, + 0x4F, 0x19, 0x1E, 0x2A, 0xE1, 0x97, 0xCF, 0x28, 0xD3, 0xC3, 0x5E, 0xFB, 0x22, 0x57, 0xE5, 0x4F, + 0x90, 0x83, 0x53, 0xB0, 0x80, 0xD3, 0x2D, 0xFB, 0x77, 0x55, 0x52, 0x5E, 0x00, 0xD8, 0x72, 0x39, + 0x93, 0xF0, 0x89, 0x83, 0x97, 0xFB, 0x78, 0xD2, 0xB0, 0xCD, 0xED, 0x1C, 0x9B, 0x8F, 0x5D, 0xBD, + 0x00, 0x26, 0x37, 0xA1, 0xE5, 0x38, 0xE7, 0x02, 0x41, 0x00, 0xF2, 0xA8, 0x5D, 0x86, 0xE0, 0x33, + 0xC8, 0x93, 0x5C, 0xB9, 0xBD, 0xCF, 0x27, 0x70, 0x81, 0x79, 0xE1, 0x12, 0x82, 0x09, 0x64, 0xCB, + 0xDB, 0xCF, 0xBB, 0x52, 0xD3, 0x3F, 0x22, 0x90, 0x47, 0x23, 0xAA, 0x20, 0x7D, 0x92, 0xFD, 0xD6, + 0x58, 0x68, 0xF3, 0xB1, 0xFA, 0x7B, 0x81, 0x0D, 0x8F, 0x22, 0xDC, 0x84, 0x08, 0x91, 0x60, 0x07, + 0xE8, 0x98, 0x9A, 0x84, 0xDA, 0x4C, 0x24, 0xC7, 0x10, 0x8B, 0x02, 0x41, 0x00, 0xB3, 0xB0, 0xAA, + 0x75, 0x55, 0xCA, 0x90, 0x60, 0xB1, 0x1E, 0x98, 0x1C, 0x83, 0x7D, 0x08, 0x36, 0x53, 0xF8, 0xD8, + 0x77, 0x16, 0x37, 0xBA, 0xC7, 0x87, 0xD3, 0xBF, 0xBB, 0xB3, 0x72, 0xA9, 0x04, 0xDC, 0x52, 0xEB, + 0x94, 0xEA, 0xCE, 0x49, 0x00, 0x36, 0x74, 0x62, 0xA9, 0x8F, 0x94, 0xAE, 0x16, 0x2F, 0xDE, 0x11, + 0xB4, 0xEE, 0xE7, 0x87, 0x85, 0xFB, 0x36, 0xF1, 0xA6, 0x1B, 0xD5, 0xC8, 0x3F, 0x02, 0x40, 0x73, + 0x18, 0x72, 0xCC, 0x1F, 0x99, 0xD0, 0x40, 0x3D, 0x52, 0x08, 0x7A, 0xB2, 0x5D, 0x45, 0xBC, 0x76, + 0x8A, 0x1D, 0xCD, 0xB0, 0xD6, 0x94, 0xDB, 0x32, 0x21, 0xB5, 0xFB, 0x13, 0x3C, 0xD5, 0xD1, 0x4F, + 0xC7, 0x7B, 0x68, 0x76, 0x27, 0xED, 0xE5, 0x51, 0xF9, 0x90, 0x32, 0x76, 0x62, 0xE5, 0x0A, 0x87, + 0x07, 0xC5, 0x3C, 0x97, 0x0D, 0x09, 0x41, 0x20, 0xC1, 0x74, 0xFD, 0x7A, 0xD0, 0x44, 0xC3, 0x02, + 0x41, 0x00, 0xAF, 0xA3, 0x2C, 0x53, 0x8E, 0x8E, 0xA8, 0xE7, 0x36, 0xC0, 0x5C, 0x9E, 0x95, 0xEE, + 0xC1, 0x97, 0x02, 0x63, 0x7F, 0x3B, 0x4E, 0xB2, 0x0F, 0xF2, 0x7A, 0xBD, 0x57, 0x9C, 0x8B, 0x85, + 0xA8, 0x5D, 0x14, 0x3B, 0x7B, 0xF0, 0xBE, 0xFE, 0x0F, 0x8E, 0x4F, 0xD5, 0xB8, 0x49, 0xE8, 0x90, + 0xF5, 0x12, 0xBF, 0xB2, 0xD6, 0xE2, 0x78, 0x20, 0x26, 0x6C, 0x3F, 0x5C, 0xE4, 0x57, 0x6D, 0xE9, + 0xB4, 0x63, + }; +#endif // #ifdef METWL_VER_APPTYPE_SYSTEM + +#ifdef METWL_VER_APPTYPE_SECURE + // 開発用ショップアプリ ROMヘッダ署名用公開鍵 + const u8 g_devPubKey_DER[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, + 0xA0, 0xC7, 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, + 0xC6, 0x05, 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, + 0x98, 0x5B, 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, + 0x44, 0xB1, 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, + 0xFF, 0x7F, 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, + 0xEC, 0xBE, 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, + 0xC8, 0x9A, 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, + 0xE6, 0x31, 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // 開発用ショップアプリ ROMヘッダ署名用秘密鍵 + const u8 g_devPrivKey_DER[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, 0xA0, 0xC7, + 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, 0xC6, 0x05, + 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, 0x98, 0x5B, + 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, 0x44, 0xB1, + 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, 0xFF, 0x7F, + 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, 0xEC, 0xBE, + 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, 0xC8, 0x9A, + 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, 0xE6, 0x31, + 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x48, 0xCA, 0x9C, 0x49, 0xA5, 0xBF, 0xD1, 0x17, 0x16, 0x77, 0x97, 0x97, 0x29, + 0x8D, 0x2A, 0xA2, 0x0D, 0x80, 0x0B, 0xE3, 0xDE, 0x59, 0x6B, 0x0C, 0xC8, 0x39, 0x6A, 0xE4, 0xC7, + 0xFF, 0x2E, 0xB0, 0x18, 0x6F, 0xF0, 0x9D, 0x35, 0x5E, 0x6A, 0x80, 0xAF, 0x3D, 0x90, 0x85, 0x9C, + 0x1A, 0x3F, 0x58, 0x15, 0xB9, 0x7B, 0x58, 0xB9, 0x4A, 0xB9, 0x18, 0x68, 0xDE, 0xBE, 0x5B, 0xE1, + 0x1C, 0xBF, 0x85, 0xDF, 0x5F, 0x30, 0xFD, 0xD2, 0xEC, 0xC0, 0x77, 0x33, 0x62, 0x58, 0xEC, 0xC1, + 0x47, 0xF7, 0x41, 0xE8, 0x2B, 0x21, 0x83, 0xE0, 0x8E, 0xE0, 0xF4, 0x03, 0x5D, 0x07, 0x84, 0x91, + 0xFA, 0x5B, 0xD8, 0xD3, 0x47, 0x90, 0x6E, 0x7D, 0x81, 0x9C, 0x1A, 0xB3, 0x03, 0x2F, 0xBC, 0x1A, + 0x28, 0x01, 0xBB, 0x78, 0x33, 0x60, 0xD2, 0x32, 0x34, 0x09, 0xEE, 0x08, 0x35, 0x50, 0x7A, 0x02, + 0x77, 0xB9, 0x01, 0x02, 0x41, 0x00, 0xCF, 0x39, 0xB3, 0x95, 0xDB, 0x1A, 0x2C, 0xD5, 0x6B, 0x0E, + 0xD8, 0x7B, 0xEC, 0x36, 0x14, 0xC5, 0x6C, 0x6C, 0x03, 0x34, 0xCB, 0x8A, 0x03, 0xF0, 0x94, 0x9C, + 0x2E, 0xBB, 0xA4, 0x24, 0x85, 0x6F, 0x3C, 0x8B, 0xAD, 0x44, 0x88, 0xA1, 0xDC, 0x88, 0xFE, 0xE7, + 0x02, 0x24, 0xB3, 0x73, 0xEA, 0xD1, 0xF6, 0x61, 0x6A, 0x73, 0x00, 0x86, 0x0B, 0x67, 0xAB, 0x00, + 0xFB, 0xF7, 0xFD, 0x0D, 0x92, 0x91, 0x02, 0x41, 0x00, 0xCF, 0x13, 0x5C, 0xD1, 0x72, 0x12, 0xA5, + 0x1D, 0x3A, 0x86, 0xAB, 0xAC, 0x87, 0x11, 0x37, 0x6D, 0xEB, 0x90, 0x14, 0x41, 0x7B, 0xAA, 0x38, + 0x88, 0xFF, 0xAF, 0xAA, 0xAE, 0x12, 0x3E, 0x7C, 0x28, 0x59, 0xDB, 0xBE, 0xAE, 0x79, 0x20, 0x0C, + 0x4F, 0xE5, 0xAB, 0x97, 0x64, 0x0D, 0x1E, 0x31, 0x54, 0x10, 0xB0, 0x1C, 0x7E, 0x5A, 0x7B, 0x98, + 0x32, 0x00, 0xF7, 0xE0, 0x18, 0x15, 0x53, 0xFC, 0x4D, 0x02, 0x41, 0x00, 0x90, 0x5F, 0x38, 0x01, + 0xD0, 0x9B, 0x44, 0xDF, 0x0F, 0x6E, 0x51, 0x5E, 0xCC, 0xEB, 0xC4, 0xBE, 0xE2, 0xD1, 0xC1, 0xCE, + 0x17, 0x7C, 0x39, 0x50, 0x74, 0x88, 0xF7, 0x7A, 0x1D, 0x5A, 0xA0, 0x68, 0x26, 0x3B, 0x7D, 0xE4, + 0xC0, 0x78, 0x5C, 0x68, 0x49, 0x86, 0xF2, 0x14, 0x55, 0xBE, 0x0D, 0xBC, 0x68, 0x35, 0xE8, 0x6E, + 0xE4, 0xCF, 0x7E, 0xC4, 0xA3, 0xFB, 0xD4, 0x90, 0x2A, 0x8A, 0x39, 0x31, 0x02, 0x41, 0x00, 0x93, + 0x88, 0xE3, 0x17, 0xA2, 0xA3, 0xA0, 0x1A, 0x4C, 0x09, 0x89, 0x24, 0xD9, 0xF2, 0xAD, 0x40, 0x56, + 0x96, 0x07, 0xA8, 0x84, 0x18, 0x4A, 0x41, 0x69, 0x92, 0x5A, 0x13, 0xBD, 0x91, 0xE1, 0x59, 0xCA, + 0x73, 0xE2, 0xCE, 0x62, 0x24, 0x30, 0x41, 0x78, 0x8C, 0x21, 0xC7, 0xBA, 0x04, 0xE9, 0xF6, 0x50, + 0x11, 0x79, 0xAB, 0x98, 0x81, 0xF8, 0x74, 0x9F, 0xF5, 0xFB, 0x26, 0x8D, 0x83, 0x91, 0xFD, 0x02, + 0x40, 0x4D, 0xA4, 0x03, 0x7E, 0x00, 0xB6, 0xA2, 0xEE, 0x85, 0x19, 0x5C, 0xB3, 0xBE, 0x06, 0x48, + 0xF7, 0xA8, 0x27, 0xB3, 0xC9, 0xED, 0x60, 0xE1, 0x56, 0x0A, 0x3F, 0x8D, 0x64, 0x56, 0xBA, 0x2E, + 0xC3, 0xF6, 0x2D, 0x95, 0x38, 0x87, 0x58, 0xD6, 0x95, 0xF7, 0xA6, 0xD6, 0xEE, 0x85, 0x7D, 0xD7, + 0x93, 0x80, 0xF5, 0x1D, 0xBF, 0x5F, 0x3E, 0x3A, 0x22, 0x29, 0x18, 0xE5, 0x95, 0x73, 0x0D, 0xEA, + 0x42, + }; +#endif // #ifdef METWL_VER_APPTYPE_SECURE + +#ifdef METWL_VER_APPTYPE_LAUNCHER + // 開発用システムアプリ ROMヘッダ署名用公開鍵 + const u8 g_devPubKey_DER[ 0xa2 ] = { + 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, + 0xFF, 0x1F, 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, + 0x49, 0x42, 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, + 0x70, 0x66, 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, + 0x87, 0xC0, 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, + 0x87, 0xB1, 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, + 0x80, 0x10, 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, + 0x4D, 0xD1, 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, + 0x5B, 0x37, 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, + 0x00, 0x01, + }; + + // 開発用システムアプリ ROMヘッダ署名用秘密鍵 + const u8 g_devPrivKey_DER[ 0x263 ] = { + 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, 0xFF, 0x1F, + 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, 0x49, 0x42, + 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, 0x70, 0x66, + 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, 0x87, 0xC0, + 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, 0x87, 0xB1, + 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, 0x80, 0x10, + 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, 0x4D, 0xD1, + 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, 0x5B, 0x37, + 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x16, 0x65, 0xDC, 0xC8, 0x16, 0x99, 0xA3, 0x9A, 0x32, 0xFB, 0x88, 0x35, 0x0D, + 0xAE, 0x2E, 0x6D, 0x33, 0xC5, 0x4B, 0x1F, 0x43, 0x82, 0xE0, 0xE7, 0x0F, 0xCC, 0x83, 0x1D, 0x13, + 0xB2, 0xF4, 0x48, 0x43, 0x6F, 0xA2, 0x8C, 0xDB, 0xB6, 0x5A, 0x1B, 0xCD, 0xAB, 0xB0, 0x33, 0x30, + 0xE2, 0x6B, 0xD2, 0x9F, 0x7F, 0x6F, 0x2E, 0x2E, 0x89, 0x11, 0xBD, 0x89, 0xB1, 0xB3, 0x9E, 0x89, + 0x58, 0xD9, 0xDB, 0xB9, 0x91, 0x00, 0xDA, 0x17, 0xA9, 0x14, 0xC3, 0x83, 0xFF, 0xFF, 0x46, 0x0F, + 0x5F, 0x81, 0x1B, 0x5B, 0x02, 0xD2, 0x29, 0xEF, 0x48, 0xB7, 0xDF, 0x8C, 0x34, 0xED, 0xA2, 0xEC, + 0xC0, 0x79, 0x50, 0xC6, 0xAD, 0x0B, 0x98, 0x28, 0xC2, 0x17, 0x80, 0x96, 0x67, 0x3A, 0x22, 0xD7, + 0x60, 0x61, 0x98, 0xF6, 0xAB, 0x10, 0x1E, 0xE6, 0x23, 0x06, 0x4B, 0x61, 0xAF, 0xFE, 0xD5, 0xAF, + 0xB8, 0x3D, 0x81, 0x02, 0x41, 0x00, 0xE2, 0x82, 0xC3, 0x83, 0x2A, 0xEF, 0xA0, 0x86, 0x15, 0xFD, + 0x80, 0x23, 0x2B, 0x1C, 0x80, 0x0C, 0xF7, 0xA0, 0xA3, 0x53, 0x2B, 0xAD, 0xF9, 0xF6, 0xF7, 0xA3, + 0x7E, 0x1A, 0x5E, 0xE7, 0x18, 0x6D, 0xF3, 0xD6, 0xDE, 0x68, 0xBB, 0x4A, 0x54, 0xAF, 0xDF, 0xA5, + 0xEC, 0xA7, 0x62, 0xBB, 0xCB, 0x7A, 0xDE, 0x3F, 0xFB, 0x9A, 0x99, 0x2A, 0xF7, 0x2D, 0x23, 0x98, + 0x9A, 0x9F, 0xCE, 0xFB, 0x67, 0xB1, 0x02, 0x41, 0x00, 0xD5, 0x98, 0x63, 0x19, 0x3D, 0x80, 0xDF, + 0x71, 0x13, 0x6A, 0xF4, 0x5E, 0x62, 0x99, 0x16, 0x34, 0x18, 0xF9, 0xDC, 0x58, 0x2F, 0xC3, 0xD8, + 0x8B, 0x68, 0xC1, 0x43, 0x98, 0xF0, 0xEC, 0x39, 0xE3, 0x40, 0x6E, 0x08, 0x9F, 0xED, 0x17, 0xBE, + 0xCC, 0x87, 0x4A, 0xAD, 0x99, 0x15, 0x09, 0xD0, 0xBB, 0xDB, 0x13, 0xF0, 0x53, 0xDF, 0xCB, 0x66, + 0x1A, 0xD1, 0xF2, 0x14, 0xB7, 0x17, 0xFA, 0xCB, 0x39, 0x02, 0x41, 0x00, 0xD8, 0xA2, 0x05, 0x89, + 0x32, 0x8C, 0x41, 0xB3, 0x5B, 0xDE, 0xBA, 0x29, 0x68, 0x76, 0xF6, 0x84, 0xF0, 0x64, 0x23, 0x30, + 0x4D, 0x4B, 0x34, 0x11, 0x1E, 0x60, 0xB0, 0x1F, 0x5A, 0x7A, 0x9C, 0xE3, 0xB3, 0xDC, 0xE1, 0x93, + 0xBA, 0xE4, 0x69, 0x40, 0x57, 0x9E, 0xA2, 0x4A, 0xA8, 0x64, 0x41, 0x44, 0xBE, 0xC0, 0xE4, 0xCA, + 0xC4, 0x08, 0xD2, 0xA3, 0xCA, 0x32, 0x8E, 0x57, 0x9F, 0x26, 0xD4, 0xD1, 0x02, 0x41, 0x00, 0x9B, + 0xD5, 0x50, 0x07, 0xAC, 0x2D, 0x87, 0xD7, 0x71, 0xB9, 0x48, 0x8C, 0x4C, 0x17, 0x30, 0x71, 0xD5, + 0xFF, 0x05, 0x59, 0x79, 0x8F, 0xC3, 0x3F, 0x02, 0xB0, 0x6D, 0xE6, 0xF9, 0x6E, 0xFF, 0x54, 0xE3, + 0x3E, 0xE4, 0x1F, 0xF9, 0xD4, 0xA7, 0x29, 0x85, 0x53, 0x60, 0x90, 0x1D, 0x1F, 0x4A, 0x20, 0xA4, + 0x57, 0x49, 0xB1, 0x87, 0xC7, 0x57, 0xB9, 0x1D, 0x8F, 0x26, 0xB9, 0xE6, 0x4E, 0xDD, 0x51, 0x02, + 0x40, 0x4F, 0xE6, 0xC8, 0x11, 0x14, 0xA2, 0xF9, 0xC3, 0xD1, 0x7B, 0x74, 0x48, 0x8F, 0x33, 0xB4, + 0xF6, 0xFF, 0xEE, 0xDC, 0x4E, 0x34, 0xF9, 0x66, 0xB8, 0x25, 0x3A, 0x05, 0xF5, 0x29, 0x1B, 0x12, + 0x61, 0x6C, 0xCD, 0xF1, 0x0D, 0xE6, 0x68, 0xED, 0x81, 0x44, 0x96, 0x07, 0x5A, 0x43, 0x72, 0x93, + 0xDC, 0xEE, 0xD7, 0x81, 0x82, 0x22, 0x5E, 0x07, 0x15, 0x02, 0xA5, 0xE9, 0x54, 0x59, 0x86, 0x03, + 0x02, + }; +#endif // #ifdef METWL_VER_APPTYPE_LAUNCHER } // end of namespace MasterEditorTWL \ No newline at end of file diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp index 9a5523ed..9b969d0b 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -897,8 +897,144 @@ ECSrlResult RCSrl::mrcTWL( FILE *fp ) } #endif } + { + u32 idH; + u8 idL[4]; + int apptype; + const int appUser = 0; + const int appSystem = 1; + const int appSecure = 2; + const int appLauncher = 3; + + idH = this->pRomHeader->s.titleID_Hi; + memcpy( idL, &(this->pRomHeader->s.titleID_Lo[0]), 4 ); + + if( (idL[3]=='H') && (idL[2]=='N') && (idL[1]=='A') ) // ランチャアプリかどうかはTitleID_Loの値で決定 + { + apptype = appLauncher; + } + else if( idH & TITLE_ID_HI_SECURE_FLAG_MASK ) // 立ってたらセキュアアプリ + { + apptype = appSecure; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 1 ) // 立ってたらシステムアプリ + { + apptype = appSystem; + } + else if( (idH & TITLE_ID_HI_APP_TYPE_MASK) == 0 ) // 残るはユーザアプリ + { + apptype = appUser; + } + else + { + apptype = -1; + } + + if( apptype < 0 ) + { + this->hWarnList->Add( gcnew RCMRCError( + "アプリ種別", 0x230, 0x237, "不正な値です。", + "Application Type", "Illigal type.", false ) ); + } +#ifdef METWL_VER_APPTYPE_USER + if( apptype != appUser ) + { + this->hWarnList->Add( gcnew RCMRCError( + "アプリ種別", 0x230, 0x237, "ユーザアプリではありません。", + "Application Type", "Not USER application.", false ) ); + } +#endif +#ifdef METWL_VER_APPTYPE_SYSTEM + if( apptype != appSystem ) + { + this->hWarnList->Add( gcnew RCMRCError( + "アプリ種別", 0x230, 0x237, "システムアプリではありません。", + "Application Type", "Not SYSTEM application.", false ) ); + } +#endif +#ifdef METWL_VER_APPTYPE_SECURE + if( apptype != appSecure ) + { + this->hWarnList->Add( gcnew RCMRCError( + "アプリ種別", 0x230, 0x237, "セキュアアプリではありません。", + "Application Type", "Not SECURE application.", false ) ); + } +#endif +#ifdef METWL_VER_APPTYPE_LAUNCHER + if( apptype != appLauncher ) + { + this->hWarnList->Add( gcnew RCMRCError( + "アプリ種別", 0x230, 0x237, "ランチャーアプリではありません。", + "Application Type", "Not LAUNCHER application.", false ) ); + } +#endif + } // アプリ種別のチェック + + if( (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, "ゲームカード電源設定にノーマルモードとNTRモードの両方を設定することはできません。", + "Access Control Info.", "Game card power setting is either normal mode or NTR mode.", 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.", true ) ); + } + if( this->pRomHeader->s.access_control.shared2_file == 0 ) + { + if( (this->pRomHeader->s.shared2_file0_size != 0) || (this->pRomHeader->s.shared2_file1_size != 0) || + (this->pRomHeader->s.shared2_file2_size != 0) || (this->pRomHeader->s.shared2_file3_size != 0) || + (this->pRomHeader->s.shared2_file4_size != 0) || (this->pRomHeader->s.shared2_file5_size != 0) ) + { + this->hErrorList->Add( gcnew RCMRCError( + "アクセスコントロール情報", 0x1b4, 0x1b7, "Shared2ファイルのサイズが設定されているにもかかわらず不使用設定になっています。", + "Access Control Info.", "Sizes of shared2 files is setting, but using them is not enabled.", true ) ); + } + } + + if( (this->pRomHeader->s.arm7_scfg_ext >> 31) != 0 ) + { + this->hWarnList->Add( gcnew RCMRCError( + "SCFG設定", 0x1b8, 0x1bb, "SCFGレジスタへアクセス可能になっています。", + "SCFG Setting", "In this setting, SCFG register is accessible.", true ) ); + } + + if( (this->pRomHeader->s.titleID_Lo[0] != this->pRomHeader->s.game_code[3]) || + (this->pRomHeader->s.titleID_Lo[1] != this->pRomHeader->s.game_code[2]) || + (this->pRomHeader->s.titleID_Lo[2] != this->pRomHeader->s.game_code[1]) || + (this->pRomHeader->s.titleID_Lo[3] != this->pRomHeader->s.game_code[0]) ) + { + this->hWarnList->Add( gcnew RCMRCError( + "タイトルID", 0x230, 0x233, "下位4バイトがイニシャルコードと一致しません。", + "Title ID", "Lower 4 bytes don't match ones of Game Code.", true ) ); + } + + for( i=0; i < (0x2f0 - 0x240); i++ ) + { + if( this->pRomHeader->s.reserved_ltd_F[i] != 0 ) + { + this->hErrorList->Add( gcnew RCMRCError( + "予約領域F", 0x240, 0x2ef, "不正な値が含まれています。この領域をすべて0で埋めてください。", + "Reserved Area F", "Invalid data is included. Please set 0 into this area.", false ) ); + } + } + + for( i=0; i < (0xf80 - 0x378); i++ ) + { + u8 *p = (u8*)this->pRomHeader; + if( p[ 0x378 + i ] != 0 ) + { + this->hErrorList->Add( gcnew RCMRCError( + "予約領域D", 0x378, 0xf7f, "不正な値が含まれています。この領域をすべて0で埋めてください。", + "Reserved Area D", "Invalid data is included. Please set 0 into this area.", false ) ); + } + } // ROMヘッダ以外の領域のチェック return ECSrlResult::NOERROR; -} \ No newline at end of file +} // mrcTWL() \ No newline at end of file diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h index 357b6515..dc1817e4 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h @@ -165,6 +165,9 @@ namespace MasterEditorTWL // gridViewの表示形式にあわせる cli::array^ getAll( System::Boolean isJapanese ) { + if( (*this->hBegin == METWL_ERRLIST_NORANGE) && (*this->hEnd == METWL_ERRLIST_NORANGE) ) + return (gcnew array{this->hName, "-", "-", this->hMsg}); + if( isJapanese ) return (gcnew array{this->hName, this->hBegin->ToString("X04")+"h", this->hEnd->ToString("X04")+"h", this->hMsg}); else diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h b/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h index a82ab9e0..3bdc4b5e 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/stdafx.h @@ -12,6 +12,7 @@ //#define METWL_VER_APPTYPE_LAUNCHER //#define METWL_WHETHER_PLATFORM_CHECK // プラットフォームがTWL対応以外かどうかをチェックする +//#define METWL_WHETHER_SIGN_DECRYPT // 署名を外してダイジェストをベリファイする // 宣言 #define METWL_ERRLIST_NORANGE 0 // エラーのアドレス範囲を指定しないことを表す特別な値