mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
SYSM_UPDATER_RELEASE SYSM_BUILD_FOR_DEBUGGER SYSM_DO_NOT_SHOW_LAUNCHER SYSM_DISABLE_WDS_SCAN SYSM_DISABLE_WLFIRM_LOAD SYSM_DISABLE_INITIAL_SETTINGS SYSM_IGNORE_WLFIRM_SIGNCHECK SYSM_USE_WLANFIRM_LOCAL_PUBKEY SYSM_DISABLE_DEBUG ・新規ビルドスイッチ追加。 SYSM_BUILD_FOR_PRODUCTION_TEST git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2094 b08762b0-b915-fc4b-9d8c-17b2551a87ff
151 lines
5.2 KiB
C
151 lines
5.2 KiB
C
/*---------------------------------------------------------------------------*
|
||
Project: TwlIPL
|
||
File: util.h
|
||
|
||
Copyright 2007 Nintendo. All rights reserved.
|
||
|
||
These coded instructions, statements, and computer programs contain
|
||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||
Company Ltd., and are protected by Federal copyright law. They may
|
||
not be disclosed to third parties or copied or duplicated in any form,
|
||
in whole or in part, without the prior written consent of Nintendo.
|
||
|
||
$Date:: $
|
||
$Rev$
|
||
$Author$
|
||
*---------------------------------------------------------------------------*/
|
||
|
||
#ifndef __SYSM_UTIL_H__
|
||
#define __SYSM_UTIL_H__
|
||
|
||
#include <twl.h>
|
||
#include <twl/os/common/format_rom.h>
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
// define data----------------------------------------------------------
|
||
#define BACKLIGHT_BRIGHTNESS_MAX 4
|
||
|
||
typedef enum FatalErrorCode {
|
||
FATAL_ERROR_UNDEFINED = 0,
|
||
FATAL_ERROR_NAND = 1,
|
||
FATAL_ERROR_HWINFO_NORMAL = 2,
|
||
FATAL_ERROR_HWINFO_SECURE = 3,
|
||
FATAL_ERROR_TWLSETTINGS = 4,
|
||
FATAL_ERROR_SHARED_FONT = 5,
|
||
FATAL_ERROR_WLANFIRM_AUTH = 6,
|
||
FATAL_ERROR_WLANFIRM_LOAD = 7,
|
||
FATAL_ERROR_TITLE_LOAD_FAILED = 8,
|
||
FATAL_ERROR_TITLE_POINTER_ERROR = 9,
|
||
FATAL_ERROR_AUTHENTICATE_FAILED = 10,
|
||
FATAL_ERROR_ENTRY_ADDRESS_ERROR = 11,
|
||
FATAL_ERROR_TITLE_BOOTTYPE_ERROR = 12,
|
||
FATAL_ERROR_SIGN_DECRYPTION_FAILED = 13,
|
||
FATAL_ERROR_SIGN_COMPARE_FAILED = 14,
|
||
FATAL_ERROR_HEADER_HASH_CALC_FAILED = 15,
|
||
FATAL_ERROR_TITLEID_COMPARE_FAILED = 16,
|
||
FATAL_ERROR_VALID_SIGN_FLAG_OFF = 17,
|
||
FATAL_ERROR_CHECK_TITLE_LAUNCH_RIGHTS_FAILED = 18,
|
||
FATAL_ERROR_MODULE_HASH_CHECK_FAILED = 19,
|
||
FATAL_ERROR_MODULE_HASH_CALC_FAILED = 20,
|
||
FATAL_ERROR_MEDIA_CHECK_FAILED = 21,
|
||
FATAL_ERROR_DL_MAGICCODE_CHECK_FAILED = 22,
|
||
FATAL_ERROR_DL_SIGN_DECRYPTION_FAILED = 23,
|
||
FATAL_ERROR_DL_HASH_CALC_FAILED = 24,
|
||
FATAL_ERROR_DL_SIGN_COMPARE_FAILED = 25,
|
||
FATAL_ERROR_WHITELIST_INITDB_FAILED = 26,
|
||
FATAL_ERROR_WHITELIST_NOTFOUND = 27,
|
||
FATAL_ERROR_DHT_PHASE1_FAILED = 28,
|
||
FATAL_ERROR_DHT_PHASE2_FAILED = 29,
|
||
FATAL_ERROR_LANDING_TMP_JUMP_FLAG_OFF = 30,
|
||
FATAL_ERROR_TWL_BOOTTYPE_UNKNOWN = 31,
|
||
FATAL_ERROR_NTR_BOOTTYPE_UNKNOWN = 32,
|
||
FATAL_ERROR_PLATFORM_UNKNOWN = 33,
|
||
FATAL_ERROR_LOAD_UNFINISHED = 34,
|
||
FATAL_ERROR_LOAD_OPENFILE_FAILED = 35,
|
||
FATAL_ERROR_LOAD_MEMALLOC_FAILED = 36,
|
||
FATAL_ERROR_LOAD_SEEKFILE_FAILED = 37,
|
||
FATAL_ERROR_LOAD_READHEADER_FAILED = 38,
|
||
FATAL_ERROR_LOAD_LOGOCRC_ERROR = 39,
|
||
FATAL_ERROR_LOAD_READDLSIGN_FAILED = 40,
|
||
FATAL_ERROR_LOAD_RELOCATEINFO_FAILED = 41,
|
||
FATAL_ERROR_LOAD_READMODULE_FAILED = 42,
|
||
FATAL_ERROR_NINTENDO_LOGO_CHECK_FAILED = 43,
|
||
FATAL_ERROR_SYSMENU_VERSION = 44,
|
||
|
||
FATAL_ERROR_MAX = 45
|
||
}FatalErrorCode;
|
||
|
||
|
||
// global variable------------------------------------------------------
|
||
// function-------------------------------------------------------------
|
||
|
||
#ifdef SDK_ARM9
|
||
|
||
// <20>o<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>C<EFBFBD>g
|
||
extern u32 UTL_SetBacklightBrightness( u8 brightness ); // <20>o<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>C<EFBFBD>g<EFBFBD>P<EFBFBD>x<EFBFBD>Z<EFBFBD>b<EFBFBD>g
|
||
extern u32 UTL_GetBacklightBrightness( u8 *pBrightness ); // <20>o<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>C<EFBFBD>g<EFBFBD>P<EFBFBD>x<EFBFBD>Q<EFBFBD>b<EFBFBD>g
|
||
|
||
// <20>^<5E>b<EFBFBD>`<60>p<EFBFBD>l<EFBFBD><6C>
|
||
extern void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib ); // TP<54>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD>
|
||
extern BOOL UTL_IsValidCalibration( u16 x, u16 y, u16 correct_x, u16 correct_y ); // TP<54>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƀ^<5E>b<EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><6D><EFBFBD>H
|
||
|
||
// <20>X<EFBFBD><58><EFBFBD>[<5B>v
|
||
extern void UTL_GoSleepMode( void );
|
||
|
||
// RTC<54>W
|
||
extern BOOL UTL_CheckRTCDate( RTCDate *pDate ); // <20><><EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD>킩<EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N
|
||
extern BOOL UTL_CheckRTCTime( RTCTime *pTime ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>킩<EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N
|
||
extern s64 UTL_CalcRTCOffset( RTCDate *pNewDate, RTCTime *pNewTime ); // RTC<54>I<EFBFBD>t<EFBFBD>Z<EFBFBD>b<EFBFBD>g<EFBFBD>v<EFBFBD>Z<EFBFBD><5A>RTC<54>ւ̓<D682><CC93>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>s<EFBFBD><73>
|
||
extern u32 UTL_GetDayNum( u32 year, u32 month ); // <20>w<EFBFBD>肳<EFBFBD>ꂽ<EFBFBD>N<EFBFBD>E<EFBFBD><45><EFBFBD>̓<EFBFBD><CC93><EFBFBD><EFBFBD><EFBFBD><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD>
|
||
extern BOOL UTL_IsLeapYear100( u32 year ); // <20>w<EFBFBD>肳<EFBFBD>ꂽ<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>邤<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>ׂ<EFBFBD>
|
||
|
||
// <20>y<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD>R<EFBFBD><52><EFBFBD>g<EFBFBD><67><EFBFBD>[<5B><><EFBFBD>₢<EFBFBD><E282A2><EFBFBD>킹
|
||
extern u32 UTL_CalcPCTLInquiryCode( void ); // <20>₢<EFBFBD><E282A2><EFBFBD>킹<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>i<EFBFBD>P<EFBFBD>O<EFBFBD>i<EFBFBD>W<EFBFBD><57><EFBFBD>j<EFBFBD>Z<EFBFBD>o
|
||
extern u32 UTL_CalcPCTLMasterKey( void ); // <20>}<7D>X<EFBFBD>^<5E>[<5B>L<EFBFBD>[<5B>@<40>@<40>i<EFBFBD>P<EFBFBD>O<EFBFBD>i<EFBFBD>T<EFBFBD><54><EFBFBD>j<EFBFBD>Z<EFBFBD>o<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTC_GetDate<74><65><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD><DC82>B<EFBFBD>j
|
||
|
||
// <20>A<EFBFBD>v<EFBFBD><76>ROM<4F>w<EFBFBD>b<EFBFBD>_<EFBFBD>̗vEULA<4C>t<EFBFBD><74><EFBFBD>O<EFBFBD>擾
|
||
extern BOOL UTL_IsROMHeaderEULARequired( void );
|
||
|
||
// <20>A<EFBFBD>v<EFBFBD><76>ROM<4F>w<EFBFBD>b<EFBFBD>_<EFBFBD><5F>nintendo<64><6F><EFBFBD>S<EFBFBD>̐<EFBFBD><CC90><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N
|
||
extern BOOL UTL_CheckNintendoLogoData( ROM_Header_Short *rh );
|
||
|
||
#endif
|
||
|
||
// FATAL<41>G<EFBFBD><47><EFBFBD>[
|
||
extern BOOL UTL_IsFatalError( void ); // FATAL<41>G<EFBFBD><47><EFBFBD>[<5B><><EFBFBD>H
|
||
extern void UTL_SetFatalError( FatalErrorCode error ); // FATAL<41>G<EFBFBD><47><EFBFBD>[<5B>̃Z<CC83>b<EFBFBD>g
|
||
extern u64 UTL_GetFatalError( void ); // FATAL<41>G<EFBFBD><47><EFBFBD>[<5B><><EFBFBD>Ԃ̎擾<CC8E>iFatalErrorCode<64><65><EFBFBD>r<EFBFBD>b<EFBFBD>g<EFBFBD>Ɋ<EFBFBD><C98A>蓖<EFBFBD>ĂĊi<C48A>[<5B><><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B<EFBFBD>j
|
||
|
||
|
||
// <20><><EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N
|
||
static inline BOOL UTL_CheckAppRegion( u32 card_region_bitmap )
|
||
{
|
||
#ifdef SYSM_BUILD_FOR_DEBUGGER
|
||
#pragma unused(card_region_bitmap)
|
||
return TRUE;
|
||
#else
|
||
return ( card_region_bitmap & ( 0x00000001 << OS_GetRegion() ) ) ? TRUE : FALSE;
|
||
#endif
|
||
}
|
||
|
||
// CRC<52>`<60>F<EFBFBD>b<EFBFBD>N
|
||
static inline BOOL UTL_CheckAppCRC16( ROM_Header_Short *pROMH )
|
||
{
|
||
u16 calc_crc = SVC_GetCRC16( 65535, pROMH, 0x015e );
|
||
if( ( calc_crc != pROMH->header_crc16 ) ||
|
||
( 0xcf56 != pROMH->nintendo_logo_crc16 ) ){
|
||
return FALSE;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // __SYSM_UTIL_H__
|