mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei)
・カードがGameモードに遷移したとき ・カードがさされたとき ・カードが抜かれたとき のイベントが発生したときに、指定した関数を呼び出せるように修正 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1374 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3973cb225a
commit
b6fb3b10f7
@ -55,6 +55,13 @@
|
||||
#define HOTSW_EXMEMCNT_SELB_SHIFT 10
|
||||
#endif
|
||||
|
||||
// enum ---------------------------------------------------------------------
|
||||
typedef enum HotSwCallBackType{
|
||||
HOTSW_CHANGE_GAMEMODE = 0,
|
||||
HOTSW_CARD_INSERT,
|
||||
HOTSW_CARD_PULLOUT
|
||||
} HotSwCallBackType;
|
||||
|
||||
// Function prototype -------------------------------------------------------
|
||||
static BOOL IsSwap(void);
|
||||
static u32 GetMcSlotShift(void);
|
||||
@ -114,10 +121,9 @@ static BOOL CheckExtArm7HashValue(void);
|
||||
static BOOL CheckExtArm9HashValue(void);
|
||||
#else
|
||||
static void ReadCardData(u32 src, u32 dest, u32 size);
|
||||
static void SendPxiMessage(HotSwCallBackType type);
|
||||
#endif
|
||||
|
||||
static void ShowRegisterData(void);
|
||||
static void ShowRomHeaderData(void);
|
||||
static void DebugPrintErrorMessage(HotSwState state);
|
||||
|
||||
HotSwState HOTSWi_RefreshBadBlock(u32 romMode);
|
||||
@ -216,6 +222,13 @@ void HOTSW_Init(u32 threadPrio)
|
||||
PXI_Init();
|
||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_HOTSW, InterruptCallbackPxi);
|
||||
|
||||
#ifdef USE_WRAM_LOAD
|
||||
while(!PXI_IsCallbackReady(PXI_FIFO_TAG_HOTSW, PXI_PROC_ARM9))
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
#endif
|
||||
|
||||
// 割り込みマスクの設定
|
||||
SetInterrupt();
|
||||
|
||||
@ -244,13 +257,13 @@ void HOTSW_Init(u32 threadPrio)
|
||||
s32 tempLockID;
|
||||
// ARM9と排他制御用のロックIDの取得
|
||||
while((tempLockID = OS_GetLockID()) == OS_LOCK_ID_ERROR){
|
||||
OS_PutString("Error - Can't Get Lock ID\n");
|
||||
// do nothing
|
||||
}
|
||||
s_RscLockID = (u16)tempLockID;
|
||||
|
||||
// カードアクセス用のロックIDの取得
|
||||
while((tempLockID = OS_GetLockID()) == OS_LOCK_ID_ERROR){
|
||||
OS_PutString("Error - Can't Get Lock ID\n");
|
||||
// do nothing
|
||||
}
|
||||
s_CardLockID = (u16)tempLockID;
|
||||
}
|
||||
@ -916,20 +929,17 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
|
||||
while(size > 0 && state == HOTSW_SUCCESS){
|
||||
// --- Boot Segment
|
||||
if(src >= HOTSW_BOOTSEGMENT_AREA_OFS && src < HOTSW_KEYTABLE_AREA_OFS){
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = ((src + size) > HOTSW_KEYTABLE_AREA_OFS) ? HOTSW_KEYTABLE_AREA_OFS - src : size;
|
||||
MI_CpuCopy8((u32 *)(SYSM_CARD_ROM_HEADER_BAK + (src - HOTSW_BOOTSEGMENT_AREA_OFS)), (u32 *)dest, sendSize);
|
||||
}
|
||||
|
||||
// --- Key Table
|
||||
else if(src >= HOTSW_KEYTABLE_AREA_OFS && src < HOTSW_SECURE_AREA_OFS){
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = ((src + size) > HOTSW_SECURE_AREA_OFS) ? HOTSW_SECURE_AREA_OFS - src : size;
|
||||
state = ReadImageReturnErrorCode((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||
}
|
||||
// --- Secure Segment
|
||||
else if(src >= HOTSW_SECURE_AREA_OFS && src < HOTSW_GAME_AREA_OFS){
|
||||
OS_TPrintf("%s %d Secure Seg Buf:0x%08x\n", __FUNCTION__, __LINE__, s_cbData.pSecureSegBuf);
|
||||
sendSize = ((src + size) > HOTSW_GAME_AREA_OFS) ? HOTSW_GAME_AREA_OFS - src : size;
|
||||
MI_CpuCopy8((u32 *)((u32)s_cbData.pSecureSegBuf + (src - HOTSW_SECURE_AREA_OFS)), (u32 *)dest, sendSize);
|
||||
}
|
||||
@ -943,32 +953,27 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
|
||||
|
||||
// --- Game Segment
|
||||
if(src < keyTable2Adr){
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = ((src + size) > keyTable2Adr) ? keyTable2Adr - src : size;
|
||||
state = ReadImageReturnErrorCode((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||
}
|
||||
// --- Key Table2
|
||||
else if(src >= keyTable2Adr && src < Secure2Adr){
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = ((src + size) > Secure2Adr) ? Secure2Adr - src : size;
|
||||
state = ReadImageReturnErrorCode((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||
}
|
||||
// --- Secure2 Segment
|
||||
else if(src >= Secure2Adr && src < Game2Adr){
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = ((src + size) > Game2Adr) ? Game2Adr - src : size;
|
||||
MI_CpuCopy8((u32 *)((u32)s_cbData.pSecure2SegBuf + (src - Secure2Adr)), (u32 *)dest, sendSize);
|
||||
}
|
||||
// --- Game2 Segment
|
||||
else{
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = size;
|
||||
state = ReadImageReturnErrorCode((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||
}
|
||||
}
|
||||
// --- Game Segment
|
||||
else{
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
sendSize = size;
|
||||
state = ReadImageReturnErrorCode((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||
}
|
||||
@ -1014,8 +1019,6 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
|
||||
retval = CARD_READ_UNEXPECTED_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
OS_TPrintf("%s %d Send Error Code[Arm7]:%x\n", __FUNCTION__, __LINE__, retval);
|
||||
|
||||
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm9));
|
||||
|
||||
@ -1737,6 +1740,10 @@ static void HotSwThread(void *arg)
|
||||
SYSMi_GetWork()->cardReadParam.size);
|
||||
continue;
|
||||
}
|
||||
|
||||
if( msg->type == HOTSW_INSERT ){
|
||||
SendPxiMessage(HOTSW_CARD_INSERT);
|
||||
}
|
||||
#endif
|
||||
|
||||
while(1){
|
||||
@ -1760,7 +1767,9 @@ static void HotSwThread(void *arg)
|
||||
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
||||
#endif
|
||||
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
||||
|
||||
#ifdef USE_WRAM_LOAD
|
||||
SendPxiMessage(HOTSW_CHANGE_GAMEMODE);
|
||||
#endif
|
||||
OS_PutString("ok!\n");
|
||||
}
|
||||
break;
|
||||
@ -1814,6 +1823,10 @@ static void HotSwThread(void *arg)
|
||||
|
||||
// カードが抜けてたら
|
||||
else{
|
||||
#ifdef USE_WRAM_LOAD
|
||||
SendPxiMessage(HOTSW_CARD_PULLOUT);
|
||||
#endif
|
||||
|
||||
ClearCardFlgs();
|
||||
|
||||
MI_CpuClear32(&s_cbData, sizeof(CardBootData));
|
||||
@ -2032,6 +2045,43 @@ static BOOL ChangeGameMode(void)
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SendPxiMessage
|
||||
|
||||
Description: ARM9‚Ƀ<EFBFBD>ƒbƒZ<EFBFBD>[ƒW‚ð‘—‚é
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef USE_WRAM_LOAD
|
||||
static void SendPxiMessage(HotSwCallBackType type)
|
||||
{
|
||||
HotSwPxiMessageForArm9 msg;
|
||||
|
||||
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm9));
|
||||
|
||||
switch(type){
|
||||
case HOTSW_CHANGE_GAMEMODE:
|
||||
msg.msg.mode = TRUE;
|
||||
break;
|
||||
|
||||
case HOTSW_CARD_INSERT:
|
||||
msg.msg.insert = TRUE;
|
||||
break;
|
||||
|
||||
case HOTSW_CARD_PULLOUT:
|
||||
msg.msg.pullout = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ClearUnnecessaryCardRegister
|
||||
|
||||
@ -2525,70 +2575,6 @@ static BOOL CheckExtArm9HashValue(void)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// **************************************************************************
|
||||
//
|
||||
// Debug用表示関数
|
||||
//
|
||||
// **************************************************************************
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ShowRomHeaderData
|
||||
|
||||
Description:
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void ShowRomHeaderData(void)
|
||||
{
|
||||
OS_TPrintf("\nDebug Data -------------------------------\n");
|
||||
OS_TPrintf("1. Normal Mode ID : 0x%08x\n" , s_cbData.id_nml);
|
||||
OS_TPrintf("2. Secure Mode ID : 0x%08x\n" , s_cbData.id_scr);
|
||||
OS_TPrintf("3. Game Mode ID : 0x%08x\n" , s_cbData.id_gam);
|
||||
|
||||
OS_TPrintf("title Name : %s\n", s_pBootSegBuffer->rh.s.title_name);
|
||||
OS_TPrintf("initial Code : %x\n\n", *(u32 *)s_pBootSegBuffer->rh.s.game_code);
|
||||
|
||||
OS_TPrintf("platform Code : 0x%02x\n\n", s_cbData.pBootSegBuf->rh.s.platform_code);
|
||||
|
||||
OS_TPrintf("main rom offset : 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.main_rom_offset);
|
||||
OS_TPrintf("main entry addr : 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.main_entry_address);
|
||||
OS_TPrintf("main ram addr : 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.main_ram_address);
|
||||
OS_TPrintf("main size : 0x%08x\n\n", s_cbData.pBootSegBuf->rh.s.main_size);
|
||||
|
||||
OS_TPrintf("sub rom offset : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.sub_rom_offset);
|
||||
OS_TPrintf("sub entry addr : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.sub_entry_address);
|
||||
OS_TPrintf("sub ram addr : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.sub_ram_address);
|
||||
OS_TPrintf("sub size : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.sub_size);
|
||||
|
||||
if(s_cbData.twlFlg){
|
||||
OS_TPrintf("\nLtd main rom offset: 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset);
|
||||
OS_TPrintf("Ltd main ram addr: 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.main_ltd_ram_address);
|
||||
OS_TPrintf("Ltd main size : 0x%08x\n\n", s_cbData.pBootSegBuf->rh.s.main_ltd_size);
|
||||
|
||||
OS_TPrintf("Ltd Sub rom offset : 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.sub_ltd_rom_offset);
|
||||
OS_TPrintf("Ltd Sub ram addr : 0x%08x\n" , s_cbData.pBootSegBuf->rh.s.sub_ltd_ram_address);
|
||||
OS_TPrintf("Ltd Sub size : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.sub_ltd_size);
|
||||
}
|
||||
|
||||
OS_TPrintf("------------------------------------------\n\n");
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ShowRegisterData
|
||||
|
||||
Description:
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void ShowRegisterData(void)
|
||||
{
|
||||
OS_TPrintf("----------------------------------------------------------\n");
|
||||
OS_TPrintf("拡張機能制御レジスタ (MC_B(d24)) : %08x\n", reg_SCFG_EXT);
|
||||
OS_TPrintf("MC I/F制御レジスタ1 (slot status) : %08x\n", reg_MI_MC1);
|
||||
OS_TPrintf("MC I/F制御レジスタ2 (Counter-A) : %04x\n", reg_MI_MC2);
|
||||
OS_TPrintf("MC コントロールレジスタ0 (SEL etc) : %04x\n", reg_HOTSW_MCCNT0);
|
||||
OS_TPrintf("MC コントロールレジスタ1 (START etc) : %08x\n", reg_HOTSW_MCCNT1);
|
||||
OS_TPrintf("----------------------------------------------------------\n");
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: DebugPrintErrorMessage
|
||||
|
||||
|
||||
@ -18,17 +18,23 @@
|
||||
#include <sysmenu.h>
|
||||
|
||||
// define -------------------------------------------------------------------
|
||||
#define HOTSW_READ_MSG_NUM 1
|
||||
#define HOTSW_READ_MSG_NUM 1
|
||||
#define HOTSW_CARD_GAME_MODE_CALLBACK 1
|
||||
#define HOTSW_CARD_INSERT_CALLBACK 2
|
||||
#define HOTSW_CARD_PULLOUT_CALLBACK 3
|
||||
#define HOTSW_CALLBACK_FUNCTION_NUM 3
|
||||
|
||||
// Function prototype -------------------------------------------------------
|
||||
static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err);
|
||||
|
||||
// Static Values ------------------------------------------------------------
|
||||
HotSwMessageForArm9 s_HotswMsg;
|
||||
OSMessage s_HotswMsgBuffer[HOTSW_READ_MSG_NUM];
|
||||
OSMessageQueue s_HotswQueue;
|
||||
static HotSwMessageForArm9 s_HotswMsg;
|
||||
static OSMessage s_HotswMsgBuffer[HOTSW_READ_MSG_NUM];
|
||||
static OSMessageQueue s_HotswQueue;
|
||||
|
||||
static BOOL s_ReadBusy;
|
||||
static OSIrqFunction s_HotswFuncTable[HOTSW_CALLBACK_FUNCTION_NUM];
|
||||
|
||||
BOOL s_ReadBusy;
|
||||
|
||||
// ===========================================================================
|
||||
// Function Describe
|
||||
@ -38,18 +44,25 @@ BOOL s_ReadBusy;
|
||||
|
||||
Description: 活栓挿抜処理の初期化
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef USE_WRAM_LOAD
|
||||
void HOTSW_Init()
|
||||
{
|
||||
// PXI<58>‰Šú‰»
|
||||
PXI_Init();
|
||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_HOTSW, InterruptCallbackPxi);
|
||||
|
||||
// メッセージキューの初期化
|
||||
OS_InitMessageQueue( &s_HotswQueue, &s_HotswMsgBuffer[0], HOTSW_READ_MSG_NUM );
|
||||
|
||||
// Busyフラグを落としておく
|
||||
s_ReadBusy = FALSE;
|
||||
|
||||
// PXI初期化
|
||||
PXI_Init();
|
||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_HOTSW, InterruptCallbackPxi);
|
||||
|
||||
while(!PXI_IsCallbackReady(PXI_FIFO_TAG_HOTSW, PXI_PROC_ARM7))
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
@ -72,6 +85,8 @@ void HOTSW_EnableHotSWAsync( BOOL enable )
|
||||
msg.msg.value = enable;
|
||||
msg.msg.ctrl = TRUE;
|
||||
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
|
||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
||||
{
|
||||
// do nothing
|
||||
@ -93,6 +108,8 @@ void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType )
|
||||
msg.msg.finalize = TRUE;
|
||||
msg.msg.bootType = (u8)apliType;
|
||||
|
||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||
|
||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
||||
{
|
||||
// do nothing
|
||||
@ -214,14 +231,32 @@ static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err)
|
||||
#pragma unused(err)
|
||||
HotSwPxiMessageForArm9 d;
|
||||
|
||||
MI_CpuClear8( &d, sizeof(HotSwPxiMessageForArm9) );
|
||||
|
||||
d.data = data;
|
||||
|
||||
if(d.msg.mode){
|
||||
if(s_HotswFuncTable[HOTSW_CARD_GAME_MODE_CALLBACK] != NULL){
|
||||
s_HotswFuncTable[HOTSW_CARD_GAME_MODE_CALLBACK]();
|
||||
}
|
||||
}
|
||||
|
||||
if(d.msg.insert){
|
||||
if(s_HotswFuncTable[HOTSW_CARD_INSERT_CALLBACK] != NULL){
|
||||
s_HotswFuncTable[HOTSW_CARD_INSERT_CALLBACK]();
|
||||
}
|
||||
}
|
||||
|
||||
if(d.msg.pullout){
|
||||
if(s_HotswFuncTable[HOTSW_CARD_PULLOUT_CALLBACK] != NULL){
|
||||
s_HotswFuncTable[HOTSW_CARD_PULLOUT_CALLBACK]();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(d.msg.read){
|
||||
s_ReadBusy = FALSE;
|
||||
|
||||
s_HotswMsg.isGameMode = (d.msg.mode) ? TRUE : FALSE;
|
||||
s_HotswMsg.isInsert = (d.msg.insert) ? TRUE : FALSE;
|
||||
s_HotswMsg.isPulledOut = (d.msg.pullout) ? TRUE : FALSE;
|
||||
s_HotswMsg.isReadComplete = (d.msg.read) ? TRUE : FALSE;
|
||||
s_HotswMsg.result = (CardDataReadState)d.msg.result;
|
||||
|
||||
@ -230,4 +265,49 @@ static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err)
|
||||
// メッセージ送信
|
||||
OS_SendMessage( &s_HotswQueue, (OSMessage *)&s_HotswMsg, OS_MESSAGE_NOBLOCK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SetGameModeCallBackFunction
|
||||
|
||||
Description: カードがGameモードになった時のコールバック関数を設定
|
||||
|
||||
※ HOTSW_Initが呼び出される前に設定してください
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef USE_WRAM_LOAD
|
||||
void HOTSW_SetGameModeCallBackFunction(OSIrqFunction function)
|
||||
{
|
||||
s_HotswFuncTable[HOTSW_CARD_GAME_MODE_CALLBACK] = function;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SetCardInsertCallBackFunction
|
||||
|
||||
Description: カードが刺さった時のコールバック関数を設定
|
||||
|
||||
※ HOTSW_Initが呼び出される前に設定してください
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef USE_WRAM_LOAD
|
||||
void HOTSW_SetCardInsertCallBackFunction(OSIrqFunction function)
|
||||
{
|
||||
s_HotswFuncTable[HOTSW_CARD_INSERT_CALLBACK] = function;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SetCardPullOutCallBackFunction
|
||||
|
||||
Description: カードが抜けた時のコールバック関数を設定
|
||||
|
||||
※ HOTSW_Initが呼び出される前に設定してください
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef USE_WRAM_LOAD
|
||||
void HOTSW_SetCardPullOutCallBackFunction(OSIrqFunction function)
|
||||
{
|
||||
s_HotswFuncTable[HOTSW_CARD_PULLOUT_CALLBACK] = function;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -110,7 +110,9 @@ void TwlMain( void )
|
||||
TP_Init();
|
||||
RTC_Init();
|
||||
SND_Init();// sound init
|
||||
#ifdef USE_WRAM_LOAD
|
||||
HOTSW_Init();
|
||||
#endif
|
||||
|
||||
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
|
||||
|
||||
|
||||
@ -94,9 +94,6 @@ typedef struct HotSwMessageForArm9{
|
||||
// Function prototype -------------------------------------------------------
|
||||
// --- ARM9
|
||||
#ifdef SDK_ARM9
|
||||
// 活栓挿抜処理の初期化
|
||||
void HOTSW_Init();
|
||||
|
||||
// PXI通信でARM7に活線挿抜有効/無効を通知
|
||||
void HOTSW_EnableHotSWAsync( BOOL enable );
|
||||
|
||||
@ -110,12 +107,24 @@ BOOL HOTSW_isEnableHotSW(void);
|
||||
BOOL HOTSW_isCardLoadCompleted(void);
|
||||
|
||||
#ifdef USE_WRAM_LOAD
|
||||
// 活栓挿抜処理の初期化
|
||||
void HOTSW_Init();
|
||||
|
||||
// カードデータを読み出す関数(同期版)
|
||||
CardDataReadState HOTSW_ReadCardData(void* src, void* dest, u32 size);
|
||||
|
||||
// カードデータを読み出す関数(非同期版)
|
||||
CardDataReadState HOTSW_ReadCardDataAsync(void* src, void* dest, u32 size);
|
||||
|
||||
// カードがGameモードになった時のコールバック関数を設定
|
||||
void HOTSW_SetGameModeCallBackFunction(OSIrqFunction function);
|
||||
|
||||
// カードが刺さった時のコールバック関数を設定
|
||||
void HOTSW_SetCardInsertCallBackFunction(OSIrqFunction function);
|
||||
|
||||
// カードが抜けた時のコールバック関数を設定
|
||||
void HOTSW_SetCardPullOutCallBackFunction(OSIrqFunction function);
|
||||
|
||||
// カードがゲームモードになったかどうか
|
||||
BOOL HOTSW_isGameMode(void);
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user