SystemMenuUpdaterとして全ての機能が実装完了。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2576 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-10-02 12:44:22 +00:00
parent bc0f2ba91c
commit 2b29416930
15 changed files with 495 additions and 50 deletions

View File

@ -68,8 +68,12 @@ SRCS = main.c \
process_log.c \ process_log.c \
process_finish.c \ process_finish.c \
process_import.c \ process_import.c \
process_write_files.c \ process_write_font.c \
process_write_cert.c \
process_write_dummy.c \
process_nandfirm.c \ process_nandfirm.c \
process_namut_format.c \
process_delete_other_region_sysmenu.c \
fade.c fade.c
LINCLUDES = include \ LINCLUDES = include \

View File

@ -26,10 +26,8 @@ extern "C" {
#include <twl.h> #include <twl.h>
#define WRAP_DATA_FILE_PATH_IN_NAND "nand:/shared2/launcher/wrap.bin"
BOOL kamiCopyFile(char* srcPath, char* dstPath); BOOL kamiCopyFile(char* srcPath, char* dstPath);
BOOL kamiWriteWrapData(void); BOOL kamiCreateDummyData(const char* path);
/*===========================================================================*/ /*===========================================================================*/

View File

@ -47,6 +47,7 @@ typedef enum
è<EFBFBD>è` è<EFBFBD>è`
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#define SYSTEM_UPDATER_NAME L"System Menu Updater ver.1.0"
#define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log" #define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log"
#define SYSTEM_UPDATER_MAGIC_CODE 44001111 #define SYSTEM_UPDATER_MAGIC_CODE 44001111
@ -75,12 +76,16 @@ extern BOOL ProcessHwinfo(void);
extern void ProcessLog(void); extern void ProcessLog(void);
extern void ProcessFinish(BOOL result); extern void ProcessFinish(BOOL result);
extern BOOL ProcessImport(void); 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 FadeOutTick(void);
extern BOOL FadeInTick(void); extern BOOL FadeInTick(void);
extern BOOL FadeInMaster(void); extern BOOL FadeInMaster(void);
extern RunningConsole GetConsole(void); extern RunningConsole GetConsole(void);
extern BOOL ProcessNandfirm(void); extern BOOL ProcessNandfirm(void);
extern BOOL ProcessNamutFormat(void);
extern BOOL ProcessDeleteOtherResionSysmenu(void);
/*===========================================================================*/ /*===========================================================================*/

View File

@ -224,8 +224,8 @@ RomSpec
Root /data Root /data
File * File *
HostRoot ../data HostRoot ../data
Root /font Root /local
File tbf_ww_s.NFTR File tbf_ww_s.NFTR cert.sys
HostRoot $(PRIVKEY_PATH) HostRoot $(PRIVKEY_PATH)
Root /key Root /key
File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY)

View File

@ -159,7 +159,7 @@ static void InitCanvas(void)
void* pFontFile; void* pFontFile;
u32 size; u32 size;
size = LoadFile( &pFontFile, "/font/tbf_ww_s.NFTR" ); size = LoadFile( &pFontFile, "/local/tbf_ww_s.NFTR" );
NNS_G2D_ASSERT( size > 0 ); NNS_G2D_ASSERT( size > 0 );
NNS_G2dFontInitUTF16(&gFont, pFontFile); NNS_G2dFontInitUTF16(&gFont, pFontFile);
@ -297,14 +297,8 @@ void UpdateFreePltt(u16 color)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
void InitFont(void) void InitFont(void)
{ {
char string1[256];
u16 string2[256];
InitCanvas(); InitCanvas();
MI_CpuClear8(string1, sizeof(string1));
MI_CpuClear8(string2, sizeof(string2));
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
NNS_G2dCharCanvasClear(&gCanvas, TXT_COLOR_WHITE); NNS_G2dCharCanvasClear(&gCanvas, TXT_COLOR_WHITE);
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
@ -312,11 +306,8 @@ void InitFont(void)
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 0, 256, 30); NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 0, 256, 30);
STD_TSPrintf(string1, "System Updater rev.%s-%s", g_strSDKSvnRevision, g_strIPLSvnRevision); NNS_G2dTextCanvasDrawText(&gTextCanvas2, 39, 6,
STD_ConvertStringSjisToUnicode(string2, NULL, string1, NULL, NULL);
NNS_G2dTextCanvasDrawText(&gTextCanvas2, 30, 6,
TXT_COLOR_BLACK_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, TXT_COLOR_BLACK_BASE, TXT_DRAWTEXT_FLAG_DEFAULT,
(const char *)string2 (const char *)SYSTEM_UPDATER_NAME
); );
} }

