diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile index ad7c9915..a100c1d8 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile @@ -68,8 +68,12 @@ SRCS = main.c \ process_log.c \ process_finish.c \ process_import.c \ - process_write_files.c \ + process_write_font.c \ + process_write_cert.c \ + process_write_dummy.c \ process_nandfirm.c \ + process_namut_format.c \ + process_delete_other_region_sysmenu.c \ fade.c LINCLUDES = include \ diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_copy_file.h b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_copy_file.h index 73d3cc67..76714aa3 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_copy_file.h +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_copy_file.h @@ -26,10 +26,8 @@ extern "C" { #include -#define WRAP_DATA_FILE_PATH_IN_NAND "nand:/shared2/launcher/wrap.bin" - BOOL kamiCopyFile(char* srcPath, char* dstPath); -BOOL kamiWriteWrapData(void); +BOOL kamiCreateDummyData(const char* path); /*===========================================================================*/ diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_global.h b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_global.h index e2eeb324..50510dbb 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_global.h +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/include/kami_global.h @@ -47,6 +47,7 @@ typedef enum 定数定義 *---------------------------------------------------------------------------*/ +#define SYSTEM_UPDATER_NAME L"System Menu Updater ver.1.0" #define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log" #define SYSTEM_UPDATER_MAGIC_CODE 44001111 @@ -75,12 +76,16 @@ extern BOOL ProcessHwinfo(void); extern void ProcessLog(void); extern void ProcessFinish(BOOL result); extern BOOL ProcessImport(void); -extern BOOL ProcessWriteFiles(void); +extern BOOL ProcessWriteFont(void); +extern BOOL ProcessWriteCert(void); +extern BOOL ProcessWriteDummy(void); extern BOOL FadeOutTick(void); extern BOOL FadeInTick(void); extern BOOL FadeInMaster(void); extern RunningConsole GetConsole(void); extern BOOL ProcessNandfirm(void); +extern BOOL ProcessNamutFormat(void); +extern BOOL ProcessDeleteOtherResionSysmenu(void); /*===========================================================================*/ diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/main.rsf b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/main.rsf index c01d374d..0430938f 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/main.rsf +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/main.rsf @@ -224,8 +224,8 @@ RomSpec Root /data File * HostRoot ../data - Root /font - File tbf_ww_s.NFTR + Root /local + File tbf_ww_s.NFTR cert.sys HostRoot $(PRIVKEY_PATH) Root /key File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/font.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/font.c index 83546fe1..eca751ab 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/font.c +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/font.c @@ -159,7 +159,7 @@ static void InitCanvas(void) void* pFontFile; u32 size; - size = LoadFile( &pFontFile, "/font/tbf_ww_s.NFTR" ); + size = LoadFile( &pFontFile, "/local/tbf_ww_s.NFTR" ); NNS_G2D_ASSERT( size > 0 ); NNS_G2dFontInitUTF16(&gFont, pFontFile); @@ -297,14 +297,8 @@ void UpdateFreePltt(u16 color) *---------------------------------------------------------------------------*/ void InitFont(void) { - char string1[256]; - u16 string2[256]; - InitCanvas(); - MI_CpuClear8(string1, sizeof(string1)); - MI_CpuClear8(string2, sizeof(string2)); - OS_WaitVBlankIntr(); NNS_G2dCharCanvasClear(&gCanvas, TXT_COLOR_WHITE); OS_WaitVBlankIntr(); @@ -312,11 +306,8 @@ void InitFont(void) OS_WaitVBlankIntr(); NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 0, 256, 30); - STD_TSPrintf(string1, "System Updater rev.%s-%s", g_strSDKSvnRevision, g_strIPLSvnRevision); - STD_ConvertStringSjisToUnicode(string2, NULL, string1, NULL, NULL); - - NNS_G2dTextCanvasDrawText(&gTextCanvas2, 30, 6, + NNS_G2dTextCanvasDrawText(&gTextCanvas2, 39, 6, TXT_COLOR_BLACK_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, - (const char *)string2 + (const char *)SYSTEM_UPDATER_NAME ); } diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/kami_copy_file.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/kami_copy_file.c index 3bd2dee7..8aa1de7b 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/kami_copy_file.c +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/kami_copy_file.c @@ -103,8 +103,8 @@ BOOL kamiCopyFile(char* srcPath, char* dstPath) return result; } -// ダミーのDSメニューラッピング用ファイル作成(UIGランチャーが作っているもの) -BOOL kamiWriteWrapData(void) +// ダミーファイル作成 +BOOL kamiCreateDummyData(const char* path) { FSFile file; BOOL open_is_ok; @@ -112,18 +112,18 @@ BOOL kamiWriteWrapData(void) // 既に存在するなら何もしない FS_InitFile(&file); - open_is_ok = FS_OpenFile(&file, WRAP_DATA_FILE_PATH_IN_NAND); + open_is_ok = FS_OpenFile(&file, path); if (open_is_ok) { FS_CloseFile(&file); - OS_Printf("%s is already exist.\n", WRAP_DATA_FILE_PATH_IN_NAND); + OS_Printf("%s is already exist.\n", path); return TRUE; } - if( FS_CreateFileAuto( WRAP_DATA_FILE_PATH_IN_NAND, FS_PERMIT_R | FS_PERMIT_W ) ) + if( FS_CreateFileAuto( path, FS_PERMIT_R | FS_PERMIT_W ) ) { FSFile file; - if( FS_OpenFileEx( &file, WRAP_DATA_FILE_PATH_IN_NAND, FS_FILEMODE_RW ) ) + if( FS_OpenFileEx( &file, path, FS_FILEMODE_RW ) ) { (void)FS_SetFileLength( &file, FATFS_CLUSTER_SIZE ); FS_CloseFile( &file ); diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/main.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/main.c index 9729f919..cbf256c5 100644 --- a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/main.c +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/main.c @@ -96,6 +96,7 @@ TwlMain() GX_Init(); FX_Init(); SND_Init(); + SNDEX_Init(); TP_Init(); RTC_Init(); @@ -172,24 +173,33 @@ TwlMain() result = TRUE; - // フォーマット -// result &= ProcessFormat(); + // NANDのフォーマットが古ければフォーマット + result &= ProcessFormat(); // 全ハードウェア情報の更新 result &= ProcessHwinfo(); - // 必要なファイルの書き込み - result &= ProcessWriteFiles(); + // フォントの書き込み + result &= ProcessWriteFont(); - // ダミーのラッピングデータ書き込み -// result &= kamiWriteWrapData(); + // cert.sysの書き込み + result &= ProcessWriteCert(); + + // ダミーファイルの生成 + result &= ProcessWriteDummy(); // TADのインポート開始 result &= ProcessImport(); + // 選択リージョン以外のSystemMenuの消去を行う + result &= ProcessDeleteOtherResionSysmenu(); + // NANDファームのインストール開始 result &= ProcessNandfirm(); + // 本体初期化を行う + result &= ProcessNamutFormat(); + // 更新ログを作成してVersionDownを防ぐ if (result) { diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_delete_other_region_sysmenu.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_delete_other_region_sysmenu.c new file mode 100644 index 00000000..0872ec18 --- /dev/null +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_delete_other_region_sysmenu.c @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------* + Project: SystemUpdater + File: process_delete_tad.c + + Copyright 2008 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. + + $Date:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include +#include "kami_font.h" +#include "hw_info.h" +#include "TWLHWInfo_api.h" +#include "graphics.h" +#include "kami_global.h" +#include "font.h" + +/*---------------------------------------------------------------------------* + 型定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 定数定義 + *---------------------------------------------------------------------------*/ +#define TITLE_ID_MUST_ERASE_NUM 3 +#define TITLE_ID_LIST_NUM 4 + +/*---------------------------------------------------------------------------* + 内部変数定義 + *---------------------------------------------------------------------------*/ + +static const u64 sTitleIdListMust[TITLE_ID_MUST_ERASE_NUM] = +{ + 0x00030017484e4141, // ALL HNAA + 0x00030015484e4241, // ALL HNBA + 0x0003000f484e4c41, // ALL HNLA +}; + +static const u64 sTitleIdListHNA[TITLE_ID_LIST_NUM] = +{ + 0x00030017484e414A, // Japan HNAJ + 0x00030017484e4145, // America HNAE + 0x00030017484e4150, // Europe HNAP + 0x00030017484e4155, // Australia HNAU +}; + +static const u64 sTitleIdListHNB[TITLE_ID_LIST_NUM] = +{ + 0x00030015484e424A, // Japan HNBJ + 0x00030015484e4245, // America HNBE + 0x00030015484e4250, // Europe HNBP + 0x00030015484e4255, // Australia HNBU +}; + +static const u64 sTitleIdListHNL[TITLE_ID_LIST_NUM] = +{ + 0x0003000f484e4c4A, // Japan HNLJ + 0x0003000f484e4c45, // America HNLE + 0x0003000f484e4c50, // Europe HNLP + 0x0003000f484e4c55, // Australia HNLU +}; + +/*---------------------------------------------------------------------------* + 内部関数宣言 + *---------------------------------------------------------------------------*/ +static BOOL DeleteTitle(u64 titleId); + +/*---------------------------------------------------------------------------* + 処理関数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + Name: ProcessDeleteOtherResionSysmenu + + Description: 選択リージョン以外のSystemMenuを消去する。 + ユーザーアプリは本体初期化の際に消去される。 + + Arguments: なし。 + + Returns: なし。 + *---------------------------------------------------------------------------*/ +BOOL ProcessDeleteOtherResionSysmenu(void) +{ + s32 i; + BOOL ret = TRUE; + + // ランチャーと本体設定とSysMenuバージョンのALL版は全て消去する + for (i=0;i // atoi +#include +#include +#include +#include "font.h" +#include "graphics.h" +#include "keypad.h" +#include "debugger_hw_reset_control.h" +#include "debugger_card_rom.h" +#include "kami_global.h" +#include "kami_pxi.h" +#include "kami_font.h" + +/*---------------------------------------------------------------------------* + 型定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + グローバル変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部定数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部関数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + Name: ProcessNamutFormat + + Description: + + Arguments: なし。 + + Returns: なし。 + *---------------------------------------------------------------------------*/ +BOOL ProcessNamutFormat(void) +{ + BOOL result; + + OS_WaitVBlankIntr(); + NNS_G2dCharCanvasClearArea(&gCanvas, TXT_COLOR_WHITE, 0, 30, 256, 100); + OS_WaitVBlankIntr(); + NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 130, 256, 62); + OS_WaitVBlankIntr(); + + NNS_G2dTextCanvasDrawText(&gTextCanvas, 50, 72, + TXT_COLOR_WHITE_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, (const char*) + L"Format System Memory.." + ); + + while(!FadeInTick()) + { + G3X_Reset(); + G3_Identity(); + G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); + G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); + OS_WaitVBlankIntr(); + } + + result = NAMUT_Format(); + + while (!FadeOutTick()) + { + G3X_Reset(); + G3_Identity(); + G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); + G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); + OS_WaitVBlankIntr(); + } + + return result; +} diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_cert.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_cert.c new file mode 100644 index 00000000..1b8924cc --- /dev/null +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_cert.c @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------* + Project: SystemUpdater + File: process_write_cert.c + + Copyright 2008 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. + + $Date:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ + +#include +#include "font.h" +#include "graphics.h" +#include "keypad.h" +#include "debugger_hw_reset_control.h" +#include "debugger_card_rom.h" +#include "kami_global.h" +#include "kami_copy_file.h" +#include "kami_font.h" + +/*---------------------------------------------------------------------------* + 型定義 + *---------------------------------------------------------------------------*/ + +typedef struct _CopyFileList +{ + char* srcPath; + char* dstPath; +} CopyFileList; + +/*---------------------------------------------------------------------------* + グローバル変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部定数定義 + *---------------------------------------------------------------------------*/ + +static const CopyFileList sCertList = +{ + "rom:/local/cert.sys", "nand:/sys/cert.sys" +}; + +/*---------------------------------------------------------------------------* + 内部変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部関数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + Name: ProcessWriteCert + + Description: + + Arguments: なし。 + + Returns: なし。 + *---------------------------------------------------------------------------*/ +BOOL ProcessWriteCert(void) +{ + BOOL ret; + + ret = kamiCopyFile(sCertList.srcPath, sCertList.dstPath); + + if (ret) + { + kamiFontPrintfConsole(FONT_COLOR_GREEN, "Write Data2 Success.\n"); + } + else + { + kamiFontPrintfConsole(FONT_COLOR_RED, "Write Data2 Failure!\n"); + } + + OS_WaitVBlankIntr(); + kamiFontLoadScreenData(); + return ret; +} diff --git a/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_dummy.c b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_dummy.c new file mode 100644 index 00000000..f6683116 --- /dev/null +++ b/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_dummy.c @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------* + Project: SystemUpdater + File: process_write_dummy.c + + Copyright 2008 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. + + $Date:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ + +#include +#include "font.h" +#include "graphics.h" +#include "keypad.h" +#include "debugger_hw_reset_control.h" +#include "debugger_card_rom.h" +#include "kami_global.h" +#include "kami_copy_file.h" +#include "kami_font.h" + +/*---------------------------------------------------------------------------* + 型定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + グローバル変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部定数定義 + *---------------------------------------------------------------------------*/ +#define DUMMY_FILE_NUM 2 + +static const char* sDummyFileList[DUMMY_FILE_NUM] = +{ + "nand:/shared2/launcher/wrap.bin", // ないと本体初期化でこける + "nand:/sys/dev.kp" // ないとアプリ管理画面が表示されない +}; + +/*---------------------------------------------------------------------------* + 内部変数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + 内部関数定義 + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------* + Name: ProcessWriteDummy + + Description: + + Arguments: なし。 + + Returns: なし。 + *---------------------------------------------------------------------------*/ +BOOL ProcessWriteDummy(void) +{ + BOOL ret = TRUE; + s32 i; + + for (i=0;i