mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
SYSMライブラリの一部をUTLライブラリ、BANNERライブラリに切り出し。
TwlIPL内のライブラリとTwlSDKで追加使用するライブラリをcommondefs内ではなく、各アプリ内で それぞれ指定するよう変更。 使用していなかったヘッダ類を削除。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1444 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
47853b4402
commit
8634f14535
@ -68,32 +68,6 @@ endif
|
||||
|
||||
SYSMENU_LIBDIR := $(SYSMENU_ROOT)/lib/$(TWL_LIBTYPE)
|
||||
|
||||
ifeq ($(CODEGEN_PROC),ARM9)
|
||||
|
||||
SYSMENU_LIBS ?= \
|
||||
liblcfg$(TWL_LIBSUFFIX).a \
|
||||
libsysmenu$(TWL_LIBSUFFIX).a \
|
||||
libsysmmcu$(TWL_LIBSUFFIX).a \
|
||||
libmbloader$(TWL_LIBSUFFIX).a \
|
||||
libboot$(TWL_LIBSUFFIX).a \
|
||||
libds$(TWL_LIBSUFFIX).a \
|
||||
libhotsw$(TWL_LIBSUFFIX).a \
|
||||
libdht$(TWL_LIBSUFFIX).a \
|
||||
|
||||
else # ($(CODEGEN_PROC),ARM7)
|
||||
|
||||
SYSMENU_LIBS ?= \
|
||||
libsysmenu_sp$(TWL_LIBSUFFIX).a \
|
||||
libsysmmcu_sp$(TWL_LIBSUFFIX).a \
|
||||
libmbloader_sp$(TWL_LIBSUFFIX).a \
|
||||
libboot_sp$(TWL_LIBSUFFIX).a \
|
||||
libds_sp$(TWL_LIBSUFFIX).a \
|
||||
libhotsw_sp$(TWL_LIBSUFFIX).a \
|
||||
libdht_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
endif
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# MY BUILD TOOLS
|
||||
#
|
||||
@ -115,7 +89,6 @@ ifneq ($(ES_ROOT),)
|
||||
GINCLUDES += $(ES_ROOT)/twl/include
|
||||
endif
|
||||
GLIBRARY_DIRS := $(SYSMENU_LIBDIR) $(GLIBRARY_DIRS)
|
||||
GLIBRARIES := $(SYSMENU_LIBS) $(GLIBRARIES)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# TWLSYSMENU_INSTALL_ROOT
|
||||
|
||||
@ -93,13 +93,25 @@ LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \
|
||||
$(ROOT)/build/libraries/reboot/common/include \
|
||||
$(SYSMENU_ROOT)/build/libraries_sysmenu/sysmenu/common/include
|
||||
|
||||
LLIBRARY_DIRS += ./
|
||||
SYSMENU_LIBS = \
|
||||
libsysmenu_sp$(TWL_LIBSUFFIX).a \
|
||||
libsysmmcu_sp$(TWL_LIBSUFFIX).a \
|
||||
libmbloader_sp$(TWL_LIBSUFFIX).a \
|
||||
libboot_sp$(TWL_LIBSUFFIX).a \
|
||||
libds_sp$(TWL_LIBSUFFIX).a \
|
||||
libhotsw_sp$(TWL_LIBSUFFIX).a \
|
||||
libdht_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
LLIBRARIES += libwl_sp.TWL.LTD.a \
|
||||
SDK_APPEND_LIBS = \
|
||||
libwl_sp.TWL.LTD.a \
|
||||
libaes_sp.firm.LTD.a \
|
||||
libsea_sp.TWL.LTD.a \
|
||||
libreboot_sp$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
LLIBRARY_DIRS += ./
|
||||
|
||||
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
|
||||
|
||||
|
||||
|
||||
@ -22,18 +22,19 @@ include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS_P = reloc_info \
|
||||
SUBDIRS = reloc_info \
|
||||
sysmenu \
|
||||
mb_loader \
|
||||
acsign \
|
||||
boot \
|
||||
hotsw \
|
||||
namut \
|
||||
mcu \
|
||||
ds \
|
||||
sharedFont \
|
||||
banner \
|
||||
util \
|
||||
dht \
|
||||
wds \
|
||||
sharedFont
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -26,14 +26,13 @@ TWL_PROC = ARM9
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SRCDIR = ../common/src
|
||||
SRCDIR = ./src
|
||||
|
||||
INCDIR = ../common/include \
|
||||
$(ROOT)/build/libraries/mb/common/include
|
||||
INCDIR =
|
||||
|
||||
SRCS = mb_loader.c
|
||||
SRCS = banner.c
|
||||
|
||||
TARGET_LIB = libmbloader$(TWL_LIBSUFFIX).a
|
||||
TARGET_LIB = libbanner$(TWL_LIBSUFFIX).a
|
||||
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
@ -16,8 +16,8 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu.h>
|
||||
#include "internal_api.h"
|
||||
#include <twl/nam.h>
|
||||
#include <sysmenu/banner.h>
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
typedef struct BannerCheckParam {
|
||||
@ -27,8 +27,6 @@ typedef struct BannerCheckParam {
|
||||
|
||||
// extern data-----------------------------------------------------------------
|
||||
// function's prototype-------------------------------------------------------
|
||||
static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner );
|
||||
static BOOL SYSMi_CheckSubBannerFile( TWLSubBannerFile *pBanner );
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
// static variable-------------------------------------------------------------
|
||||
@ -41,23 +39,10 @@ static BOOL SYSMi_CheckSubBannerFile( TWLSubBannerFile *pBanner );
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// カードバナーリード(※NTR-IPL2仕様)
|
||||
BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner )
|
||||
|
||||
// カードアプリバナーリード
|
||||
BOOL BANNER_ReadBannerFromCARD( u32 bannerOffset, TWLBannerFile *pBanner )
|
||||
{
|
||||
#pragma unused(bannerOffset)
|
||||
BOOL isRead;
|
||||
if( SYSMi_GetWork()->flags.hotsw.isValidCardBanner ) {
|
||||
DC_InvalidateRange( (void *)SYSM_CARD_BANNER_BUF, 0x3000 );
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_BANNER_BUF, pBanner, sizeof(TWLBannerFile) );
|
||||
}
|
||||
isRead = SYSMi_CheckBannerFile( pBanner );
|
||||
|
||||
if( !isRead ) {
|
||||
MI_CpuClearFast( pBanner, sizeof(TWLBannerFile) );
|
||||
}
|
||||
return isRead;
|
||||
/*
|
||||
// ※カードライブラリでは、スロットAからのリードなら問題ないが、スロットBからは読めないのでとりあえず使わない
|
||||
BOOL isRead;
|
||||
u16 id = (u16)OS_GetLockID();
|
||||
|
||||
@ -68,17 +53,17 @@ BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner )
|
||||
CARD_UnlockRom( id );
|
||||
OS_ReleaseLockID( id );
|
||||
|
||||
isRead = SYSMi_CheckBannerFile( (TWLBannerFile *)pBanner );
|
||||
isRead = BANNER_CheckBanner( (TWLBannerFile *)pBanner );
|
||||
|
||||
if( !isRead ) {
|
||||
MI_CpuClearFast( pBanner, sizeof(TWLBannerFile) );
|
||||
}
|
||||
return isRead;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
// NANDアプリバナーリード
|
||||
BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
||||
{
|
||||
#define PATH_LENGTH 1024
|
||||
OSTick start;
|
||||
@ -104,7 +89,7 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
bSuccess = FS_OpenFileEx(file, path, FS_FILEMODE_R);
|
||||
if( ! bSuccess )
|
||||
{
|
||||
OS_TPrintf("SYSM_GetNandTitleList failed: cant open file %s\n",path);
|
||||
OS_TPrintf("BANNER_GetNandTitleList failed: cant open file %s\n",path);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -112,14 +97,14 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
bSuccess = FS_SeekFile(file, 0x68, FS_SEEK_SET);
|
||||
if( ! bSuccess )
|
||||
{
|
||||
OS_TPrintf("SYSM_GetNandTitleList failed: cant seek file(0)\n");
|
||||
OS_TPrintf("BANNER_GetNandTitleList failed: cant seek file(0)\n");
|
||||
FS_CloseFile(file);
|
||||
return FALSE;
|
||||
}
|
||||
readLen = FS_ReadFile(file, &offset, sizeof(offset));
|
||||
if( readLen != sizeof(offset) )
|
||||
{
|
||||
OS_TPrintf("SYSM_GetNandTitleList failed: cant read file\n");
|
||||
OS_TPrintf("BANNER_GetNandTitleList failed: cant read file\n");
|
||||
FS_CloseFile(file);
|
||||
return FALSE;
|
||||
}
|
||||
@ -129,18 +114,18 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
bSuccess = FS_SeekFile(file, offset, FS_SEEK_SET);
|
||||
if( ! bSuccess )
|
||||
{
|
||||
OS_TPrintf("SYSM_GetNandTitleList failed: cant seek file(offset)\n");
|
||||
OS_TPrintf("BANNER_GetNandTitleList failed: cant seek file(offset)\n");
|
||||
FS_CloseFile(file);
|
||||
return FALSE;
|
||||
}
|
||||
readLen = FS_ReadFile( file, pDst, (s32)sizeof(TWLBannerFile) );
|
||||
if( readLen != (s32)sizeof(TWLBannerFile) )
|
||||
{
|
||||
OS_TPrintf("SYSM_GetNandTitleList failed: cant read file2\n");
|
||||
OS_TPrintf("BANNER_GetNandTitleList failed: cant read file2\n");
|
||||
FS_CloseFile(file);
|
||||
return FALSE;
|
||||
}
|
||||
if( !SYSMi_CheckBannerFile( pDst ) )
|
||||
if( !BANNER_CheckBanner( pDst ) )
|
||||
{
|
||||
// 正当性チェック失敗の場合はバッファクリア
|
||||
MI_CpuClearFast( pDst, sizeof(TWLBannerFile) );
|
||||
@ -163,19 +148,19 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
if( readLen == sizeof(TWLSubBannerFile) )
|
||||
{
|
||||
// 読み込みには成功したので正当性チェック
|
||||
if( SYSMi_CheckSubBannerFile(&subBanner) )
|
||||
if( BANNER_CheckSubBanner(&subBanner) )
|
||||
{
|
||||
// 成功したのでコピーする
|
||||
pDst->h = subBanner.h;
|
||||
pDst->anime = subBanner.anime;
|
||||
OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner check succeed. id=%.16x\n", titleID);
|
||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check succeed. id=%.16x\n", titleID);
|
||||
}else
|
||||
{
|
||||
OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner check failed. id=%.16x\n", titleID);
|
||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check failed. id=%.16x\n", titleID);
|
||||
}
|
||||
}else
|
||||
{
|
||||
OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner read failed. id=%.16x\n", titleID);
|
||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner read failed. id=%.16x\n", titleID);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -183,20 +168,9 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// サブバナーデータの正誤チェック
|
||||
static BOOL SYSMi_CheckSubBannerFile( TWLSubBannerFile *pBanner )
|
||||
{
|
||||
BOOL retval = TRUE;
|
||||
|
||||
// アニメ部チェック
|
||||
if( pBanner->h.crc16_anime != SVC_GetCRC16( 0xffff, &pBanner->anime, sizeof(BannerAnime) ) ) {
|
||||
retval = FALSE;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
// バナーデータの正誤チェック
|
||||
static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner )
|
||||
BOOL BANNER_CheckBanner( TWLBannerFile *pBanner )
|
||||
{
|
||||
int i;
|
||||
BOOL retval = TRUE;
|
||||
@ -235,3 +209,16 @@ static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner )
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
// サブバナーデータの正誤チェック
|
||||
BOOL BANNER_CheckSubBanner( TWLSubBannerFile *pBanner )
|
||||
{
|
||||
BOOL retval = TRUE;
|
||||
|
||||
// アニメ部チェック
|
||||
if( pBanner->h.crc16_anime != SVC_GetCRC16( 0xffff, &pBanner->anime, sizeof(BannerAnime) ) ) {
|
||||
retval = FALSE;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
TARGET_FIRM = SYSTEMMENU
|
||||
SUBDIRS = ARM7 ARM9
|
||||
SUBDIRS = ARM9
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
@ -1,53 +0,0 @@
|
||||
#! 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$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
TARGET_FIRM = SYSTEMMENU
|
||||
TARGET_PLATFORM = TWL
|
||||
TWL_ARCHGEN = LIMITED
|
||||
TWL_PROC = ARM7
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SRCDIR = ../common/src
|
||||
|
||||
INCDIR = ../common/include \
|
||||
$(ROOT)/build/libraries/mb/common/include
|
||||
|
||||
|
||||
SRCS = mb_loader.c
|
||||
|
||||
TARGET_LIB = libmbloader_sp$(TWL_LIBSUFFIX).a
|
||||
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
INSTALL_DIR = $(SYSMENU_INSTALL_LIBDIR)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
#===== End of Makefile =====
|
||||
|
||||
@ -1,312 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: mb_loader.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$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
|
||||
#if defined(SDK_ARM7)
|
||||
#include <nitro_wl/ARM7/WlLib.h>
|
||||
#else
|
||||
#ifdef SDK_SMALL_BUILD
|
||||
#include "SYSM_work.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#include <nitro/mb.h> // twl/mb.hがない。
|
||||
#include <mb_private.h>
|
||||
#include <sysmenu/mb_loader.h>
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Download情報のサイズ
|
||||
|
||||
#define MB_OVT_MAX_SIZE MB_COMM_BLOCK_SIZE // OVTの最大サイズ(Blockサイズを最大サイズとする)
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
#define MB_TRIGGER_SIGNAL_TO_ARM7 (0x00000001)
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static void MIm_CpuClear32( register u32 data, register void *destp, register u32 size );
|
||||
static void MIm_CpuClear32( register u32 data, register void *destp, register u32 size );
|
||||
static void LOADERi_LocateAllSegments( MBDownloadFileInfo *mdfi );
|
||||
static void MBi_SearchAndLocateSegmentInfo( MBDownloadFileInfo *mdfi, u16 processor );
|
||||
static void LOADERi_Jump(void);
|
||||
static void MBi_fifo_callback_arm7(PXIFifoTag tag, u32 msg_adr, BOOL err);
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static MB_LoaderCallback loader_precallback = NULL;
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#if defined(SDK_ARM7)
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MIm_CpuCopy32
|
||||
|
||||
Description: ローダー用CpuCopy
|
||||
|
||||
Arguments: srcp, destp, size
|
||||
|
||||
Returns: void
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <nitro/code32.h>
|
||||
|
||||
asm void MIm_CpuCopy32( register const void *srcp, register void *destp, register u32 size )
|
||||
{
|
||||
add r12, r1, r2 // r12: destEndp = destp + size
|
||||
|
||||
@30:
|
||||
cmp r1, r12 // while (destp < destEndp)
|
||||
ldmltia r0!, {r2} // *((vu32 *)(destp)++) = *((vu32 *)(srcp)++)
|
||||
stmltia r1!, {r2}
|
||||
blt @30
|
||||
|
||||
bx lr
|
||||
}
|
||||
|
||||
#ifndef SDK_SMALL_BUILD
|
||||
static asm void MIm_CpuClear32( register u32 data, register void *destp, register u32 size )
|
||||
{
|
||||
add r12, r1, r2 // r12: destEndp = destp + size
|
||||
|
||||
@20:
|
||||
cmp r1, r12 // while (destp < destEndp)
|
||||
stmltia r1!, {r0} // *((vu32 *)(destp++)) = data
|
||||
blt @20
|
||||
|
||||
bx lr
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <nitro/codereset.h>
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADERi_LocateAllSegments
|
||||
|
||||
Description: ARM9,ARM7の各セグメントを必要に応じて再配置する。
|
||||
|
||||
Arguments: mdfi
|
||||
|
||||
Returns: void
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static void LOADERi_LocateAllSegments( MBDownloadFileInfo *mdfi )
|
||||
{
|
||||
MBi_SearchAndLocateSegmentInfo(mdfi, MI_PROCESSOR_ARM9); // ARM9セグメントについての配置処理
|
||||
MBi_SearchAndLocateSegmentInfo(mdfi, MI_PROCESSOR_ARM7); // ARM7セグメントについての配置処理
|
||||
}
|
||||
|
||||
|
||||
/* 指定のセグメントを検索し, 再配置する */
|
||||
static void MBi_SearchAndLocateSegmentInfo( MBDownloadFileInfo *mdfi, u16 processor )
|
||||
{
|
||||
int i;
|
||||
MbSegmentInfo *seg_info;
|
||||
|
||||
if( mdfi ) {
|
||||
for( i = 0 ; i < MB_DL_SEGMENT_NUM ; ++i ) {
|
||||
seg_info = &mdfi->seg[i];
|
||||
if ( seg_info->target == processor ) {
|
||||
if ( seg_info->recv_addr != seg_info->load_addr ) {
|
||||
MIm_CpuCopy32( (void*)seg_info->recv_addr, (void*)seg_info->load_addr, seg_info->size );
|
||||
#ifndef SDK_SMALL_BUILD // ※IPL2の場合は、このメモリクリアはIPL2で行う。
|
||||
MIm_CpuClear32( 0, (void*)seg_info->recv_addr, seg_info->size );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADERi_Jump
|
||||
|
||||
Description: ローダーを起動 (ARM7/9 共通)
|
||||
|
||||
Arguments: 無し
|
||||
|
||||
Returns: void
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static void LOADERi_Jump(void)
|
||||
{
|
||||
#if defined(SDK_ARM7)
|
||||
|
||||
MBDownloadFileInfo *mdfi = (MBDownloadFileInfo*)MB_DOWNLOAD_FILEINFO_ADDRESS;
|
||||
MBParam *p_param = (MBParam*)HW_WM_BOOT_BUF;
|
||||
|
||||
if( p_param->boot_type != MB_TYPE_MULTIBOOT ) { // ブートタイプがマルチブートでない場合は、何もせずにTRUEリターン。
|
||||
return;
|
||||
}
|
||||
|
||||
LOADERi_LocateAllSegments( mdfi ); // ブートプログラムの再配置を行う。
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MBi_fifo_callback_arm7
|
||||
|
||||
Description: 専用 PXI タグ経由でローダー起動
|
||||
|
||||
Arguments:
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static void MBi_fifo_callback_arm7(PXIFifoTag tag, u32 msg_adr, BOOL err)
|
||||
{
|
||||
#pragma unused( err )
|
||||
|
||||
if (tag == PXI_FIFO_TAG_MB && msg_adr == (u32)MB_TRIGGER_SIGNAL_TO_ARM7)
|
||||
{
|
||||
if ( loader_precallback ) {
|
||||
(*loader_precallback)();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* defined(SDK_ARM7) */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADER_Start
|
||||
|
||||
Description: ローダーのスタート
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Returns: TRUE - success FALSE - failed
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
void LOADER_Start(void)
|
||||
{
|
||||
|
||||
#if defined(SDK_ARM9)
|
||||
int result;
|
||||
MBDownloadFileInfo *mdfi = (MBDownloadFileInfo*)MB_DOWNLOAD_FILEINFO_ADDRESS;
|
||||
MBParam *p_param = (MBParam*)HW_WM_BOOT_BUF;
|
||||
|
||||
// マルチブートの時はデバッガエントリに飛ばないようクリアする。
|
||||
#ifdef SDK_SMALL_BUILD
|
||||
GetMovedInfoFromIPL1Addr()->isOnDebugger = 0; // USG-WW-3rd & USG-China-2ndでは、GetSharedWorkAddr()->isOnDebuggerはパッチ領域とモロバッティングしているが、このルーチンがARM9のマルチブートルーチンで呼ばれた後で、ARM7でパッチ挿入ルーチンが呼ばれるので、大丈夫。
|
||||
// しかし、デバッガ版ビルド時には、参照する側のisOnDebuggerフラグがクリアされていなかったので、修正する。
|
||||
#endif // SDK_SMALL_BUILD
|
||||
|
||||
// システム領域へマルチブートフラグを書き込み
|
||||
p_param->boot_type = MB_TYPE_MULTIBOOT;
|
||||
// 親機情報をシステム領域へ書き込み
|
||||
MI_CpuCopy8((void*)MB_BSSDESC_ADDRESS, &p_param->parent_bss_desc, MB_BSSDESC_SIZE);
|
||||
|
||||
// ARM7側へローダー起動を通知
|
||||
result = PXI_SendWordByFifo( PXI_FIFO_TAG_MB, (u32)MB_TRIGGER_SIGNAL_TO_ARM7, FALSE );
|
||||
SDK_ASSERTMSG((result >= 0), "ARM9:FIFO SEND ERROR!\n");
|
||||
|
||||
return;
|
||||
|
||||
#else /* defined(SDK_ARM9) */
|
||||
|
||||
// ローダーをコール
|
||||
LOADERi_Jump();
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADER_Init
|
||||
|
||||
Description: ローダーの初期化
|
||||
|
||||
Arguments: callback - ブートの準備が出来たときに返すコールバック
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
void LOADER_Init(MB_LoaderCallback callback)
|
||||
{
|
||||
MBParam *p_param = (MBParam*)HW_WM_BOOT_BUF;
|
||||
|
||||
PXI_Init(); // 初期化されていなかったら、初期化処理を行う
|
||||
|
||||
#if defined(SDK_ARM7)
|
||||
|
||||
loader_precallback = callback;
|
||||
|
||||
/* ブートフラグの補正(マルチブートフラグが指定されていない場合はROMとみなす。) */
|
||||
if (p_param->boot_type != MB_TYPE_MULTIBOOT) {
|
||||
p_param->boot_type = MB_TYPE_NORMAL;
|
||||
}
|
||||
/* 上の処理で, 必ず MB_TYPE_MULTIBOOT か MB_TYPE_NORMAL になる */
|
||||
|
||||
// マルチブート監視FIFOコールバックをセット
|
||||
PXI_SetFifoRecvCallback( PXI_FIFO_TAG_MB, MBi_fifo_callback_arm7 );
|
||||
|
||||
#else /* defined(SDK_ARM7) */
|
||||
|
||||
#pragma unused(callback)
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*
|
||||
/* 現状 不使用
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#if defined(LOADER_USE_OVT_BUF)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// オーバーレイテーブル
|
||||
//----------------------------------------------------------------------
|
||||
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;
|
||||
|
||||
|
||||
// OVTの最大サイズ(これについては再考の余地あり)
|
||||
#define MB_OVT_MAX_SIZE MB_COMM_BLOCKSIZE
|
||||
|
||||
// Overlay Table Buffer
|
||||
// マルチブートするプログラム上で、スタティックイニシャライザを起動するのに必要
|
||||
// オーバーレイテーブル数で容量が変わってくる。
|
||||
// IPL2における仕様が固まるまで、ここに置いておく
|
||||
static u32 mb_ovt_buf[MB_OVT_MAX_SIZE/sizeof(u32)];
|
||||
|
||||
static void MB_SetOverlayTable(ROM_OVT *srcp, u16 sec_num)
|
||||
{
|
||||
if (srcp && sec_num)
|
||||
{
|
||||
MI_CpuCopy8((void*)srcp, (void*)mb_ovt_buf, sec_num*sizeof(ROM_OVT));
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -28,12 +28,10 @@ REVISION_SRC = src/revision.c
|
||||
|
||||
SRCDIR = src
|
||||
SRCS = sysmenu_lib.c \
|
||||
util.c \
|
||||
ninLogoFunc.c \
|
||||
device.c \
|
||||
keys.c \
|
||||
title.c \
|
||||
banner.c \
|
||||
fs_wram.c \
|
||||
../common/src/status.c \
|
||||
../common/src/pxi.c \
|
||||
|
||||
@ -138,26 +138,6 @@ void SYSMi_SetWirelessLED( BOOL enable )
|
||||
}
|
||||
|
||||
|
||||
// タッチパネルキャリブレーション
|
||||
void SYSM_CaribrateTP( void )
|
||||
{
|
||||
LCFGTWLTPCalibData store;
|
||||
TPCalibrateParam calibParam;
|
||||
|
||||
// 本体設定データからキャリブレーション情報を取得
|
||||
LCFG_TSD_GetTPCalibration( &store );
|
||||
|
||||
// TPキャリブレーション
|
||||
( void )TP_CalcCalibrateParam( &calibParam, // タッチパネル初期化
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
TP_SetCalibrateParam( &calibParam );
|
||||
OS_TPrintf("TP_calib: %4d %4d %4d %4d %4d %4d\n",
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
}
|
||||
|
||||
|
||||
// RTCクロック補正値をセット
|
||||
void SYSMi_WriteAdjustRTC( void )
|
||||
{
|
||||
@ -175,8 +155,8 @@ void SYSMi_CheckRTC( void )
|
||||
|
||||
// RTCのリセット or おかしい値を検出した場合は初回起動シーケンスへ。
|
||||
( void )RTC_GetDateTime( &date, &time );
|
||||
if( !SYSM_CheckRTCDate( &date ) ||
|
||||
!SYSM_CheckRTCTime( &time )
|
||||
if( !UTL_CheckRTCDate( &date ) ||
|
||||
!UTL_CheckRTCTime( &time )
|
||||
#ifndef __IS_DEBUGGER_BUILD // 青デバッガではRTCの電池がないので、毎回ここにひっかかって設定データが片方クリアされてしまう。これを防ぐスイッチ。
|
||||
||
|
||||
SYSMi_GetWork()->flags.common.isResetRTC
|
||||
|
||||
@ -153,9 +153,6 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
{
|
||||
TitleProperty *pBootTitle = NULL;
|
||||
|
||||
//NAMの初期化
|
||||
NAM_Init( SYSM_Alloc, SYSM_Free );
|
||||
|
||||
//-----------------------------------------------------
|
||||
// HW情報のリード
|
||||
//-----------------------------------------------------
|
||||
@ -218,8 +215,6 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
}
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
|
||||
// TPキャリブレーション
|
||||
SYSM_CaribrateTP();
|
||||
// RTC補正
|
||||
SYSMi_WriteAdjustRTC();
|
||||
// RTC値のチェック
|
||||
|
||||
@ -320,21 +320,30 @@ BOOL SYSMi_CopyCardRomHeader( void )
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
// カードバナーのARM7バッファからARM9バッファへのコピー
|
||||
BOOL SYSMi_CopyCardBanner( void )
|
||||
{
|
||||
BOOL retval = FALSE;
|
||||
|
||||
if( SYSM_IsExistCard() ) {
|
||||
// バナーデータのリード
|
||||
SYSMi_ReadCardBannerFile( SYSM_GetCardRomHeader()->banner_offset, &s_bannerBuf[ CARD_BANNER_INDEX ] );
|
||||
|
||||
retval = TRUE;
|
||||
// バナーデータのコピー
|
||||
TWLBannerFile *pBanner = &s_bannerBuf[ CARD_BANNER_INDEX ];
|
||||
if( SYSMi_GetWork()->flags.hotsw.isValidCardBanner ) {
|
||||
DC_InvalidateRange( (void *)SYSM_CARD_BANNER_BUF, 0x3000 );
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_BANNER_BUF, pBanner, sizeof(TWLBannerFile) );
|
||||
}
|
||||
retval = BANNER_CheckBanner( pBanner );
|
||||
|
||||
if( !retval ) {
|
||||
MI_CpuClearFast( pBanner, sizeof(TWLBannerFile) );
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
// インポートされているすべてのNANDアプリを列挙したリストの準備
|
||||
// SYSM_GetNandTitleListおよびSYSM_TryToBootTitle前に呼ぶ必要あり
|
||||
BOOL SYSM_InitNandTitleList( void )
|
||||
@ -388,7 +397,7 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
||||
// "Not Launch"でない かつ "Data Only"でない なら有効なタイトルとしてリストに追加
|
||||
if( ( s_pTitleIDList[ l ] & ( TITLE_ID_NOT_LAUNCH_FLAG_MASK | TITLE_ID_DATA_ONLY_FLAG_MASK ) ) == 0 ) {
|
||||
titleIDArray[ validNum ] = s_pTitleIDList[ l ];
|
||||
SYSMi_ReadBanner_NAND( s_pTitleIDList[ l ], &s_bannerBuf[ validNum ] );
|
||||
BANNER_ReadBannerFromNAND( s_pTitleIDList[ l ], &s_bannerBuf[ validNum ] );
|
||||
validNum++;
|
||||
if( !( validNum < LAUNCHER_TITLE_LIST_NUM - 1 ) )// 最大(LAUNCHER_TITLE_LIST_NUM - 1)まで
|
||||
{
|
||||
@ -1543,7 +1552,8 @@ static void SYSMi_makeTitleIdList( void )
|
||||
}
|
||||
}else
|
||||
{
|
||||
if(s_pTitleIDList[l] == NULL)
|
||||
// 無効なTitleID または、DataOnlyアプリはスキップ
|
||||
if( (s_pTitleIDList[l] == NULL) || !( s_pTitleIDList[l] & TITLE_ID_DATA_ONLY_FLAG_MASK ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -1613,8 +1623,8 @@ static void SYSMi_makeTitleIdList( void )
|
||||
}
|
||||
}
|
||||
|
||||
// ジャンプ可能ならば(一応Data Onlyフラグも見ておくが、ジャンプAPIでも見る事)
|
||||
if( pe_hs->permit_landing_normal_jump && !( hs->titleID & TITLE_ID_DATA_ONLY_FLAG_MASK ) )
|
||||
// ジャンプ可能ならば
|
||||
if( pe_hs->permit_landing_normal_jump )
|
||||
{
|
||||
// リストに追加してジャンプ可能フラグON
|
||||
list->TitleID[count] = pe_hs->titleID;
|
||||
|
||||
@ -68,22 +68,6 @@ void SYSMi_WriteAdjustRTC( void );
|
||||
void SYSMi_CheckRTC( void );
|
||||
|
||||
|
||||
//-------------------------------------------------------
|
||||
// バナー
|
||||
//-------------------------------------------------------
|
||||
|
||||
// カードバナーリード(※NTR-IPL2仕様)
|
||||
BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner );
|
||||
|
||||
// NANDアプリバナーリード
|
||||
BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst );
|
||||
|
||||
//-------------------------------------------------------
|
||||
// 活線挿抜
|
||||
//-------------------------------------------------------
|
||||
void SYSMi_EnableHotSW( BOOL enable );
|
||||
|
||||
|
||||
#endif // SDK_ARM9
|
||||
|
||||
|
||||
|
||||
255
build/libraries_sysmenu/util/ARM9/src/device.c
Normal file
255
build/libraries_sysmenu/util/ARM9/src/device.c
Normal file
@ -0,0 +1,255 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: SYSM_lib.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$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu.h>
|
||||
#include <sysmenu/mcu.h>
|
||||
#include <spi.h>
|
||||
#include "internal_api.h"
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
// extern data-----------------------------------------------------------------
|
||||
// function's prototype-------------------------------------------------------
|
||||
#ifdef SDK_FINALROM
|
||||
u32 PM_SendUtilityCommandAsync(u32 number, u16 parameter, u16* retValue, PMCallback callback, void *arg);
|
||||
u32 PM_SendUtilityCommand(u32 number, u16 parameter, u16* retValue);
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data);
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg);
|
||||
#endif // SDK_FINALROM
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
// static variable-------------------------------------------------------------
|
||||
static u8 s_brightness;
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// デバイス制御
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック
|
||||
static OSThreadQueue s_callback_queue;
|
||||
static SYSMMcuResult s_callback_result;
|
||||
static void MCUCallBack( SYSMMcuResult result, void *arg )
|
||||
{
|
||||
#pragma unused(arg)
|
||||
s_callback_result = result;
|
||||
OS_WakeupThread( &s_callback_queue );
|
||||
}
|
||||
|
||||
// バックライト輝度取得
|
||||
u8 SYSM_GetBackLightBlightness( void )
|
||||
{
|
||||
u8 brightness;
|
||||
#ifdef SDK_SUPPORT_PMIC_2
|
||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||
{
|
||||
// X2以前
|
||||
brightness = s_brightness;
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return brightness;
|
||||
}
|
||||
|
||||
// バックライト輝度調整
|
||||
void SYSM_SetBackLightBrightness( u8 brightness )
|
||||
{
|
||||
if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) {
|
||||
OS_TPrintf( "Backlight brightness over! Change brightenss forcibly : %d -> %d\n", brightness, LCFG_TWL_BACKLIGHT_LEVEL_MAX );
|
||||
brightness = LCFG_TWL_BACKLIGHT_LEVEL_MAX;
|
||||
}
|
||||
#ifdef SDK_SUPPORT_PMIC_2
|
||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||
{
|
||||
s_brightness = brightness;
|
||||
( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(s_brightness * 2) );
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降はマイコンに保存するだけ
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ワイヤレスLEDの制御
|
||||
void SYSMi_SetWirelessLED( BOOL enable )
|
||||
{
|
||||
u8 value;
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_WIFI_ADDR, &value, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
value = (u8)( ( value & ~MCU_REG_WIFI_LED_MASK ) | ( enable ? MCU_REG_WIFI_LED_MASK : 0 ) );
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_WIFI_ADDR, value, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// タッチパネルキャリブレーション
|
||||
void SYSM_CaribrateTP( void )
|
||||
{
|
||||
LCFGTWLTPCalibData store;
|
||||
TPCalibrateParam calibParam;
|
||||
|
||||
// 本体設定データからキャリブレーション情報を取得
|
||||
LCFG_TSD_GetTPCalibration( &store );
|
||||
|
||||
// TPキャリブレーション
|
||||
( void )TP_CalcCalibrateParam( &calibParam, // タッチパネル初期化
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
TP_SetCalibrateParam( &calibParam );
|
||||
OS_TPrintf("TP_calib: %4d %4d %4d %4d %4d %4d\n",
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
}
|
||||
|
||||
|
||||
// RTCクロック補正値をセット
|
||||
void SYSMi_WriteAdjustRTC( void )
|
||||
{
|
||||
RTCRawAdjust raw;
|
||||
raw.adjust = LCFG_THW_GetRTCAdjust();
|
||||
( void )RTCi_SetRegAdjust( &raw );
|
||||
}
|
||||
|
||||
|
||||
// 起動時のRTCチェック
|
||||
void SYSMi_CheckRTC( void )
|
||||
{
|
||||
RTCDate date;
|
||||
RTCTime time;
|
||||
|
||||
// RTCのリセット or おかしい値を検出した場合は初回起動シーケンスへ。
|
||||
( void )RTC_GetDateTime( &date, &time );
|
||||
if( !UTL_CheckRTCDate( &date ) ||
|
||||
!UTL_CheckRTCTime( &time )
|
||||
#ifndef __IS_DEBUGGER_BUILD // 青デバッガではRTCの電池がないので、毎回ここにひっかかって設定データが片方クリアされてしまう。これを防ぐスイッチ。
|
||||
||
|
||||
SYSMi_GetWork()->flags.common.isResetRTC
|
||||
#endif
|
||||
) { // RTCの異常を検出したら、rtc入力フラグ&rtcOffsetを0にしてNVRAMに書き込み。
|
||||
OS_TPrintf("\"RTC reset\" or \"Illegal RTC data\" detect!\n");
|
||||
LCFG_TSD_SetRTCOffset( 0 );
|
||||
LCFG_TSD_SetRTCLastSetYear( 0 );
|
||||
{
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
||||
if( pBuffer != NULL ) {
|
||||
LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
||||
SYSM_Free( pBuffer );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// スリープモードへの遷移
|
||||
void SYSM_GoSleepMode( void )
|
||||
{
|
||||
// 蓋閉じ判定
|
||||
if ( ! PAD_DetectFold() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// デバッガ起動時にはスリープに入らない
|
||||
if ( ! SYSM_IsRunOnDebugger() || (OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) )
|
||||
{
|
||||
// カード抜け無検出設定
|
||||
// TWLではゲームカードの再ロードが可能なため
|
||||
// スリープ時のカード抜け検出を無効化
|
||||
// (DS-IPLではゲームカードが起動できなくなるので
|
||||
// レジューム時のROM-IDチェックでエラーになると
|
||||
// シャットダウンしていた)
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
|
||||
// スリープ遷移
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN |
|
||||
PM_TRIGGER_RTC_ALARM,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef SDK_FINALROM
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: PMi_WriteRegisterAsync
|
||||
|
||||
Description: send write register command to ARM7
|
||||
|
||||
Arguments: registerAddr : PMIC register number (0-3)
|
||||
data : data written to PMIC register
|
||||
callback : callback function
|
||||
arg : callback argument
|
||||
|
||||
Returns: result of issueing command
|
||||
PM_RESULT_BUSY : busy
|
||||
PM_RESULT_SUCCESS : success
|
||||
*---------------------------------------------------------------------------*/
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg)
|
||||
{
|
||||
return PM_SendUtilityCommandAsync(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL, callback, arg);
|
||||
}
|
||||
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data)
|
||||
{
|
||||
return PM_SendUtilityCommand(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL);
|
||||
}
|
||||
#endif // SDK_FINALROM
|
||||
@ -1,6 +1,6 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: SYSM_util.c
|
||||
File: util.c
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
@ -19,26 +19,41 @@
|
||||
#include <sysmenu.h>
|
||||
|
||||
// define data------------------------------------------
|
||||
|
||||
// extern data------------------------------------------
|
||||
|
||||
// function's prototype declaration---------------------
|
||||
static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep );
|
||||
static s64 UTLi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep );
|
||||
|
||||
// global variable -------------------------------------
|
||||
|
||||
// static variable -------------------------------------
|
||||
|
||||
// const data -----------------------------------------
|
||||
|
||||
// function's description-------------------------------
|
||||
|
||||
//======================================================================
|
||||
// タッチパネル
|
||||
//======================================================================
|
||||
|
||||
// タッチパネルキャリブレーション
|
||||
void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib )
|
||||
{
|
||||
TPCalibrateParam calibParam;
|
||||
|
||||
// TPキャリブレーション
|
||||
( void )TP_CalcCalibrateParam( &calibParam, // タッチパネル初期化
|
||||
pCalib->data.raw_x1, pCalib->data.raw_y1, (u16)pCalib->data.dx1, (u16)pCalib->data.dy1,
|
||||
pCalib->data.raw_x2, pCalib->data.raw_y2, (u16)pCalib->data.dx2, (u16)pCalib->data.dy2 );
|
||||
TP_SetCalibrateParam( &calibParam );
|
||||
OS_TPrintf("TP_calib: %4d %4d %4d %4d %4d %4d\n",
|
||||
pCalib->data.raw_x1, pCalib->data.raw_y1, (u16)pCalib->data.dx1, (u16)pCalib->data.dy1,
|
||||
pCalib->data.raw_x2, pCalib->data.raw_y2, (u16)pCalib->data.dx2, (u16)pCalib->data.dy2 );
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
// RTCオフセット制御
|
||||
//======================================================================
|
||||
|
||||
// RTCに新しい設定値をセットして、その値をもとにrtcOffset値を算出する。
|
||||
s64 SYSM_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
|
||||
s64 UTL_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
|
||||
{
|
||||
RTCDate oldDate;
|
||||
RTCTime oldTime;
|
||||
@ -56,8 +71,8 @@ s64 SYSM_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
|
||||
}
|
||||
LCFG_TSD_SetRTCLastSetYear( (u8)newDatep->year );
|
||||
|
||||
offset0 = SYSMi_CalcRTCSecOffset( &oldDate, &oldTime ); // 設定直前のRTC値のオフセットを算出
|
||||
offset1 = SYSMi_CalcRTCSecOffset( newDatep, newTimep ); // 新しくセットされたRTC値のオフセットを算出
|
||||
offset0 = UTLi_CalcRTCSecOffset( &oldDate, &oldTime ); // 設定直前のRTC値のオフセットを算出
|
||||
offset1 = UTLi_CalcRTCSecOffset( newDatep, newTimep ); // 新しくセットされたRTC値のオフセットを算出
|
||||
offset = LCFG_TSD_GetRTCOffset() + offset1 - offset0; // 新RTC_ofs と 現在のRTC_ofs の差分の値を加算してリターン。
|
||||
|
||||
OS_Printf ("Now Date = year:%3d month:%3d date:%3d hour:%3d minute:%3d second:%3d\n",
|
||||
@ -76,7 +91,7 @@ s64 SYSM_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
|
||||
|
||||
// RTCオフセット値の算出
|
||||
#define SECOND_OFFSET
|
||||
static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
|
||||
static s64 UTLi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
|
||||
{
|
||||
u32 i;
|
||||
int uruu = 0;
|
||||
@ -93,7 +108,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
|
||||
// 月、日を 日数に換算してから、 秒 or 分オフセットに
|
||||
dayNum = (int)datep->day - 1;
|
||||
for( i = 1; i < datep->month; i++ ) {
|
||||
dayNum += SYSM_GetDayNum( datep->year, i );
|
||||
dayNum += UTL_GetDayNum( datep->year, i );
|
||||
}
|
||||
|
||||
// 年を 日数に換算
|
||||
@ -114,11 +129,11 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
|
||||
|
||||
|
||||
// 指定された年・月の日数を返す。
|
||||
u32 SYSM_GetDayNum( u32 year, u32 month )
|
||||
u32 UTL_GetDayNum( u32 year, u32 month )
|
||||
{
|
||||
u32 dayNum = 31;
|
||||
if( month == 2 ) {
|
||||
if( SYSM_IsLeapYear100( year ) ) {
|
||||
if( UTL_IsLeapYear100( year ) ) {
|
||||
dayNum -= 2;
|
||||
}else {
|
||||
dayNum -= 3;
|
||||
@ -131,7 +146,7 @@ u32 SYSM_GetDayNum( u32 year, u32 month )
|
||||
|
||||
|
||||
// 簡易うるう年の判定 (うるう年:1、通常の年:0)※RTCのとりうる範2000~2100年に限定する。
|
||||
BOOL SYSM_IsLeapYear100( u32 year )
|
||||
BOOL UTL_IsLeapYear100( u32 year )
|
||||
{
|
||||
if( ( year & 0x03 ) || ( year == 100 ) ) { // うるう年は、「4で割り切れ かつ 100で割り切れない年」または「400で割り切れる年」
|
||||
return FALSE;
|
||||
@ -142,7 +157,7 @@ BOOL SYSM_IsLeapYear100( u32 year )
|
||||
|
||||
|
||||
// RTCの日付が正しいかチェック
|
||||
BOOL SYSM_CheckRTCDate( RTCDate *datep )
|
||||
BOOL UTL_CheckRTCDate( RTCDate *datep )
|
||||
{
|
||||
if( ( datep->year >= 100 )
|
||||
|| ( datep->month < 1 ) || ( datep->month > 12 )
|
||||
@ -155,7 +170,7 @@ BOOL SYSM_CheckRTCDate( RTCDate *datep )
|
||||
|
||||
|
||||
// RTCの時刻が正しいかチェック
|
||||
BOOL SYSM_CheckRTCTime( RTCTime *timep )
|
||||
BOOL UTL_CheckRTCTime( RTCTime *timep )
|
||||
{
|
||||
if( ( timep->hour > 23 )
|
||||
|| ( timep->minute > 59 )
|
||||
@ -41,9 +41,6 @@ export DISABLE_WLFIRM_LOAD = FALSE
|
||||
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
||||
export DISABLE_SLEEP = TRUE
|
||||
|
||||
# COMPILE SWITCH ※最終ROM作成時は、全てTRUEにセットする
|
||||
export LOAD_APP_VIA_WRAM = FALSE
|
||||
|
||||
endif
|
||||
|
||||
# MAKEROM SWITCH ※最終ROM作成時は、全てTRUEにセットする
|
||||
@ -87,16 +84,30 @@ LINCLUDES = $(MISC_DIR)/include \
|
||||
$(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc \
|
||||
$(ROOT)/build/libraries/reboot/common/include
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
SYSMENU_LIBS = \
|
||||
liblcfg$(TWL_LIBSUFFIX).a \
|
||||
libsysmenu$(TWL_LIBSUFFIX).a \
|
||||
libsysmmcu$(TWL_LIBSUFFIX).a \
|
||||
libsysmutil$(TWL_LIBSUFFIX).a \
|
||||
libbanner$(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
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
REBOOT_LIB = libreboot$(TWL_LIBSUFFIX).a
|
||||
|
||||
LDEPENDS_NEF += $(REBOOT_LIB)
|
||||
|
||||
@ -113,7 +113,10 @@ void TwlMain( void )
|
||||
#ifdef USE_WRAM_LOAD
|
||||
HOTSW_Init();
|
||||
#endif
|
||||
|
||||
|
||||
//NAMの初期化
|
||||
NAM_Init( Alloc, Free );
|
||||
|
||||
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
|
||||
|
||||
// 割り込み許可--------------------
|
||||
@ -128,7 +131,10 @@ void TwlMain( void )
|
||||
|
||||
// 各種パラメータの取得------------
|
||||
pBootTitle = SYSM_ReadParameters(); // 本体設定データ、リセットパラメータのリード、検査用オート起動カード判定、量産ライン用キーショートカット起動判定等のリード
|
||||
|
||||
|
||||
// TPキャリブレーション
|
||||
UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() );
|
||||
|
||||
if( SYSM_IsFatalError() ) {
|
||||
// FATALエラー処理
|
||||
}
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = \
|
||||
# ../../../libraries_sysmenu/sysmenu \
|
||||
# ../../../libraries_sysmenu/settings
|
||||
SUBDIRS =
|
||||
SUBMAKES = \
|
||||
$(ROOT)/build/libraries/os/ARM9.TWL/Makefile.sharedFont
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -66,12 +66,24 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
|
||||
MAKETAD_OPTION += -s
|
||||
|
||||
LLIBRARIES = libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
# libsysmenu.a は、RED本体設定でSVNのリビジョンを取得するためだけに使用しているので、
|
||||
# UIG本体設定でリンクする必要はありません。
|
||||
SYSMENU_LIBS = \
|
||||
libbanner$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a \
|
||||
libsysmutil$(TWL_LIBSUFFIX).a \
|
||||
libsysmenu$(TWL_LIBSUFFIX).a
|
||||
|
||||
SDK_APPEND_LIBS = \
|
||||
liblcfg$(TWL_LIBSUFFIX).a \
|
||||
libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libsharedfont$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
|
||||
@ -349,10 +349,10 @@ void CheckOKCancelButton(BOOL *tp_ok, BOOL *tp_cancel)
|
||||
BOOL MY_WriteTWLSettings( void )
|
||||
{
|
||||
BOOL retval = FALSE;
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
||||
u8 *pBuffer = Alloc( LCFG_WRITE_TEMP );
|
||||
if( pBuffer != NULL ) {
|
||||
retval = LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
||||
SYSM_Free( pBuffer );
|
||||
Free( pBuffer );
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -17,7 +17,9 @@
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/sea.h>
|
||||
#include <twl/lcfg.h>
|
||||
#include <sysmenu/namut.h>
|
||||
#include <sysmenu/util.h>
|
||||
#include "misc.h"
|
||||
#include "MachineSetting.h"
|
||||
|
||||
@ -84,24 +86,20 @@ void TwlMain(void)
|
||||
OS_TPrintf( "LCFGTWLSettingsData : 0x%04x\n", sizeof(LCFGTWLSettingsData) );
|
||||
}
|
||||
|
||||
// TWL設定のリード
|
||||
SYSM_SetAllocFunc( Alloc, Free ); // SYSM_ReadTWLSettingsFile()の実行に必要。
|
||||
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
// TWL設定データファイルの読み込み
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
(void)LCFG_ReadHWSecureInfo();
|
||||
{
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
||||
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
||||
g_isValidTSD = FALSE;
|
||||
if( pBuffer) {
|
||||
g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer );
|
||||
SYSM_Free( pBuffer );
|
||||
Free( pBuffer );
|
||||
}
|
||||
}
|
||||
if( g_isValidTSD ) {
|
||||
SYSM_CaribrateTP();
|
||||
}
|
||||
|
||||
UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() );
|
||||
|
||||
InitBG();
|
||||
GetAndDrawRTCData( &g_rtcDraw, TRUE );
|
||||
|
||||
@ -153,8 +153,10 @@ int SelectRegionMain( void )
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
TSD_SetLanguage( default_lang_list[s_regionCode] ); // デフォルト言語に強制設定
|
||||
TSD_SetCountry( default_country_list[s_regionCode] ); // デフォルト国に強制設定
|
||||
(void)SYSM_WriteTWLSettingsFile();
|
||||
|
||||
if( !MY_WriteTWLSettings() ) {
|
||||
OS_TPrintf( "TWL settings write failed.\n" );
|
||||
}
|
||||
|
||||
MachineSettingInit();
|
||||
return 0;
|
||||
}else if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) {
|
||||
|
||||
@ -676,7 +676,7 @@ static void CheckDate( void )
|
||||
u8 maxday;
|
||||
if( s_temp_birthday.month == 0 ) s_temp_birthday.month = 12;
|
||||
if( s_temp_birthday.month == 13 ) s_temp_birthday.month = 1;
|
||||
maxday = (u8)SYSM_GetDayNum( 2000, s_temp_birthday.month );
|
||||
maxday = (u8)UTL_GetDayNum( 2000, s_temp_birthday.month );
|
||||
if( s_temp_birthday.day == 0 ) s_temp_birthday.day = maxday;
|
||||
if( s_temp_birthday.day > maxday ) s_temp_birthday.day = 1;
|
||||
}
|
||||
|
||||
@ -307,7 +307,7 @@ static int InputRtcDateTimeMain( void )
|
||||
case SEQ_DAY_INIT:
|
||||
s_pWork->inp.pos_x = DAY_TOP_X;
|
||||
s_pWork->inp.keta_max = 2;
|
||||
s_pWork->inp.value_max = (int)SYSM_GetDayNum( s_pWork->dtp.Date.year, s_pWork->dtp.Date.month );
|
||||
s_pWork->inp.value_max = (int)UTL_GetDayNum( s_pWork->dtp.Date.year, s_pWork->dtp.Date.month );
|
||||
// 年・月をもとにその月の日数を算出する。
|
||||
s_pWork->inp.value_min = 1;
|
||||
if(s_pWork->dtp.Date.day > s_pWork->inp.value_max) {
|
||||
@ -349,7 +349,7 @@ static int InputRtcDateTimeMain( void )
|
||||
// 年・月入力ならば、日数を算出して、現在の入力日が日数を超えていたら修正する。
|
||||
if( ( s_pWork->dtp.seq == SEQ_YEAR_SET ) ||
|
||||
( s_pWork->dtp.seq == SEQ_MONTH_SET ) ) {
|
||||
u32 dayNum = SYSM_GetDayNum( s_pWork->dtp.Date.year, s_pWork->dtp.Date.month );
|
||||
u32 dayNum = UTL_GetDayNum( s_pWork->dtp.Date.year, s_pWork->dtp.Date.month );
|
||||
if( dayNum < s_pWork->dtp.Date.day ) {
|
||||
PrintfSJIS( DAY_TOP_X, DATE_TOP_Y, TXT_COLOR_WHITE, "%02d", s_pWork->dtp.Date.day );
|
||||
PrintfSJIS( DAY_TOP_X, DATE_TOP_Y, TXT_COLOR_BLACK, "%02d", dayNum );
|
||||
@ -365,7 +365,7 @@ static int InputRtcDateTimeMain( void )
|
||||
MI_CpuCopy32( &s_pWork->dtp.Date, &date, sizeof(RTCDate) );
|
||||
date.year -= 2000;
|
||||
(void)RTC_SetDateTime( &date, &s_pWork->dtp.Time );
|
||||
LCFG_TSD_SetRTCOffset( SYSM_CalcRTCOffset( &date, &s_pWork->dtp.Time ) );
|
||||
LCFG_TSD_SetRTCOffset( UTL_CalcRTCOffset( &date, &s_pWork->dtp.Time ) );
|
||||
}
|
||||
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
@ -43,8 +43,15 @@ SRCS = main.c HWInfoWriter.c hwi.c \
|
||||
|
||||
LINCLUDES = $(MISC_DIR)/include \
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||
LLIBRARIES = libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a
|
||||
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
|
||||
SDK_APPEND_LIBS = \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -75,14 +75,19 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
-DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa'
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(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 \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
|
||||
@ -124,14 +124,20 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(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 \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
|
||||
|
||||
@ -107,14 +107,20 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(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 \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
|
||||
|
||||
@ -102,14 +102,20 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(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 \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
|
||||
|
||||
@ -89,15 +89,21 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
-DDISABLE_DEBUG='$(DISABLE_DEBUG)'
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
SYSMENU_LIBS = \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libacsign_enc$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a \
|
||||
libsysmenu$(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 \
|
||||
liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
|
||||
|
||||
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
|
||||
|
||||
|
||||
@ -47,7 +47,6 @@ export DISABLE_WDS_SCAN = TRUE
|
||||
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
||||
export DISABLE_WLFIRM_LOAD = FALSE
|
||||
export DISABLE_SLEEP = FASLE
|
||||
export LOAD_APP_VIA_WRAM = FALSE
|
||||
export SYSM_OUTSIDE_UI = TRUE
|
||||
export SYSM_BROADON_UI = FALSE
|
||||
|
||||
|
||||
@ -32,8 +32,9 @@
|
||||
#include <sysmenu/boot.h>
|
||||
#include <sysmenu/memorymap.h>
|
||||
#include <sysmenu/hotsw.h>
|
||||
#include <sysmenu/mb_loader.h>
|
||||
#include <sysmenu/sharedFont.h>
|
||||
#include <sysmenu/banner.h>
|
||||
#include <sysmenu/util.h>
|
||||
|
||||
/* SYSMENU_H_ */
|
||||
#endif
|
||||
|
||||
@ -15,20 +15,40 @@
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef BANNER_H_
|
||||
#define BANNER_H_
|
||||
#ifndef SYSM_BANNER_H_
|
||||
#define SYSM_BANNER_H_
|
||||
|
||||
#include <twl/types.h>
|
||||
#include <sysmenu/banner/common/NTRBanner.h>
|
||||
#include <sysmenu/banner/common/TWLBanner.h>
|
||||
#include <twl/os/common/banner.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// define data----------------------------------------------------------
|
||||
// global variable------------------------------------------------------
|
||||
// function-------------------------------------------------------------
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
|
||||
// カードからのバナーリード
|
||||
BOOL BANNER_ReadBannerFromCARD( u32 bannerOffset, TWLBannerFile *pDst );
|
||||
|
||||
// NANDからのバナーリード
|
||||
BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst );
|
||||
|
||||
// バナーのフォーマットが正しいかチェック(NTRバナー、TWLバナーのどちらでもOK)
|
||||
BOOL BANNER_CheckBanner( TWLBannerFile *pBanner );
|
||||
|
||||
// サブバナーチェック
|
||||
BOOL BANNER_CheckSubBanner( TWLSubBannerFile *pBanner );
|
||||
|
||||
#endif //SDK_ARM9
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* BANNER_H_ */
|
||||
/* SYSM_BANNER_H_ */
|
||||
#endif
|
||||
|
||||
@ -1,104 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
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
|
||||
@ -1,82 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
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 ]; // 先頭の1個はBannerFileV1内にある。
|
||||
}TWLBannerFile;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* TWL_BANNER_H_ */
|
||||
#endif
|
||||
@ -1,32 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - MB_LOADER
|
||||
File: mb_loader.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:: 2007-09-06$
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef SYSM_MB_LOADER_H_
|
||||
#define SYSM_MB_LOADER_H_
|
||||
|
||||
#include <sysmenu/mb_loader/common/mb_loader.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* SYSM_MB_LOADER_H_ */
|
||||
#endif
|
||||
@ -1,86 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: mb_loader.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$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#if !defined(_LOADER_H_)
|
||||
#define _LOADER_H_
|
||||
|
||||
#include <twl.h>
|
||||
#include <nitro/mb.h> // twl/mb.hがない。
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PXI_FIFO_TAG_MB PXI_FIFO_TAG_USER_0
|
||||
/*
|
||||
実装の際、他のFIFO_TAGとかちあわないTAG番号に指定してください。
|
||||
*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Type definition
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
typedef void (*MB_LoaderCallback)(void);
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
functions
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADER_Init
|
||||
|
||||
Description: ローダーの初期化
|
||||
|
||||
Arguments: callback - ブートの準備が出来たときに返すコールバック
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
void LOADER_Init(MB_LoaderCallback callback);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: LOADER_Start
|
||||
|
||||
Description: ローダーのスタート
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
void LOADER_Start( void );
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MIm_CpuCopy32
|
||||
|
||||
Description: ローダー用のCpuCopy32関数
|
||||
|
||||
Arguments:
|
||||
|
||||
Returns: TRUE - success FALSE - failed
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
void MIm_CpuCopy32( register const void *srcp, register void *destp, register u32 size );
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LOADER_H_ */
|
||||
Loading…
Reference in New Issue
Block a user