SYSM_workの不要要素を整理中。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@169 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-11-14 03:11:04 +00:00
parent a57a562903
commit aa112334d7
6 changed files with 44 additions and 134 deletions

View File

@ -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;
}
}

View File

@ -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; // 「ブート内容未定」でリターン
}

View File

@ -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;

View File

@ -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 ); // 言語入力フラグを立てる

View File

@ -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設定データファイルへの書き込み

View File

@ -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カードIDLoadCardHeader() で取得)
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 )
{