SNAKE用のnup_versionがマウントできたかどうかでSNAKE判定するように。

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
This commit is contained in:
N2614 2014-08-05 04:32:45 +00:00
parent bcf6adf349
commit db7e2f0309
8 changed files with 494 additions and 91 deletions

View File

@ -25,6 +25,7 @@ SOURCES[] =
scrollBuffer.cpp
VersionDetect.cpp
HeapManager.cpp
Util.cpp
LIBS += lib_demo \
libnn_am \

View File

@ -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 をコミットしています。

57
trunk/CardCup/Util.cpp Normal file
View File

@ -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;
}

42
trunk/CardCup/Util.h Normal file
View File

@ -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 <nn.h>
#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_ */

View File

@ -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);
}

View File

@ -24,6 +24,9 @@ struct VerDef
{
nn::pl::CTR::CardUpdateVersion cup;
nn::pl::CTR::NetworkUpdateVersion nup;
bool isSnake;
NN_PADDING3;
NN_PADDING4;
};
// TODO:リージョン追加時に範囲外アクセスにならないよう注意

View File

@ -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 <nn/types.h>
+#include <nn/assert.h>
#include <nn/math/math_Utility.h>
@@ -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<bit32>(pgid >> 32) & 0xFFFFC000) == 0x00048000;
}
- inline bool IsNtrTrialApp(ProgramId pgid)
- {
- return (static_cast<bit32>(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<bit32>(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<bit32>(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<bit64>(x) << nn::CTR::PROGRAM_ID_UNIQUE_ID_SHIFT) \
| (static_cast<bit64>(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用 メジャーバージョン
};
/*!

View File

@ -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();