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 )
|
static void BOOTi_ClearREG_RAM( void )
|
||||||
{
|
{
|
||||||
if( SYSMi_GetWork()->flags.common.isCardBoot ) {
|
|
||||||
#ifdef DEBUG_USED_CARD_SLOT_B_
|
#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||||
reg_MI_MC_SWP ^= 0x80; // カードスロットのスワップ
|
reg_MI_MC_SWP ^= 0x80; // カードスロットのスワップ
|
||||||
#endif
|
#endif
|
||||||
*(u32 *)HW_BOOT_CHECK_INFO_BUF = SYSMi_GetWork()->nCardID; // カード抜けチェックバッファにカードIDをセット
|
// カード抜けチェックバッファにカードIDをセット
|
||||||
}else {
|
((SDKBootCheckInfo*)HW_BOOT_CHECK_INFO_BUF)->nCardID = SYSMi_GetWork()->appCardID;
|
||||||
*(u32 *)HW_BOOT_CHECK_INFO_BUF = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*(vu32 *)HW_RESET_PARAMETER_BUF = 0; // リセットバッファをクリア
|
*(vu32 *)HW_RESET_PARAMETER_BUF = 0; // リセットバッファをクリア
|
||||||
|
|
||||||
|
|||||||
@ -91,6 +91,7 @@ static HotSwState ReadSecureModeCardData(void);
|
|||||||
static void ClearCardFlgs(void);
|
static void ClearCardFlgs(void);
|
||||||
|
|
||||||
static void FinalizeHotSw(HotSwApliType type);
|
static void FinalizeHotSw(HotSwApliType type);
|
||||||
|
static void ForceNitroModeToFinalize(void);
|
||||||
static BOOL ChangeGameMode(void);
|
static BOOL ChangeGameMode(void);
|
||||||
static void ClearCardIrq(void);
|
static void ClearCardIrq(void);
|
||||||
static void ClearAllCardRegister(void);
|
static void ClearAllCardRegister(void);
|
||||||
@ -408,7 +409,7 @@ static HotSwState LoadCardData(void)
|
|||||||
RegisterRomEmuInfo();
|
RegisterRomEmuInfo();
|
||||||
// 排他制御ここまで
|
// 排他制御ここまで
|
||||||
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
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.isExistCard = TRUE;
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted = TRUE;
|
SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted = TRUE;
|
||||||
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
|
|
||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
||||||
#endif
|
#endif
|
||||||
@ -1671,11 +1671,14 @@ static void ClearCardFlgs(void)
|
|||||||
|
|
||||||
・カードが挿さっていて
|
・カードが挿さっていて
|
||||||
TWL NANDアプリ起動なら
|
TWL NANDアプリ起動なら
|
||||||
|
NANDアプリヘッダ指定無し
|
||||||
|
→ スロット電源OFF
|
||||||
|
|
||||||
NANDアプリヘッダのゲームカードONフラグ=1
|
NANDアプリヘッダのゲームカードONフラグ=1
|
||||||
→ NANDアプリ起動後もカード電源(OFF後)ONにしてNormalモードにする
|
→ NANDアプリ起動後もカード電源(OFF後)ONにしてNormalモードにする
|
||||||
|
|
||||||
NANDアプリヘッダのゲームカードONフラグ=0
|
NANDアプリヘッダのゲームカードNITROモードフラグ=1
|
||||||
→ スロット電源OFF
|
→ NTR NANDアプリ同様
|
||||||
|
|
||||||
NTR NANDアプリ起動なら
|
NTR NANDアプリ起動なら
|
||||||
カード種別問わず、一度スロット電源OFFしてから、GAMEモードに遷移させておく。
|
カード種別問わず、一度スロット電源OFFしてから、GAMEモードに遷移させておく。
|
||||||
@ -1691,8 +1694,9 @@ static void ClearCardFlgs(void)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void FinalizeHotSw(HotSwApliType type)
|
static void FinalizeHotSw(HotSwApliType type)
|
||||||
{
|
{
|
||||||
|
ROM_Header* rh = (void*)SYSM_APP_ROM_HEADER_BUF;
|
||||||
static BOOL finalized = FALSE;
|
static BOOL finalized = FALSE;
|
||||||
BOOL isCardExist;
|
BOOL isAccessible;
|
||||||
|
|
||||||
if(finalized){
|
if(finalized){
|
||||||
return;
|
return;
|
||||||
@ -1705,17 +1709,19 @@ static void FinalizeHotSw(HotSwApliType type)
|
|||||||
// ポーリングスレッドを消去
|
// ポーリングスレッドを消去
|
||||||
OS_KillThread( &HotSwThreadData.monitorThread, NULL );
|
OS_KillThread( &HotSwThreadData.monitorThread, NULL );
|
||||||
|
|
||||||
|
SYSMi_GetWork()->appCardID = 0;
|
||||||
|
|
||||||
if(type == HOTSW_APLITYPE_CARD){
|
if(type == HOTSW_APLITYPE_CARD){
|
||||||
ClearCardIrq();
|
SYSMi_GetWork()->appCardID = s_cbData.id_gam;
|
||||||
goto final;
|
goto final;
|
||||||
}
|
}
|
||||||
|
|
||||||
isCardExist = HOTSW_IsCardExist();
|
isAccessible = HOTSW_IsCardAccessible();
|
||||||
|
|
||||||
McPowerOff();
|
McPowerOff();
|
||||||
|
|
||||||
// カードがなかったら、レジスタクリアしてリターン
|
// カードが無い(アクセスできない)なら、レジスタクリアしてリターン
|
||||||
if(!isCardExist){
|
if(!isAccessible){
|
||||||
ClearAllCardRegister();
|
ClearAllCardRegister();
|
||||||
goto final;
|
goto final;
|
||||||
}
|
}
|
||||||
@ -1725,14 +1731,7 @@ static void FinalizeHotSw(HotSwApliType type)
|
|||||||
case HOTSW_APLITYPE_NTR_NAND:
|
case HOTSW_APLITYPE_NTR_NAND:
|
||||||
OS_PutString("Finalize Type : NTR NAND Application\n");
|
OS_PutString("Finalize Type : NTR NAND Application\n");
|
||||||
|
|
||||||
if(!ChangeGameMode()){
|
ForceNitroModeToFinalize();
|
||||||
ClearAllCardRegister();
|
|
||||||
McPowerOff();
|
|
||||||
|
|
||||||
OS_PutString("Failed To Change Game Mode... Card Slot Power Off\n");
|
|
||||||
|
|
||||||
goto final;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// TWL NAND Application Boot
|
// TWL NAND Application Boot
|
||||||
@ -1744,12 +1743,17 @@ static void FinalizeHotSw(HotSwApliType type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NANDアプリヘッダはコピー済み
|
// 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();
|
McPowerOn();
|
||||||
|
|
||||||
s_cbData.modeType = HOTSW_MODE2;
|
s_cbData.modeType = HOTSW_MODE2;
|
||||||
(void)LoadTable();
|
(void)LoadTable();
|
||||||
|
(void)ReadIDNormal(&s_cbData);
|
||||||
(void)ReadBootSegNormal(&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");
|
OS_PutString("- game card on flg is TRUE : now Normal Mode\n");
|
||||||
}
|
}
|
||||||
@ -1765,10 +1769,13 @@ static void FinalizeHotSw(HotSwApliType type)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final:
|
||||||
ClearCardIrq();
|
ClearCardIrq();
|
||||||
|
|
||||||
final:
|
// デバッガではTWLカードスロット2を電源ON
|
||||||
// デバッガではTWLカードスロット2を電源ON(既にONなら何もしない)
|
//(既にONなら何もしない)
|
||||||
|
// NANDアプリ起動時はデフォルトではカードI/FをOFFにするが、
|
||||||
|
// デバッガモニタではカードI/Fが必要なためスロット2を使用
|
||||||
if ( SYSM_IsRunOnDebugger() )
|
if ( SYSM_IsRunOnDebugger() )
|
||||||
{
|
{
|
||||||
HOTSWi_TurnCardPowerOn( 2 );
|
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
|
Name: ChangeGameMode
|
||||||
|
|
||||||
|
|||||||
@ -218,7 +218,6 @@ void TwlMain( void )
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// DSP<53>‰Šú‰»
|
// DSP<53>‰Šú‰»
|
||||||
#if 0
|
|
||||||
{
|
{
|
||||||
FSFile file[1];
|
FSFile file[1];
|
||||||
MIWramSize sizeB = MI_WRAM_SIZE_128KB;
|
MIWramSize sizeB = MI_WRAM_SIZE_128KB;
|
||||||
@ -238,8 +237,6 @@ void TwlMain( void )
|
|||||||
}
|
}
|
||||||
DSP_UnloadJpegDecoder();
|
DSP_UnloadJpegDecoder();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
|
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||||
|
|
||||||
// startŽžŠÔŒv‘ª‚P-c
|
// startŽžŠÔŒv‘ª‚P-c
|
||||||
|
|||||||
@ -136,7 +136,7 @@ typedef struct SYSM_work {
|
|||||||
|
|
||||||
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
|
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
|
||||||
OSLockWord lockHotSW; // カードリソース排他制御用
|
OSLockWord lockHotSW; // カードリソース排他制御用
|
||||||
u32 nCardID; // カードID
|
u32 appCardID; // カードID
|
||||||
u32 gameCommondParam; // NTRのゲームコマンドパラメータ(NTRのROMヘッダのゲームコマンドパラメータに上書きする)
|
u32 gameCommondParam; // NTRのゲームコマンドパラメータ(NTRのROMヘッダのゲームコマンドパラメータに上書きする)
|
||||||
u8 cloneBootMode;
|
u8 cloneBootMode;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user