mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
RSFのGameCardNitroModeプロパティへ対応。
カードIDをFinalize時に渡すように変更。 DS-IPL同様にカードブート以外でもカードIDを渡す。 DSP初期化を戻す。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1615 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f365c98557
commit
22e68de023
@ -330,14 +330,11 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget*
|
||||
|
||||
static void BOOTi_ClearREG_RAM( void )
|
||||
{
|
||||
if( SYSMi_GetWork()->flags.common.isCardBoot ) {
|
||||
#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||
reg_MI_MC_SWP ^= 0x80; // カードスロットのスワップ
|
||||
reg_MI_MC_SWP ^= 0x80; // カードスロットのスワップ
|
||||
#endif
|
||||
*(u32 *)HW_BOOT_CHECK_INFO_BUF = SYSMi_GetWork()->nCardID; // カード抜けチェックバッファにカードIDをセット
|
||||
}else {
|
||||
*(u32 *)HW_BOOT_CHECK_INFO_BUF = 0;
|
||||
}
|
||||
// カード抜けチェックバッファにカードIDをセット
|
||||
((SDKBootCheckInfo*)HW_BOOT_CHECK_INFO_BUF)->nCardID = SYSMi_GetWork()->appCardID;
|
||||
|
||||
*(vu32 *)HW_RESET_PARAMETER_BUF = 0; // リセットバッファをクリア
|
||||
|
||||
|
||||
@ -91,6 +91,7 @@ static HotSwState ReadSecureModeCardData(void);
|
||||
static void ClearCardFlgs(void);
|
||||
|
||||
static void FinalizeHotSw(HotSwApliType type);
|
||||
static void ForceNitroModeToFinalize(void);
|
||||
static BOOL ChangeGameMode(void);
|
||||
static void ClearCardIrq(void);
|
||||
static void ClearAllCardRegister(void);
|
||||
@ -408,7 +409,7 @@ static HotSwState LoadCardData(void)
|
||||
RegisterRomEmuInfo();
|
||||
// 排他制御ここまで
|
||||
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
||||
goto end;
|
||||
goto finalize;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1588,7 +1589,6 @@ static void HotSwThread(void *arg)
|
||||
SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE;
|
||||
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
||||
SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted = TRUE;
|
||||
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
|
||||
#ifdef USE_WRAM_LOAD
|
||||
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
||||
#endif
|
||||
@ -1671,11 +1671,14 @@ static void ClearCardFlgs(void)
|
||||
|
||||
・カードが挿さっていて
|
||||
TWL NANDアプリ起動なら
|
||||
NANDアプリヘッダ指定無し
|
||||
→ スロット電源OFF
|
||||
|
||||
NANDアプリヘッダのゲームカードONフラグ=1
|
||||
→ NANDアプリ起動後もカード電源(OFF後)ONにしてNormalモードにする
|
||||
|
||||
NANDアプリヘッダのゲームカードONフラグ=0
|
||||
→ スロット電源OFF
|
||||
NANDアプリヘッダのゲームカードNITROモードフラグ=1
|
||||
→ NTR NANDアプリ同様
|
||||
|
||||
NTR NANDアプリ起動なら
|
||||
カード種別問わず、一度スロット電源OFFしてから、GAMEモードに遷移させておく。
|
||||
@ -1691,8 +1694,9 @@ static void ClearCardFlgs(void)
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void FinalizeHotSw(HotSwApliType type)
|
||||
{
|
||||
ROM_Header* rh = (void*)SYSM_APP_ROM_HEADER_BUF;
|
||||
static BOOL finalized = FALSE;
|
||||
BOOL isCardExist;
|
||||
BOOL isAccessible;
|
||||
|
||||
if(finalized){
|
||||
return;
|
||||
@ -1705,17 +1709,19 @@ static void FinalizeHotSw(HotSwApliType type)
|
||||
// ポーリングスレッドを消去
|
||||
OS_KillThread( &HotSwThreadData.monitorThread, NULL );
|
||||
|
||||
SYSMi_GetWork()->appCardID = 0;
|
||||
|
||||
if(type == HOTSW_APLITYPE_CARD){
|
||||
ClearCardIrq();
|
||||
SYSMi_GetWork()->appCardID = s_cbData.id_gam;
|
||||
goto final;
|
||||
}
|
||||
|
||||
isCardExist = HOTSW_IsCardExist();
|
||||
isAccessible = HOTSW_IsCardAccessible();
|
||||
|
||||
McPowerOff();
|
||||
|
||||
// カードがなかったら、レジスタクリアしてリターン
|
||||
if(!isCardExist){
|
||||
// カードが無い(アクセスできない)なら、レジスタクリアしてリターン
|
||||
if(!isAccessible){
|
||||
ClearAllCardRegister();
|
||||
goto final;
|
||||
}
|
||||
@ -1725,14 +1731,7 @@ static void FinalizeHotSw(HotSwApliType type)
|
||||
case HOTSW_APLITYPE_NTR_NAND:
|
||||
OS_PutString("Finalize Type : NTR NAND Application\n");
|
||||
|
||||
if(!ChangeGameMode()){
|
||||
ClearAllCardRegister();
|
||||
McPowerOff();
|
||||
|
||||
OS_PutString("Failed To Change Game Mode... Card Slot Power Off\n");
|
||||
|
||||
goto final;
|
||||
}
|
||||
ForceNitroModeToFinalize();
|
||||
break;
|
||||
|
||||
// TWL NAND Application Boot
|
||||
@ -1744,12 +1743,17 @@ static void FinalizeHotSw(HotSwApliType type)
|
||||
}
|
||||
|
||||
// NANDアプリヘッダはコピー済み
|
||||
if(((ROM_Header*)SYSM_APP_ROM_HEADER_BUF)->s.access_control.game_card_on){
|
||||
if(rh->s.access_control.game_card_nitro_mode){
|
||||
ForceNitroModeToFinalize();
|
||||
}
|
||||
else if(rh->s.access_control.game_card_on){
|
||||
McPowerOn();
|
||||
|
||||
s_cbData.modeType = HOTSW_MODE2;
|
||||
(void)LoadTable();
|
||||
(void)ReadIDNormal(&s_cbData);
|
||||
(void)ReadBootSegNormal(&s_cbData);
|
||||
SYSMi_GetWork()->appCardID = s_cbData.id_nml;
|
||||
|
||||
OS_PutString("- game card on flg is TRUE : now Normal Mode\n");
|
||||
}
|
||||
@ -1765,10 +1769,13 @@ static void FinalizeHotSw(HotSwApliType type)
|
||||
break;
|
||||
}
|
||||
|
||||
final:
|
||||
ClearCardIrq();
|
||||
|
||||
final:
|
||||
// デバッガではTWLカードスロット2を電源ON(既にONなら何もしない)
|
||||
// デバッガではTWLカードスロット2を電源ON
|
||||
//(既にONなら何もしない)
|
||||
// NANDアプリ起動時はデフォルトではカードI/FをOFFにするが、
|
||||
// デバッガモニタではカードI/Fが必要なためスロット2を使用
|
||||
if ( SYSM_IsRunOnDebugger() )
|
||||
{
|
||||
HOTSWi_TurnCardPowerOn( 2 );
|
||||
@ -1779,6 +1786,26 @@ final:
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ForceNitroModeToFinalize
|
||||
|
||||
Description: Nitro互換のGame Modeに強制移行させる
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void ForceNitroModeToFinalize(void)
|
||||
{
|
||||
s_cbData.id_gam = 0;
|
||||
|
||||
if(!ChangeGameMode()){
|
||||
ClearAllCardRegister();
|
||||
McPowerOff();
|
||||
|
||||
OS_PutString("Failed To Change Game Mode... Card Slot Power Off\n");
|
||||
}
|
||||
|
||||
SYSMi_GetWork()->appCardID = s_cbData.id_gam;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ChangeGameMode
|
||||
|
||||
|
||||
@ -218,7 +218,6 @@ void TwlMain( void )
|
||||
#endif
|
||||
|
||||
// DSP<53>‰Šú‰»
|
||||
#if 0
|
||||
{
|
||||
FSFile file[1];
|
||||
MIWramSize sizeB = MI_WRAM_SIZE_128KB;
|
||||
@ -238,8 +237,6 @@ void TwlMain( void )
|
||||
}
|
||||
DSP_UnloadJpegDecoder();
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||
|
||||
// startŽžŠÔŒv‘ª‚P-c
|
||||
|
||||
@ -136,7 +136,7 @@ typedef struct SYSM_work {
|
||||
|
||||
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
|
||||
OSLockWord lockHotSW; // カードリソース排他制御用
|
||||
u32 nCardID; // カードID
|
||||
u32 appCardID; // カードID
|
||||
u32 gameCommondParam; // NTRのゲームコマンドパラメータ(NTRのROMヘッダのゲームコマンドパラメータに上書きする)
|
||||
u8 cloneBootMode;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user