From 8634f14535ce368bb521ce6eeed0cc0a54ce9bf5 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 21 May 2008 11:01:42 +0000 Subject: [PATCH] =?UTF-8?q?SYSM=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=81=AE=E4=B8=80=E9=83=A8=E3=82=92UTL=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=80=81BANNER=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=AB=E5=88=87=E3=82=8A?= =?UTF-8?q?=E5=87=BA=E3=81=97=E3=80=82=20TwlIPL=E5=86=85=E3=81=AE=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=A8TwlSDK=E3=81=A7?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E4=BD=BF=E7=94=A8=E3=81=99=E3=82=8B=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=82=92commondefs?= =?UTF-8?q?=E5=86=85=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=8F=E3=80=81=E5=90=84?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E5=86=85=E3=81=A7=20=E3=81=9D?= =?UTF-8?q?=E3=82=8C=E3=81=9E=E3=82=8C=E6=8C=87=E5=AE=9A=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=97=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=83=98=E3=83=83=E3=83=80=E9=A1=9E=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1444 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/buildtools/commondefs.sysmenu | 27 -- build/components/hyena.TWL/Makefile | 16 +- build/libraries_sysmenu/Makefile | 7 +- .../{mb_loader => banner}/ARM9/Makefile | 9 +- .../{sysmenu => banner}/ARM9/src/banner.c | 77 ++--- .../{mb_loader => banner}/Makefile | 2 +- .../libraries_sysmenu/mb_loader/ARM7/Makefile | 53 --- .../mb_loader/common/src/mb_loader.c | 312 ------------------ build/libraries_sysmenu/sysmenu/ARM9/Makefile | 2 - .../sysmenu/ARM9/src/device.c | 24 +- .../sysmenu/ARM9/src/sysmenu_lib.c | 5 - .../sysmenu/ARM9/src/title.c | 26 +- .../sysmenu/common/include/internal_api.h | 16 - .../libraries_sysmenu/util/ARM9/src/device.c | 255 ++++++++++++++ .../{sysmenu => util}/ARM9/src/util.c | 49 ++- build/systemMenu_RED/Launcher/ARM9/Makefile | 27 +- build/systemMenu_RED/Launcher/ARM9/src/main.c | 10 +- .../MachineSettings/ARM9/Makefile | 28 +- .../MachineSettings/ARM9/src/MachineSetting.c | 4 +- .../MachineSettings/ARM9/src/main.c | 14 +- .../MachineSettings/ARM9/src/selectRegion.c | 6 +- .../MachineSettings/ARM9/src/setOwnerInfo.c | 2 +- .../MachineSettings/ARM9/src/setRTC.c | 6 +- .../HWInfoWriter/ARM9/Makefile | 11 +- .../ImportJump/ARM9.TWL/Makefile | 21 +- .../NandInitializer/ARM9.TWL/Makefile | 22 +- .../ARM9.TWL/Makefile | 22 +- .../NandInitializerRed/ARM9.TWL/Makefile | 22 +- .../SystemUpdater/ARM9.TWL/Makefile | 22 +- build/systemMenu_tools/SystemUpdater/Makefile | 1 - include/sysmenu.h | 3 +- include/sysmenu/banner.h | 30 +- include/sysmenu/banner/common/NTRBanner.h | 104 ------ include/sysmenu/banner/common/TWLBanner.h | 82 ----- include/sysmenu/mb_loader.h | 32 -- include/sysmenu/mb_loader/common/mb_loader.h | 86 ----- 36 files changed, 530 insertions(+), 905 deletions(-) rename build/libraries_sysmenu/{mb_loader => banner}/ARM9/Makefile (84%) rename build/libraries_sysmenu/{sysmenu => banner}/ARM9/src/banner.c (72%) rename build/libraries_sysmenu/{mb_loader => banner}/Makefile (94%) delete mode 100644 build/libraries_sysmenu/mb_loader/ARM7/Makefile delete mode 100644 build/libraries_sysmenu/mb_loader/common/src/mb_loader.c create mode 100644 build/libraries_sysmenu/util/ARM9/src/device.c rename build/libraries_sysmenu/{sysmenu => util}/ARM9/src/util.c (72%) delete mode 100644 include/sysmenu/banner/common/NTRBanner.h delete mode 100644 include/sysmenu/banner/common/TWLBanner.h delete mode 100644 include/sysmenu/mb_loader.h delete mode 100644 include/sysmenu/mb_loader/common/mb_loader.h diff --git a/build/buildtools/commondefs.sysmenu b/build/buildtools/commondefs.sysmenu index 936a5c18..49fb95a8 100644 --- a/build/buildtools/commondefs.sysmenu +++ b/build/buildtools/commondefs.sysmenu @@ -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 diff --git a/build/components/hyena.TWL/Makefile b/build/components/hyena.TWL/Makefile index f3a939e9..ef64f473 100644 --- a/build/components/hyena.TWL/Makefile +++ b/build/components/hyena.TWL/Makefile @@ -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) diff --git a/build/libraries_sysmenu/Makefile b/build/libraries_sysmenu/Makefile index ae53007b..bed39491 100644 --- a/build/libraries_sysmenu/Makefile +++ b/build/libraries_sysmenu/Makefile @@ -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 #---------------------------------------------------------------------------- diff --git a/build/libraries_sysmenu/mb_loader/ARM9/Makefile b/build/libraries_sysmenu/banner/ARM9/Makefile similarity index 84% rename from build/libraries_sysmenu/mb_loader/ARM9/Makefile rename to build/libraries_sysmenu/banner/ARM9/Makefile index 6e9d51c5..ff411827 100644 --- a/build/libraries_sysmenu/mb_loader/ARM9/Makefile +++ b/build/libraries_sysmenu/banner/ARM9/Makefile @@ -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 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c b/build/libraries_sysmenu/banner/ARM9/src/banner.c similarity index 72% rename from build/libraries_sysmenu/sysmenu/ARM9/src/banner.c rename to build/libraries_sysmenu/banner/ARM9/src/banner.c index 260d83ca..ad0ba346 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c +++ b/build/libraries_sysmenu/banner/ARM9/src/banner.c @@ -16,8 +16,8 @@ *---------------------------------------------------------------------------*/ #include -#include -#include "internal_api.h" +#include +#include // 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; +} + diff --git a/build/libraries_sysmenu/mb_loader/Makefile b/build/libraries_sysmenu/banner/Makefile similarity index 94% rename from build/libraries_sysmenu/mb_loader/Makefile rename to build/libraries_sysmenu/banner/Makefile index 6335ad0a..49836b84 100644 --- a/build/libraries_sysmenu/mb_loader/Makefile +++ b/build/libraries_sysmenu/banner/Makefile @@ -17,7 +17,7 @@ #---------------------------------------------------------------------------- TARGET_FIRM = SYSTEMMENU -SUBDIRS = ARM7 ARM9 +SUBDIRS = ARM9 include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs diff --git a/build/libraries_sysmenu/mb_loader/ARM7/Makefile b/build/libraries_sysmenu/mb_loader/ARM7/Makefile deleted file mode 100644 index a61c7a24..00000000 --- a/build/libraries_sysmenu/mb_loader/ARM7/Makefile +++ /dev/null @@ -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 ===== - diff --git a/build/libraries_sysmenu/mb_loader/common/src/mb_loader.c b/build/libraries_sysmenu/mb_loader/common/src/mb_loader.c deleted file mode 100644 index 5289b5c7..00000000 --- a/build/libraries_sysmenu/mb_loader/common/src/mb_loader.c +++ /dev/null @@ -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 - -#if defined(SDK_ARM7) -#include -#else -#ifdef SDK_SMALL_BUILD -#include "SYSM_work.h" -#endif -#endif - - -#include // twl/mb.hがない。 -#include -#include - -// -------------------------------------------------------------------------- - -// 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 - -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 - - -/*---------------------------------------------------------------------------* - 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 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/Makefile b/build/libraries_sysmenu/sysmenu/ARM9/Makefile index 80acb0cd..87a5490d 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/Makefile +++ b/build/libraries_sysmenu/sysmenu/ARM9/Makefile @@ -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 \ diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c index 9b621cff..161d5ff3 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/device.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 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 18d94fb7..813c65bd 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -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値のチェック diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 80e73c6c..73adab85 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -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; diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index ff5eaa1b..834b6c10 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -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 diff --git a/build/libraries_sysmenu/util/ARM9/src/device.c b/build/libraries_sysmenu/util/ARM9/src/device.c new file mode 100644 index 00000000..3793936a --- /dev/null +++ b/build/libraries_sysmenu/util/ARM9/src/device.c @@ -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 +#include +#include +#include +#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 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/util.c b/build/libraries_sysmenu/util/ARM9/src/util.c similarity index 72% rename from build/libraries_sysmenu/sysmenu/ARM9/src/util.c rename to build/libraries_sysmenu/util/ARM9/src/util.c index 89248f1a..bd90a81d 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/util.c +++ b/build/libraries_sysmenu/util/ARM9/src/util.c @@ -1,6 +1,6 @@ /*---------------------------------------------------------------------------* Project: TwlIPL - File: SYSM_util.c + File: util.c Copyright 2007 Nintendo. All rights reserved. @@ -19,26 +19,41 @@ #include // 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 ) diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index 2df4364e..2cc4ad72 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -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) diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 9e77cd4b..c5afe66e 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -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エラー処理 } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/Makefile b/build/systemMenu_RED/MachineSettings/ARM9/Makefile index ed41e1fe..e1230060 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/Makefile +++ b/build/systemMenu_RED/MachineSettings/ARM9/Makefile @@ -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 diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c index 97d15e90..8e89e84c 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c @@ -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; } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c index e9ec01f3..81d622b1 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c @@ -17,7 +17,9 @@ #include #include +#include #include +#include #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 ); diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/selectRegion.c b/build/systemMenu_RED/MachineSettings/ARM9/src/selectRegion.c index dd3f2fea..c4a25a3c 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/selectRegion.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/selectRegion.c @@ -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 ) { diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c index d0b29f96..4f42d88e 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c @@ -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; } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c index c28e8242..97eda8c3 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c @@ -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 ) ); } // :::::::::::::::::::::::::::::::::::::::::::::: diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/Makefile b/build/systemMenu_tools/HWInfoWriter/ARM9/Makefile index 4abaf7c5..071c3406 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/Makefile +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/Makefile @@ -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) #---------------------------------------------------------------------------- diff --git a/build/systemMenu_tools/ImportJump/ARM9.TWL/Makefile b/build/systemMenu_tools/ImportJump/ARM9.TWL/Makefile index e2e40244..6097024a 100644 --- a/build/systemMenu_tools/ImportJump/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/ImportJump/ARM9.TWL/Makefile @@ -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 diff --git a/build/systemMenu_tools/NandInitializer/ARM9.TWL/Makefile b/build/systemMenu_tools/NandInitializer/ARM9.TWL/Makefile index 4c7bab29..ed2738cc 100644 --- a/build/systemMenu_tools/NandInitializer/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/NandInitializer/ARM9.TWL/Makefile @@ -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 diff --git a/build/systemMenu_tools/NandInitializerProduction/ARM9.TWL/Makefile b/build/systemMenu_tools/NandInitializerProduction/ARM9.TWL/Makefile index cf2df7ec..b22fa6de 100644 --- a/build/systemMenu_tools/NandInitializerProduction/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/NandInitializerProduction/ARM9.TWL/Makefile @@ -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 diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/Makefile b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/Makefile index faa9e3a2..4eea0f4d 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/Makefile @@ -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 diff --git a/build/systemMenu_tools/SystemUpdater/ARM9.TWL/Makefile b/build/systemMenu_tools/SystemUpdater/ARM9.TWL/Makefile index 79e4d7bc..aec3297e 100644 --- a/build/systemMenu_tools/SystemUpdater/ARM9.TWL/Makefile +++ b/build/systemMenu_tools/SystemUpdater/ARM9.TWL/Makefile @@ -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 diff --git a/build/systemMenu_tools/SystemUpdater/Makefile b/build/systemMenu_tools/SystemUpdater/Makefile index 48c2ddf6..8318c03c 100644 --- a/build/systemMenu_tools/SystemUpdater/Makefile +++ b/build/systemMenu_tools/SystemUpdater/Makefile @@ -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 diff --git a/include/sysmenu.h b/include/sysmenu.h index 035761cd..c24c32a6 100644 --- a/include/sysmenu.h +++ b/include/sysmenu.h @@ -32,8 +32,9 @@ #include #include #include -#include #include +#include +#include /* SYSMENU_H_ */ #endif diff --git a/include/sysmenu/banner.h b/include/sysmenu/banner.h index 7879d90a..d3acda98 100644 --- a/include/sysmenu/banner.h +++ b/include/sysmenu/banner.h @@ -15,20 +15,40 @@ $Author$ *---------------------------------------------------------------------------*/ -#ifndef BANNER_H_ -#define BANNER_H_ +#ifndef SYSM_BANNER_H_ +#define SYSM_BANNER_H_ #include -#include -#include +#include #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 diff --git a/include/sysmenu/banner/common/NTRBanner.h b/include/sysmenu/banner/common/NTRBanner.h deleted file mode 100644 index 51af555d..00000000 --- a/include/sysmenu/banner/common/NTRBanner.h +++ /dev/null @@ -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 - -#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 diff --git a/include/sysmenu/banner/common/TWLBanner.h b/include/sysmenu/banner/common/TWLBanner.h deleted file mode 100644 index 9302de6a..00000000 --- a/include/sysmenu/banner/common/TWLBanner.h +++ /dev/null @@ -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 -#include - -#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 diff --git a/include/sysmenu/mb_loader.h b/include/sysmenu/mb_loader.h deleted file mode 100644 index d5a1933b..00000000 --- a/include/sysmenu/mb_loader.h +++ /dev/null @@ -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 - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* SYSM_MB_LOADER_H_ */ -#endif diff --git a/include/sysmenu/mb_loader/common/mb_loader.h b/include/sysmenu/mb_loader/common/mb_loader.h deleted file mode 100644 index 9b853e62..00000000 --- a/include/sysmenu/mb_loader/common/mb_loader.h +++ /dev/null @@ -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 -#include // 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_ */