From db7e2f0309e70a27a083edb92803d1e5c4c78973 Mon Sep 17 00:00:00 2001 From: N2614 Date: Tue, 5 Aug 2014 04:32:45 +0000 Subject: [PATCH] =?UTF-8?q?SNAKE=E7=94=A8=E3=81=AEnup=5Fversion=E3=81=8C?= =?UTF-8?q?=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88=E3=81=A7=E3=81=8D=E3=81=9F?= =?UTF-8?q?=E3=81=8B=E3=81=A9=E3=81=86=E3=81=8B=E3=81=A7SNAKE=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@814 385bec56-5757-e545-9c3a-d8741f4650f1 --- trunk/CardCup/OMakefile | 1 + trunk/CardCup/Readme.txt | 4 +- trunk/CardCup/Util.cpp | 57 +++++ trunk/CardCup/Util.h | 42 +++ trunk/CardCup/VersionDetect.cpp | 22 +- trunk/CardCup/VersionDetect.h | 3 + trunk/CardCup/forCardCup.patch | 440 ++++++++++++++++++++++++++------ trunk/CardCup/main.cpp | 16 +- 8 files changed, 494 insertions(+), 91 deletions(-) create mode 100644 trunk/CardCup/Util.cpp create mode 100644 trunk/CardCup/Util.h diff --git a/trunk/CardCup/OMakefile b/trunk/CardCup/OMakefile index 0871f41..907677f 100644 --- a/trunk/CardCup/OMakefile +++ b/trunk/CardCup/OMakefile @@ -25,6 +25,7 @@ SOURCES[] = scrollBuffer.cpp VersionDetect.cpp HeapManager.cpp + Util.cpp LIBS += lib_demo \ libnn_am \ diff --git a/trunk/CardCup/Readme.txt b/trunk/CardCup/Readme.txt index 111cc77..0956883 100644 --- a/trunk/CardCup/Readme.txt +++ b/trunk/CardCup/Readme.txt @@ -4,5 +4,7 @@ + trunk r46347 pl_SharedDataTitleId.h + trunk r41414 CTR_UniqueId.inc + trunk r46237 CTR_Version.inc + + CTR_SDK-9_12 branch r58087 CTR_ProgramId.h + + CTR_SDK-9_12 branch r58087 pl_Version.h -r33437に、上記3ファイルを個別に上書きした後のパッチ forCardCup.patch をコミットしています。 +r33437に、上記のファイルを個別に上書きした後のパッチ forCardCup.patch をコミットしています。 diff --git a/trunk/CardCup/Util.cpp b/trunk/CardCup/Util.cpp new file mode 100644 index 0000000..1199122 --- /dev/null +++ b/trunk/CardCup/Util.cpp @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Util.cpp + + Copyright (C)2010-2011 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "Util.h" + +u8 Util::GetCupMajorVersion(VerDef version) +{ + if(version.isSnake) + { + return version.cup.snakeMajorVersion; + } + else + { + return version.cup.majorVersion; + } +} + +u8 Util::GetCupMinorVersion(VerDef version) +{ + if(version.isSnake) + { + return version.cup.snakeMinorVersion; + } + else + { + return version.cup.minorVersion; + } +} + +u8 Util::GetCupMicroVersion(VerDef version) +{ + if(version.isSnake) + { + return version.cup.snakeMicroVersion; + } + else + { + return version.cup.microVersion; + } +} + +u8 Util::GetNupVersion(VerDef version) +{ + return version.nup.majorVersion; +} diff --git a/trunk/CardCup/Util.h b/trunk/CardCup/Util.h new file mode 100644 index 0000000..3deba46 --- /dev/null +++ b/trunk/CardCup/Util.h @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Util.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef UTIL_H_ +#define UTIL_H_ + +#include +#include "VersionDetect.h" + +class Util +{ +public: + + Util(){}; + virtual ~Util(){}; + + // CUPメジャーバージョンを返す + u8 GetCupMajorVersion(VerDef version); + + // CUPマイナーバージョンを返す + u8 GetCupMinorVersion(VerDef version); + + // CUPマイクロバージョンを返す + u8 GetCupMicroVersion(VerDef version); + + // NUPバージョンを返す + u8 GetNupVersion(VerDef version); +}; + +#endif /* UTIL_H_ */ diff --git a/trunk/CardCup/VersionDetect.cpp b/trunk/CardCup/VersionDetect.cpp index 203e80c..39047a7 100644 --- a/trunk/CardCup/VersionDetect.cpp +++ b/trunk/CardCup/VersionDetect.cpp @@ -61,7 +61,7 @@ void GetCupVersion(nn::pl::CTR::CardUpdateVersion* cup, nn::cfg::CTR::CfgRegionC } -void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegionCode region) +void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, bool* isSnake, nn::cfg::CTR::CfgRegionCode region) { nn::Result result; const size_t BUF_SIZE = 1024; @@ -69,8 +69,24 @@ void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegi // NUPバージョン { - result = nn::fs::MountContent("nver:", nn::fs::MEDIA_TYPE_NAND, cNupVerId[region], 0, 1, 1, buf, + nn::ProgramId snakeProgramId = nn::CTR::ReplacePlatform(cNupVerId[region], + nn::CTR::PROGRAM_ID_PLATFORM_SNAKE); + result = nn::fs::MountContent("nver:", nn::fs::MEDIA_TYPE_NAND, snakeProgramId, 0, 1, 1, buf, BUF_SIZE); + if(result.IsFailure()) + { + *isSnake = false; + result = nn::fs::MountContent("nver:", nn::fs::MEDIA_TYPE_NAND, cNupVerId[region], 0, 1, 1, buf, + BUF_SIZE); + if(result.IsFailure()) + { + return; + } + } + else + { + *isSnake = true; + } nn::fs::FileInputStream fis; @@ -105,5 +121,5 @@ void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegi void GetSystemVersion(VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region) { GetCupVersion(&mVerData->cup, region); - GetNupVersion(&mVerData->nup, region); + GetNupVersion(&mVerData->nup, &mVerData->isSnake, region); } diff --git a/trunk/CardCup/VersionDetect.h b/trunk/CardCup/VersionDetect.h index 7f94174..23767bb 100644 --- a/trunk/CardCup/VersionDetect.h +++ b/trunk/CardCup/VersionDetect.h @@ -24,6 +24,9 @@ struct VerDef { nn::pl::CTR::CardUpdateVersion cup; nn::pl::CTR::NetworkUpdateVersion nup; + bool isSnake; + NN_PADDING3; + NN_PADDING4; }; // TODO:リージョン追加時に範囲外アクセスにならないよう注意 diff --git a/trunk/CardCup/forCardCup.patch b/trunk/CardCup/forCardCup.patch index 43361c7..7692840 100644 --- a/trunk/CardCup/forCardCup.patch +++ b/trunk/CardCup/forCardCup.patch @@ -1,3 +1,310 @@ +Index: include/nn/CTR/CTR_ProgramId.h +=================================================================== +--- include/nn/CTR/CTR_ProgramId.h (revision 34322) ++++ include/nn/CTR/CTR_ProgramId.h (working copy) +@@ -1,8 +1,8 @@ +-/*---------------------------------------------------------------------------* ++/*---------------------------------------------------------------------------* + Project: Horizon + File: CTR_ProgramId.h + +- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. ++ Copyright (C)2009-2013 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo +@@ -18,6 +18,7 @@ + + + #include ++#include + #include + + +@@ -49,9 +50,13 @@ + { + PROGRAM_ID_CATEGORY_FLAG_NORMAL = 0 , // 通常 + PROGRAM_ID_CATEGORY_FLAG_DLP_CHILD = 1, // DLPLAY 子機 +- PROGRAM_ID_CATEGORY_FLAG_TRIAL = 2, // 体験版 +- PROGRAM_ID_CATEGORY_FLAG_CONTENTS = 3, // 追加コンテンツ ++ PROGRAM_ID_CATEGORY_FLAG_DEMO = 2, // 体験版 ++ PROGRAM_ID_CATEGORY_FLAG_CONTENTS = 3, // コンテンツ ++ PROGRAM_ID_CATEGORY_FLAG_ADD_ON_CONTENTS = 4, // 追加コンテンツ ++ PROGRAM_ID_CATEGORY_FLAG_RIGHTS_ONLY = 5, // 権利のみ ++ PROGRAM_ID_CATEGORY_FLAG_PATCH = 6, // パッチ + ++ PROGRAM_ID_CATEGORY_FLAG_TYPE_MASK = (7 << 0), // 種類 + PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION = (1 << 3), // 実行不可 + PROGRAM_ID_CATEGORY_FLAG_SYSTEM = (1 << 4), // システム + PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE = (1 << 5), // 一括アップデートが必要 +@@ -71,7 +76,7 @@ + PROGRAM_ID_CATEGORY_DLP_CHILD = ( PROGRAM_ID_CATEGORY_FLAG_DLP_CHILD ), + + // 体験版 +- PROGRAM_ID_CATEGORY_TRIAL = ( PROGRAM_ID_CATEGORY_FLAG_TRIAL ), ++ PROGRAM_ID_CATEGORY_DEMO = ( PROGRAM_ID_CATEGORY_FLAG_DEMO ), + + // NAND ファームウェア + PROGRAM_ID_CATEGORY_FIRMWARE = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL +@@ -113,6 +118,19 @@ + | PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_USER_APPROVAL + | PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT ), + ++ // 追加コンテンツ ++ PROGRAM_ID_CATEGORY_ADD_ON_CONTENTS = ( PROGRAM_ID_CATEGORY_FLAG_ADD_ON_CONTENTS ++ | PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION ++ | PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT ), ++ ++ // 権利のみ ++ PROGRAM_ID_CATEGORY_RIGHTS_ONLY = ( PROGRAM_ID_CATEGORY_FLAG_RIGHTS_ONLY ++ | PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION ), ++ ++ // パッチ ++ PROGRAM_ID_CATEGORY_PATCH = ( PROGRAM_ID_CATEGORY_FLAG_PATCH ++ | PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION ), ++ + PROGRAM_ID_CATEGORY_MAX_BITS = (1u << 15) + }; + +@@ -120,6 +138,7 @@ + enum ProgramIdPlatform + { + PROGRAM_ID_PLATFORM_CTR, ++ PROGRAM_ID_PLATFORM_SNAKE = 2, + + PROGRAM_ID_PLATFORM_MAX_BITS = (1 << 3) + }; +@@ -135,7 +154,10 @@ + const int PROGRAM_ID_UNIQUE_ID_SHIFT = 8; + const int PROGRAM_ID_VARIATION_SHIFT = 0; + ++ const size_t PROGRAM_ID_PLATFORM_SIZE = 4; + ++ const bit64 PROGRAM_ID_PLATFORM_MASK = ((1ull << PROGRAM_ID_PLATFORM_SIZE) - 1) << PROGRAM_ID_PLATFORM_SHIFT; ++ + /* ------------------------------------------------------------------------ + ProgramId 作成関数 + ------------------------------------------------------------------------ */ +@@ -171,7 +193,17 @@ + return ret; + } + ++ inline ProgramId MakeSystemProgramIdFromLegacyInitialCode(char gameCode[]) ++ { // TWLのNAND かつ システムアプリのProgramIdの生成 ++ ProgramId ret = TWL_CARD_APP_PSEUDO_PROGRAM_ID | (5ull << 32); ++ for (int i = 0; i < 4; i++) ++ { ++ ret |= gameCode[i] << ((3-i) * 8); ++ } ++ return ret; ++ } + ++ + /* ------------------------------------------------------------------------ + ProgramId 分解関数 + ------------------------------------------------------------------------ */ +@@ -196,7 +228,6 @@ + } + + +- + /* ------------------------------------------------------------------------ + 定数定義の代わり + ------------------------------------------------------------------------ */ +@@ -204,15 +235,10 @@ + { + return (static_cast(pgid >> 32) & 0xFFFFC000) == 0x00048000; + } +- inline bool IsNtrTrialApp(ProgramId pgid) +- { +- return (static_cast(pgid >> 32) & 0xFFFFC000) == 0x00044000; ++ inline bool IsTwlSystemApp(ProgramId pgid) ++ { // Channel code 0bit目が1 ++ return IsTwlApp(pgid) && (pgid & (1ull << 32)); + } +- inline bool IsTwlCardApp(ProgramId pgid) +- { +- return pgid == TWL_CARD_APP_PSEUDO_PROGRAM_ID; +- } +- + inline bool IsTwlCardAppByCtrProgramIdRule(ProgramId pgid) + { + return (static_cast(pgid >> 32) & 0xFFFFFFFF) == 0x00048000; +@@ -233,60 +259,118 @@ + return 0x0004800000000000ull | (pgid & 0x00007FFFFFFFFFFFull); + } + ++ inline ProgramId ReplacePlatform(ProgramId pgid, ProgramIdPlatform platform) ++ { ++ return (pgid & ~PROGRAM_ID_PLATFORM_MASK) | (platform << PROGRAM_ID_PLATFORM_SHIFT); ++ } + +- + /* ------------------------------------------------------------------------ + カテゴリ判別関数 + ------------------------------------------------------------------------ */ ++ inline bool IsCtr(ProgramId pgid) ++ { ++ return (static_cast(pgid >> 32) & 0xFFFFC000) == 0x00040000; ++ } ++ ++ // bit 0-2 ++ inline bool IsContents(ProgramId pgid) ++ { ++ return IsCtr(pgid) && ((GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_TYPE_MASK) == PROGRAM_ID_CATEGORY_FLAG_CONTENTS); ++ } ++ ++ inline bool IsNormalApplication(ProgramId pgid) ++ { ++ return IsCtr(pgid) && ((GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_TYPE_MASK) == PROGRAM_ID_CATEGORY_FLAG_NORMAL); ++ } ++ + // bit 4 + inline bool IsSystem(ProgramId pgid) + { +- return (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_SYSTEM) != 0; ++ return IsCtr(pgid) && (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_SYSTEM) != 0; + } + + // bit 5 + inline bool IsRequireBatchUpdate(ProgramId pgid) + { +- return (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE) != 0; ++ return IsCtr(pgid) && (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE) != 0; + } + + // bit 7 + inline bool IsRequireRightForMount(ProgramId pgid) + { +- return (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT) == 0; ++ return IsCtr(pgid) && (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT) == 0; + } + + // bit 8 + inline bool IsRequireJumpIdConversion(ProgramId pgid) + { +- return (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID) == 0; ++ return IsCtr(pgid) && (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID) == 0; + } + + inline bool IsDlpChild(ProgramId pgid) + { +- return GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_DLP_CHILD; ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_DLP_CHILD; + } + ++ inline bool IsDemo(ProgramId pgid) ++ { ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_DEMO; ++ } ++ + inline bool IsNandFirmware(ProgramId pgid) + { +- return GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_FIRMWARE; ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_FIRMWARE; + } + + inline bool IsInternal(ProgramId pgid) + { + const bit16 category = GetCategoryOf(pgid); +- return category == PROGRAM_ID_CATEGORY_FIRMWARE ++ return IsCtr(pgid) && ++ ( category == PROGRAM_ID_CATEGORY_FIRMWARE + | category == PROGRAM_ID_CATEGORY_BASE +- | category == PROGRAM_ID_CATEGORY_APPLET; ++ | category == PROGRAM_ID_CATEGORY_APPLET ); + } + ++ inline bool IsExecutable(ProgramId pgid) ++ { ++ return (GetCategoryOf(pgid) & PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION) == 0; ++ } ++ ++ inline bool IsCtrOrTwlSystem(ProgramId pgid) ++ { ++ return IsSystem(pgid) || IsTwlSystemApp(pgid); ++ } ++ + inline bool IsRequireCheckLaunchRights(ProgramId pgid) + { +- return ! IsSystem(pgid); ++ return ! IsCtrOrTwlSystem(pgid); + } + ++ inline bool IsAddOnContents(ProgramId pgid) ++ { ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_ADD_ON_CONTENTS; ++ } + ++ inline bool IsRightsOnly(ProgramId pgid) ++ { ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_RIGHTS_ONLY; ++ } + ++ inline bool IsPatch(ProgramId pgid) ++ { ++ return IsCtr(pgid) && GetCategoryOf(pgid) == PROGRAM_ID_CATEGORY_PATCH; ++ } ++ ++ inline bool HasInternalUniqueId(ProgramId pgid) ++ { ++ bit32 uid = GetUniqueIdOf(pgid); ++ return (uid < 0x00300) ++ || ((0xF8000 <= uid) && (uid < 0xFF000)) ++ || (0xFF400 <= uid); ++ } ++ ++ ++ + /* ------------------------------------------------------------------------ + コアバージョン + ------------------------------------------------------------------------ */ +@@ -308,8 +392,14 @@ + PROGRAM_ID_VERSION_TWL_FIRM ); + } + ++ inline bit32 GetAgbCoreVersion() ++ { ++ return MakeTitleCode( PROGRAM_ID_UNIQUE_ID_AGB_FIRM, ++ PROGRAM_ID_VERSION_AGB_FIRM ); ++ } + + ++ + /* ------------------------------------------------------------------------ + 個々の ProgramId + ------------------------------------------------------------------------ */ +@@ -330,6 +420,30 @@ + // 奇数のバリエーションは開発用システムのメジャーバージョン + return IsSystem(pgid) && (GetVariationOf(pgid) % 2) != 0; + } ++ ++ ++ ++ /* ------------------------------------------------------------------------ ++ 変換関数 ++ ------------------------------------------------------------------------ */ ++ inline ProgramId GetPatchTargetProgramId(ProgramId patchId) ++ { ++ NN_EQUAL_TASSERT_(GetCategoryOf(patchId), PROGRAM_ID_CATEGORY_PATCH); ++ ++ return MakeProgramId( ++ PROGRAM_ID_CATEGORY_APPLICATION, ++ GetUniqueIdOf(patchId), ++ GetVariationOf(patchId) ); ++ } ++ inline ProgramId GetPatchProgramIdOf(ProgramId appId) ++ { ++ NN_EQUAL_TASSERT_(GetCategoryOf(appId), PROGRAM_ID_CATEGORY_APPLICATION); ++ ++ return MakeProgramId( ++ PROGRAM_ID_CATEGORY_PATCH, ++ GetUniqueIdOf(appId), ++ GetVariationOf(appId) ); ++ } + }} + + Index: include/nn/CTR/CTR_UniqueId.inc =================================================================== --- include/nn/CTR/CTR_UniqueId.inc (revision 34322) @@ -440,102 +747,75 @@ Index: include/nn/pl/CTR/pl_SharedDataTitleId.h These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo -@@ -45,44 +45,60 @@ - | (static_cast(x) << nn::CTR::PROGRAM_ID_UNIQUE_ID_SHIFT) \ - | (static_cast(nn::CTR::PROGRAM_ID_VERSION_SHAREDDATA_COMMON) << nn::CTR::PROGRAM_ID_VARIATION_SHIFT) ) - -- const ProgramId SHAREDDATA_TITLEID_MII = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x102); -- const ProgramId SHAREDDATA_TITLEID_NGWORD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x103); -- const ProgramId SHAREDDATA_TITLEID_COUNTRY_REGION = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x104); -- const ProgramId SHAREDDATA_TITLEID_SSID = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x105); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_CH = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x110); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x111); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_DUT = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x112); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ENG_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x113); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ENG_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x114); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_FRE_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x115); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_FRE_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x116); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_GER = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x117); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ITA = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x118); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_JPN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x119); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_KOR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11a); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_POR_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11b); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_RUS = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11c); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_SPA = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11d); -- const ProgramId SHAREDDATA_TITLEID_DICTIONARY_POR_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11e); -- const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x121); -- const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x122); -- const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x123); -- const ProgramId SHAREDDATA_TITLEID_EULA_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x131); -- const ProgramId SHAREDDATA_TITLEID_EULA_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x132); -- const ProgramId SHAREDDATA_TITLEID_EULA_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x133); -- const ProgramId SHAREDDATA_TITLEID_FONT_STD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x140); -- const ProgramId SHAREDDATA_TITLEID_FONT_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x141); -- const ProgramId SHAREDDATA_TITLEID_FONT_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x142); -- const ProgramId SHAREDDATA_TITLEID_FONT_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x143); -- const ProgramId SHAREDDATA_TITLEID_RATING_ICON_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x151); -- const ProgramId SHAREDDATA_TITLEID_RATING_ICON_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x152); -- const ProgramId SHAREDDATA_TITLEID_RATING_ICON_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x153); -- const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x161); -- const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x162); -- const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x163); -- const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x171); -- const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x172); -- const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x173); -+ const ProgramId SHAREDDATA_TITLEID_MII = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x102); -+ const ProgramId SHAREDDATA_TITLEID_NGWORD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x103); -+ const ProgramId SHAREDDATA_TITLEID_COUNTRY_REGION = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x104); -+ const ProgramId SHAREDDATA_TITLEID_SSID = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x105); +@@ -49,6 +49,7 @@ + const ProgramId SHAREDDATA_TITLEID_NGWORD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x103); + const ProgramId SHAREDDATA_TITLEID_COUNTRY_REGION = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x104); + const ProgramId SHAREDDATA_TITLEID_SSID = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x105); + const ProgramId SHAREDDATA_TITLEID_CERT_DATASTORAGE = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x106); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_CH = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x110); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x111); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_DUT = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x112); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ENG_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x113); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ENG_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x114); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_FRE_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x115); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_FRE_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x116); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_GER = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x117); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_ITA = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x118); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_JPN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x119); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_KOR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11a); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_POR_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11b); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_RUS = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11c); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_SPA = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11d); -+ const ProgramId SHAREDDATA_TITLEID_DICTIONARY_POR_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x11e); -+ const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x121); -+ const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x122); -+ const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x123); + const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_CH = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x110); + const ProgramId SHAREDDATA_TITLEID_DICTIONARY_CHI_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x111); + const ProgramId SHAREDDATA_TITLEID_DICTIONARY_DUT = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x112); +@@ -67,9 +68,15 @@ + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x121); + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x122); + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x123); + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x124); + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x125); + const ProgramId SHAREDDATA_TITLEID_ERROR_MESSAGE_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x126); -+ const ProgramId SHAREDDATA_TITLEID_EULA_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x131); -+ const ProgramId SHAREDDATA_TITLEID_EULA_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x132); -+ const ProgramId SHAREDDATA_TITLEID_EULA_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x133); + const ProgramId SHAREDDATA_TITLEID_EULA_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x131); + const ProgramId SHAREDDATA_TITLEID_EULA_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x132); + const ProgramId SHAREDDATA_TITLEID_EULA_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x133); + const ProgramId SHAREDDATA_TITLEID_EULA_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x134); + const ProgramId SHAREDDATA_TITLEID_EULA_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x135); + const ProgramId SHAREDDATA_TITLEID_EULA_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x136); -+ const ProgramId SHAREDDATA_TITLEID_FONT_STD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x140); -+ const ProgramId SHAREDDATA_TITLEID_FONT_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x141); -+ const ProgramId SHAREDDATA_TITLEID_FONT_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x142); -+ const ProgramId SHAREDDATA_TITLEID_FONT_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x143); -+ const ProgramId SHAREDDATA_TITLEID_RATING_ICON_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x151); -+ const ProgramId SHAREDDATA_TITLEID_RATING_ICON_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x152); -+ const ProgramId SHAREDDATA_TITLEID_RATING_ICON_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x153); + const ProgramId SHAREDDATA_TITLEID_FONT_STD = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x140); + const ProgramId SHAREDDATA_TITLEID_FONT_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x141); + const ProgramId SHAREDDATA_TITLEID_FONT_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x142); +@@ -77,12 +84,21 @@ + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x151); + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x152); + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x153); + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x154); + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x155); + const ProgramId SHAREDDATA_TITLEID_RATING_ICON_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_SHARED_CONTENT_PROGRAM_ID (0x156); -+ const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x161); -+ const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x162); -+ const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x163); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x161); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x162); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x163); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x164); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x165); + const ProgramId SHAREDDATA_TITLEID_NUP_VERSION_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x166); -+ const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x171); -+ const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x172); -+ const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x173); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_EU = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x171); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_JP = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x172); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_US = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x173); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_CN = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x174); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_KR = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x175); + const ProgramId SHAREDDATA_TITLEID_CUP_VERSION_TW = NN_PL_CTR_PL_SHAREDDATATITLEID_H_MAKE_AUTO_UPDATE_CONTENT_PROGRAM_ID(0x176); } // end of namespace CTR } // end of namespace pl +Index: include/nn/pl/CTR/pl_Version.h +=================================================================== +--- include/nn/pl/CTR/pl_Version.h (revision 34322) ++++ include/nn/pl/CTR/pl_Version.h (working copy) +@@ -1,8 +1,8 @@ +-/*---------------------------------------------------------------------------* ++/*---------------------------------------------------------------------------* + Project: Horizon + File: pl_Version.h + +- Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. ++ Copyright (C)2009-2013 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo +@@ -40,7 +40,9 @@ + u8 majorVersion; // メジャーバージョン + u8 reserved1; + char region; // J:日本、U:北米、E:欧州・豪州、… +- u8 reserved2[3]; ++ u8 snakeMicroVersion; // snake用 マイクロバージョン(非表示) ++ u8 snakeMinorVersion; // snake用 マイナーバージョン ++ u8 snakeMajorVersion; // snake用 メジャーバージョン + }; + + /*! diff --git a/trunk/CardCup/main.cpp b/trunk/CardCup/main.cpp index dee58da..20331f6 100644 --- a/trunk/CardCup/main.cpp +++ b/trunk/CardCup/main.cpp @@ -33,6 +33,7 @@ #include "scrollBuffer.h" #include "VersionDetect.h" #include "HeapManager.h" +#include "Util.h" namespace { @@ -308,13 +309,14 @@ extern "C" void nnMain() NN_LOG("Start Self Cup\n"); nn::Result result; Initialize(); - VerDef versionData; + VerDef version; + Util utility; nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); nn::ProgramId MMEN_PROGRAM_ID = GetHomeMenuProgramId(region); - GetSystemVersion(&versionData, region); - s_scrollBuffer->AppendText("Version: %d.%d.%d-%d%c", versionData.cup.majorVersion, versionData.cup.minorVersion, - versionData.cup.microVersion, versionData.nup.majorVersion, nn::cfg::GetRegionCodeA3(region)[0]); + GetSystemVersion(&version, region); + s_scrollBuffer->AppendText("Version: %d.%d.%d-%d%c", utility.GetCupMajorVersion(version), utility.GetCupMinorVersion(version), + utility.GetCupMicroVersion(version), utility.GetNupVersion(version), nn::cfg::GetRegionCodeA3(region)[0]); nn::am::ProgramInfo outInfos; result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1); @@ -328,10 +330,10 @@ extern "C" void nnMain() } s_scrollBuffer->AppendText("")->Render(); - GetSystemVersion(&versionData, region); + GetSystemVersion(&version, region); - s_scrollBuffer->AppendText("Version: %d.%d.%d-%d%c", versionData.cup.majorVersion, versionData.cup.minorVersion, - versionData.cup.microVersion, versionData.nup.majorVersion, nn::cfg::GetRegionCodeA3(region)[0]); + s_scrollBuffer->AppendText("Version: %d.%d.%d-%d%c", utility.GetCupMajorVersion(version), utility.GetCupMinorVersion(version), + utility.GetCupMicroVersion(version), utility.GetNupVersion(version), nn::cfg::GetRegionCodeA3(region)[0]); s_scrollBuffer->AppendText("")->Render();