View File

@ -103,8 +103,8 @@ BOOL kamiCopyFile(char* srcPath, char* dstPath)
return result; return result;
} }
// ダミーのDSメニューラッピング用ファイル作成UIGランチャーが作っているもの // ダミーファイル作成
BOOL kamiWriteWrapData(void) BOOL kamiCreateDummyData(const char* path)
{ {
FSFile file; FSFile file;
BOOL open_is_ok; BOOL open_is_ok;
@ -112,18 +112,18 @@ BOOL kamiWriteWrapData(void)
// 既に存在するなら何もしない // 既に存在するなら何もしない
FS_InitFile(&file); 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) if (open_is_ok)
{ {
FS_CloseFile(&file); 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; 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; 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 ); (void)FS_SetFileLength( &file, FATFS_CLUSTER_SIZE );
FS_CloseFile( &file ); FS_CloseFile( &file );

View File

@ -96,6 +96,7 @@ TwlMain()
GX_Init(); GX_Init();
FX_Init(); FX_Init();
SND_Init(); SND_Init();
SNDEX_Init();
TP_Init(); TP_Init();
RTC_Init(); RTC_Init();
@ -172,24 +173,33 @@ TwlMain()
result = TRUE; result = TRUE;
// フォーマット // NANDのフォーマットが古ければフォーマット
// result &= ProcessFormat(); result &= ProcessFormat();
// 全ハードウェア情報の更新 // 全ハードウェア情報の更新
result &= ProcessHwinfo(); result &= ProcessHwinfo();
// 必要なファイルの書き込み // フォントの書き込み
result &= ProcessWriteFiles(); result &= ProcessWriteFont();
// ダミーのラッピングデータ書き込み // cert.sysの書き込み
// result &= kamiWriteWrapData(); result &= ProcessWriteCert();
// ダミーファイルの生成
result &= ProcessWriteDummy();
// TADのインポート開始 // TADのインポート開始
result &= ProcessImport(); result &= ProcessImport();
// 選択リージョン以外のSystemMenuの消去を行う
result &= ProcessDeleteOtherResionSysmenu();
// NANDファームのインストール開始 // NANDファームのインストール開始
result &= ProcessNandfirm(); result &= ProcessNandfirm();
// 本体初期化を行う
result &= ProcessNamutFormat();
// 更新ログを作成してVersionDownを防ぐ // 更新ログを作成してVersionDownを防ぐ
if (result) if (result)
{ {

View File

@ -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 <twl.h>
#include <nitro/snd.h>
#include <twl/fatfs.h>
#include <nitro/card.h>
#include <twl/nam.h>
#include <twl/lcfg.h>
#include <sysmenu/namut.h>
#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<TITLE_ID_MUST_ERASE_NUM;i++)
{
ret = DeleteTitle( sTitleIdListMust[i] );
}
// 選択リージョンと異なるランチャーは消去する
for (i=0;i<TITLE_ID_LIST_NUM;i++)
{
if (i != gRegion)
{
ret = DeleteTitle( sTitleIdListHNA[i] );
}
}
// 選択リージョンと異なる本体設定は消去する
for (i=0;i<TITLE_ID_LIST_NUM;i++)
{
if (i != gRegion)
{
ret = DeleteTitle( sTitleIdListHNB[i] );
}
}
// 選択リージョンと異なるSysMenuバージョンは消去する
for (i=0;i<TITLE_ID_LIST_NUM;i++)
{
if (i != gRegion)
{
ret = DeleteTitle( sTitleIdListHNL[i] );
}
}
return ret;
}
static BOOL DeleteTitle(u64 titleId)
{
s32 nam_result = NAM_DeleteTitleCompletely( titleId );
if ( nam_result != NAM_OK )
{
kamiFontPrintfConsole(CONSOLE_RED, "tad delete Fail! RetCode=%x\n", nam_result);
return FALSE;
}
return TRUE;
}

View File

@ -38,6 +38,7 @@
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#define CORRECT_NAND_ARCHIVE_SIZE 0xcde0000
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -61,11 +62,27 @@ static void FormatCallback(KAMIResult result, void* arg);
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL ProcessFormat(void) BOOL ProcessFormat(void)
{ {
NNS_G2dCharCanvasClear(&gCanvas, TXT_COLOR_BLACK); FSArchiveResource resource;
NNS_G2dCharCanvasClearArea(&gCanvas, TXT_COLOR_WHITE, 0, 30, 256, 100);
NNS_G2dTextCanvasDrawText(&gTextCanvas, 40, 60, // 既に最新フォーマットであればフォーマットしない
TXT_COLOR_WHITE_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, "Now Format"); if (FS_GetArchiveResource("nand:/", &resource))
{
if (resource.totalSize == CORRECT_NAND_ARCHIVE_SIZE)
{
return TRUE;
}
}
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, 74, 72,
TXT_COLOR_WHITE_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, (const char*)
L"Now Format Nand.."
);
// フォーマット実行 // フォーマット実行
sIsFormatFinish = FALSE; sIsFormatFinish = FALSE;
@ -78,6 +95,7 @@ BOOL ProcessFormat(void)
G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0);
G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W);
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
FadeInTick();
if (sIsFormatFinish) break; if (sIsFormatFinish) break;
} }
@ -96,6 +114,11 @@ BOOL ProcessFormat(void)
NAM_End( NULL, NULL ); NAM_End( NULL, NULL );
NAM_Init( OS_AllocFromMain, OS_FreeToMain ); NAM_Init( OS_AllocFromMain, OS_FreeToMain );
while (!FadeOutTick())
{
OS_WaitVBlankIntr();
}
return sFormatResult; return sFormatResult;
} }

