mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
SYSM_workの不要要素を整理中。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@169 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
a57a562903
commit
aa112334d7
@ -543,7 +543,7 @@ static void SYSMi_WriteAdjustRTC( void )
|
|||||||
#ifndef __IS_DEBUGGER_BUILD // デバッガ用ビルド時は補正しない。
|
#ifndef __IS_DEBUGGER_BUILD // デバッガ用ビルド時は補正しない。
|
||||||
RTCRawAdjust raw;
|
RTCRawAdjust raw;
|
||||||
raw.adjust = 0;
|
raw.adjust = 0;
|
||||||
// raw.adjust = GetTSD()->rtcClockAdjust; // ncd_invalid時にはrtcClockAdjustは
|
// raw.adjust = GetTSD()->rtcClockAdjust; // isValidTSD時にはrtcClockAdjustは
|
||||||
// 0クリアされているため補正機能は使用されない
|
// 0クリアされているため補正機能は使用されない
|
||||||
( void )RTCi_SetRegAdjust( &raw );
|
( void )RTCi_SetRegAdjust( &raw );
|
||||||
#endif /* __IS_DEBUGGER_BUILD */
|
#endif /* __IS_DEBUGGER_BUILD */
|
||||||
@ -632,9 +632,9 @@ static void SYSMi_CheckCardCloneBoot( void )
|
|||||||
|
|
||||||
buffp += total_rom_size & 0x000001FF;
|
buffp += total_rom_size & 0x000001FF;
|
||||||
if( *buffp++ == 'a' && *buffp == 'c' ) {
|
if( *buffp++ == 'a' && *buffp == 'c' ) {
|
||||||
GetSYSMWork()->clone_boot_mode = CLONE_BOOT_MODE;
|
GetSYSMWork()->CloneBootMode = cloneBootMode;
|
||||||
}else {
|
}else {
|
||||||
GetSYSMWork()->clone_boot_mode = OTHER_BOOT_MODE;
|
GetSYSMWork()->CloneBootMode = OTHER_BOOT_MODE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -54,6 +54,10 @@ void TwlMain( void )
|
|||||||
TitleProperty *pBootTitle = NULL;
|
TitleProperty *pBootTitle = NULL;
|
||||||
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
||||||
|
|
||||||
|
// システムメニュー初期化----------
|
||||||
|
// SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||||
|
|
||||||
|
// OS初期化------------------------
|
||||||
OS_Init();
|
OS_Init();
|
||||||
|
|
||||||
(void)OS_EnableIrq();
|
(void)OS_EnableIrq();
|
||||||
@ -61,10 +65,9 @@ void TwlMain( void )
|
|||||||
|
|
||||||
FS_Init( FS_DMA_NOT_USE );
|
FS_Init( FS_DMA_NOT_USE );
|
||||||
GX_Init();
|
GX_Init();
|
||||||
|
TP_Init();
|
||||||
|
RTC_Init();
|
||||||
|
|
||||||
// プロテクションユニット領域変更
|
|
||||||
OS_SetProtectionRegion( 2, 0x02280000, 512KB );
|
|
||||||
|
|
||||||
// 割り込み許可--------------------
|
// 割り込み許可--------------------
|
||||||
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
|
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
|
||||||
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||||
@ -74,8 +77,9 @@ void TwlMain( void )
|
|||||||
InitAllocator( &g_allocator );
|
InitAllocator( &g_allocator );
|
||||||
CMN_InitFileSystem( &g_allocator );
|
CMN_InitFileSystem( &g_allocator );
|
||||||
|
|
||||||
// システムメニュー初期化----------
|
|
||||||
SYSM_Init( Alloc, Free ); // OS_Initの後でコール。
|
SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||||
|
// SYSM_ReadParameters();
|
||||||
|
|
||||||
// リセットパラメータの取得--------
|
// リセットパラメータの取得--------
|
||||||
if( SYSM_GetResetParam()->flags.isLogoSkip ) {
|
if( SYSM_GetResetParam()->flags.isLogoSkip ) {
|
||||||
@ -176,6 +180,7 @@ void Free( void *pBuffer )
|
|||||||
// ブート状態を確認し、ロゴ表示有無を判断する-------
|
// ブート状態を確認し、ロゴ表示有無を判断する-------
|
||||||
static BOOL CheckBootStatus(void)
|
static BOOL CheckBootStatus(void)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
BOOL boot_decision = FALSE; // 「ブート内容未定」に
|
BOOL boot_decision = FALSE; // 「ブート内容未定」に
|
||||||
BOOL other_shortcut_off = FALSE;
|
BOOL other_shortcut_off = FALSE;
|
||||||
|
|
||||||
@ -183,10 +188,6 @@ static BOOL CheckBootStatus(void)
|
|||||||
// デバッグ用コンパイルスイッチによる挙動
|
// デバッグ用コンパイルスイッチによる挙動
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
{
|
{
|
||||||
#ifdef __FORCE_BOOT_BMENU // ※ブートメニュー強制起動スイッチがONか?
|
|
||||||
SYSM_SetBootFlag( BFLG_BOOT_BMENU );
|
|
||||||
return TRUE; // 「ブート内容決定」でリターン
|
|
||||||
#endif /* __FORCE_BOOT_BMENU */
|
|
||||||
|
|
||||||
#ifdef __LOGO_SKIP // ※デバッグ用ロゴスキップ
|
#ifdef __LOGO_SKIP // ※デバッグ用ロゴスキップ
|
||||||
SetLogoEnable( FALSE ); // ロゴ表示スキップ
|
SetLogoEnable( FALSE ); // ロゴ表示スキップ
|
||||||
@ -251,7 +252,7 @@ static BOOL CheckBootStatus(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* __SYSM_DEBUG */
|
#endif /* __SYSM_DEBUG */
|
||||||
|
#endif
|
||||||
return FALSE; // 「ブート内容未定」でリターン
|
return FALSE; // 「ブート内容未定」でリターン
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -408,7 +408,7 @@ int TP_CalibrationMain( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( ( pad.trg & PAD_BUTTON_A ) || tp_ok ) {
|
if( ( pad.trg & PAD_BUTTON_A ) || tp_ok ) {
|
||||||
GetSYSMWork()->ncd_invalid = 0;
|
GetSYSMWork()->isValidTSD = 0;
|
||||||
|
|
||||||
s_pTPC->calibTemp.data.raw_x1 = s_pTPC->sample[0].x;
|
s_pTPC->calibTemp.data.raw_x1 = s_pTPC->sample[0].x;
|
||||||
s_pTPC->calibTemp.data.raw_y1 = s_pTPC->sample[0].y;
|
s_pTPC->calibTemp.data.raw_y1 = s_pTPC->sample[0].y;
|
||||||
|
|||||||
@ -80,7 +80,7 @@ void SelectLanguageInit( void )
|
|||||||
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select language." );
|
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select language." );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ( GetSYSMWork()->ncd_invalid ) ||
|
if( ( GetSYSMWork()->isValidTSD ) ||
|
||||||
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
|
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
|
||||||
s_langCode = TWL_LANG_ENGLISH;
|
s_langCode = TWL_LANG_ENGLISH;
|
||||||
}else {
|
}else {
|
||||||
@ -128,7 +128,7 @@ int SelectLanguageMain( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
|
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
|
||||||
GetSYSMWork()->ncd_invalid = 0;
|
GetSYSMWork()->isValidTSD = 0;
|
||||||
|
|
||||||
TSD_SetLanguage( s_langCode );
|
TSD_SetLanguage( s_langCode );
|
||||||
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
|
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
|
||||||
|
|||||||
@ -380,7 +380,7 @@ static int InputRtcDateTimeMain( void )
|
|||||||
TSD_SetRTCOffset( SYSM_CalcRTCOffsetAndSetDateTime( &date, &s_pWork->dtp.Time ) );
|
TSD_SetRTCOffset( SYSM_CalcRTCOffsetAndSetDateTime( &date, &s_pWork->dtp.Time ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
GetSYSMWork()->ncd_invalid = 0;
|
GetSYSMWork()->isValidTSD = 0;
|
||||||
TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。
|
TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。
|
||||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
// TWL設定データファイルへの書き込み
|
// TWL設定データファイルへの書き込み
|
||||||
|
|||||||
@ -36,99 +36,20 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
// define data ------------------------------------
|
// define data ------------------------------------
|
||||||
#define SYSMENU_VER 0x071029 // SystemMenuバージョン
|
#define SYSMENU_VER 0x071113 // SystemMenuバージョン
|
||||||
|
|
||||||
#define PXI_FIFO_TAG_SYSM PXI_FIFO_TAG_USER_1 // SystemMenu用のFIFOタグ
|
#define PAD_PRODUCTION_SKIP_INITIAL_SHORTCUT ( PAD_BUTTON_A | PAD_BUTTON_B \
|
||||||
|
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
||||||
#define PAD_PRODUCTION_NITRO_SHORTCUT ( PAD_BUTTON_A | PAD_BUTTON_B \
|
// 量産工程で使用する初回起動設定をキャンセルするショートカットキー
|
||||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
|
||||||
#define PAD_PRODUCTION_AGB_SHORTCUT ( PAD_BUTTON_A | PAD_BUTTON_B \
|
|
||||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_L )
|
|
||||||
// 量産工程で使用するNITRO初回起動設定をキャンセルするショートカットキー
|
|
||||||
|
|
||||||
|
|
||||||
// bootFlagの値
|
// bootFlagの値
|
||||||
#define BFLG_EXIST_AGB_CARTRIDGE 0x00000001
|
#define BFLG_EXIST_CARD 0x00000001
|
||||||
#define BFLG_EXIST_NITRO_CARD 0x00000002
|
|
||||||
#define BFLG_ILLEGAL_NITRO_CARD 0x00000004
|
|
||||||
#define BFLG_ILLEGAL_BMENU 0x00000008
|
|
||||||
#define BFLG_BOOT_AGB 0x00000010
|
|
||||||
#define BFLG_BOOT_NITRO 0x00000020
|
|
||||||
#define BFLG_BOOT_BMENU 0x00000040
|
|
||||||
#define BFLG_BOOT_PICT_CHAT 0x00000080
|
|
||||||
#define BFLG_BOOT_WIRELESS_BOOT 0x00000100
|
|
||||||
#define BFLG_LOAD_CARD_COMPLETED 0x00000200
|
|
||||||
#define BFLG_LOAD_BMENU_COMPLETED 0x00000400
|
|
||||||
#define BFLG_LOAD_SYSM_DATA_COMPLETED 0x00000800
|
|
||||||
#define BFLG_REQ_UNCOMP_BMENU 0x00001000
|
|
||||||
#define BFLG_REQ_UNCOMP_SYSM_DATA 0x00002000
|
|
||||||
#define BFLG_ARM7_INIT_COMPLETED 0x00004000
|
|
||||||
#define BFLG_READ_NCD_COMPLETED 0x00008000
|
|
||||||
#define BFLG_SHORTCUT_CHECK_COMPLETED 0x00010000
|
|
||||||
#define BFLG_HOT_START 0x00020000
|
|
||||||
#define BFLG_BOOT_1SEG 0x00040000
|
|
||||||
#define BFLG_PERMIT_TO_BOOT 0x08000000
|
|
||||||
#define BFLG_SYSM_DATA_ENABLE 0x10000000
|
|
||||||
#define BFLG_CARD_CHECKED 0x20000000
|
|
||||||
#define BFLG_WM_INITIALIZED 0x40000000
|
|
||||||
#define BFLG_BOOT_DECIDED 0x80000000
|
|
||||||
|
|
||||||
#define CLONE_BOOT_MODE 1
|
|
||||||
|
#define cloneBootMode 1
|
||||||
#define OTHER_BOOT_MODE 2
|
#define OTHER_BOOT_MODE 2
|
||||||
|
|
||||||
// mainp_stateの値
|
|
||||||
typedef enum MainpState {
|
|
||||||
MAINP_STATE_INIT = 1,
|
|
||||||
MAINP_STATE_START,
|
|
||||||
MAINP_STATE_WAIT_BOOT_DECISION,
|
|
||||||
MAINP_STATE_WAIT_NITRO_GAME_LOAD,
|
|
||||||
MAINP_STATE_WAIT_READY_CHANGE_AGB,
|
|
||||||
MAINP_STATE_WAIT_BMENU_LOAD,
|
|
||||||
MAINP_STATE_WAIT_BOOT_REQ,
|
|
||||||
MAINP_STATE_WAIT_START_NITRO_GAME_REQ,
|
|
||||||
MAINP_STATE_BOOT_SELECTED_TARGET,
|
|
||||||
MAINP_STATE_BOOT_AGB_REQ
|
|
||||||
}MainpState;
|
|
||||||
|
|
||||||
|
|
||||||
// subp_stateの値
|
|
||||||
typedef enum SubpState {
|
|
||||||
SUBP_STATE_INIT = 1,
|
|
||||||
SUBP_STATE_STAY,
|
|
||||||
SUBP_STATE_CLEAR_MAIN_MEMORY,
|
|
||||||
SUBP_STATE_BOOT_NITRO_GAME_INIT,
|
|
||||||
SUBP_STATE_LOAD_NITRO_GAME,
|
|
||||||
SUBP_STATE_LOAD_BMENU,
|
|
||||||
SUBP_STATE_BOOT_NITRO_GAME,
|
|
||||||
SUBP_STATE_WAIT_START_BMENU_REQ,
|
|
||||||
SUBP_STATE_START_BMENU,
|
|
||||||
SUBP_STATE_BOOT_AGB,
|
|
||||||
SUBP_STATE_BOOT_AGB_ACK,
|
|
||||||
SUBP_STATE_BOOT_FAILED,
|
|
||||||
SUBP_STATE_MB_BOOT,
|
|
||||||
SUBP_STATE_TERMINATE_WM
|
|
||||||
}SubpState;
|
|
||||||
|
|
||||||
|
|
||||||
// SYSMi_SendMessageToARM7(int msg)でARM9からARM7に通知するメッセージ
|
|
||||||
// ARM7からのメッセージも含む
|
|
||||||
typedef enum SYSMMsg {
|
|
||||||
MSG_INVALID = 0, // 無効データ。
|
|
||||||
|
|
||||||
MSG_UNCOMP_SYSM_DATA, // ARM9にSYSM_dataを圧縮展開するよう要求。
|
|
||||||
MSG_UNCOMP_BMENU, // ARM9にbmenuを圧縮展開するよう要求。
|
|
||||||
|
|
||||||
MSG_BOOT_TYPE_NITRO, // ARM7に「NITROゲーム起動」を通知。
|
|
||||||
MSG_BOOT_TYPE_AGB, // ARM7に「AGB起動」を通知。
|
|
||||||
#ifndef __DS_CHAT_OFF
|
|
||||||
MSG_BOOT_TYPE_PICT_CHAT, // ARM7に「絵チャット起動」を通知。
|
|
||||||
#endif
|
|
||||||
MSG_BOOT_TYPE_WIRELESS_BOOT, // ARM7に「無線マルチブート起動」を通知。
|
|
||||||
MSG_BOOT_TYPE_BMENU, // ARM7に「ブートメニュー起動」を通知。
|
|
||||||
MSG_START_BMENU, // ARM7に「ブートメニュー開始」を通知。
|
|
||||||
MSG_TERMINATE_WM // ARM7に「WM終了」を通知。
|
|
||||||
}SYSMMsg;
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// データ型定義
|
// データ型定義
|
||||||
@ -147,51 +68,39 @@ typedef struct RtcDateTime {
|
|||||||
}RtcDateTime;
|
}RtcDateTime;
|
||||||
|
|
||||||
// SYSM共有ワーク構造体
|
// SYSM共有ワーク構造体
|
||||||
typedef struct SYSM_work{
|
typedef struct SYSM_work {
|
||||||
u32 card_arm7_ram_adr; // NITROカードARM7初期ブートコードのRAMロードアドレス
|
BOOL isValidTSD; // NITRO設定データ無効フラグ
|
||||||
int ncd_invalid; // NITRO設定データ無効フラグ
|
BOOL isOnDebugger; // デバッガ動作か?
|
||||||
u32 ncd_rom_adr; // NITRO設定データのROMアドレス
|
BOOL isExistCard; // 有効なNTR/TWLカードが存在するか?
|
||||||
u32 bm_arm7_ram_adr; // ブートメニューARM9RAMアドレス
|
u16 cardHeaderCrc16; // システムメニューで計算したROMヘッダCRC16
|
||||||
u32 bm_arm7_comp_adr; // ブートメニューARM7の圧縮バイナリRAMアドレス
|
u8 CloneBootMode;
|
||||||
u16 sysm_data_crc16;
|
|
||||||
u16 bm_crc16;
|
|
||||||
u8 sysm_type;
|
|
||||||
u8 pmic_type; // デバッガのみで使用。
|
|
||||||
u8 clone_boot_mode;
|
|
||||||
|
|
||||||
|
// NTR-IPL2のレガシー 最終的には消すと思う
|
||||||
u8 rtcStatus;
|
u32 nCardID;
|
||||||
u16 cardHeaderCrc16;
|
|
||||||
u16 rsv;
|
|
||||||
BOOL isOnDebugger;
|
|
||||||
BOOL enableCardNormalOnly;
|
BOOL enableCardNormalOnly;
|
||||||
u32 nCardID; // NORMALカードID(LoadCardHeader() で取得)
|
u8 rtcStatus;
|
||||||
|
|
||||||
volatile MainpState mainp_state; // ARM9プログラムステート
|
|
||||||
volatile SubpState subp_state; // ARM7プログラムステート
|
|
||||||
LockVariable boot_flag; // ブート状態フラグ(SYSM_GetBootFlag(),SetBootFlag()でアクセスを行います。)
|
|
||||||
RtcDateTime rtc[2]; // RTC時間データ([0]:起動時の値、[1]:ゲームブート直前の値)
|
|
||||||
// u32 mb_flag;
|
|
||||||
// u32 mb_ggid;
|
|
||||||
}SYSM_work;
|
}SYSM_work;
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// SYSM共有ワーク領域のアドレス獲得
|
// SYSM共有ワーク領域のアドレス獲得
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
#if 1
|
||||||
#define SYSM_GetResetParam() ( (ResetParam *)HW_RED_RESERVED )
|
#define SYSM_GetResetParam() ( (ResetParam *)HW_RED_RESERVED )
|
||||||
|
|
||||||
#define GetSYSMWork() ( (SYSM_work *)( HW_RED_RESERVED + sizeof(ResetParam) ) )
|
#define GetSYSMWork() ( (SYSM_work *)( HW_RED_RESERVED + sizeof(ResetParam) ) )
|
||||||
|
#else
|
||||||
|
// SYSMリセットパラメータの取得
|
||||||
|
#define SYSM_GetResetParam() ( (ResetParam *)0x02000100 )
|
||||||
|
|
||||||
//・SYSM共有ワーク領域のアドレスを獲得します。
|
// SYSM共有ワークの取得
|
||||||
|
#define SYSM_GetWork() ( (SYSM_work *)HW_RED_RESERVED )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// カードROMヘッダワークの取得
|
||||||
|
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF )
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
// bootFlagのリード
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
#define SYSM_GetBootFlag() ( *(vu32 *)&GetSYSMWork()->boot_flag.value )
|
|
||||||
|
|
||||||
//・bootFlag値を獲得します。
|
|
||||||
|
|
||||||
inline void SYSM_SetBootFlag( u32 flag )
|
inline void SYSM_SetBootFlag( u32 flag )
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user