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 // デバッガ用ビルド時は補正しない。
|
||||
RTCRawAdjust raw;
|
||||
raw.adjust = 0;
|
||||
// raw.adjust = GetTSD()->rtcClockAdjust; // ncd_invalid時にはrtcClockAdjustは
|
||||
// raw.adjust = GetTSD()->rtcClockAdjust; // isValidTSD時にはrtcClockAdjustは
|
||||
// 0クリアされているため補正機能は使用されない
|
||||
( void )RTCi_SetRegAdjust( &raw );
|
||||
#endif /* __IS_DEBUGGER_BUILD */
|
||||
@ -632,9 +632,9 @@ static void SYSMi_CheckCardCloneBoot( void )
|
||||
|
||||
buffp += total_rom_size & 0x000001FF;
|
||||
if( *buffp++ == 'a' && *buffp == 'c' ) {
|
||||
GetSYSMWork()->clone_boot_mode = CLONE_BOOT_MODE;
|
||||
GetSYSMWork()->CloneBootMode = cloneBootMode;
|
||||
}else {
|
||||
GetSYSMWork()->clone_boot_mode = OTHER_BOOT_MODE;
|
||||
GetSYSMWork()->CloneBootMode = OTHER_BOOT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -54,6 +54,10 @@ void TwlMain( void )
|
||||
TitleProperty *pBootTitle = NULL;
|
||||
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
||||
|
||||
// システムメニュー初期化----------
|
||||
// SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||
|
||||
// OS初期化------------------------
|
||||
OS_Init();
|
||||
|
||||
(void)OS_EnableIrq();
|
||||
@ -61,10 +65,9 @@ void TwlMain( void )
|
||||
|
||||
FS_Init( FS_DMA_NOT_USE );
|
||||
GX_Init();
|
||||
TP_Init();
|
||||
RTC_Init();
|
||||
|
||||
// プロテクションユニット領域変更
|
||||
OS_SetProtectionRegion( 2, 0x02280000, 512KB );
|
||||
|
||||
// 割り込み許可--------------------
|
||||
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
|
||||
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||
@ -74,8 +77,9 @@ void TwlMain( void )
|
||||
InitAllocator( &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 ) {
|
||||
@ -176,6 +180,7 @@ void Free( void *pBuffer )
|
||||
// ブート状態を確認し、ロゴ表示有無を判断する-------
|
||||
static BOOL CheckBootStatus(void)
|
||||
{
|
||||
#if 0
|
||||
BOOL boot_decision = 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 // ※デバッグ用ロゴスキップ
|
||||
SetLogoEnable( FALSE ); // ロゴ表示スキップ
|
||||
@ -251,7 +252,7 @@ static BOOL CheckBootStatus(void)
|
||||
}
|
||||
}
|
||||
#endif /* __SYSM_DEBUG */
|
||||
|
||||
#endif
|
||||
return FALSE; // 「ブート内容未定」でリターン
|
||||
}
|
||||
|
||||
|
||||
@ -408,7 +408,7 @@ int TP_CalibrationMain( void )
|
||||
}
|
||||
|
||||
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_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." );
|
||||
}
|
||||
|
||||
if( ( GetSYSMWork()->ncd_invalid ) ||
|
||||
if( ( GetSYSMWork()->isValidTSD ) ||
|
||||
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
|
||||
s_langCode = TWL_LANG_ENGLISH;
|
||||
}else {
|
||||
@ -128,7 +128,7 @@ int SelectLanguageMain( void )
|
||||
}
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
|
||||
GetSYSMWork()->ncd_invalid = 0;
|
||||
GetSYSMWork()->isValidTSD = 0;
|
||||
|
||||
TSD_SetLanguage( s_langCode );
|
||||
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
|
||||
|
||||
@ -380,7 +380,7 @@ static int InputRtcDateTimeMain( void )
|
||||
TSD_SetRTCOffset( SYSM_CalcRTCOffsetAndSetDateTime( &date, &s_pWork->dtp.Time ) );
|
||||
}
|
||||
|
||||
GetSYSMWork()->ncd_invalid = 0;
|
||||
GetSYSMWork()->isValidTSD = 0;
|
||||
TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
// TWL設定データファイルへの書き込み
|
||||
|
||||
@ -36,99 +36,20 @@ extern "C" {
|
||||
|
||||
|
||||
// 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_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初回起動設定をキャンセルするショートカットキー
|
||||
#define PAD_PRODUCTION_SKIP_INITIAL_SHORTCUT ( PAD_BUTTON_A | PAD_BUTTON_B \
|
||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
||||
// 量産工程で使用する初回起動設定をキャンセルするショートカットキー
|
||||
|
||||
|
||||
// bootFlagの値
|
||||
#define BFLG_EXIST_AGB_CARTRIDGE 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 BFLG_EXIST_CARD 0x00000001
|
||||
|
||||
#define CLONE_BOOT_MODE 1
|
||||
|
||||
#define cloneBootMode 1
|
||||
#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;
|
||||
|
||||
// SYSM共有ワーク構造体
|
||||
typedef struct SYSM_work{
|
||||
u32 card_arm7_ram_adr; // NITROカードARM7初期ブートコードのRAMロードアドレス
|
||||
int ncd_invalid; // NITRO設定データ無効フラグ
|
||||
u32 ncd_rom_adr; // NITRO設定データのROMアドレス
|
||||
u32 bm_arm7_ram_adr; // ブートメニューARM9RAMアドレス
|
||||
u32 bm_arm7_comp_adr; // ブートメニューARM7の圧縮バイナリRAMアドレス
|
||||
u16 sysm_data_crc16;
|
||||
u16 bm_crc16;
|
||||
u8 sysm_type;
|
||||
u8 pmic_type; // デバッガのみで使用。
|
||||
u8 clone_boot_mode;
|
||||
typedef struct SYSM_work {
|
||||
BOOL isValidTSD; // NITRO設定データ無効フラグ
|
||||
BOOL isOnDebugger; // デバッガ動作か?
|
||||
BOOL isExistCard; // 有効なNTR/TWLカードが存在するか?
|
||||
u16 cardHeaderCrc16; // システムメニューで計算したROMヘッダCRC16
|
||||
u8 CloneBootMode;
|
||||
|
||||
|
||||
u8 rtcStatus;
|
||||
u16 cardHeaderCrc16;
|
||||
u16 rsv;
|
||||
BOOL isOnDebugger;
|
||||
// NTR-IPL2のレガシー 最終的には消すと思う
|
||||
u32 nCardID;
|
||||
BOOL enableCardNormalOnly;
|
||||
u32 nCardID; // NORMALカードID(LoadCardHeader() で取得)
|
||||
|
||||
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;
|
||||
u8 rtcStatus;
|
||||
}SYSM_work;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// SYSM共有ワーク領域のアドレス獲得
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#if 1
|
||||
#define SYSM_GetResetParam() ( (ResetParam *)HW_RED_RESERVED )
|
||||
|
||||
#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 )
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user