View File

@ -68,7 +68,7 @@ static u8 sStack[THREAD_STACK_SIZE];
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static s32 kamiImportTad(const char* path); static s32 kamiImportTad(const char* path, BOOL erase);
static void ProgressThread(void* arg); static void ProgressThread(void* arg);
static void Destructor(void* arg); static void Destructor(void* arg);
void ProgressDraw(f32 ratio); void ProgressDraw(f32 ratio);
@ -101,6 +101,8 @@ BOOL ProcessImport(void)
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 130, 256, 62); NNS_G2dCharCanvasClearArea(&gCanvas2, TXT_COLOR_BLACK, 0, 130, 256, 62);
OS_WaitVBlankIntr(); OS_WaitVBlankIntr();
NNS_G2dTextCanvasDrawText(&gTextCanvas, 40, 60,
TXT_COLOR_WHITE_BASE, TXT_DRAWTEXT_FLAG_DEFAULT, (const char*)L"Now Import..");
while(!FadeInTick()) while(!FadeInTick())
{ {
@ -156,24 +158,24 @@ BOOL ProcessImport(void)
// MAX_RETRY_COUNTまでリトライする // MAX_RETRY_COUNTまでリトライする
for (j=0; j<MAX_RETRY_COUNT; j++) for (j=0; j<MAX_RETRY_COUNT; j++)
{ {
nam_result = kamiImportTad(full_path); nam_result = kamiImportTad(full_path, j);
if (nam_result == NAM_OK) if (nam_result == NAM_OK)
{ {
break; break;
} }
else else
{ {
kamiFontPrintfConsole(CONSOLE_RED, "Import %d Retry!\n", i+1); kamiFontPrintfConsole(CONSOLE_GREEN, "Import %d Retry!\n", i);
} }
} }
if ( nam_result == NAM_OK) if ( nam_result == NAM_OK)
{ {
kamiFontPrintfConsole(FONT_COLOR_GREEN, "List : %d Import Success.\n", i+1 ); kamiFontPrintfConsole(FONT_COLOR_GREEN, "List : %d Import Success.\n", i);
} }
else else
{ {
kamiFontPrintfConsole(FONT_COLOR_RED, "Error: %d : RetCode = %d\n", i+1, nam_result ); kamiFontPrintfConsole(FONT_COLOR_RED, "Error: %d : RetCode = %d\n", i, nam_result );
result = FALSE; result = FALSE;
} }
@ -200,7 +202,7 @@ BOOL ProcessImport(void)
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static s32 kamiImportTad(const char* path) static s32 kamiImportTad(const char* path, BOOL erase)
{ {
NAMTadInfo tadInfo; NAMTadInfo tadInfo;
OSThread thread; OSThread thread;
@ -215,11 +217,14 @@ static s32 kamiImportTad(const char* path)
// ESの仕様で古い e-ticket があると新しい e-ticket を使ったインポートができない // ESの仕様で古い e-ticket があると新しい e-ticket を使ったインポートができない
// 暫定対応として該当タイトルを完全削除してからインポートする // 暫定対応として該当タイトルを完全削除してからインポートする
nam_result = NAM_DeleteTitleCompletely(tadInfo.titleInfo.titleId); if (erase)
if ( nam_result != NAM_OK )
{ {
kamiFontPrintfConsole(CONSOLE_RED, "Fail! RetCode=%x\n", nam_result); nam_result = NAM_DeleteTitleCompletely(tadInfo.titleInfo.titleId);
return FALSE; if ( nam_result != NAM_OK )
{
kamiFontPrintfConsole(CONSOLE_RED, "Fail! RetCode=%x\n", nam_result);
return FALSE;
}
} }
// インポート開始フラグを立てる // インポート開始フラグを立てる

View File

@ -0,0 +1,96 @@
/*---------------------------------------------------------------------------*
Project: SystemUpdater
File: process_namut_format.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 <stdlib.h> // atoi
#include <twl.h>
#include <twl/nam.h>
#include <sysmenu/namut.h>
#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;
}

View File

@ -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 <twl.h>
#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;
}

View File

@ -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 <twl.h>
#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<DUMMY_FILE_NUM;i++)
{
if (!kamiCreateDummyData(sDummyFileList[i]))
{
kamiFontPrintfConsole(FONT_COLOR_RED, "Write Dummy %d Fail!\n", i);
ret = FALSE;
}
}
OS_WaitVBlankIntr();
kamiFontLoadScreenData();
return ret;
}

View File

@ -1,6 +1,6 @@
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Project: SystemUpdater Project: SystemUpdater
File: process_write_files.c File: process_write_font.c
Copyright 2008 Nintendo. All rights reserved. Copyright 2008 Nintendo. All rights reserved.
@ -58,7 +58,7 @@ static const CopyFileList sCopyFileList[] =
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: ProcessWriteFiles Name: ProcessWriteFont
Description: Description:
@ -66,7 +66,7 @@ static const CopyFileList sCopyFileList[] =
Returns: ȵ<EFBFBD>B Returns: ȵ<EFBFBD>B
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL ProcessWriteFiles(void) BOOL ProcessWriteFont(void)
{ {
FSFile dir; FSFile dir;
FSDirectoryEntryInfo info[1]; FSDirectoryEntryInfo info[1];
@ -122,12 +122,12 @@ BOOL ProcessWriteFiles(void)
{ {
if (kamiCopyFile(full_path, "nand:sys/TWLFontTable.dat")) if (kamiCopyFile(full_path, "nand:sys/TWLFontTable.dat"))
{ {
kamiFontPrintfConsole(FONT_COLOR_GREEN, "Write Font Data Success.\n"); kamiFontPrintfConsole(FONT_COLOR_GREEN, "Write Data1 Success.\n");
} }
else else
{ {
result = FALSE; result = FALSE;
kamiFontPrintfConsole(FONT_COLOR_RED, "Write Font Data Failure!\n"); kamiFontPrintfConsole(FONT_COLOR_RED, "Write Data1 Failure!\n");
} }
} }