mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
FatalError発生器。初版。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1976 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
856387618f
commit
d30b65aac1
77
build/tests/FatalErrorMaker/ARM9/Makefile
Normal file
77
build/tests/FatalErrorMaker/ARM9/Makefile
Normal file
@ -0,0 +1,77 @@
|
||||
#/*---------------------------------------------------------------------------*
|
||||
# Project: TwlIPL - tests - FatalErrorMaker
|
||||
# File: makefile
|
||||
#
|
||||
# Copyright **** 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$
|
||||
# *---------------------------------------------------------------------------*/
|
||||
TARGET_FIRM = SYSTEMMENU
|
||||
TARGET_PLATFORM = TWL
|
||||
TWL_ARCHGEN = LIMITED
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
MISC_DIR = ../../../systemMenu_RED/misc
|
||||
|
||||
SRCS = main.c fatalErrorMaker.c \
|
||||
$(MISC_DIR)/src/misc.c \
|
||||
$(MISC_DIR)/src/cmn.c
|
||||
|
||||
LINCLUDES += $(MISC_DIR)/include
|
||||
|
||||
ROM_SPEC = main.rsf
|
||||
|
||||
TARGET_BIN = FatalErrorMaker.srl
|
||||
|
||||
SYSMENU_LIBS = \
|
||||
liblcfg$(TWL_LIBSUFFIX).a \
|
||||
libsysmenu$(TWL_LIBSUFFIX).a \
|
||||
libsysmmcu$(TWL_LIBSUFFIX).a \
|
||||
libsysmutil$(TWL_LIBSUFFIX).a \
|
||||
libboot$(TWL_LIBSUFFIX).a \
|
||||
libds$(TWL_LIBSUFFIX).a \
|
||||
libhotsw$(TWL_LIBSUFFIX).a \
|
||||
libdht$(TWL_LIBSUFFIX).a \
|
||||
libreloc_info$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a \
|
||||
libsharedfont_launcher$(TWL_LIBSUFFIX).a \
|
||||
WDS$(TWL_LIBSUFFIX).a
|
||||
|
||||
SDK_APPEND_LIBS = \
|
||||
libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libreboot$(TWL_LIBSUFFIX).a \
|
||||
libna$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo
|
||||
DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
do-build: $(TARGETS)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
#===== End of Makefile =====
|
||||
245
build/tests/FatalErrorMaker/ARM9/main.rsf
Normal file
245
build/tests/FatalErrorMaker/ARM9/main.rsf
Normal file
@ -0,0 +1,245 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - include
|
||||
# File: ROM-TS.rsf
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, 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$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# TWL ROM SPEC FILE
|
||||
#
|
||||
|
||||
Arm9
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
Elf "$(MAKEROM_ARM9:r).tef"
|
||||
}
|
||||
|
||||
Arm7
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
Elf "$(MAKEROM_ARM7_BASE:r).tef"
|
||||
}
|
||||
|
||||
Arm9.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
}
|
||||
|
||||
Arm7.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
}
|
||||
|
||||
Property
|
||||
{
|
||||
###
|
||||
### Settings for FinalROM
|
||||
###
|
||||
#### BEGIN
|
||||
#
|
||||
# TITLE NAME: Your product name within 12bytes
|
||||
#
|
||||
TitleName "DispInfo"
|
||||
|
||||
#
|
||||
# MAKER CODE: Your company ID# in 2 ascii words
|
||||
# issued by NINTENDO
|
||||
#
|
||||
MakerCode 01
|
||||
|
||||
#
|
||||
# REMASTER VERSION: Mastering version
|
||||
#
|
||||
#RomVersion 0
|
||||
|
||||
#
|
||||
# ROM SPEED TYPE: [MROM/1TROM/UNDEFINED]
|
||||
#
|
||||
RomSpeedType $(MAKEROM_ROMSPEED)
|
||||
|
||||
#
|
||||
# ROM SIZE: in bit [64M/128M/256M/512M/1G/2G]
|
||||
#
|
||||
#RomSize 128M
|
||||
#RomSize 256M
|
||||
|
||||
#
|
||||
# ROM PADDING: TRUE if finalrom
|
||||
#
|
||||
#RomFootPadding TRUE
|
||||
|
||||
#
|
||||
# ROM HEADER TEMPLATE: Provided to every product by NINTENDO
|
||||
#
|
||||
#RomHeaderTemplate ./etc/rom_header.template.sbin
|
||||
|
||||
#
|
||||
# BANNER FILE: generated from Banner Spec File
|
||||
#
|
||||
#BannerFile ./etc/myGameBanner.bnr
|
||||
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr
|
||||
|
||||
#
|
||||
# Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingNormalJump FALSE
|
||||
|
||||
#
|
||||
# Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingTmpJump FALSE
|
||||
|
||||
###
|
||||
### Setting for TWL
|
||||
###
|
||||
|
||||
#
|
||||
# ROM HEADER Ltd: Provided to every product by NINTENDO
|
||||
#
|
||||
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
|
||||
|
||||
#
|
||||
# Digest parameters:
|
||||
#
|
||||
DigestParam 1024 32
|
||||
|
||||
#
|
||||
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD
|
||||
# MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
WramMapping MAP_TS_SCR
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
|
||||
#
|
||||
CardRegion ALL
|
||||
|
||||
#
|
||||
# CommonClientKey: launcher deliver common client Key [TRUE/FALSE]
|
||||
#
|
||||
#CommonClientKey FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotB FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotC FALSE
|
||||
|
||||
#
|
||||
# SDCardAccess: sd card access control [TRUE/FALSE]
|
||||
#
|
||||
#SDCardAccess FALSE
|
||||
|
||||
#
|
||||
# NANDAccess: NAND access control [TRUE/FALSE]
|
||||
#
|
||||
#NANDAccess FALSE
|
||||
NANDAccess TRUE
|
||||
|
||||
#
|
||||
# Codec mode:
|
||||
# don't have to edit
|
||||
#
|
||||
CodecMode $(MAKEROM_CODEC_MODE)
|
||||
|
||||
#
|
||||
# Disp WiFiConnection Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#WiFiConnectionIcon FALSE
|
||||
|
||||
#
|
||||
# Disp DSWireless Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#DSWirelessIcon FALSE
|
||||
LockSCFG FALSE
|
||||
|
||||
|
||||
###
|
||||
#### END
|
||||
}
|
||||
|
||||
AppendProperty
|
||||
{
|
||||
#
|
||||
# Publisher : "Nintendo"
|
||||
# don't have to edit
|
||||
Publisher Nintendo
|
||||
|
||||
#
|
||||
# Application type : [USER/SYSTEM]
|
||||
# don't have to edit
|
||||
AppType SYSTEM
|
||||
|
||||
#
|
||||
# launch title on the launcher : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Launch TRUE
|
||||
|
||||
#
|
||||
# Boot allowed Media: [GameCard]
|
||||
#
|
||||
Media NAND
|
||||
|
||||
#
|
||||
# Data only title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
#DataOnly FALSE
|
||||
|
||||
#
|
||||
# Secure title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Secure TRUE
|
||||
|
||||
#
|
||||
# GameCode for TitleID : Your GameCode in 4 ascii words
|
||||
#
|
||||
GameCode ABCZ
|
||||
|
||||
#
|
||||
# Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PublicSaveDataSize 32K
|
||||
|
||||
#
|
||||
# Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PrivateSaveDataSize 16K
|
||||
|
||||
#
|
||||
# Enable SubBannerFile
|
||||
#SubBannerFile TRUE
|
||||
|
||||
}
|
||||
|
||||
RomSpec
|
||||
{
|
||||
Offset 0x00000000
|
||||
Segment ALL
|
||||
HostRoot ../../../systemMenu_RED/data
|
||||
Root /data
|
||||
File NTR_IPL_font_m.NFTR
|
||||
|
||||
}
|
||||
378
build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c
Normal file
378
build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c
Normal file
@ -0,0 +1,378 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - tests - FatalErrorMaker
|
||||
File: fatalErrorMaker.c
|
||||
|
||||
Copyright **** 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/nam.h>
|
||||
#include <nitro/nvram/nvram.h>
|
||||
#include "misc.h"
|
||||
#include "fatalErrorMaker.h"
|
||||
|
||||
#define NORMAL_INFO_PATH "nand:/sys/HWINFO_N.dat"
|
||||
#define SECURE_INFO_PATH "nand:/sys/HWINFO_S.dat"
|
||||
#define SHARED_FONT_PATH "nand:/sys/TWLFontTable.dat"
|
||||
#define WIRELESS_TITLEID 0x0003000F484E4341
|
||||
|
||||
#define NOR_BUFSIZE 128
|
||||
#define NOR_SETTING_ADDRESS_OFFSET 0x20
|
||||
#define NOR_NANDFLAG_NEGATIVE_OFFSET ( 0x1fe00 - 0x1f380 )
|
||||
#define NOR_NANDFLAG_MASK 0x10
|
||||
|
||||
#define SELECT_MESSAGE "select data for breaking."
|
||||
#define SUCCESS_MESSAGE "breaking data succeeded."
|
||||
#define FAIL_MESSAGE "breaking data failed."
|
||||
#define ALREADY_MESSAGE "this data is broken already."
|
||||
|
||||
#define MENU_LINES 5
|
||||
#define INFORMATION_LEFT 20
|
||||
#define INFORMATION_UP 150
|
||||
#define SELECTION_LEFT 40
|
||||
#define RESULT_LEFT 190
|
||||
#define SELECTION_UP 30
|
||||
#define ALLOW_LEFT 25
|
||||
#define LINE_OFFSET 20
|
||||
#define HEADER_LEFT 5
|
||||
#define HEADER_UP 0
|
||||
|
||||
typedef enum FatalErrorTarget {
|
||||
BREAK_HW_NORMAL = 0,
|
||||
BREAK_HW_SECURE = 1,
|
||||
BREAK_FONT = 2,
|
||||
BREAK_WIRELESS = 3,
|
||||
BREAK_NAND = 4
|
||||
} FatalErrorTarget;
|
||||
|
||||
|
||||
typedef enum ControlResult {
|
||||
CONTROL_RESULT_INITIAL = 0,
|
||||
CONTROL_RESULT_SUCCESS = 1,
|
||||
CONTROL_RESULT_FAILED = 2,
|
||||
CONTROL_RESULT_ALREADY = 3,
|
||||
CONTROL_RESULT_MOVE = 4,
|
||||
CONTROL_RESULT_NONE = -1
|
||||
} ControlResult;
|
||||
|
||||
ControlResult control( int *line, u8 *flag );
|
||||
void draw( int select, int result, int flag );
|
||||
BOOL breakNAND( void );
|
||||
BOOL breakData( FatalErrorTarget tgt );
|
||||
static void DumpBinary(u32 offset, void* data, u32 size);
|
||||
void setParity( u8 *data );
|
||||
|
||||
static char* s_strInfo[4];
|
||||
static char* s_strMenu[ MENU_LINES ];
|
||||
static char* s_strFilePath[ MENU_LINES ];
|
||||
|
||||
void fatalMakerMain( void )
|
||||
{
|
||||
static int selectLine = 0;
|
||||
static u8 brokenFlag = 0; // 0: NORMAL, 1: SECURE, 2: FONT, 3: WL, 4: NAND
|
||||
ControlResult result ;
|
||||
|
||||
result = control( &selectLine, &brokenFlag ); // 入力を呼んで状態を更新
|
||||
|
||||
// 画面の描画
|
||||
draw( selectLine, result , brokenFlag );
|
||||
}
|
||||
|
||||
void draw( int select, int result, int flag )
|
||||
{
|
||||
static int lastBreakData;
|
||||
static int lastStatus = CONTROL_RESULT_INITIAL;
|
||||
int i;
|
||||
|
||||
// 何らかの決定動作があった場合はlastBreakDataを更新
|
||||
if( result != CONTROL_RESULT_NONE && result != CONTROL_RESULT_MOVE )
|
||||
{
|
||||
lastBreakData = select;
|
||||
lastStatus = result;
|
||||
}
|
||||
|
||||
// 操作があったときはキャンパスクリア
|
||||
if( result != CONTROL_RESULT_NONE )
|
||||
{
|
||||
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
|
||||
}
|
||||
|
||||
// 項目の羅列
|
||||
for( i = 0; i < MENU_LINES; i++ )
|
||||
{
|
||||
if( i == select )
|
||||
{
|
||||
PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_GREEN, s_strMenu[i] );
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_BLACK, s_strMenu[i] );
|
||||
}
|
||||
|
||||
// 破壊したかどうかの表示
|
||||
if( flag & (1 << i) )
|
||||
{
|
||||
PrintfSJIS( RESULT_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_RED, "BROKEN" );
|
||||
}
|
||||
}
|
||||
|
||||
PrintfSJIS( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "Fatal Error Maker" );
|
||||
PrintfSJIS( INFORMATION_LEFT, INFORMATION_UP, TXT_COLOR_BLACK, s_strInfo[ lastStatus ] );
|
||||
PrintfSJIS( ALLOW_LEFT, SELECTION_UP + (select * LINE_OFFSET), TXT_COLOR_BLACK, "→" );
|
||||
|
||||
}
|
||||
|
||||
ControlResult control( int *line, u8 *flag )
|
||||
{
|
||||
BOOL controlFlag = FALSE; // 何らかの操作があったかどうかをメモる
|
||||
|
||||
if( pad.trg & PAD_KEY_UP )
|
||||
{
|
||||
controlFlag = TRUE;
|
||||
|
||||
// デクリメントしてマイナスになったらループ
|
||||
if( --*line < 0 )
|
||||
{
|
||||
*line = MENU_LINES-1;
|
||||
}
|
||||
}
|
||||
else if( pad.trg & PAD_KEY_DOWN )
|
||||
{
|
||||
controlFlag = TRUE;
|
||||
|
||||
// インクリメントしてmaxを超えたらループ
|
||||
if( MENU_LINES <= ++*line )
|
||||
{
|
||||
*line = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if( pad.trg & PAD_BUTTON_A )
|
||||
{
|
||||
controlFlag = TRUE;
|
||||
|
||||
// 選択項目を破壊する
|
||||
if( *flag & (1 << *line) )
|
||||
{
|
||||
// フラグが立ってたら既に破壊済みなので何もしない
|
||||
return CONTROL_RESULT_ALREADY;
|
||||
}
|
||||
|
||||
// データを実際に破壊する
|
||||
if( ! breakData( (FatalErrorTarget)*line ) )
|
||||
{
|
||||
// 破壊に失敗
|
||||
return CONTROL_RESULT_FAILED;
|
||||
}
|
||||
|
||||
// 破壊成功
|
||||
*flag |= 1 << *line ;
|
||||
return CONTROL_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
// 特に何も破壊しない
|
||||
return controlFlag ? CONTROL_RESULT_MOVE : CONTROL_RESULT_NONE;
|
||||
}
|
||||
|
||||
BOOL breakData( FatalErrorTarget tgt )
|
||||
{
|
||||
switch( tgt )
|
||||
{
|
||||
case BREAK_FONT:
|
||||
case BREAK_HW_NORMAL:
|
||||
case BREAK_HW_SECURE:
|
||||
case BREAK_WIRELESS:
|
||||
// SharedFont, NormalInfo, SecureInfoについては該当パスきめうちで削除してしまう
|
||||
if( ! FS_DeleteFile( s_strFilePath[tgt] ) )
|
||||
{
|
||||
OS_TPrintf( "FS_DeleteFile Error. file: %s err: %d\n" ,
|
||||
s_strFilePath[tgt], FS_GetArchiveResultCode( s_strFilePath[tgt] ) );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
OS_TPrintf( "delete file succeeded. : %s\n", s_strFilePath[tgt] );
|
||||
return TRUE;
|
||||
|
||||
case BREAK_NAND:
|
||||
return breakNAND() ;
|
||||
}
|
||||
|
||||
// illegal argument
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL breakNAND( void )
|
||||
{
|
||||
static u8 buf[NOR_BUFSIZE] ;
|
||||
u32 settingAddress;
|
||||
NVRAMResult result;
|
||||
|
||||
|
||||
// まずIPLヘッダから本体設定のあるオフセットを取得
|
||||
|
||||
// キャッシュを破棄
|
||||
DC_InvalidateRange( buf, NOR_BUFSIZE);
|
||||
result = NVRAMi_Read( NOR_SETTING_ADDRESS_OFFSET , NOR_BUFSIZE, buf );
|
||||
|
||||
if( result != NVRAM_RESULT_SUCCESS )
|
||||
{
|
||||
// readに失敗
|
||||
OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
OS_TPrintf("reading address... %x %x \n", buf[0], buf[1] );
|
||||
|
||||
// 格納されている値の8倍が設定アドレスの開始アドレス
|
||||
settingAddress = ( (u32)(buf[1]) << 8 | (u32)buf[0]) * 8 ;
|
||||
OS_TPrintf("settingAddress : %x\n", settingAddress );
|
||||
|
||||
DC_InvalidateRange( buf, NOR_BUFSIZE);
|
||||
result = NVRAMi_Read( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf );
|
||||
|
||||
if( result != NVRAM_RESULT_SUCCESS )
|
||||
{
|
||||
// readに失敗
|
||||
OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
DumpBinary( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , buf, NOR_BUFSIZE );
|
||||
|
||||
OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] );
|
||||
buf[ NOR_BUFSIZE - 1 ] |= NOR_NANDFLAG_MASK;
|
||||
setParity( &buf[NOR_BUFSIZE-1] );
|
||||
OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] );
|
||||
|
||||
// キャッシュを書き戻して、それからnvramに書き込む
|
||||
DC_StoreRange(buf, sizeof(buf));
|
||||
result = NVRAMi_Write( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf );
|
||||
|
||||
// 読み直す
|
||||
DC_InvalidateRange( buf, NOR_BUFSIZE);
|
||||
result = NVRAMi_Verify( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf );
|
||||
|
||||
if( result != NVRAM_RESULT_SUCCESS )
|
||||
{
|
||||
// writeに失敗
|
||||
OS_TPrintf( "nvram_verify() failed. errorcode: %d\n", result );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// 書き込み成功
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void fatalMakerInit( void )
|
||||
{
|
||||
static char filePath[NAM_PATH_LEN+1];
|
||||
|
||||
GX_DispOff();
|
||||
GXS_DispOff();
|
||||
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
|
||||
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
|
||||
GX_DispOn();
|
||||
GXS_DispOn();
|
||||
|
||||
// 無線ファームのパスを取得する
|
||||
NAM_GetTitleBootContentPath( filePath , WIRELESS_TITLEID); //
|
||||
s_strFilePath[ BREAK_WIRELESS ] = filePath;
|
||||
OS_TPrintf( "wireless path : %s\n", filePath );
|
||||
}
|
||||
|
||||
static char* s_strInfo[] = {
|
||||
SELECT_MESSAGE,
|
||||
SUCCESS_MESSAGE,
|
||||
FAIL_MESSAGE,
|
||||
ALREADY_MESSAGE
|
||||
};
|
||||
|
||||
static char* s_strMenu[] = {
|
||||
"HW Normal Info",
|
||||
"HW Secure Info",
|
||||
"Shared Font",
|
||||
"Wireless Firmware",
|
||||
"NAND"
|
||||
};
|
||||
|
||||
static char* s_strFilePath[] = {
|
||||
NORMAL_INFO_PATH,
|
||||
SECURE_INFO_PATH,
|
||||
SHARED_FONT_PATH,
|
||||
NULL, // 無線ファームのパスはあとからNAM経由で入れる
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: DumpBinary
|
||||
Description: バイナリデータを 16 進数表記でダンプ出力する。
|
||||
Arguments: offset - 先頭アドレスを指定。
|
||||
data - ダンプ表示するデータへのポインタ。
|
||||
size - ダンプ表示するデータ量をバイト単位で指定。
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
DumpBinary(u32 offset, void* data, u32 size)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
if ((offset % 16) != 0)
|
||||
{
|
||||
OS_TPrintf("%08x:", (u32)(offset & ~0xf));
|
||||
for (i = 0; i < (offset % 16); i ++)
|
||||
{
|
||||
OS_TPrintf(" ");
|
||||
if ((i % 16) == 7)
|
||||
{
|
||||
OS_TPrintf(" -");
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i = 0; i < size; i ++)
|
||||
{
|
||||
if (((offset + i) % 16) == 0)
|
||||
{
|
||||
OS_TPrintf("%08x:", offset + i);
|
||||
}
|
||||
OS_TPrintf(" %02x", ((u8*)data)[i]);
|
||||
if (((offset + i) % 16) == 7)
|
||||
{
|
||||
OS_TPrintf(" -");
|
||||
}
|
||||
else if (((offset + i) % 16) == 15)
|
||||
{
|
||||
OS_TPrintf("\n");
|
||||
}
|
||||
}
|
||||
if (((offset + i - 1) % 16) != 15)
|
||||
{
|
||||
OS_TPrintf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setParity( u8 *data )
|
||||
{
|
||||
u8 i, parity;
|
||||
|
||||
parity = 1; /* 通常と逆(1が奇数個で0になる)*/
|
||||
for( i=0; i<7; i++) { /* 0-7(最上位ビットがparity) */
|
||||
parity += ((*data >> i) & 0x01);
|
||||
}
|
||||
/* パリティビットを上書き */
|
||||
*data &= (u8)(~(0x80));
|
||||
*data |= ((parity << 7) & 0x80);
|
||||
}
|
||||
34
build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h
Normal file
34
build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h
Normal file
@ -0,0 +1,34 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - tests - FatalErrorMaker
|
||||
File: fatalErrorMaker.h
|
||||
|
||||
Copyright **** 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$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __FATAL_ERROR_MAKE__
|
||||
#define __FATAL_ERROR_MAKE__
|
||||
|
||||
#include <twl.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void fatalMakerMain( void );
|
||||
void fatalMakerInit( void );
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
97
build/tests/FatalErrorMaker/ARM9/src/main.c
Normal file
97
build/tests/FatalErrorMaker/ARM9/src/main.c
Normal file
@ -0,0 +1,97 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - tests - DisplaySystemInformation
|
||||
File: main.c
|
||||
|
||||
Copyright **** 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 <twl/nam.h>
|
||||
#include <nitro/nvram/nvram.h>
|
||||
|
||||
#include "misc.h"
|
||||
#include "fatalErrorMaker.h"
|
||||
|
||||
/////////////////////////////
|
||||
|
||||
void VBlankHandler( void );
|
||||
|
||||
/////////////////////////////
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: TwlMain
|
||||
|
||||
Description: main
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
void TwlMain( void )
|
||||
{
|
||||
|
||||
OS_Init();
|
||||
OS_InitTick();
|
||||
OS_TPrintf("Initialize begin\n");
|
||||
|
||||
//---- interrupt setting
|
||||
OS_EnableIrq();
|
||||
OS_EnableInterrupts();
|
||||
|
||||
GX_Init();
|
||||
|
||||
OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler );
|
||||
OS_EnableIrqMask( OS_IE_V_BLANK );
|
||||
GX_VBlankIntr( TRUE );
|
||||
|
||||
OS_TPrintf("RTC Initilize...\n");
|
||||
RTC_Init();
|
||||
|
||||
OS_TPrintf("Allocator Initialize...\n");
|
||||
InitAllocator();
|
||||
|
||||
|
||||
InitBG();
|
||||
OS_TPrintf("Initialize Finished\n");
|
||||
|
||||
NVRAMi_Init();
|
||||
FS_Init( FS_DMA_NOT_USE );
|
||||
NAM_Init( Alloc, Free );
|
||||
|
||||
fatalMakerInit();
|
||||
OS_TPrintf("begin mainloop\n");
|
||||
|
||||
|
||||
// メインループ
|
||||
while( 1 )
|
||||
{
|
||||
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
|
||||
|
||||
ReadKeyPad(); // キー入力の取得
|
||||
|
||||
fatalMakerMain(); // ビューア更新
|
||||
}
|
||||
|
||||
OS_Terminate();
|
||||
|
||||
}
|
||||
|
||||
|
||||
void VBlankHandler(void)
|
||||
{
|
||||
OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vブランク割込チェックのセット
|
||||
}
|
||||
30
build/tests/FatalErrorMaker/Makefile
Normal file
30
build/tests/FatalErrorMaker/Makefile
Normal file
@ -0,0 +1,30 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlIPL
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = banner ARM9
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
#===== End of Makefile =====
|
||||
49
build/tests/FatalErrorMaker/banner/Makefile
Normal file
49
build/tests/FatalErrorMaker/banner/Makefile
Normal file
@ -0,0 +1,49 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlIPL
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
ICON_DIR = ./icon
|
||||
|
||||
BANNER_ICON = $(ICON_DIR)/gameIcon.bmp
|
||||
BANNER_SPEC = banner_v3.bsf
|
||||
|
||||
TARGETS = banner.bnr
|
||||
INSTALL_DIR = ./
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
|
||||
BANNER_ICON_NAME = $(basename $(BANNER_ICON))
|
||||
|
||||
LDIRT_CLEAN = $(TARGETS) \
|
||||
$(BANNER_ICON_NAME).nbfs \
|
||||
$(BANNER_ICON_NAME).nbfc \
|
||||
$(BANNER_ICON_NAME).nbfp \
|
||||
$(TARGETS:.bnr=.srl)
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# build
|
||||
#----------------------------------------------------------------------------
|
||||
do-build: $(TARGETS)
|
||||
|
||||
$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON)
|
||||
$(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \
|
||||
$(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS)
|
||||
|
||||
#
|
||||
BIN
build/tests/FatalErrorMaker/banner/banner.bnr
Normal file
BIN
build/tests/FatalErrorMaker/banner/banner.bnr
Normal file
Binary file not shown.
BIN
build/tests/FatalErrorMaker/banner/banner_v3.bsf
Normal file
BIN
build/tests/FatalErrorMaker/banner/banner_v3.bsf
Normal file
Binary file not shown.
BIN
build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp
Normal file
BIN
build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 630 B |
Loading…
Reference in New Issue
Block a user