ヘッダファイルの整理。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@166 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-11-14 01:57:25 +00:00
parent 339b920f0f
commit c2339ad7f5
20 changed files with 424 additions and 458 deletions

View File

@ -21,9 +21,7 @@ include $(TWLIPL_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = $(TWLSDK_ROOT)/build/libraries/ese \
$(TWLSDK_ROOT)/build/libraries/nam \
build
SUBDIRS = build
#----------------------------------------------------------------------------

34
Makefile.sysmenu Normal file
View File

@ -0,0 +1,34 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlFirm - build
# 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 $(TWLIPL_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
build/libraries_sysmenu\
build/components \
build/systemmenu_RED
#----------------------------------------------------------------------------
include $(TWLIPL_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -17,7 +17,7 @@
#include <twl.h>
#include <sysmenu/boot/common/boot.h>
#include <sysmenu/mmap.h>
#include <sysmenu/memorymap.h>
//#include "loader.h"
//#include "mb_child.h"
@ -111,7 +111,7 @@ static asm void ClearBankREG_Stack( void )
bl CpuClear32Byte
#endif // ISDBG_MB_CHILD_
sub r0, r2, #( HW_PRV_WRAM_END - RETURN_FROM_MAIN_ARM7_FUNCP )
sub r0, r2, #( HW_PRV_WRAM_END - BOOTCORE_ARM7_ADDR )
ldr r1, = ClearMemory
bl CpuClear32Byte

View File

@ -16,7 +16,7 @@
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <sysmenu/mmap.h>
#include <sysmenu/memorymap.h>
// define data-------------------------------------------------------
#define C1_DTCM_ENABLE 0x00010000 // データTCM イネーブル

View File

@ -16,20 +16,20 @@
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <sysmenu/rom_header.h>
#include <sysmenu/sysmenu_lib/ARM9/sysmenu_api.h>
#include <sysmenu/memorymap.h>
// define data-----------------------------------------------------------
// extern data-----------------------------------------------------------
// function's prototype--------------------------------------------------
static void UnCompNintendoLogo2(u16 *NintendoLogoDatap, u16 *dstp, u32 *temp);
static void SVC_DiffUnFilter16_16_2(u16 *srcp,u16 *dstp);
static s32 MEMBm_InitFunc(const u8 *devicep, void *ramp, const void *paramp);
static s32 MEMBm_TerminateFunc(const u8 *devicep);
static u8 MEMBm_ByteStreamFunc(const u8 *devicep);
static u32 MEMBm_WordStreamFunc(const u8 *devicep);
static void UnCompNintendoLogo2(u16 *pLogoData, u16 *pDst, u32 *pTemp );
static void SVC_DiffUnFilter16_16_2( u16 *pSrc, u16 *pDst );
static s32 MEMBm_InitFunc( const u8 *pDevice, void *pRAM, const void *pParam );
static s32 MEMBm_TerminateFunc( const u8 *pDevice );
static u8 MEMBm_ByteStreamFunc( const u8 *pDevice );
static u32 MEMBm_WordStreamFunc( const u8 *pDevice );
// global variable-------------------------------------------------------
@ -56,26 +56,41 @@ const MIReadStreamCallbacks memb_ifp2={
// function's description--------------------------------------------
// Nintendoロゴデータの展開ルーチンOBJ2Dマップモードで展開
// ※tempBuffpには、0x700byte必要です。
void SYSM_LoadNintendoLogo2D( u16 *ninLogoDatap, u16 *dstp, u16 color, u32 *tempBuffp )
// Nintendoロゴチェック 「リターン 1:Nintendoロゴ認識成功 0失敗」
BOOL SYSM_CheckNintendoLogo( u16 *pLogoData )
{
u32 work[ 0x100 / sizeof(u32) ];
u16 *pLogoOrg = (u16 *)SYSROM9_NINLOGO_ADR; // ARM9のシステムROMのロゴデータとカートリッジ内のものを比較
u16 length = NINTENDO_LOGO_DATA_LENGTH >> 1;
Nin_UnPackBitsParam2.destOffset = color - 1;
UnCompNintendoLogo2( ninLogoDatap, (u16 *)tempBuffp, work );
MI_CpuCopyFast( (u16 *)( (u32)tempBuffp + 0 ), dstp + 0x0000 / sizeof(u16), 0x1a0 );
MI_CpuCopyFast( (u16 *)( (u32)tempBuffp + 0x1a0), dstp + 0x0400 / sizeof(u16), 0x1a0 );
while( length-- ) {
if( *pLogoOrg++ != *pLogoData++ ) {
return FALSE;
}
}
return TRUE;
}
void SYSM_LoadNintendoLogo1D( u16 *ninLogoDatap, u16 *dstp, u16 color, u32 *tempBuffp )
// Nintendoロゴデータの展開ルーチンOBJ2Dマップモードで展開
// ※tempBuffpには、0x700byte必要です。
void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, u16 color, u32 *pTempBuffer )
{
u32 work[ 0x100 / sizeof(u32) ];
Nin_UnPackBitsParam2.destOffset = color - 1;
UnCompNintendoLogo2( ninLogoDatap, (u16 *)tempBuffp, work );
MI_CpuCopyFast( (u16 *)tempBuffp, dstp, 0x340 );
UnCompNintendoLogo2( pLogoData, (u16 *)pTempBuffer, work );
MI_CpuCopyFast( (u16 *)( (u32)pTempBuffer + 0 ), pDst + 0x0000 / sizeof(u16), 0x1a0 );
MI_CpuCopyFast( (u16 *)( (u32)pTempBuffer + 0x1a0), pDst + 0x0400 / sizeof(u16), 0x1a0 );
}
void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, u16 color, u32 *pTempBuffer )
{
u32 work[ 0x100 / sizeof(u32) ];
Nin_UnPackBitsParam2.destOffset = color - 1;
UnCompNintendoLogo2( pLogoData, (u16 *)pTempBuffer, work );
MI_CpuCopyFast( (u16 *)pTempBuffer, pDst, 0x340 );
}
/* UnCompNintendoLogo2ワーク内訳
@ -92,7 +107,7 @@ void SYSM_LoadNintendoLogo1D( u16 *ninLogoDatap, u16 *dstp, u16 color, u32 *temp
// Nintendoロゴ展開ルーチン (r0=ロゴ圧縮データ r1=展開先アドレス)
#include <twl/code16.h>
static asm void UnCompNintendoLogo2(u16 *NintendoLogoDatap, u16 *dstp, u32 *temp)
static asm void UnCompNintendoLogo2( u16 *pLogoData, u16 *pDst, u32 *pTemp )
{
push {r0-r2,r4, lr}
@ -105,7 +120,7 @@ static asm void UnCompNintendoLogo2(u16 *NintendoLogoDatap, u16 *dstp, u32 *temp
ldr r0, [sp, #0] // r0 <- NintendoLogoDatap
mov r2, #36
add r1, r4, r2 // r1 <- temp + 36
mov r2, #NINTENDO_LOGO_LENGTH
mov r2, #NINTENDO_LOGO_DATA_LENGTH
bl MIi_CpuCopy16 // NintendoLogoDatapからNintendoロゴデータ本体をコピーしてくる
mov r0, r4 // r0 <- temp
@ -133,7 +148,7 @@ static asm void UnCompNintendoLogo2(u16 *NintendoLogoDatap, u16 *dstp, u32 *temp
// 差分フィルタ展開システムコール16Bit→16Bit (r0=Srcp, r1=Destp)
static asm void SVC_DiffUnFilter16_16_2(u16 *srcp,u16 *dstp)
static asm void SVC_DiffUnFilter16_16_2( u16 *pSrc, u16 *pDst )
{
swi 24
bx lr
@ -144,25 +159,25 @@ static asm void SVC_DiffUnFilter16_16_2(u16 *srcp,u16 *dstp)
// ============================================================================
// バイトアクセス可能メモリ用アクセスルーチン群
// ============================================================================
static s32 MEMBm_InitFunc(const u8 *devicep, void *ramp, const void *paramp)
static s32 MEMBm_InitFunc( const u8 *pDevice, void *pRAM, const void *pParam )
{
#pragma unused(ramp)
if(paramp) return (s32)MEMBm_WordStreamFunc(devicep);
#pragma unused(pRAM)
if(pParam) return (s32)MEMBm_WordStreamFunc(pDevice);
else return 0;
}
static s32 MEMBm_TerminateFunc(const u8 *devicep)
static s32 MEMBm_TerminateFunc( const u8 *pDevice )
{
#pragma unused(devicep)
#pragma unused(pDevice)
return 0;
}
static u8 MEMBm_ByteStreamFunc(const u8 *devicep)
static u8 MEMBm_ByteStreamFunc( const u8 *pDevice )
{
return *devicep;
return *pDevice;
}
static u32 MEMBm_WordStreamFunc(const u8 *devicep)
static u32 MEMBm_WordStreamFunc( const u8 *pDevice )
{
return *(u32 *)devicep;
return *(u32 *)pDevice;
}

View File

@ -56,12 +56,12 @@ NitroConfigData *ncdp; //
// static variable-------------------------------------------------------------
static BOOL s_isBanner = FALSE;
static BannerFile s_bannerBuf;
static NTRBannerFile s_bannerBuf;
static NAMTitleId old_titleIdArray[ LAUNCHER_TITLE_LIST_NUM ];
// const data------------------------------------------------------------------
static BannerCheckParam s_bannerCheckList[ BNR_VER_MAX ] = {
static BannerCheckParam s_bannerCheckList[ NTR_BNR_VER_MAX ] = {
{ (u8 *)&s_bannerBuf.v1, sizeof( BannerFileV1 ) },
{ (u8 *)&s_bannerBuf.v2, sizeof( BannerFileV2 ) },
{ (u8 *)&s_bannerBuf.v3, sizeof( BannerFileV3 ) },
@ -181,7 +181,7 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size)
int l;
int gotten;
NAMTitleId titleIdArray[ LAUNCHER_TITLE_LIST_NUM ];
static BannerFile bannerBuf[ LAUNCHER_TITLE_LIST_NUM ];
static TWLBannerFile bannerBuf[ LAUNCHER_TITLE_LIST_NUM ];
gotten = NAM_GetTitleList(titleIdArray, LAUNCHER_TITLE_LIST_NUM );
// バナーの読み込み……別の関数に移すべきかも。
@ -238,8 +238,8 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size)
FS_CloseFile(file);
return -1;
}
readLen = ReadFile(file, &bannerBuf[l], (s32)sizeof(BannerFile));
if( readLen != (s32)sizeof(BannerFile) )
readLen = ReadFile(file, &bannerBuf[l], (s32)sizeof(TWLBannerFile));
if( readLen != (s32)sizeof(TWLBannerFile) )
{
OS_TPrintf("SYSM_GetNandTitleList failed: cant read file2\n");
FS_CloseFile(file);
@ -457,7 +457,7 @@ static BOOL SYSMi_IsDebuggerBannerViewMode( void )
#ifdef __IS_DEBUGGER_BUILD
return ( GetSYSMWork()->isOnDebugger &&
SYSMi_ExistCard() &&
GetRomHeaderAddr()->dbgRomSize == 0 ) ? TRUE : FALSE;
SYSM_GetCardRomHeader()->dbgRomSize == 0 ) ? TRUE : FALSE;
#else
return FALSE;
#endif // __IS_DEBUGGER_BUILD
@ -468,7 +468,7 @@ static BOOL SYSMi_IsDebuggerBannerViewMode( void )
static void SYSMi_ReadCardBannerFile( void )
{
s32 lockCardID;
BannerFile *pBanner = &s_bannerBuf;
NTRBannerFile *pBanner = &s_bannerBuf;
if( ( !SYSMi_ExistCard() ) || ( *(void** )BANNER_ROM_OFFSET == NULL ) ) {
s_isBanner = FALSE;
@ -478,8 +478,8 @@ static void SYSMi_ReadCardBannerFile( void )
// ROMカードからのバナーデータのリード
if ( ( lockCardID = OS_GetLockID() ) > 0 ) {
( void )OS_LockCard( (u16 )lockCardID );
DC_FlushRange( pBanner, sizeof(BannerFile) );
SYSM_ReadCard(*(void** )BANNER_ROM_OFFSET, pBanner, sizeof(BannerFile) );
DC_FlushRange( pBanner, sizeof(NTRBannerFile) );
SYSM_ReadCard(*(void** )BANNER_ROM_OFFSET, pBanner, sizeof(NTRBannerFile) );
( void )OS_UnLockCard( (u16 )lockCardID );
OS_ReleaseLockID( (u16 )lockCardID );
}
@ -493,7 +493,7 @@ static void SYSMi_ReadCardBannerFile( void )
s_isBanner = TRUE;
for( i = 0; i < BNR_VER_MAX; i++ ) {
for( i = 0; i < NTR_BNR_VER_MAX; i++ ) {
if( i < pBanner->h.version ) {
calc_crc = SVC_GetCRC16( calc_crc, chkp->srcp, chkp->size );
if( calc_crc != *hd_crcp++ ) {
@ -506,7 +506,7 @@ static void SYSMi_ReadCardBannerFile( void )
chkp++;
}
if( !s_isBanner ) {
MI_CpuClear16( &s_bannerBuf, sizeof(BannerFile) );
MI_CpuClear16( &s_bannerBuf, sizeof(NTRBannerFile) );
}
}
}
@ -553,8 +553,8 @@ static void SYSMi_WriteAdjustRTC( void )
// NTR,TWLカード存在チェック 「リターン 1カード認識 0カードなし」
static int SYSMi_ExistCard( void )
{
if( ( GetRomHeaderAddr()->nintendo_logo_crc16 == 0xcf56 ) &&
( GetRomHeaderAddr()->header_crc16 == GetSYSMWork()->cardHeaderCrc16) ) {
if( ( SYSM_GetCardRomHeader()->nintendo_logo_crc16 == 0xcf56 ) &&
( SYSM_GetCardRomHeader()->header_crc16 == GetSYSMWork()->cardHeaderCrc16) ) {
return TRUE; // NTR,TWLカードありNintendoロゴCRC、カードヘッダCRCが正しい場合
// ※Nintendoロゴデータのチェックは、特許の都合上、ロゴ表示ルーチン起動後に行います。
}else {
@ -588,29 +588,16 @@ void SYSM_SetBackLightBrightness( void )
// 各種チェック
//======================================================================
// Nintendoロゴチェック 「リターン 1:Nintendoロゴ認識成功 0失敗」
BOOL SYSM_CheckNintendoLogo(u16 *logo_cardp)
{
u16 *logo_orgp = (u16 *)SYSROM9_NINLOGO_ADR; // ARM9のシステムROMのロゴデータとカートリッジ内のものを比較
u16 length = NINTENDO_LOGO_LENGTH >> 1;
while(length--) {
if(*logo_orgp++ != *logo_cardp++) return FALSE;
}
return TRUE;
}
// エントリアドレスの正当性チェック
static BOOL SYSMi_CheckEntryAddress( void )
{
// エントリアドレスがROM内登録エリアかAGBカートリッジエリアなら、無限ループに入る。
if( !( ( (u32)GetRomHeaderAddr()->main_entry_address >= HW_MAIN_MEM )
&& ( (u32)GetRomHeaderAddr()->main_entry_address < SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT ) )
|| !( ( ( (u32)GetRomHeaderAddr()->sub_entry_address >= HW_MAIN_MEM )
&& ( (u32)GetRomHeaderAddr()->sub_entry_address < SYSM_ARM7_LOAD_MMEM_LAST_ADDR ) )
|| ( ( (u32)GetRomHeaderAddr()->sub_entry_address >= HW_WRAM )
&& ( (u32)GetRomHeaderAddr()->sub_entry_address < SYSM_ARM7_LOAD_WRAM_LAST_ADDR ) ) ) )
if( !( ( (u32)SYSM_GetCardRomHeader()->main_entry_address >= HW_MAIN_MEM )
&& ( (u32)SYSM_GetCardRomHeader()->main_entry_address < SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT ) )
|| !( ( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_MAIN_MEM )
&& ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_ARM7_LOAD_MMEM_LAST_ADDR ) )
|| ( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_WRAM )
&& ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_ARM7_LOAD_WRAM_LAST_ADDR ) ) ) )
{
OS_TPrintf("entry address invalid.\n");
#ifdef __DEBUG_SECURITY_CODE
@ -628,7 +615,7 @@ static void SYSMi_CheckCardCloneBoot( void )
{
s32 lockCardID;
u8 *buffp = (u8 *)&s_bannerBuf; // バナー用バッファをテンポラリとして使用
u32 total_rom_size = GetRomHeaderAddr()->total_rom_size ? GetRomHeaderAddr()->total_rom_size : 0x01000000;
u32 total_rom_size = SYSM_GetCardRomHeader()->rom_valid_size ? SYSM_GetCardRomHeader()->rom_valid_size : 0x01000000;
u32 file_offset = total_rom_size & 0xFFFFFE00;
if( !SYSMi_ExistCard() ) {

View File

@ -665,7 +665,7 @@ static int SEQ_DSDL_Download(void)
// 親機からのブート要求受信により、起動可否チェックを行う。Nintendoロゴ表示チェック
case PSEQ_BOOT_READY:
if( DispNintendoLogo() ) {
if( SYSM_CheckNinLogo( (u16 *)GetRomHeaderAddr()->nintendo_logo ) ) {
if( SYSM_CheckNinLogo( (u16 *)SYSM_GetCardRomHeader()->nintendo_logo ) ) {
prgSeq = PSEQ_BOOT_START;
}else {
SetDispMessage( RED, (const u8 *)"Illegal game data.");
@ -1352,7 +1352,7 @@ static void InitDispNintendoLogo( void )
#ifdef NINLOGO_LOAD_1D_CHAR
// 1Dマッピングでのロード表示
GX_SetOBJVRamModeChar( GX_OBJVRAMMODE_CHAR_1D_32K );
SYSM_LoadNintendoLogo1D( (u16 *)GetRomHeaderAddr()->nintendo_logo, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
SYSM_LoadNintendoLogo1D( (u16 *)SYSM_GetCardRomHeader()->nintendo_logo, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
// SYSM_LoadNintendoLogo1D( (u16 *)SYSROM9_NINLOGO_ADR, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
for ( i = 0; i < 3; i++ ) {
@ -1414,7 +1414,7 @@ static void InitDispNintendoLogo( void )
#else
// 2Dマッピングでのロード表示
GX_SetOBJVRamModeChar( GX_OBJVRAMMODE_CHAR_2D );
SYSM_LoadNintendoLogo2D( (u16 *)GetRomHeaderAddr()->nintendo_logo, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
SYSM_LoadNintendoLogo2D( (u16 *)SYSM_GetCardRomHeader()->nintendo_logo, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
// SYSM_LoadNintendoLogo2D( (u16 *)SYSROM9_NINLOGO_ADR, (u16 *)( HW_OBJ_VRAM + 0x40 ), 1, ninLogoBuff );
for ( i = 0; i < 4; i++ ) {

View File

@ -62,17 +62,17 @@ static const u16 *const str_backlight[] = {
#define DBGBNR
#ifdef DBGBNR
static BannerFile *empty_banner;
static BannerFile *nobanner_banner;
static BannerFile *card_banner;
static BannerFile *download_banner;
static NTRBannerFile *empty_banner;
static NTRBannerFile *nobanner_banner;
static NTRBannerFile *card_banner;
static NTRBannerFile *download_banner;
static u8 image_index_list[ LAUNCHER_TITLE_LIST_NUM ];
static const int MAX_SHOW_BANNER = 6;
static GXOamAttr banner_oam_attr[MAX_SHOW_BANNER+10];// アフィンパラメータ埋める関係で少し大きめ
static u8 *pbanner_image_list[ LAUNCHER_TITLE_LIST_NUM ];
static int banner_count = 0;
static void LoadBannerFiles()
static void LoadNTRBannerFiles()
{
// ファイル読み込み部分。多分emptyバナーだけ読み込む事になる。本来、アプリ系は外部から取得
// 最後に解放しないと駄目。だが、どこで解放すればいいのやら……
@ -87,10 +87,10 @@ static void LoadBannerFiles()
}
// パレットの読み込みやOBJ関係の初期化
static void BannerInit()
static void NTRBannerInit()
{
int l;
LoadBannerFiles();
LoadNTRBannerFiles();
MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) );
MI_DmaFill32(3, banner_oam_attr, 192, sizeof(banner_oam_attr)); // let out of the screen if not display
@ -124,7 +124,7 @@ static void BannerInit()
}
// 活線挿抜対応のため、毎回VRAMへのイメージデータロード判定をしている
static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
static void NTRBannerDraw(int cursor, int selected, TitleProperty *titleprop)
{
static int count = 0;
@ -168,7 +168,7 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
for(l=0;l<LAUNCHER_TITLE_LIST_NUM;l++)
{
u8 m;
u8 *pban=((BannerFile *)titleprop[l].pBanner)->v1.image;
u8 *pban=((NTRBannerFile *)titleprop[l].pBanner)->v1.image;
for(m=0;m<banner_count;m++){
if(pban == pbanner_image_list[m]){
image_index_list[l]=m;
@ -243,7 +243,7 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
// アプリ名表示
{
NNSG2dChar *str = ((BannerFile *)titleprop[selected].pBanner)->v1.gameName[ TSD_GetLanguage() ];
NNSG2dChar *str = ((NTRBannerFile *)titleprop[selected].pBanner)->v1.comment[ TSD_GetLanguage() ];
int width = NNS_G2dTextCanvasGetStringWidth(&gTextCanvas, str, NULL);
PutStringUTF16( (256-width)/2, 48, TXT_COLOR_BLACK, str );
}
@ -274,7 +274,7 @@ void LauncherInit( TitleProperty *pTitleList )
GXS_DispOn();
#ifdef DBGBNR
BannerInit();
NTRBannerInit();
#endif
}
@ -334,7 +334,7 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
}
#ifdef DBGBNR
BannerDraw( s_csr, selected, pTitleList );
NTRBannerDraw( s_csr, selected, pTitleList );
#endif
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐

View File

@ -34,7 +34,6 @@ static void INTR_VBlank( void );
NNSFndAllocator g_allocator;
// static variable-------------------------------------------------------------
static BannerFile banner; // バナーデータ
// const data------------------------------------------------------------------
@ -79,7 +78,7 @@ void TwlMain( void )
SYSM_Init( Alloc, Free ); // OS_Initの後でコール。
// リセットパラメータの取得--------
if( SYSM_GetResetParam()->isLogoSkip ) {
if( SYSM_GetResetParam()->flags.isLogoSkip ) {
if( SYSM_GetResetParam()->bootTitleID ) { // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
pBootTitle = (TitleProperty *)SYSM_GetResetParam();
state = AUTHENTICATE;

View File

@ -751,7 +751,7 @@ void GCDi_DecryptObjectFileDS( GCDSlot slot );
void GCD_SetInterrupt( GCDSlot slot, u32 romp, void *ramp, s32 size, GCDWork *wp );
void* GCDi_GetRomHeaderAddr( GCDSlot slot );
void* GCDi_SYSM_GetCardRomHeader( GCDSlot slot );
extern u32 GCDi_HeaderBuf[2][ GCD_ROM_HEADER_SIZE/sizeof(u32) ];

View File

@ -18,12 +18,12 @@
#define SYSMENU_H_
#include <twl.h>
#include <twl/os/common/format_rom.h>
#include <sysmenu/rom_header.h>
#include <sysmenu/banner.h>
#include <sysmenu/settings.h>
#include <sysmenu/sysmenu_work.h>
#include <sysmenu/mmap.h>
#include <sysmenu/memorymap.h>
#include <sysmenu/acsign.h>
#include <sysmenu/mb_loader.h>

View File

@ -19,90 +19,13 @@
#define BANNER_H_
#include <twl/types.h>
#include <sysmenu/banner/common/NTRBanner.h>
#include <sysmenu/banner/common/TWLBanner.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef BANNER_ROM_OFFSET
#define BANNER_ROM_OFFSET (HW_ROM_HEADER_BUF + 0x68)
#endif
#define BNR_VER_MIN 1
#define BNR_VER_MAX 3
#define BNR_HEADER_RSV_SIZE 24
#define BNR_CHINESE_SUPPORT_VER 2
#define BNR_HANGUL_SUPPORT_VER 3
typedef enum
{
BNR_JAPANESE = 0,
BNR_ENGLISH = 1,
BNR_FRENCH = 2,
BNR_GERMAN = 3,
BNR_ITALIAN = 4,
BNR_SPANISH = 5,
BNR_CHINESE = 6,
BNR_HANGUL = 7,
BNR_LANG_NUM
} BannerFileLangIdx;
#define BNR_LANG_NUM_V1 6
#define BNR_LANG_NUM_V2 1
#define BNR_LANG_NUM_V3 1
#define BNR_HEADER_SIZE 32
#define BNR_VER_OFFSET 0
#define BNR_V1_CRC16_OFFSET 2
#define BNR_IMAGE_OFFSET BNR_HEADER_SIZE
#define BNR_IMAGE_SIZE (32 * 32 / (8/4))
#define BNR_PLTT_OFFSET (BNR_IMAGE_OFFSET + BANNER_IMAGE_SIZE)
#define BNR_PLTT_NUM 16
#define BNR_PLTT_SIZE (BNR_PLTT_NUM * 2)
#define BNR_LANG_OFFSET (BNR_PLTT_OFFSET + BANNER_PLTT_SIZE)
#define BNR_LANG_LENGTH 128
#define BNR_LANG_SIZE (BNR_LANG_LENGTH * 2)
typedef struct
{
u8 version;
u8 reserved_A;
u16 crc16_v1;
u16 crc16_v2;
u16 crc16_v3;
u8 reserved_B[BNR_HEADER_RSV_SIZE];
} BannerHeader;
typedef struct
{
u8 image[BNR_IMAGE_SIZE];
GXRgba pltt[BNR_PLTT_NUM];
u16 gameName[BNR_LANG_NUM_V1][BNR_LANG_LENGTH];
} BannerFileV1;
typedef struct
{
u16 gameName[BNR_LANG_NUM_V2][BNR_LANG_LENGTH];
} BannerFileV2;
typedef struct
{
u16 gameName[BNR_LANG_NUM_V3][BNR_LANG_LENGTH];
} BannerFileV3;
typedef struct
{
BannerHeader h;
BannerFileV1 v1;
BannerFileV2 v2;
BannerFileV3 v3;
} BannerFile;
#ifdef __cplusplus
} /* extern "C" */
#endif

View File

@ -0,0 +1,104 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL
File: NTRBanner.c
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$
*---------------------------------------------------------------------------*/
#ifndef NTR_BANNER_H_
#define NTR_BANNER_H_
#include <twl/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef BANNER_ROM_OFFSET
#define BANNER_ROM_OFFSET ( HW_TWL_ROM_HEADER_BUF + 0x68 )
#endif
#define NTR_BNR_VER_MIN 0x01
#define NTR_BNR_VER_MAX 0x03
#define BNR_CHINESE_SUPPORT_VER 2
#define BNR_HANGUL_SUPPORT_VER 3
#define BNR_LANG_MAX 16
#define BNR_LANG_NUM_V1 6
#define BNR_LANG_NUM_V2 1
#define BNR_LANG_NUM_V3 1
#define BNR_HEADER_SIZE 32
#define BNR_HEADER_RSV_SIZE 24
#define BNR_IMAGE_SIZE ( 32 * 32 / (8/4) )
#define BNR_PLTT_NUM 16
#define BNR_PLTT_SIZE ( BNR_PLTT_NUM * 2 )
#define BNR_LANG_LENGTH 128
#define BNR_LANG_SIZE ( BNR_LANG_LENGTH * 2 )
typedef enum NTRBannerLangCode {
NTR_BNR_JAPANESE = 0,
NTR_BNR_ENGLISH = 1,
NTR_BNR_FRENCH = 2,
NTR_BNR_GERMAN = 3,
NTR_BNR_ITALIAN = 4,
NTR_BNR_SPANISH = 5,
NTR_BNR_CHINESE = 6,
NTR_BNR_HANGUL = 7,
NTR_BNR_LANG_NUM
}NTRBannerLangCode;
typedef struct NTRBannerHeader {
u8 version;
u8 reserved_A;
u16 crc16_v1;
u16 crc16_v2;
u16 crc16_v3;
u8 reserved_B[ BNR_HEADER_RSV_SIZE ];
}NTRBannerHeader;
typedef struct BannerFileV1 {
u8 image[ BNR_IMAGE_SIZE ];
GXRgba pltt [ BNR_PLTT_NUM ];
u16 comment[ BNR_LANG_NUM_V1 ][ BNR_LANG_LENGTH ];
}BannerFileV1;
typedef struct BannerFileV2{
u16 comment[ BNR_LANG_NUM_V2 ][ BNR_LANG_LENGTH ];
}BannerFileV2;
typedef struct BannerFileV3{
u16 comment[ BNR_LANG_NUM_V3 ][ BNR_LANG_LENGTH ];
}BannerFileV3;
typedef struct NTRBannerFile {
NTRBannerHeader h;
BannerFileV1 v1;
BannerFileV2 v2;
BannerFileV3 v3;
}NTRBannerFile;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* NTR_BANNER_H_ */
#endif

View File

@ -0,0 +1,82 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL
File: TWLBanner.c
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$
*---------------------------------------------------------------------------*/
#ifndef TWL_BANNER_H_
#define TWL_BANNER_H_
#include <twl/types.h>
#include <sysmenu/banner/common/NTRBanner.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TWL_BNR_VER_MIN 0x80
#define TWL_BNR_VER_MAX 0x80
#define TWL_BNR_ICON_NUM 8
#define TWL_BNR_ICON_DISP_FRAME_MAX 60
#define TWL_BNR_HEADER_RSV_SIZE ( BNR_HEADER_RSV_SIZE - sizeof(BannerAnimeCtrl) )
typedef enum BannerAnimeLoopType {
BNR_ANIME_LOOP_NORMAL = 1,
BNR_ANIME_LOOP_BACK = 2
}BannerAnimeLoopType;
typedef struct BannerAnimeCtrl {
BannerAnimeLoopType loopType;
u8 dispFrameCount[ TWL_BNR_ICON_NUM ];
}BannerAnimeCtrl;
typedef struct TWLBannerHeader {
u8 version;
u8 reserved_A;
u16 crc16_v1;
u16 crc16_v2;
u16 crc16_v3;
u8 reserved_B[ TWL_BNR_HEADER_RSV_SIZE ];
BannerAnimeCtrl anime;
}TWLBannerHeader;
typedef struct BannerIcon {
u8 image[ BNR_IMAGE_SIZE ];
GXRgba pltt [ BNR_PLTT_NUM ];
}BannerIcon;
typedef struct BannerCommentRsv {
u16 comment[ BNR_LANG_MAX - NTR_BNR_LANG_NUM ][ BNR_LANG_LENGTH ];
}BannerCommentRsv;
typedef struct TWLBannerFile {
TWLBannerHeader h;
BannerFileV1 v1;
BannerFileV2 v2;
BannerFileV3 v3;
BannerCommentRsv rsv;
BannerIcon icon[ TWL_BNR_ICON_NUM - 1 ]; // 先頭の個はBannerFileV1内にある。
}TWLBannerFile;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* TWL_BANNER_H_ */
#endif

View File

@ -18,6 +18,8 @@
#if !defined(_SYSMENU_BOOT_H_)
#define _SYSMENU_BOOT_H_
#include <sysmenu/memorymap.h>
#ifdef __cplusplus
extern "C" {
#endif
@ -25,7 +27,6 @@ extern "C" {
/*---------------------------------------------------------------------------*
Type definition
*---------------------------------------------------------------------------*/
#define BOOTCORE_ARM7_ADDR 0x0380f100
/*---------------------------------------------------------------------------*
functions

View File

@ -0,0 +1,42 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL
File: mmap.c
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$
*---------------------------------------------------------------------------*/
#ifndef _SYSMENU_MMAP_H_
#define _SYSMENU_MMAP_H_
#include <twl.h>
#ifdef __cplusplus
extern "C" {
#endif
// define data ------------------------------------
#define BOOTCORE_ARM9_ADDR 0x02e7fc00 // ARM9最終ブートコードアドレス
#define BOOTCORE_ARM7_ADDR 0x0380f100 // ARM7最終ブートコードアドレス
#define SYSROM9_NINLOGO_ADR 0xffff0020 // ARM9システムROM内の任天堂ロゴ格納アドレス
#define SYSM_ARM9_LOAD_MMEM_LAST_ADDR 0x02280000 // ロード可能なARM9 staticメインメモリ最終アドレス
#define SYSM_ARM7_LOAD_MMEM_LAST_ADDR 0x023c0000 // ロード可能なARM7 staticメインメモリ最終アドレス
#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR BOOTCORE_ARM7_ADDR // ロード可能なARM7 staticメインメモリ最終アドレス
#define SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT SYSM_ARM9_LOAD_MMEM_LAST_ADDR
#ifdef __cplusplus
}
#endif
#endif // _SYSMENU_MMAP_H_

View File

@ -1,57 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL
File: mmap.c
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$
*---------------------------------------------------------------------------*/
#ifndef __MMAP_H__
#define __MMAP_H__
#include <twl.h>
#ifdef __cplusplus
extern "C" {
#endif
// define data ------------------------------------
#define RETURN_FROM_MAIN_ARM9_FUNCP 0x023fee00 // NITROゲームブート時のARM9最終処理の動作アドレス
#define RETURN_FROM_MAIN_ARM7_FUNCP 0x0380f600 // NITROゲームブート時のARM7最終処理の動作アドレス
#define SYSM_ADDR_TOP 0x02300000 // SYSMが配置される先頭アドレス
#define SYSM_ADDR_BOTTOM 0x023fe000 // SYSMが配置される最終アドレス
#define SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT ( SYSM_ADDR_TOP - 0x80000 ) // 0x02800000
#define SYSM_ARM9_LOAD_MMEM_LAST_ADDR ( SYSM_ADDR_TOP - 0x80000 ) // SYSMがロード可能なNITROカード初期ブートコードのメインメモリ最終アドレス
#define SYSM_ARM7_LOAD_MMEM_LAST_ADDR ( SYSM_ADDR_BOTTOM ) // SYSMがロード可能なNITROカード初期ブートコードのメインメモリ最終アドレス
#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR ( RETURN_FROM_MAIN_ARM7_FUNCP & ~0x0fff ) // SYSMがロード可能なNITROカード初期ブートコードのメインメモリ最終アドレス
#define SYSM_ARM7_LOAD_BUF_ADDR ( SYSM_ADDR_TOP - 0x40000 ) // SYSMがNITROカードARM7初期ブートコードのロードを行う際のロードバッファアドレス
#define SYSM_ARM7_LOAD_BUF_SIZE ( SYSM_ADDR_TOP - SYSM_ARM7_LOAD_BUF_ADDR ) // SYSMのNITROカードARM7コードロードバッファサイズ
#define UNCOMP_TEMP_BUF ( SYSM_ARM7_LOAD_BUF_ADDR ) // 圧縮展開用データ一時格納バッファアドレス
#define UNCOMP_TEMP_BUF_SIZE ( SYSM_ARM7_LOAD_BUF_SIZE ) // 圧縮展開用データ一時格納バッファサイズ
#define NITRO_CARD_SECURE_SIZE 0x4000 // NITROカードのセキュア領域サイズ(16Kbytes)
#define SYSROM9_NINLOGO_ADR 0xffff0020 // ARM9システムROM内の任天堂ロゴ格納アドレス
#define AGB_CARTRIDGE_NIN_LOGO_DATA (HW_CTRDG_ROM + 4) // AGBカートリッジのNintendoロゴデータ格納アドレス
#ifdef __cplusplus
}
#endif
#endif // __MMAP_H__

View File

@ -1,175 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL
File: rom_header.h
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$
*---------------------------------------------------------------------------*/
#ifndef _ROM_HEADER_H_
#define _ROM_HEADER_H_
#include <twl.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NINTENDO_LOGO_LENGTH 0x9c // Nintendoロゴデータサイズ
//----------------------------------------------------------------------
// ファイルネームテーブル
//----------------------------------------------------------------------
typedef struct ROM_FNT{
char entry_name[FS_FILE_NAME_MAX]; // ファイル名 (終端 \0 は省く)
} ROM_FNT;
//----------------------------------------------------------------------
// ファイルアロケーションテーブル
//----------------------------------------------------------------------
typedef struct {
void *top; // ファイルの先頭 ROM アドレス
void *bottom; // ファイルの最終 ROM アドレス
} ROM_FAT;
//----------------------------------------------------------------------
// オーバーレイテーブル
//----------------------------------------------------------------------
typedef struct {
u32 id; // オーバーレイ ID
void *ram_address; // ロード先頭位置
u32 ram_size; // ロードサイズ
u32 bss_size; // bss 領域サイズ
void *sinit_init; // static initializer 先頭アドレス
void *sinit_init_end; // static initializer 最終アドレス
u32 file_id; // オーバーレイファイルID
u32 rsv; // 予約。
} ROM_OVT;
//----------------------------------------------------------------------
// ROMヘッダ
//----------------------------------------------------------------------
typedef struct {
//
// 0x000 System Reserved
//
char title_name[12]; // Soft title name
u32 game_code; // Game code
u16 maker_code; // Maker code
u8 machine_code; // Machine code
u8 rom_type; // Rom type
u8 rom_size; // Rom size
u8 agbRomCycle1st; // 1セグのAGBRomアクセスサイクル1st.
u8 agbRomCycle2nd; // 1セグのAGBRomアクセスサイクル2nd.
u8 reserved_A[7]; // System Reserved A ( Set ALL 0 )
u8 soft_version; // Soft version
u8 comp_arm9_boot_area:1; // Compress arm9 boot area
u8 comp_arm7_boot_area:1; // Compress arm7 boot area
u8 inspectCard:1; // 検査カードフラグ
u8 disableClearMemoryPad:1; // IPL2メモリパッドクリア・ディセーブルフラグ
u8 enableAgbRomCycle:1;
u8 :2;
u8 disableDetectPullOut:1; // カード抜け検出ディセーブルフラグ
//
// 0x020 for Static modules (Section:B)
//
// ARM9
u32 main_rom_offset; // ROM offset
void* main_entry_address; // Entry point
void* main_ram_address; // RAM address
u32 main_size; // Module size
// ARM7
u32 sub_rom_offset; // ROM offset
void* sub_entry_address; // Entry point
void* sub_ram_address; // RAM address
u32 sub_size; // Module size
//
// 0x040 for File Name Table[FNT] (Section:C)
//
ROM_FNT* fnt_offset; // ROM offset
u32 fnt_size; // Table size
//
// 0x048 for File Allocation Table[FAT] (Section:E)
//
ROM_FAT* fat_offset; // ROM offset
u32 fat_size; // Table size
//
// 0x050 for Overlay Tables[OVT] (Section:D)
//
// ARM9
ROM_OVT* main_ovt_offset; // ROM offset
u32 main_ovt_size; // Table size
// ARM7
ROM_OVT* sub_ovt_offset; // ROM offset
u32 sub_ovt_size; // Table size
// 0x060 for ROM control parameter
u32 game_cmd_param; // Game command parameter
u32 secure_cmd_param; // Secure command parameter
u32 banner_offset; // Banner ROM offset
u16 secure_area_crc16; // Secure area CRC-16
u16 secure_cmd_latency; // Secure command latency ((param+2)*256 system cycles)
u8 ctrl_reserved_B[16]; // Ctrl Reserved B (Set 0)
// 0x080 - 0x0C0 System Reserved
u32 total_rom_size;
u8 reserved_B[60]; // System Reserved B (Set 0)
// 0x0C0 for NINTENDO logo data
u8 nintendo_logo[ NINTENDO_LOGO_LENGTH ]; // NINTENDO logo data
u16 nintendo_logo_crc16; // CRC-16
// 0x15E ROM header CRC-16
u16 header_crc16; // ROM header CRC-16
//
// 0x0160 - 0x0180 System Reserved
//
u32 dbgRomAddr; // デバッガモニタROMアドレス
s32 dbgRomSize; // デバッガモニタROMサイズ
u32 dbgArm9RamAddr; // デバッガモニタARM9-RAMアドレス
u32 dbgArm7RamAddr; // デバッガモニタARM7-RAMアドレス
u8 reserved_C[16]; // Debugger Reserved (Set ALL 0)
} RomHeader;
//----------------------------------------------------------------------
// ROMヘッダアドレス獲得
//----------------------------------------------------------------------
#define GetRomHeaderAddr() ((RomHeader *)HW_ROM_HEADER_BUF)
//・ROMヘッダアドレスを獲得します。
#ifdef __cplusplus
#endif
#endif // _ROM_HEADER_H_

View File

@ -19,7 +19,7 @@
#define __SYSM_LIB_H__
#include <twl.h>
#include <sysmenu/rom_header.h>
#include <twl/os/common/format_rom.h>
#include <sysmenu/banner.h>
#include <sysmenu/sysmenu_work.h>
#include <sysmenu/settings.h>
@ -30,21 +30,39 @@ extern "C" {
// define data----------------------------------------------------------
#define CARD_SLOT_NUM 1 // カードスロット数
#define LAUNCHER_TITLE_LIST_NUM 40 // ランチャーのタイトルリスト数
typedef enum PlatformCode {
PLATFORM_NTR = 0,
PLATFORM_TWL = 1
}PlatformCode;
// タイトル情報フラグ
typedef struct TitleFlags {
u16 platform : 4;
u16 media : 4;
u16 isLogoSkip : 1;
u16 rsv : 7;
}TitleFlags;
// タイトル情報
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
u64 titleID; // タイトルID
u64 titleID; // タイトルIDTitleID_Hiで起動メディアは判定できる
void *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
u32 rsv;
TitleFlags flags;
u8 rsv[ 2 ];
}TitleProperty;
// リセットパラメータ
typedef struct ResetParam {
u64 bootTitleID; // 起動するタイトルがあるかあるならそのタイトルID
u32 rsv;
BOOL isLogoSkip; // ロゴデモをスキップするか?
u32 rsv_A;
TitleFlags flags;
u8 rsv_B[ 2 ];
}ResetParam;
@ -63,66 +81,54 @@ extern void *(*SYSM_Alloc)( u32 size );
extern void (*SYSM_Free)( void *ptr );
// function-------------------------------------------------------------
extern void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) );
//extern void SYSM_Init( void );
extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) );
extern BOOL SYSM_IsLogoDemoSkip( void );
extern void SYSM_CaribrateTP( void );
extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card );
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size );
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle );
extern void SYSM_Finalize( void );
// 初期化
extern void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ); // 初期化。OS_Initの前のへんでコールしてください。
extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ); // SYSM_initで設定した場合は必要なし。
extern void SYSM_ReadParameters( void ); // 本体設定データ、リセットパラメータなどを取得
extern BOOL SYSM_ReadTWLSettingsFile( void );
extern BOOL SYSM_WriteTWLSettingsFile( void );
// アプリ情報取得
extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); // カードアプリタイトルリストの取得
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得
// アプリ起動
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード認証してブート
// 成功時は、never return.
// デバイス制御
extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション
extern void SYSM_SetBackLightBrightness( void ); // バックライトを制御(本体設定データへの値セーブも行う)
// 状態チェック
extern BOOL SYSM_IsExistCard( void ); // TWL/NTRカードが差さっているかアプリは未認証状態
extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか?
extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か
extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か?
extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態を設定する。
// 本体設定データアクセス
extern BOOL SYSM_ReadTWLSettingsFile( void ); // TWL設定データのリード
extern BOOL SYSM_WriteTWLSettingsFile( void ); // TWL設定データのライト
extern void SYSM_VerifyAndRecoveryNTRSettings( void );
extern void SYSM_SetBackLightBrightness( void );
// Nintendoロゴ制御
extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendoロゴデータのチェック
extern void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, u16 color, u32 *pTempBuffer ); // NintendoロゴデータをOBJ_2D形式でロードpTempBufferには0x700bytes必要)
extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, u16 color, u32 *pTempBuffer ); // NintendoロゴデータをOBJ_1D形式でロード同上
// RTC制御
extern BOOL SYSM_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
extern BOOL SYSM_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
extern s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *pNewDate, RTCTime *pNewTime ); // RTCオフセット計算とRTCへの日付時刻チェックを行う
extern u32 SYSM_GetDayNum( u32 year, u32 month ); // 指定された年・月の日数を取得する
extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる
extern void SYSM_PermitToBootSelectedTarget( void );
extern void SYSM_LoadSYSMData( void );
extern BOOL SYSM_BootNITRO( void );
extern void SYSM_BootPictChat( void );
extern void SYSM_BootDSDownloadPlay( void );
extern void SYSM_BootMachineSetting( void );
extern BOOL SYSM_ReadBannerFile( BannerFile *banner );
extern BOOL SYSM_IsTPReadable( void );
extern BOOL SYSM_CheckNintendoLogo( u16 *logo_cardp );
extern void SYSM_LoadNintendoLogo2D( u16 *ninLogoDatap, u16 *dstp, u16 color, u32 *tempBuffp ); // tempBuffpには0x700byte必要です。
extern void SYSM_LoadNintendoLogo1D( u16 *ninLogoDatap, u16 *dstp, u16 color, u32 *tempBuffp ); // 同上。
extern void SYSM_SetBootFlag( u32 value );
extern void SYSM_ClearBootFlag( u32 value );
extern void SYSM_GoSleepMode( void );
extern void NCD_ClearOwnerInfo( void ); // ニックネーム・誕生日・好きな色のクリア
extern BOOL SYSM_CheckRTCDate( RTCDate *datep );
extern BOOL SYSM_CheckRTCTime( RTCTime *timep );
extern s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *newDate, RTCTime *newTime );
extern u32 SYSM_GetDayNum( u32 year, u32 month );
extern BOOL SYSM_IsLeapYear100( u32 year );
// ※以下の関数は、SYSM_Mainがコールされた後に正しい値が取得できるようになります。
// NITROカードが差さっているか
static inline BOOL SYSM_IsNITROCard( void )
void SYSM_GoSleepMode( void );
inline BOOL SYSM_IsNITROCard( void )
{
return (SYSM_GetBootFlag() & BFLG_EXIST_NITRO_CARD) ? TRUE : FALSE;
return TRUE;
}
// 検査用NITROカードが差さっているか
static inline BOOL SYSM_IsInspectNITROCard( void )
{
return ( (SYSM_IsNITROCard()) && (GetRomHeaderAddr()->inspectCard) );
}
#ifdef __cplusplus
}
#endif

View File

@ -193,6 +193,13 @@ typedef struct SYSM_work{
//・bootFlag値を獲得します。
inline void SYSM_SetBootFlag( u32 flag )
{
#pragma unused( flag )
}
// カードROMヘッダワークの取得
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF )
#ifdef __cplusplus
}