From 2b294169301802df898b004f5a56ca5c32a542e6 Mon Sep 17 00:00:00 2001 From: kamikawa Date: Thu, 2 Oct 2008 12:44:22 +0000 Subject: [PATCH] =?UTF-8?q?SystemMenuUpdater=E3=81=A8=E3=81=97=E3=81=A6?= =?UTF-8?q?=E5=85=A8=E3=81=A6=E3=81=AE=E6=A9=9F=E8=83=BD=E3=81=8C=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E5=AE=8C=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2576 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../ARM9.TWL/Makefile | 6 +- .../ARM9.TWL/include/kami_copy_file.h | 4 +- .../ARM9.TWL/include/kami_global.h | 7 +- .../ARM9.TWL/main.rsf | 4 +- .../ARM9.TWL/src/font.c | 15 +- .../ARM9.TWL/src/kami_copy_file.c | 12 +- .../ARM9.TWL/src/main.c | 22 ++- .../src/process_delete_other_region_sysmenu.c | 146 ++++++++++++++++++ .../ARM9.TWL/src/process_format.c | 31 +++- .../ARM9.TWL/src/process_import.c | 25 +-- .../ARM9.TWL/src/process_namut_format.c | 96 ++++++++++++ .../ARM9.TWL/src/process_write_cert.c | 86 +++++++++++ .../ARM9.TWL/src/process_write_dummy.c | 81 ++++++++++ ...ess_write_files.c => process_write_font.c} | 10 +- .../SystemUpdaterRegionSelect/data/cert.sys | Bin 0 -> 768 bytes 15 files changed, 495 insertions(+), 50 deletions(-) create mode 100644 build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_delete_other_region_sysmenu.c create mode 100644 build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_namut_format.c create mode 100644 build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_cert.c create mode 100644 build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_write_dummy.c rename build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/{process_write_files.c => process_write_font.c} (90%) create mode 100644 build/systemMenu_tools/SystemUpdaterRegionSelect/data/cert.sys 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;ic!S41fTiSB;erVGv$GpPIQ!pXu~Q-OF8C`R-Cd1 zJ;^7P%BT1GZ|rrh7TmOBLz&OC-Lm^$?AyKmZ1|nV1KyVeZ^ds~t@>H)m~h{L)EBM- zyDfbdYi^yPZggDEwfgC%s{2!4uM~N&B3>J$_%)10R%OL2)2FHHgm71Q?NH5~FhfRJ$oT+8G%Bd|fqR_pQUS zZH60WAKu}o82i?6!Y$LePJxkU&p6xh?R_d9q5pK>Q_fVOGe1)@)K95@XZV%;m92ZP zUH7~o_vft)y`mP=w6DDLTDv61S;f%fz@ul{R(h9${`*wjY7H0PA9pv#VcY$=N?#R! zaWqyW`s$y*zOjp=Ks8{cM)Tqp1t?> Q_x&{=E;0bqF*%_J0PVpB*Z=?k literal 0 HcmV?d00001