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) +++ include/nn/CTR/CTR_UniqueId.inc (working copy) @@ -56,6 +56,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CFG, 0x00017) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NWM, 0x0002d) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DMNT, 0x00019) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DMNT_IS, 0x00036) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NS, 0x00080) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( IR, 0x00033) @@ -76,6 +77,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MP, 0x0002a) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( BOSS, 0x00034) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NEWS, 0x00035) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RO, 0x00037) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NATIVE_FIRM, 0x00000) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( TWL_FIRM, 0x00001) @@ -108,6 +110,8 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L, 0x000C3) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L, 0x000C4) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERR_EULA_L, 0x000C5) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L, 0x000C6) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EXTRA_PAD_L, 0x000CD) #if 0 # Applet for AMERICA region (US) @@ -127,6 +131,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_L_US, 0x000CA) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L_US, 0x000CB) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L_US, 0x000CC) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L_US, 0x000CE) #if 0 # Applet for EUROPE region (EU) @@ -146,6 +151,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_L_EU, 0x000D2) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L_EU, 0x000D3) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L_EU, 0x000D4) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L_EU, 0x000D6) #if 0 # Applet for AUSTLARIA region (AU) @@ -155,15 +161,68 @@ # Applet for CHINA region (CN) #endif +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SYSMENU_CN, 0x000A1) + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_CN, 0x000A2) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MUSIC_PLAY_CN, 0x000A3) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EBIRD_CN, 0x000A4) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CHERRY_CN, 0x000A5) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SPIDER_CN, 0x000A6) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRIENDLIST_CN, 0x000A7) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NEWSLIST_CN, 0x000A8) + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( KEYBOARD_L_CN, 0x000D8) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MII_SELECT_L_CN, 0x000D9) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_L_CN, 0x000DA) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L_CN, 0x000DB) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L_CN, 0x000DC) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERR_EULA_L_CN, 0x000CF) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L_CN, 0x000DD) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EXTRA_PAD_L_CN, 0x000D5) + + #if 0 # Applet for KOREA region (KR) #endif +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SYSMENU_KR, 0x000A9) + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_KR, 0x000AA) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MUSIC_PLAY_KR, 0x000AB) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EBIRD_KR, 0x000AC) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CHERRY_KR, 0x000AD) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SPIDER_KR, 0x000AE) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRIENDLIST_KR, 0x000AF) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NEWSLIST_KR, 0x000B0) + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( KEYBOARD_L_KR, 0x000DE) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MII_SELECT_L_KR, 0x000DF) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_L_KR, 0x000E0) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L_KR, 0x000E1) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L_KR, 0x000E2) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L_KR, 0x000E3) + #if 0 # Applet for TAIWAN region (TW) #endif +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SYSMENU_TW, 0x000B1) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_TW, 0x000B2) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MUSIC_PLAY_TW, 0x000B3) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EBIRD_TW, 0x000B4) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CHERRY_TW, 0x000B5) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SPIDER_TW, 0x000B6) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRIENDLIST_TW, 0x000B7) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NEWSLIST_TW, 0x000B8) + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( KEYBOARD_L_TW, 0x000E4) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MII_SELECT_L_TW, 0x000E5) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SHOT_L_TW, 0x000E6) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PHOTO_SELECT_L_TW, 0x000E7) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SOUND_SELECT_L_TW, 0x000E8) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( AOC_L_TW, 0x000E9) + #if 0 # System App for JAPAN region (JP) #endif @@ -183,6 +242,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT, 0x0020c) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL, 0x0020d) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL, 0x0020e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( BOXYARD, 0x00230) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET, 0x0020F) @@ -205,6 +265,7 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT_US, 0x0021c) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL_US, 0x0021d) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL_US, 0x0021e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( BOXYARD_US, 0x00240) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET_US, 0x0021F) #if 0 @@ -226,6 +287,130 @@ NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT_EU, 0x0022c) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL_EU, 0x0022d) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL_EU, 0x0022e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( BOXYARD_EU, 0x00250) NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET_EU, 0x0022F) +#if 0 +# System App for CHINA region (CN) +#endif +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MSET_CN, 0x00260) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DOWNLOAD_PLAY_CN, 0x00261) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PLOG_CN, 0x00262) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_CN, 0x00263) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PNOTE_CN, 0x00264) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SNOTE_CN, 0x00265) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ANOTE_CN, 0x00266) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEDIT_CN, 0x00267) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEET_CN, 0x00268) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( TIGER_CN, 0x00269) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CARD_BOARD_CN, 0x0026a) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MARS_CN, 0x0026b) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT_CN, 0x0026c) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL_CN, 0x0026d) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL_CN, 0x0026e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET_CN, 0x0026F) + +#if 0 +# System App for KOREA region (KR) +#endif + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MSET_KR, 0x00270) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DOWNLOAD_PLAY_KR, 0x00271) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PLOG_KR, 0x00272) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_KR, 0x00273) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PNOTE_KR, 0x00274) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SNOTE_KR, 0x00275) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ANOTE_KR, 0x00276) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEDIT_KR, 0x00277) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEET_KR, 0x00278) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( TIGER_KR, 0x00279) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CARD_BOARD_KR, 0x0027a) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MARS_KR, 0x0027b) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT_KR, 0x0027c) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL_KR, 0x0027d) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL_KR, 0x0027e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET_KR, 0x0027F) + +#if 0 +# System App for TAIWAN region (TW) +#endif + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MSET_TW, 0x00280) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DOWNLOAD_PLAY_TW, 0x00281) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PLOG_TW, 0x00282) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_TW, 0x00283) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( PNOTE_TW, 0x00284) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SNOTE_TW, 0x00285) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ANOTE_TW, 0x00286) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEDIT_TW, 0x00287) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MEET_TW, 0x00288) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( TIGER_TW, 0x00289) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CARD_BOARD_TW, 0x0028a) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MARS_TW, 0x0028b) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FRUIT_TW, 0x0028c) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_HAL_TW, 0x0028d) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CPLAY_NCL_TW, 0x0028e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SAFE_MODE_MSET_TW, 0x0028F) + + +#if 0 +# Shared data title +#endif + +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CERT, 0x00100) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( MII, 0x00102) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NGWORD, 0x00103) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( COUNTRY_REGION, 0x00104) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( SSID, 0x00105) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CERT_DATASTORAGE, 0x00106) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( APP_COMPATIBILITY_INFO, 0x00107) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_CHI_CH, 0x00110) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_CHI_TW, 0x00111) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_DUT, 0x00112) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_ENG_EU, 0x00113) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_ENG_US, 0x00114) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_FRE_EU, 0x00115) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_FRE_US, 0x00116) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_GER, 0x00117) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_ITA, 0x00118) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_JPN, 0x00119) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_KOR, 0x0011a) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_POR_EU, 0x0011b) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_RUS, 0x0011c) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_SPA, 0x0011d) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( DICTIONARY_POR_US, 0x0011e) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_EU, 0x00121) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_JP, 0x00122) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_US, 0x00123) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_CN, 0x00124) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_KR, 0x00125) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( ERROR_MESSAGE_TW, 0x00126) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_EU, 0x00131) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_JP, 0x00132) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_US, 0x00133) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_CN, 0x00134) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_KR, 0x00135) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( EULA_TW, 0x00136) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FONT_STD, 0x00140) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FONT_CN, 0x00141) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FONT_KR, 0x00142) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( FONT_TW, 0x00143) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_EU, 0x00151) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_JP, 0x00152) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_US, 0x00153) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_CN, 0x00154) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_KR, 0x00155) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( RATING_ICON_TW, 0x00156) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_EU, 0x00161) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_JP, 0x00162) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_US, 0x00163) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_CN, 0x00164) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_KR, 0x00165) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( NUP_VERSION_TW, 0x00166) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_EU, 0x00171) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_JP, 0x00172) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_US, 0x00173) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_CN, 0x00174) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_KR, 0x00175) +NN_CTR_CTR_UNIQUE_ID_INC_DEFINE_UNIQUE_ID( CUP_VERSION_TW, 0x00176) Index: include/nn/CTR/CTR_Version.inc =================================================================== --- include/nn/CTR/CTR_Version.inc (revision 34322) +++ include/nn/CTR/CTR_Version.inc (working copy) @@ -65,6 +65,7 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( CFG, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NWM, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( DMNT, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( DMNT_IS, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NS, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( IR, 02) @@ -85,9 +86,11 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MP, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( BOSS, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NEWS, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( RO, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NATIVE_FIRM, 02) -NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NATIVE_FIRM_MINOR, 27) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NATIVE_FIRM_MINOR, 33) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NATIVE_FIRM_MICRO, 00) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TWL_FIRM, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AGB_FIRM, 02) @@ -140,8 +143,43 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EBIRD_EU, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NEWSLIST_EU, 02) +#if 0 +# System Applet for CHINA region (CN) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SYSMENU_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MUSIC_PLAY_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( FRIENDLIST_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( CHERRY_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SPIDER_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EBIRD_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NEWSLIST_CN, 02) #if 0 +# System Applet for KOREA region (KR) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SYSMENU_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MUSIC_PLAY_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( FRIENDLIST_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( CHERRY_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SPIDER_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EBIRD_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NEWSLIST_KR, 02) + +#if 0 +# System Applet for TAIWAN region (TW) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SYSMENU_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MUSIC_PLAY_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( FRIENDLIST_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( CHERRY_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SPIDER_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EBIRD_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( NEWSLIST_TW, 02) + +#if 0 # Library Applet for JAPAN region (JP) #endif NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( KEYBOARD_L, 02) @@ -150,6 +188,8 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( ERR_EULA_L, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EXTRA_PAD_L, 02) #if 0 # Library Applet for AMERICA region (US) @@ -159,6 +199,7 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_L_US, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L_US,02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L_US,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L_US, 02) #if 0 # Library Applet for EUROPE region (EU) @@ -168,25 +209,79 @@ NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_L_EU, 02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L_EU,02) NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L_EU,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L_EU, 02) +#if 0 +# Library Applet for CHINA region (CN) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( KEYBOARD_L_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MII_SELECT_L_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_L_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L_CN,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L_CN,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( ERR_EULA_L_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L_CN, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( EXTRA_PAD_L_CN, 02) #if 0 +# Library Applet for KOREA region (KR) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( KEYBOARD_L_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MII_SELECT_L_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_L_KR, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L_KR,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L_KR,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L_KR, 02) + +#if 0 +# Library Applet for TAIWAN region (TW) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( KEYBOARD_L_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MII_SELECT_L_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SHOT_L_TW, 02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( PHOTO_SELECT_L_TW,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( SOUND_SELECT_L_TW,02) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( AOC_L_TW, 02) + + +#if 0 # System Application for JAPAN region (JP) #endif NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER, 00) #if 0 # System Application for AMERICA region (US) #endif NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET_US, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER_US, 00) #if 0 # System Application for EUROPE region (EU) #endif NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET_EU, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER_EU, 00) +#if 0 +# System Application for CHINA region (CN) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET_CN, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER_CN, 00) #if 0 +# System Application for KOREA region (KR) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET_KR, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER_KR, 00) + +#if 0 +# System Application for TAIWAN region (TW) +#endif +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( MSET_TW, 00) +NN_CTR_CTR_VERSION_INC_DEFINE_VERSION( TIGER_TW, 00) + + +#if 0 # DESC #endif Index: include/nn/erreula/CTR/erreula_Api.h =================================================================== --- include/nn/erreula/CTR/erreula_Api.h (revision 0) +++ include/nn/erreula/CTR/erreula_Api.h (working copy) @@ -0,0 +1,263 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.h + + Copyright (C)2009-2012 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$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_ERREULA_CTR_ERREULA_API_H_ +#define NN_ERREULA_CTR_ERREULA_API_H_ + +#include +#include + +#ifdef __cplusplus + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +/*! + @brief エラー・EULAアプレットのタイプを表す列挙体です。 +*/ +enum +{ + ERROR_LANGUAGE_FLAG = 0x100, //!< 言語指定フラグ + ERROR_WORD_WRAP_FLAG = 0x200 //!< 自動改行フラグ +}; + +/*! + @brief エラーコードを表す列挙体です。 +*/ +enum ErrorType +{ + ERROR_TYPE_ERROR_CODE = 0, //!< ネットワークエラーです。エラーコードに対応するインフラ通信系エラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT, //!< カスタムエラーです。自由文字列を本アプレットのUIを使って表示します。 + ERROR_TYPE_EULA, //!< EULA表示になります。 + ERROR_TYPE_EULA_FIRST_BOOT, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_EULA_DRAW_ONLY, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_AGREE, //!< 本体設定用です。(使用禁止です。) + + ERROR_TYPE_ERROR_CODE_LANGUAGE = ERROR_TYPE_ERROR_CODE | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してネットワークエラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT_LANGUAGE = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してカスタムエラーメッセージを表示します。 + ERROR_TYPE_EULA_LANGUAGE = ERROR_TYPE_EULA | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してEULAを表示します。 + + ERROR_TYPE_ERROR_TEXT_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_WORD_WRAP_FLAG, //!< 自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + ERROR_TYPE_ERROR_TEXT_LANGAUAGE_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG | ERROR_WORD_WRAP_FLAG, //!< 表示言語指定、自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + + ERROR_TYPE_MAX_BIT = (1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief 上画面の表示方法を示すフラグを表す列挙体です。 +*/ +enum +{ + UPPER_SCREEN_NORMAL = 0, //!< アプリケーションの画像を2Dで表示します。 + UPPER_SCREEN_STEREO, //!< アプリケーションの画像を3Dで表示します。 + + UPPER_SCREEN_MAX +}; + +/*! + @brief エラー・EULAアプレットで使用する言語を表す列挙体です。 +*/ +enum +{ + USE_LANGUAGE_DEFAULT = 0, //!< CFGで設定した言語を使用 + USE_LANGUAGE_JAPANESE, //!< 日本語 + USE_LANGUAGE_ENGLISH, //!< 英語 + USE_LANGUAGE_FRENCH, //!< フランス語 + USE_LANGUAGE_GERMAN, //!< ドイツ語 + USE_LANGUAGE_ITALIAN, //!< イタリア語 + USE_LANGUAGE_SPANISH, //!< スペイン語 + USE_LANGUAGE_SIMP_CHINESE, //!< 中国語(簡体字) + USE_LANGUAGE_KOREAN, //!< 韓国語 + USE_LANGUAGE_DUTCH, //!< オランダ語 + USE_LANGUAGE_PORTUGUESE, //!< ポルトガル語 + USE_LANGUAGE_RUSSIAN, //!< ロシア語 + USE_LANGUAGE_TRAD_CHINESE, //!< 中国語(繁体字) + + USE_LANGUAGE_MAX +}; + +/*! + @brief リターンコードを表す列挙体です。 + + 正常に終了した場合は 0 以上、異常終了した場合は負値となります。 +*/ +enum ReturnCode +{ + RETURN_CODE_UNKNOWN = -1, //!< 異常終了 + RETURN_CODE_NONE = 0, //!< 通常終了 or EULA非同意 + RETURN_CODE_SUCCESS, //!< アプリジャンプお勧め終了 or EULA同意 + RETURN_CODE_NOT_SUPPORTED, //!< EULAサービス外地域 + + RETURN_CODE_HOME_BUTTON = 10, //!< HOME ボタンが押された + RETURN_CODE_SOFTWARE_RESET, //!< ソフトウェアリセットとなる組み合わせのボタンが押された + RETURN_CODE_POWER_BUTTON, //!< POWER ボタンが押された + + RETURN_CODE_MAX_BIT = (s32)(1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief エラー表示したい自由文字列の最大文字数です。文字数にはNULL終端も含みます。 +*/ +const u16 ERROR_TEXT_LENGTH_MAX = 1900; + +/*! + @brief アプリケーションとエラー・EULAアプレットの間でやり取りされる、さまざまなデータを格納するための構造体です。 + + 必ず最初に @ref InitializeConfig 関数で初期化してから各メンバ変数を設定してください。*/ +// 最大で4092byteの構造体にしてください + +struct Config +{ + //---------------------------------------- + //! @name 入力 + + /*! + @brief 呼び出すアプレットのタイプ + */ + ErrorType errorType; + + /*! + @brief エラーコード + + errorCode=0 でエラー表示を行なうと、画面上部に「エラーが発生しました」と表示します。 + */ + s32 errorCode; + + /*! + @brief 上画面の表示方法を示すフラグです。 + 無効な設定です。 + 上画面の立体視は、アプリの状態を引き継ぎますので、 + 指定しても何も起こりません。 + */ + s16 upperScreenFlag; + + /*! + @brief 使用する言語です。 + 本体設定で指定できない言語を指定した場合、本体仕向地が日本リージョンの場合は日本語を、 米州および欧州リージョンの場合は英語を指定したものとみなされます。 + */ + u16 useLanguage; + + /*! + @brief エラー表示したい自由文字列。NULL終端込みで最大1900文字。 + */ + wchar_t errorText[ERROR_TEXT_LENGTH_MAX]; + + /*! + @brief HOME ボタンが押されるとエラー・EULAアプレットを終了するかどうかを指定します。 + true を指定した場合、HOME ボタンが押されると + エラー・EULAアプレットが終了します。 + */ + bool homeButton; + + /*! + @brief ソフトウェアリセットを使用するかどうかを指定します。 + true を指定した場合、ソフトウェアリセットとなる組み合わせの + ボタンが押されるとエラー・EULAアプレットが終了します。 + */ + bool softwareReset; + + /*! + @brief エラー表示後、ダイアログを表示して本体設定へのアプリジャンプを促すかどうか + true にすれば本体設定へ誘導するダイアログを表示します。 + あくまでメッセージを表示するだけで、アプリジャンプ処理はアプリ側で行ないます。 + */ + bool appJump; + + u8 pad0[137]; + + + //---------------------------------------- + //! @name 出力 + + /*! + @brief リターンコード + + エラー・EULAアプレットが終了した理由を示すリターンコードが + 格納されます。 + */ + ReturnCode returnCode; + + /*! + @brief 同意したEULAバージョン + + 上位1バイトがメジャーバージョン、下位1バイトがマイナーバージョンです。 + 非同意の場合は0になります。 + */ + u16 eulaVersion; + + u8 pad1[10]; +}; + +/*! + @brief エラー・EULAアプレット実行時に渡すパラメータ構造体です。 +*/ +struct Parameter +{ + Config config; //!< Config 構造体 +}; + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig); + +/*! + @brief エラー・EULAアプレットのプリロードを行います。 + + プリロードを行ったときは必ず @ref WaitForPreloadErrEulaApplet 関数で + プリロードの終了を待ってから @ref StartErrEulaApplet 関数を呼んでください。 +*/ +void PreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードの終了待ちをします。 + + プリロードしていない状態で呼ぶとAPIから返ってこなくなります。 +*/ +void WaitForPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードが終了したかどうかを調べます。 + + @return エラー・EULAアプレットのプリロードが終了していれば true が返ります。 + プリロードが終了していない、もしくはプリロードを行っていない場合は false が返ります。 +*/ +bool IsRegisteredErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットを起動します。 + + @param[out] pWakeupState 起動要求の種類。失敗時に格納される値は不定です。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( nn::applet::AppletWakeupState* pWakeupState, Parameter* pParameter ); + +}}} + +#endif // __cplusplus + +#endif // ifndef NN_ERREULA_CTR_ERREULA_API_H_ ɕύXpX: include/nn/erreula/CTR/erreula_Api.h ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: include/nn/erreula.h =================================================================== --- include/nn/erreula.h (revision 0) +++ include/nn/erreula.h (working copy) @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula.h + + Copyright (C)2009-2012 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$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_ERREULA_H_ +#define NN_ERREULA_H_ + +/*! @namespace nn::erreula + @brief エラー・EULAアプレットAPI の名前空間です。 +*/ +/*! + @namespace nn::erreula::CTR + @brief CTR の エラー・EULAアプレットAPI の名前空間です。 +
("::CTR"" の部分は省略して記述可能です。) +*/ + +#if defined(NN_PLATFORM_CTR) + #ifdef __cplusplus + #include "nn/erreula/CTR/erreula_Api.h" + + namespace nn { + namespace erreula { + using namespace nn::erreula::CTR; + } + } + #endif // __cplusplus +#else + #error no platform selected +#endif + +/*! + @} +*/ + +#endif // ifndef NN_ERREULA_H_ ɕύXpX: include/nn/erreula.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Index: include/nn/erreula/CTR/erreula_Api.h =================================================================== --- include/nn/erreula/CTR/erreula_Api.h (revision 0) +++ include/nn/erreula/CTR/erreula_Api.h (working copy) @@ -0,0 +1,263 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.h + + Copyright (C)2009-2012 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$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_ERREULA_CTR_ERREULA_API_H_ +#define NN_ERREULA_CTR_ERREULA_API_H_ + +#include +#include + +#ifdef __cplusplus + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +/*! + @brief エラー・EULAアプレットのタイプを表す列挙体です。 +*/ +enum +{ + ERROR_LANGUAGE_FLAG = 0x100, //!< 言語指定フラグ + ERROR_WORD_WRAP_FLAG = 0x200 //!< 自動改行フラグ +}; + +/*! + @brief エラーコードを表す列挙体です。 +*/ +enum ErrorType +{ + ERROR_TYPE_ERROR_CODE = 0, //!< ネットワークエラーです。エラーコードに対応するインフラ通信系エラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT, //!< カスタムエラーです。自由文字列を本アプレットのUIを使って表示します。 + ERROR_TYPE_EULA, //!< EULA表示になります。 + ERROR_TYPE_EULA_FIRST_BOOT, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_EULA_DRAW_ONLY, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_AGREE, //!< 本体設定用です。(使用禁止です。) + + ERROR_TYPE_ERROR_CODE_LANGUAGE = ERROR_TYPE_ERROR_CODE | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してネットワークエラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT_LANGUAGE = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してカスタムエラーメッセージを表示します。 + ERROR_TYPE_EULA_LANGUAGE = ERROR_TYPE_EULA | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してEULAを表示します。 + + ERROR_TYPE_ERROR_TEXT_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_WORD_WRAP_FLAG, //!< 自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + ERROR_TYPE_ERROR_TEXT_LANGAUAGE_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG | ERROR_WORD_WRAP_FLAG, //!< 表示言語指定、自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + + ERROR_TYPE_MAX_BIT = (1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief 上画面の表示方法を示すフラグを表す列挙体です。 +*/ +enum +{ + UPPER_SCREEN_NORMAL = 0, //!< アプリケーションの画像を2Dで表示します。 + UPPER_SCREEN_STEREO, //!< アプリケーションの画像を3Dで表示します。 + + UPPER_SCREEN_MAX +}; + +/*! + @brief エラー・EULAアプレットで使用する言語を表す列挙体です。 +*/ +enum +{ + USE_LANGUAGE_DEFAULT = 0, //!< CFGで設定した言語を使用 + USE_LANGUAGE_JAPANESE, //!< 日本語 + USE_LANGUAGE_ENGLISH, //!< 英語 + USE_LANGUAGE_FRENCH, //!< フランス語 + USE_LANGUAGE_GERMAN, //!< ドイツ語 + USE_LANGUAGE_ITALIAN, //!< イタリア語 + USE_LANGUAGE_SPANISH, //!< スペイン語 + USE_LANGUAGE_SIMP_CHINESE, //!< 中国語(簡体字) + USE_LANGUAGE_KOREAN, //!< 韓国語 + USE_LANGUAGE_DUTCH, //!< オランダ語 + USE_LANGUAGE_PORTUGUESE, //!< ポルトガル語 + USE_LANGUAGE_RUSSIAN, //!< ロシア語 + USE_LANGUAGE_TRAD_CHINESE, //!< 中国語(繁体字) + + USE_LANGUAGE_MAX +}; + +/*! + @brief リターンコードを表す列挙体です。 + + 正常に終了した場合は 0 以上、異常終了した場合は負値となります。 +*/ +enum ReturnCode +{ + RETURN_CODE_UNKNOWN = -1, //!< 異常終了 + RETURN_CODE_NONE = 0, //!< 通常終了 or EULA非同意 + RETURN_CODE_SUCCESS, //!< アプリジャンプお勧め終了 or EULA同意 + RETURN_CODE_NOT_SUPPORTED, //!< EULAサービス外地域 + + RETURN_CODE_HOME_BUTTON = 10, //!< HOME ボタンが押された + RETURN_CODE_SOFTWARE_RESET, //!< ソフトウェアリセットとなる組み合わせのボタンが押された + RETURN_CODE_POWER_BUTTON, //!< POWER ボタンが押された + + RETURN_CODE_MAX_BIT = (s32)(1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief エラー表示したい自由文字列の最大文字数です。文字数にはNULL終端も含みます。 +*/ +const u16 ERROR_TEXT_LENGTH_MAX = 1900; + +/*! + @brief アプリケーションとエラー・EULAアプレットの間でやり取りされる、さまざまなデータを格納するための構造体です。 + + 必ず最初に @ref InitializeConfig 関数で初期化してから各メンバ変数を設定してください。*/ +// 最大で4092byteの構造体にしてください + +struct Config +{ + //---------------------------------------- + //! @name 入力 + + /*! + @brief 呼び出すアプレットのタイプ + */ + ErrorType errorType; + + /*! + @brief エラーコード + + errorCode=0 でエラー表示を行なうと、画面上部に「エラーが発生しました」と表示します。 + */ + s32 errorCode; + + /*! + @brief 上画面の表示方法を示すフラグです。 + 無効な設定です。 + 上画面の立体視は、アプリの状態を引き継ぎますので、 + 指定しても何も起こりません。 + */ + s16 upperScreenFlag; + + /*! + @brief 使用する言語です。 + 本体設定で指定できない言語を指定した場合、本体仕向地が日本リージョンの場合は日本語を、 米州および欧州リージョンの場合は英語を指定したものとみなされます。 + */ + u16 useLanguage; + + /*! + @brief エラー表示したい自由文字列。NULL終端込みで最大1900文字。 + */ + wchar_t errorText[ERROR_TEXT_LENGTH_MAX]; + + /*! + @brief HOME ボタンが押されるとエラー・EULAアプレットを終了するかどうかを指定します。 + true を指定した場合、HOME ボタンが押されると + エラー・EULAアプレットが終了します。 + */ + bool homeButton; + + /*! + @brief ソフトウェアリセットを使用するかどうかを指定します。 + true を指定した場合、ソフトウェアリセットとなる組み合わせの + ボタンが押されるとエラー・EULAアプレットが終了します。 + */ + bool softwareReset; + + /*! + @brief エラー表示後、ダイアログを表示して本体設定へのアプリジャンプを促すかどうか + true にすれば本体設定へ誘導するダイアログを表示します。 + あくまでメッセージを表示するだけで、アプリジャンプ処理はアプリ側で行ないます。 + */ + bool appJump; + + u8 pad0[137]; + + + //---------------------------------------- + //! @name 出力 + + /*! + @brief リターンコード + + エラー・EULAアプレットが終了した理由を示すリターンコードが + 格納されます。 + */ + ReturnCode returnCode; + + /*! + @brief 同意したEULAバージョン + + 上位1バイトがメジャーバージョン、下位1バイトがマイナーバージョンです。 + 非同意の場合は0になります。 + */ + u16 eulaVersion; + + u8 pad1[10]; +}; + +/*! + @brief エラー・EULAアプレット実行時に渡すパラメータ構造体です。 +*/ +struct Parameter +{ + Config config; //!< Config 構造体 +}; + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig); + +/*! + @brief エラー・EULAアプレットのプリロードを行います。 + + プリロードを行ったときは必ず @ref WaitForPreloadErrEulaApplet 関数で + プリロードの終了を待ってから @ref StartErrEulaApplet 関数を呼んでください。 +*/ +void PreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードの終了待ちをします。 + + プリロードしていない状態で呼ぶとAPIから返ってこなくなります。 +*/ +void WaitForPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードが終了したかどうかを調べます。 + + @return エラー・EULAアプレットのプリロードが終了していれば true が返ります。 + プリロードが終了していない、もしくはプリロードを行っていない場合は false が返ります。 +*/ +bool IsRegisteredErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットを起動します。 + + @param[out] pWakeupState 起動要求の種類。失敗時に格納される値は不定です。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( nn::applet::AppletWakeupState* pWakeupState, Parameter* pParameter ); + +}}} + +#endif // __cplusplus + +#endif // ifndef NN_ERREULA_CTR_ERREULA_API_H_ ɕύXpX: include/nn/erreula/CTR/erreula_Api.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Index: include/nn/erreula/CTR/erreula_Api.h =================================================================== --- include/nn/erreula/CTR/erreula_Api.h (revision 0) +++ include/nn/erreula/CTR/erreula_Api.h (working copy) @@ -0,0 +1,263 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.h + + Copyright (C)2009-2012 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$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_ERREULA_CTR_ERREULA_API_H_ +#define NN_ERREULA_CTR_ERREULA_API_H_ + +#include +#include + +#ifdef __cplusplus + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +/*! + @brief エラー・EULAアプレットのタイプを表す列挙体です。 +*/ +enum +{ + ERROR_LANGUAGE_FLAG = 0x100, //!< 言語指定フラグ + ERROR_WORD_WRAP_FLAG = 0x200 //!< 自動改行フラグ +}; + +/*! + @brief エラーコードを表す列挙体です。 +*/ +enum ErrorType +{ + ERROR_TYPE_ERROR_CODE = 0, //!< ネットワークエラーです。エラーコードに対応するインフラ通信系エラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT, //!< カスタムエラーです。自由文字列を本アプレットのUIを使って表示します。 + ERROR_TYPE_EULA, //!< EULA表示になります。 + ERROR_TYPE_EULA_FIRST_BOOT, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_EULA_DRAW_ONLY, //!< 本体設定用です。(使用禁止です。) + ERROR_TYPE_AGREE, //!< 本体設定用です。(使用禁止です。) + + ERROR_TYPE_ERROR_CODE_LANGUAGE = ERROR_TYPE_ERROR_CODE | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してネットワークエラーメッセージを表示します。 + ERROR_TYPE_ERROR_TEXT_LANGUAGE = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してカスタムエラーメッセージを表示します。 + ERROR_TYPE_EULA_LANGUAGE = ERROR_TYPE_EULA | ERROR_LANGUAGE_FLAG, //!< 表示言語を指定してEULAを表示します。 + + ERROR_TYPE_ERROR_TEXT_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_WORD_WRAP_FLAG, //!< 自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + ERROR_TYPE_ERROR_TEXT_LANGAUAGE_WORD_WRAP = ERROR_TYPE_ERROR_TEXT | ERROR_LANGUAGE_FLAG | ERROR_WORD_WRAP_FLAG, //!< 表示言語指定、自動改行機能付きカスタムエラーメッセージを表示します。自動改行機能については下記の説明を参照してください。 + + ERROR_TYPE_MAX_BIT = (1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief 上画面の表示方法を示すフラグを表す列挙体です。 +*/ +enum +{ + UPPER_SCREEN_NORMAL = 0, //!< アプリケーションの画像を2Dで表示します。 + UPPER_SCREEN_STEREO, //!< アプリケーションの画像を3Dで表示します。 + + UPPER_SCREEN_MAX +}; + +/*! + @brief エラー・EULAアプレットで使用する言語を表す列挙体です。 +*/ +enum +{ + USE_LANGUAGE_DEFAULT = 0, //!< CFGで設定した言語を使用 + USE_LANGUAGE_JAPANESE, //!< 日本語 + USE_LANGUAGE_ENGLISH, //!< 英語 + USE_LANGUAGE_FRENCH, //!< フランス語 + USE_LANGUAGE_GERMAN, //!< ドイツ語 + USE_LANGUAGE_ITALIAN, //!< イタリア語 + USE_LANGUAGE_SPANISH, //!< スペイン語 + USE_LANGUAGE_SIMP_CHINESE, //!< 中国語(簡体字) + USE_LANGUAGE_KOREAN, //!< 韓国語 + USE_LANGUAGE_DUTCH, //!< オランダ語 + USE_LANGUAGE_PORTUGUESE, //!< ポルトガル語 + USE_LANGUAGE_RUSSIAN, //!< ロシア語 + USE_LANGUAGE_TRAD_CHINESE, //!< 中国語(繁体字) + + USE_LANGUAGE_MAX +}; + +/*! + @brief リターンコードを表す列挙体です。 + + 正常に終了した場合は 0 以上、異常終了した場合は負値となります。 +*/ +enum ReturnCode +{ + RETURN_CODE_UNKNOWN = -1, //!< 異常終了 + RETURN_CODE_NONE = 0, //!< 通常終了 or EULA非同意 + RETURN_CODE_SUCCESS, //!< アプリジャンプお勧め終了 or EULA同意 + RETURN_CODE_NOT_SUPPORTED, //!< EULAサービス外地域 + + RETURN_CODE_HOME_BUTTON = 10, //!< HOME ボタンが押された + RETURN_CODE_SOFTWARE_RESET, //!< ソフトウェアリセットとなる組み合わせのボタンが押された + RETURN_CODE_POWER_BUTTON, //!< POWER ボタンが押された + + RETURN_CODE_MAX_BIT = (s32)(1u << 31) //!<(内部処理用の列挙子です。アプリケーションからは使用できません。) +}; + +/*! + @brief エラー表示したい自由文字列の最大文字数です。文字数にはNULL終端も含みます。 +*/ +const u16 ERROR_TEXT_LENGTH_MAX = 1900; + +/*! + @brief アプリケーションとエラー・EULAアプレットの間でやり取りされる、さまざまなデータを格納するための構造体です。 + + 必ず最初に @ref InitializeConfig 関数で初期化してから各メンバ変数を設定してください。*/ +// 最大で4092byteの構造体にしてください + +struct Config +{ + //---------------------------------------- + //! @name 入力 + + /*! + @brief 呼び出すアプレットのタイプ + */ + ErrorType errorType; + + /*! + @brief エラーコード + + errorCode=0 でエラー表示を行なうと、画面上部に「エラーが発生しました」と表示します。 + */ + s32 errorCode; + + /*! + @brief 上画面の表示方法を示すフラグです。 + 無効な設定です。 + 上画面の立体視は、アプリの状態を引き継ぎますので、 + 指定しても何も起こりません。 + */ + s16 upperScreenFlag; + + /*! + @brief 使用する言語です。 + 本体設定で指定できない言語を指定した場合、本体仕向地が日本リージョンの場合は日本語を、 米州および欧州リージョンの場合は英語を指定したものとみなされます。 + */ + u16 useLanguage; + + /*! + @brief エラー表示したい自由文字列。NULL終端込みで最大1900文字。 + */ + wchar_t errorText[ERROR_TEXT_LENGTH_MAX]; + + /*! + @brief HOME ボタンが押されるとエラー・EULAアプレットを終了するかどうかを指定します。 + true を指定した場合、HOME ボタンが押されると + エラー・EULAアプレットが終了します。 + */ + bool homeButton; + + /*! + @brief ソフトウェアリセットを使用するかどうかを指定します。 + true を指定した場合、ソフトウェアリセットとなる組み合わせの + ボタンが押されるとエラー・EULAアプレットが終了します。 + */ + bool softwareReset; + + /*! + @brief エラー表示後、ダイアログを表示して本体設定へのアプリジャンプを促すかどうか + true にすれば本体設定へ誘導するダイアログを表示します。 + あくまでメッセージを表示するだけで、アプリジャンプ処理はアプリ側で行ないます。 + */ + bool appJump; + + u8 pad0[137]; + + + //---------------------------------------- + //! @name 出力 + + /*! + @brief リターンコード + + エラー・EULAアプレットが終了した理由を示すリターンコードが + 格納されます。 + */ + ReturnCode returnCode; + + /*! + @brief 同意したEULAバージョン + + 上位1バイトがメジャーバージョン、下位1バイトがマイナーバージョンです。 + 非同意の場合は0になります。 + */ + u16 eulaVersion; + + u8 pad1[10]; +}; + +/*! + @brief エラー・EULAアプレット実行時に渡すパラメータ構造体です。 +*/ +struct Parameter +{ + Config config; //!< Config 構造体 +}; + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig); + +/*! + @brief エラー・EULAアプレットのプリロードを行います。 + + プリロードを行ったときは必ず @ref WaitForPreloadErrEulaApplet 関数で + プリロードの終了を待ってから @ref StartErrEulaApplet 関数を呼んでください。 +*/ +void PreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードの終了待ちをします。 + + プリロードしていない状態で呼ぶとAPIから返ってこなくなります。 +*/ +void WaitForPreloadErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットのプリロードが終了したかどうかを調べます。 + + @return エラー・EULAアプレットのプリロードが終了していれば true が返ります。 + プリロードが終了していない、もしくはプリロードを行っていない場合は false が返ります。 +*/ +bool IsRegisteredErrEulaApplet(); + +/*! + @brief エラー・EULAアプレットを起動します。 + + @param[out] pWakeupState 起動要求の種類。失敗時に格納される値は不定です。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( nn::applet::AppletWakeupState* pWakeupState, Parameter* pParameter ); + +}}} + +#endif // __cplusplus + +#endif // ifndef NN_ERREULA_CTR_ERREULA_API_H_ ɕύXpX: include/nn/erreula/CTR/erreula_Api.h ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: include/nn/news/CTR/private/news_SystemClient.h =================================================================== --- include/nn/news/CTR/private/news_SystemClient.h (revision 34322) +++ include/nn/news/CTR/private/news_SystemClient.h (working copy) @@ -52,6 +52,7 @@ TAG_LOAD_NEWS_MESSAGE = 0x000c, TAG_LOAD_NEWS_PICTURE = 0x000d, TAG_SET_LAMP = 0x000e, + TAG_IMPORT = 0x000f, TAG_IPC_END }; @@ -76,6 +77,7 @@ static nn::Result LoadNewsMessage( s32 order, u8 buff[], size_t buffSize, size_t* readSize ); static nn::Result LoadNewsPicture( s32 order, u8 buff[], size_t buffSize, size_t* readSize ); static nn::Result SetLamp( s32 change ); + static nn::Result Import(); }; } // end of namespace detail Index: include/nn/pl/CTR/pl_SharedDataTitleId.h =================================================================== --- include/nn/pl/CTR/pl_SharedDataTitleId.h (revision 34322) +++ include/nn/pl/CTR/pl_SharedDataTitleId.h (working copy) @@ -1,8 +1,8 @@ -/*---------------------------------------------------------------------------* +/*---------------------------------------------------------------------------* Project: Horizon File: pl_SharedDataTitleId.h - Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo @@ -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); @@ -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_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); @@ -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_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_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用 メジャーバージョン }; /*! Index: include/nn/prt/prt_Ipc.h =================================================================== --- include/nn/prt/prt_Ipc.h (revision 34322) +++ include/nn/prt/prt_Ipc.h (working copy) @@ -24,8 +24,6 @@ #include #include #include -#include -#include Index: sources/libraries/erreula/@ =================================================================== ɕύXpX: sources/libraries/erreula/@ ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: sources/libraries/erreula/CTR/erreula_Api.cpp =================================================================== --- sources/libraries/erreula/CTR/erreula_Api.cpp (revision 0) +++ sources/libraries/erreula/CTR/erreula_Api.cpp (working copy) @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.cpp + + Copyright (C)2009-2012 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 "nn/erreula.h" + +#include + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +namespace +{ + /*! + @brief アプレットAPIリトライ判定 + */ + bool CheckAppletRetry( nn::Result result ) + { + if (result.IsSuccess() || (result == NN_APPLET_RESULT_ALREADY_EXIST)) + { + return false; + } + + NN_UTIL_PANIC_IF_FAILED(result); + return true; + } +} // namespace nn::erreula::CTR::{no-name} + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig) +{ + NN_NULL_ASSERT(pConfig); + + pConfig->errorType = ERROR_TYPE_ERROR_CODE; + pConfig->errorCode = 0; + pConfig->upperScreenFlag = UPPER_SCREEN_NORMAL; + pConfig->useLanguage = USE_LANGUAGE_DEFAULT; + + std::memset(pConfig->errorText, 0, sizeof(pConfig->errorText)); + + pConfig->homeButton = true; + pConfig->softwareReset = false; + pConfig->appJump = false; + + std::memset(pConfig->pad0, 0, sizeof(pConfig->pad0)); + + pConfig->returnCode = RETURN_CODE_UNKNOWN; + pConfig->eulaVersion = 0; + + std::memset(pConfig->pad1, 0, sizeof(pConfig->pad1)); +} + +/*! + @brief ErrEULAアプレットのプリロードを行います。 +*/ +void PreloadErrEulaApplet() +{ + nn::Result result; + + result = nn::applet::PreloadLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet() +{ + nn::Result result; + + // ライブラリアプレット終了 (されていればプリロードをやめる) + result = nn::applet::CancelLibraryAppletIfRegistered( false ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードの終了待ちをします。 +*/ +void WaitForPreloadErrEulaApplet() +{ + nn::applet::WaitForAppletPreloaded( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットが有効になっているかを返します。 +*/ +bool IsRegisteredErrEulaApplet() +{ + return nn::applet::IsRegistered( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットを起動します。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( + nn::applet::AppletWakeupState* pWakeupState, + Parameter* pParameter + ) +{ + s32 read_len = 0; + nn::applet::AppletId appletID = 0; + + nn::Result result; + + result = nn::applet::PrepareToStartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); + + nn::applet::StartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID, + reinterpret_cast( pParameter ), + sizeof( Parameter ) ); + + *pWakeupState = nn::applet::WaitForStarting( &appletID, + reinterpret_cast( pParameter ), + sizeof( Parameter ), + &read_len ); + +// NN_WARNING( sizeof( Parameter ) == read_len, +// "Read param size is wrong." ); +} + +}}} ɕύXpX: sources/libraries/erreula/CTR/erreula_Api.cpp ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: sources/libraries/erreula/OMakefile =================================================================== --- sources/libraries/erreula/OMakefile (revision 0) +++ sources/libraries/erreula/OMakefile (working copy) @@ -0,0 +1,26 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009-2012 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$ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* + +SOURCES[] = + CTR/erreula_Api.cpp + +TARGET_LIBRARY = libnn_erreula + + +include $(ROOT_OMAKE)/modulerules + +build: $(DEFAULT_TARGETS) ɕύXpX: sources/libraries/erreula/OMakefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Index: sources/libraries/erreula/@ =================================================================== ɕύXpX: sources/libraries/erreula/@ ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: sources/libraries/erreula/CTR/erreula_Api.cpp =================================================================== --- sources/libraries/erreula/CTR/erreula_Api.cpp (revision 0) +++ sources/libraries/erreula/CTR/erreula_Api.cpp (working copy) @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.cpp + + Copyright (C)2009-2012 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 "nn/erreula.h" + +#include + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +namespace +{ + /*! + @brief アプレットAPIリトライ判定 + */ + bool CheckAppletRetry( nn::Result result ) + { + if (result.IsSuccess() || (result == NN_APPLET_RESULT_ALREADY_EXIST)) + { + return false; + } + + NN_UTIL_PANIC_IF_FAILED(result); + return true; + } +} // namespace nn::erreula::CTR::{no-name} + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig) +{ + NN_NULL_ASSERT(pConfig); + + pConfig->errorType = ERROR_TYPE_ERROR_CODE; + pConfig->errorCode = 0; + pConfig->upperScreenFlag = UPPER_SCREEN_NORMAL; + pConfig->useLanguage = USE_LANGUAGE_DEFAULT; + + std::memset(pConfig->errorText, 0, sizeof(pConfig->errorText)); + + pConfig->homeButton = true; + pConfig->softwareReset = false; + pConfig->appJump = false; + + std::memset(pConfig->pad0, 0, sizeof(pConfig->pad0)); + + pConfig->returnCode = RETURN_CODE_UNKNOWN; + pConfig->eulaVersion = 0; + + std::memset(pConfig->pad1, 0, sizeof(pConfig->pad1)); +} + +/*! + @brief ErrEULAアプレットのプリロードを行います。 +*/ +void PreloadErrEulaApplet() +{ + nn::Result result; + + result = nn::applet::PreloadLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet() +{ + nn::Result result; + + // ライブラリアプレット終了 (されていればプリロードをやめる) + result = nn::applet::CancelLibraryAppletIfRegistered( false ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードの終了待ちをします。 +*/ +void WaitForPreloadErrEulaApplet() +{ + nn::applet::WaitForAppletPreloaded( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットが有効になっているかを返します。 +*/ +bool IsRegisteredErrEulaApplet() +{ + return nn::applet::IsRegistered( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットを起動します。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( + nn::applet::AppletWakeupState* pWakeupState, + Parameter* pParameter + ) +{ + s32 read_len = 0; + nn::applet::AppletId appletID = 0; + + nn::Result result; + + result = nn::applet::PrepareToStartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); + + nn::applet::StartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID, + reinterpret_cast( pParameter ), + sizeof( Parameter ) ); + + *pWakeupState = nn::applet::WaitForStarting( &appletID, + reinterpret_cast( pParameter ), + sizeof( Parameter ), + &read_len ); + +// NN_WARNING( sizeof( Parameter ) == read_len, +// "Read param size is wrong." ); +} + +}}} ɕύXpX: sources/libraries/erreula/CTR/erreula_Api.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Index: sources/libraries/erreula/CTR/erreula_Api.cpp =================================================================== --- sources/libraries/erreula/CTR/erreula_Api.cpp (revision 0) +++ sources/libraries/erreula/CTR/erreula_Api.cpp (working copy) @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: erreula_Api.cpp + + Copyright (C)2009-2012 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 "nn/erreula.h" + +#include + +namespace nn +{ +namespace erreula +{ +namespace CTR +{ + +namespace +{ + /*! + @brief アプレットAPIリトライ判定 + */ + bool CheckAppletRetry( nn::Result result ) + { + if (result.IsSuccess() || (result == NN_APPLET_RESULT_ALREADY_EXIST)) + { + return false; + } + + NN_UTIL_PANIC_IF_FAILED(result); + return true; + } +} // namespace nn::erreula::CTR::{no-name} + +/*! + @brief Config 構造体をデフォルト値で初期化します。 + + @param[out] pConfig デフォルト値で初期化された Config 構造体。 + @return なし。 +*/ +void InitializeConfig(Config* pConfig) +{ + NN_NULL_ASSERT(pConfig); + + pConfig->errorType = ERROR_TYPE_ERROR_CODE; + pConfig->errorCode = 0; + pConfig->upperScreenFlag = UPPER_SCREEN_NORMAL; + pConfig->useLanguage = USE_LANGUAGE_DEFAULT; + + std::memset(pConfig->errorText, 0, sizeof(pConfig->errorText)); + + pConfig->homeButton = true; + pConfig->softwareReset = false; + pConfig->appJump = false; + + std::memset(pConfig->pad0, 0, sizeof(pConfig->pad0)); + + pConfig->returnCode = RETURN_CODE_UNKNOWN; + pConfig->eulaVersion = 0; + + std::memset(pConfig->pad1, 0, sizeof(pConfig->pad1)); +} + +/*! + @brief ErrEULAアプレットのプリロードを行います。 +*/ +void PreloadErrEulaApplet() +{ + nn::Result result; + + result = nn::applet::PreloadLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードを取り消します。 +*/ +void CancelPreloadErrEulaApplet() +{ + nn::Result result; + + // ライブラリアプレット終了 (されていればプリロードをやめる) + result = nn::applet::CancelLibraryAppletIfRegistered( false ); + CheckAppletRetry(result); +} + +/*! + @brief ErrEULAアプレットのプリロードの終了待ちをします。 +*/ +void WaitForPreloadErrEulaApplet() +{ + nn::applet::WaitForAppletPreloaded( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットが有効になっているかを返します。 +*/ +bool IsRegisteredErrEulaApplet() +{ + return nn::applet::IsRegistered( nn::applet::CTR::ERREULA_L_APPLET_ID ); +} + +/*! + @brief ErrEULAアプレットを起動します。 + @param[in,out] pParameter パラメータ構造体。 +*/ +void StartErrEulaApplet( + nn::applet::AppletWakeupState* pWakeupState, + Parameter* pParameter + ) +{ + s32 read_len = 0; + nn::applet::AppletId appletID = 0; + + nn::Result result; + + result = nn::applet::PrepareToStartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID ); + CheckAppletRetry(result); + + nn::applet::StartLibraryApplet( nn::applet::CTR::ERREULA_L_APPLET_ID, + reinterpret_cast( pParameter ), + sizeof( Parameter ) ); + + *pWakeupState = nn::applet::WaitForStarting( &appletID, + reinterpret_cast( pParameter ), + sizeof( Parameter ), + &read_len ); + +// NN_WARNING( sizeof( Parameter ) == read_len, +// "Read param size is wrong." ); +} + +}}} ɕύXpX: sources/libraries/erreula/CTR/erreula_Api.cpp ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: sources/libraries/erreula/OMakefile =================================================================== --- sources/libraries/erreula/OMakefile (revision 0) +++ sources/libraries/erreula/OMakefile (working copy) @@ -0,0 +1,26 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009-2012 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$ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* + +SOURCES[] = + CTR/erreula_Api.cpp + +TARGET_LIBRARY = libnn_erreula + + +include $(ROOT_OMAKE)/modulerules + +build: $(DEFAULT_TARGETS) ɕύXpX: sources/libraries/erreula/OMakefile ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id URL Author Date Rev \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Index: sources/libraries/OMakefile =================================================================== --- sources/libraries/OMakefile (revision 34322) +++ sources/libraries/OMakefile (working copy) @@ -40,6 +40,7 @@ dsp err errlog + erreula fnd friends fs