mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei)
・WRAM経由カードアプリロード実装中。 ARM9側のカードリード関数を、エラーを返すように修正。(今後エラー内容の修正あり) git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1331 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
6bbf963809
commit
1c786636b6
@ -109,7 +109,7 @@ static BOOL CheckArm9HashValue(void);
|
|||||||
static BOOL CheckExtArm7HashValue(void);
|
static BOOL CheckExtArm7HashValue(void);
|
||||||
static BOOL CheckExtArm9HashValue(void);
|
static BOOL CheckExtArm9HashValue(void);
|
||||||
#else
|
#else
|
||||||
static HotSwState ReadCardData(u32 src, u32 dest, u32 size);
|
static CardDataReadState ReadCardData(u32 src, u32 dest, u32 size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void ShowRegisterData(void);
|
static void ShowRegisterData(void);
|
||||||
@ -886,18 +886,13 @@ static HotSwState LoadBannerData(void)
|
|||||||
twl_card_keytable_area_rom_offset -> KeyTable2領域オフセット
|
twl_card_keytable_area_rom_offset -> KeyTable2領域オフセット
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
static HotSwState ReadCardData(u32 src, u32 dest, u32 size)
|
static CardDataReadState ReadCardData(u32 src, u32 dest, u32 size)
|
||||||
{
|
{
|
||||||
u32 sendSize = 0;
|
u32 sendSize = 0;
|
||||||
u32 remainSize = size;
|
BOOL result = TRUE;
|
||||||
u32 srcAdd = src;
|
|
||||||
u32 destAdd = dest;
|
|
||||||
|
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = FALSE;
|
|
||||||
|
|
||||||
if(!SYSMi_GetWork()->flags.hotsw.isCardGameMode){
|
if(!SYSMi_GetWork()->flags.hotsw.isCardGameMode){
|
||||||
// [TODO] 適切なエラーコード作って、返す
|
return CARD_READ_MODE_ERROR;
|
||||||
return HOTSW_UNEXPECTED_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// カードのロック
|
// カードのロック
|
||||||
@ -907,26 +902,28 @@ static HotSwState ReadCardData(u32 src, u32 dest, u32 size)
|
|||||||
LockExCard(s_CardLockID);
|
LockExCard(s_CardLockID);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while(remainSize > 0){
|
while(size > 0){
|
||||||
// --- Boot Segment
|
// --- Boot Segment
|
||||||
if(srcAdd >= HOTSW_BOOTSEGMENT_AREA_OFS && srcAdd < HOTSW_KEYTABLE_AREA_OFS){
|
if(src >= HOTSW_BOOTSEGMENT_AREA_OFS && src < HOTSW_KEYTABLE_AREA_OFS){
|
||||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
sendSize = ((srcAdd + remainSize) > HOTSW_KEYTABLE_AREA_OFS) ? HOTSW_KEYTABLE_AREA_OFS - srcAdd : remainSize;
|
sendSize = ((src + size) > HOTSW_KEYTABLE_AREA_OFS) ? HOTSW_KEYTABLE_AREA_OFS - src : size;
|
||||||
MI_CpuCopy8((u32 *)(SYSM_CARD_ROM_HEADER_BAK + (srcAdd - HOTSW_BOOTSEGMENT_AREA_OFS)), (u32 *)destAdd, sendSize);
|
MI_CpuCopy8((u32 *)(SYSM_CARD_ROM_HEADER_BAK + (src - HOTSW_BOOTSEGMENT_AREA_OFS)), (u32 *)dest, sendSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Key Table
|
// --- Key Table
|
||||||
else if(srcAdd >= HOTSW_KEYTABLE_AREA_OFS && srcAdd < HOTSW_SECURE_AREA_OFS){
|
else if(src >= HOTSW_KEYTABLE_AREA_OFS && src < HOTSW_SECURE_AREA_OFS){
|
||||||
// [TODO] ここなにも処理しない?
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
sendSize = remainSize;
|
sendSize = ((src + size) > HOTSW_SECURE_AREA_OFS) ? HOTSW_SECURE_AREA_OFS - src : size;
|
||||||
|
result = ReadImage((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||||
}
|
}
|
||||||
// --- Secure Segment
|
// --- Secure Segment
|
||||||
else if(srcAdd >= HOTSW_SECURE_AREA_OFS && srcAdd < HOTSW_GAME_AREA_OFS){
|
else if(src >= HOTSW_SECURE_AREA_OFS && src < HOTSW_GAME_AREA_OFS){
|
||||||
sendSize = ((srcAdd + remainSize) > HOTSW_GAME_AREA_OFS) ? HOTSW_GAME_AREA_OFS - srcAdd : remainSize;
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
OS_TPrintf("%s %d Src Adr : 0x%08x\n", __FUNCTION__, __LINE__, (SYSM_CARD_NTR_SECURE_BUF + (srcAdd - HOTSW_SECURE_AREA_OFS)) );
|
sendSize = ((src + size) > HOTSW_GAME_AREA_OFS) ? HOTSW_GAME_AREA_OFS - src : size;
|
||||||
MI_CpuCopy8((u32 *)(SYSM_CARD_NTR_SECURE_BUF + (srcAdd - HOTSW_SECURE_AREA_OFS)), (u32 *)destAdd, sendSize);
|
MI_CpuCopy8((u32 *)(SYSM_CARD_NTR_SECURE_BUF + (src - HOTSW_SECURE_AREA_OFS)), (u32 *)dest, sendSize);
|
||||||
}
|
}
|
||||||
// --- Game Segment
|
// --- Game Segment
|
||||||
else if(srcAdd >= HOTSW_GAME_AREA_OFS){
|
else if(src >= HOTSW_GAME_AREA_OFS){
|
||||||
// KeyTable2が設定されている場合
|
// KeyTable2が設定されている場合
|
||||||
if(s_cbData.pBootSegBuf->rh.s.twl_card_keytable_area_rom_offset){
|
if(s_cbData.pBootSegBuf->rh.s.twl_card_keytable_area_rom_offset){
|
||||||
u32 keyTable2Adr = (u32)s_cbData.pBootSegBuf->rh.s.twl_card_keytable_area_rom_offset * TWLCARD_BORDER_OFFSET;
|
u32 keyTable2Adr = (u32)s_cbData.pBootSegBuf->rh.s.twl_card_keytable_area_rom_offset * TWLCARD_BORDER_OFFSET;
|
||||||
@ -934,40 +931,41 @@ static HotSwState ReadCardData(u32 src, u32 dest, u32 size)
|
|||||||
u32 Game2Adr = keyTable2Adr + HOTSW_GAME2_AREA_OFS;
|
u32 Game2Adr = keyTable2Adr + HOTSW_GAME2_AREA_OFS;
|
||||||
|
|
||||||
// --- Game Segment
|
// --- Game Segment
|
||||||
if(srcAdd < keyTable2Adr){
|
if(src < keyTable2Adr){
|
||||||
sendSize = ((srcAdd + remainSize) > keyTable2Adr) ? keyTable2Adr - srcAdd : remainSize;
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
sendSize = ((src + size) > keyTable2Adr) ? keyTable2Adr - src : size;
|
||||||
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
result = ReadImage((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||||
}
|
}
|
||||||
// --- Key Table2
|
// --- Key Table2
|
||||||
else if(srcAdd >= keyTable2Adr && srcAdd < Secure2Adr){
|
else if(src >= keyTable2Adr && src < Secure2Adr){
|
||||||
// [TODO] ここなにも処理しない?
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
sendSize = remainSize;
|
sendSize = ((src + size) > Secure2Adr) ? Secure2Adr - src : size;
|
||||||
|
result = ReadImage((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||||
}
|
}
|
||||||
// --- Secure2 Segment
|
// --- Secure2 Segment
|
||||||
else if(srcAdd >= Secure2Adr && srcAdd < Game2Adr){
|
else if(src >= Secure2Adr && src < Game2Adr){
|
||||||
sendSize = ((srcAdd + remainSize) > Game2Adr) ? Game2Adr - srcAdd : remainSize;
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
OS_TPrintf("%s %d Src Adr : 0x%08x\n", __FUNCTION__, __LINE__, (SYSM_CARD_TWL_SECURE_BUF + (srcAdd - Secure2Adr)) );
|
sendSize = ((src + size) > Game2Adr) ? Game2Adr - src : size;
|
||||||
MI_CpuCopy8((u32 *)(SYSM_CARD_TWL_SECURE_BUF + (srcAdd - Secure2Adr)), (u32 *)destAdd, sendSize);
|
MI_CpuCopy8((u32 *)(SYSM_CARD_TWL_SECURE_BUF + (src - Secure2Adr)), (u32 *)dest, sendSize);
|
||||||
}
|
}
|
||||||
// --- Game2 Segment
|
// --- Game2 Segment
|
||||||
else{
|
else{
|
||||||
sendSize = remainSize;
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
sendSize = size;
|
||||||
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
result = ReadImage((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// --- Game Segment
|
// --- Game Segment
|
||||||
else{
|
else{
|
||||||
sendSize = remainSize;
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
sendSize = size;
|
||||||
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
result = ReadImage((u32 *)dest, (s32)src, (s32)sendSize, &s_cbData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
remainSize -= sendSize;
|
size -= sendSize;
|
||||||
srcAdd += sendSize;
|
src += sendSize;
|
||||||
destAdd += sendSize;
|
dest += sendSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
#ifndef DEBUG_USED_CARD_SLOT_B_
|
||||||
@ -976,10 +974,12 @@ static HotSwState ReadCardData(u32 src, u32 dest, u32 size)
|
|||||||
UnlockExCard(s_CardLockID);
|
UnlockExCard(s_CardLockID);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
if(result){
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = TRUE;
|
return CARD_READ_SUCCESS;
|
||||||
|
}
|
||||||
return HOTSW_SUCCESS;
|
else{
|
||||||
|
return CARD_READ_UNKNOWN_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1674,6 +1674,17 @@ static void HotSwThread(void *arg)
|
|||||||
FinalizeHotSw( msg->apli );
|
FinalizeHotSw( msg->apli );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_WRAM_LOAD
|
||||||
|
if( msg->read == TRUE ){
|
||||||
|
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = FALSE;
|
||||||
|
SYSMi_GetWork()->cardReadParam.result = ReadCardData(SYSMi_GetWork()->cardReadParam.src,
|
||||||
|
SYSMi_GetWork()->cardReadParam.dest,
|
||||||
|
SYSMi_GetWork()->cardReadParam.size);
|
||||||
|
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = TRUE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
if( !SYSMi_GetWork()->flags.hotsw.isEnableHotSW ) {
|
if( !SYSMi_GetWork()->flags.hotsw.isEnableHotSW ) {
|
||||||
SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE;
|
SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE;
|
||||||
@ -2156,10 +2167,23 @@ static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
|
|
||||||
d.data = data;
|
d.data = data;
|
||||||
|
|
||||||
|
#ifndef USE_WRAM_LOAD
|
||||||
|
OS_TPrintf("... Pxi Message - value:%x ctrl:%x finalize:%x bootType:%x\n",
|
||||||
|
d.msg.value, d.msg.ctrl, d.msg.finalize, d.msg.bootType);
|
||||||
|
#else
|
||||||
OS_TPrintf("... Pxi Message - value:%x ctrl:%x finalize:%x read:%x bootType:%x\n",
|
OS_TPrintf("... Pxi Message - value:%x ctrl:%x finalize:%x read:%x bootType:%x\n",
|
||||||
d.msg.value, d.msg.ctrl, d.msg.finalize, d.msg.read, d.msg.bootType);
|
d.msg.value, d.msg.ctrl, d.msg.finalize, d.msg.read, d.msg.bootType);
|
||||||
|
|
||||||
if(!d.msg.read){
|
/*
|
||||||
|
if(d.msg.read){
|
||||||
|
OS_PutString("--- ARM7\n");
|
||||||
|
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
||||||
|
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
||||||
|
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].read = (d.msg.read) ? TRUE : FALSE;
|
||||||
|
#endif
|
||||||
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].ctrl = (d.msg.ctrl) ? TRUE : FALSE;
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].ctrl = (d.msg.ctrl) ? TRUE : FALSE;
|
||||||
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].finalize = (d.msg.finalize) ? TRUE : FALSE;
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].finalize = (d.msg.finalize) ? TRUE : FALSE;
|
||||||
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].value = d.msg.value;
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].value = d.msg.value;
|
||||||
@ -2171,16 +2195,6 @@ static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
// メッセージインデックスをインクリメント
|
// メッセージインデックスをインクリメント
|
||||||
HotSwThreadData.idx_ctrl = (HotSwThreadData.idx_ctrl+1) % HOTSW_CTRL_MSG_NUM;
|
HotSwThreadData.idx_ctrl = (HotSwThreadData.idx_ctrl+1) % HOTSW_CTRL_MSG_NUM;
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
#ifdef USE_WRAM_LOAD
|
|
||||||
OS_PutString("--- ARM7\n");
|
|
||||||
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
|
||||||
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
|
||||||
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
|
||||||
ReadCardData(SYSMi_GetWork()->cardReadParam.src, SYSMi_GetWork()->cardReadParam.dest, SYSMi_GetWork()->cardReadParam.size);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
|
|||||||
@ -99,7 +99,7 @@ BOOL HOTSW_isCardLoadCompleted(void)
|
|||||||
※実際に読んでるのはARM7側
|
※実際に読んでるのはARM7側
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
void HOTSW_ReadCardData(void* src, void* dest, u32 size)
|
CardDataReadState HOTSW_ReadCardData(void* src, void* dest, u32 size)
|
||||||
{
|
{
|
||||||
HotSwPxiMessage msg;
|
HotSwPxiMessage msg;
|
||||||
|
|
||||||
@ -110,12 +110,6 @@ void HOTSW_ReadCardData(void* src, void* dest, u32 size)
|
|||||||
SYSMi_GetWork()->cardReadParam.size = size;
|
SYSMi_GetWork()->cardReadParam.size = size;
|
||||||
|
|
||||||
DC_FlushRange( &SYSMi_GetWork()->cardReadParam, sizeof(CardReadParam) );
|
DC_FlushRange( &SYSMi_GetWork()->cardReadParam, sizeof(CardReadParam) );
|
||||||
|
|
||||||
OS_PutString("--- ARM9\n");
|
|
||||||
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
|
||||||
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
|
||||||
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
|
||||||
|
|
||||||
DC_FlushRange( dest, size );
|
DC_FlushRange( dest, size );
|
||||||
|
|
||||||
msg.msg.read = TRUE;
|
msg.msg.read = TRUE;
|
||||||
@ -128,8 +122,10 @@ void HOTSW_ReadCardData(void* src, void* dest, u32 size)
|
|||||||
// [TODO] ARM7側でリードが終了してステートが返ってくるのを待つ?
|
// [TODO] ARM7側でリードが終了してステートが返ってくるのを待つ?
|
||||||
while (!SYSMi_GetWork()->flags.hotsw.isCardReadCompleted)
|
while (!SYSMi_GetWork()->flags.hotsw.isCardReadCompleted)
|
||||||
{
|
{
|
||||||
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return SYSMi_GetWork()->cardReadParam.result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -35,12 +35,12 @@ typedef enum HotSwMessageType{
|
|||||||
} HotSwMessageType;
|
} HotSwMessageType;
|
||||||
|
|
||||||
typedef enum ModeType{
|
typedef enum ModeType{
|
||||||
HOTSW_MODE1,
|
HOTSW_MODE1 = 0,
|
||||||
HOTSW_MODE2
|
HOTSW_MODE2
|
||||||
} ModeType;
|
} ModeType;
|
||||||
|
|
||||||
typedef enum HotSwApliType{
|
typedef enum HotSwApliType{
|
||||||
HOTSW_APLITYPE_CARD,
|
HOTSW_APLITYPE_CARD = 0,
|
||||||
HOTSW_APLITYPE_NTR_NAND,
|
HOTSW_APLITYPE_NTR_NAND,
|
||||||
HOTSW_APLITYPE_TWL_NAND
|
HOTSW_APLITYPE_TWL_NAND
|
||||||
} HotSwApliType;
|
} HotSwApliType;
|
||||||
@ -65,42 +65,14 @@ typedef struct HotSwMessage{
|
|||||||
u32 value;
|
u32 value;
|
||||||
BOOL ctrl;
|
BOOL ctrl;
|
||||||
BOOL finalize;
|
BOOL finalize;
|
||||||
|
BOOL read;
|
||||||
HotSwMessageType type;
|
HotSwMessageType type;
|
||||||
HotSwApliType apli;
|
HotSwApliType apli;
|
||||||
} HotSwMessage;
|
} HotSwMessage;
|
||||||
|
|
||||||
|
|
||||||
// Function prototype -------------------------------------------------------
|
// Function prototype -------------------------------------------------------
|
||||||
// 活栓挿抜処理の初期化
|
// --- ARM9
|
||||||
void HOTSW_Init(u32 threadPrio);
|
|
||||||
|
|
||||||
// カードの存在判定
|
|
||||||
BOOL HOTSW_IsCardExist(void);
|
|
||||||
|
|
||||||
// カードにアクセスできる状態か判定
|
|
||||||
BOOL HOTSW_IsCardAccessible(void);
|
|
||||||
|
|
||||||
// Boot Segment バッファの指定
|
|
||||||
void HOTSW_SetBootSegmentBuffer(void* buf, u32 size);
|
|
||||||
|
|
||||||
// Secure Segment バッファの指定
|
|
||||||
void HOTSW_SetSecureSegmentBuffer(ModeType type ,void* buf, u32 size);
|
|
||||||
|
|
||||||
// Romエミュレーション情報を格納しているバッファのポインタを返す
|
|
||||||
SDK_INLINE void* HOTSW_GetRomEmulationBuffer(void)
|
|
||||||
{
|
|
||||||
return (void*)&SYSMi_GetWork()->romEmuInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ISデバッガ上で動作しているか?
|
|
||||||
BOOL HOTSWi_IsRunOnDebugger(void);
|
|
||||||
|
|
||||||
// ROMをエミュレーションしているか?
|
|
||||||
BOOL HOTSWi_IsRomEmulation(void);
|
|
||||||
|
|
||||||
// デバッガ通信用にカードスロットの電源をONにする。
|
|
||||||
void HOTSWi_TurnCardPowerOn(u32 slot);
|
|
||||||
|
|
||||||
#ifdef SDK_ARM9
|
#ifdef SDK_ARM9
|
||||||
// PXI通信でARM7に活線挿抜有効/無効を通知
|
// PXI通信でARM7に活線挿抜有効/無効を通知
|
||||||
void HOTSW_EnableHotSWAsync( BOOL enable );
|
void HOTSW_EnableHotSWAsync( BOOL enable );
|
||||||
@ -116,14 +88,44 @@ BOOL HOTSW_isCardLoadCompleted(void);
|
|||||||
|
|
||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
// カードデータを読み出す関数
|
// カードデータを読み出す関数
|
||||||
void HOTSW_ReadCardData(void* src, void* dest, u32 size);
|
CardDataReadState HOTSW_ReadCardData(void* src, void* dest, u32 size);
|
||||||
|
|
||||||
// カードがゲームモードになったかどうか
|
// カードがゲームモードになったかどうか
|
||||||
BOOL HOTSW_isGameMode(void);
|
BOOL HOTSW_isGameMode(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// --- ARM7
|
||||||
|
#else
|
||||||
|
// 活栓挿抜処理の初期化
|
||||||
|
void HOTSW_Init(u32 threadPrio);
|
||||||
|
|
||||||
|
// カードの存在判定
|
||||||
|
BOOL HOTSW_IsCardExist(void);
|
||||||
|
|
||||||
|
// カードにアクセスできる状態か判定
|
||||||
|
BOOL HOTSW_IsCardAccessible(void);
|
||||||
|
|
||||||
|
// Boot Segment バッファの指定
|
||||||
|
void HOTSW_SetBootSegmentBuffer(void* buf, u32 size);
|
||||||
|
|
||||||
|
// Secure Segment バッファの指定
|
||||||
|
void HOTSW_SetSecureSegmentBuffer(ModeType type ,void* buf, u32 size);
|
||||||
|
|
||||||
|
// ISデバッガ上で動作しているか?
|
||||||
|
BOOL HOTSWi_IsRunOnDebugger(void);
|
||||||
|
|
||||||
|
// ROMをエミュレーションしているか?
|
||||||
|
BOOL HOTSWi_IsRomEmulation(void);
|
||||||
|
|
||||||
|
// デバッガ通信用にカードスロットの電源をONにする。
|
||||||
|
void HOTSWi_TurnCardPowerOn(u32 slot);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Romエミュレーション情報を格納しているバッファのポインタを返す
|
||||||
|
SDK_INLINE void* HOTSW_GetRomEmulationBuffer(void)
|
||||||
|
{
|
||||||
|
return (void*)&SYSMi_GetWork()->romEmuInfo;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@ -35,6 +35,14 @@ typedef enum SYSMCloneBootMode {
|
|||||||
}
|
}
|
||||||
SYSMCloneBootMode;
|
SYSMCloneBootMode;
|
||||||
|
|
||||||
|
typedef enum CardDataReadState {
|
||||||
|
CARD_READ_SUCCESS = 0,
|
||||||
|
CARD_READ_PULLED_OUT_ERROR,
|
||||||
|
CARD_READ_MODE_ERROR,
|
||||||
|
CARD_READ_UNKNOWN_ERROR
|
||||||
|
}
|
||||||
|
CardDataReadState;
|
||||||
|
|
||||||
// NAMTitleIDをHiLoに分割してアクセスする場合に使用
|
// NAMTitleIDをHiLoに分割してアクセスする場合に使用
|
||||||
typedef struct TitleID_HiLo {
|
typedef struct TitleID_HiLo {
|
||||||
u8 Lo[ 4 ];
|
u8 Lo[ 4 ];
|
||||||
@ -46,6 +54,7 @@ typedef struct CardReadParam {
|
|||||||
u32 src;
|
u32 src;
|
||||||
u32 dest;
|
u32 dest;
|
||||||
u32 size;
|
u32 size;
|
||||||
|
CardDataReadState result;
|
||||||
}CardReadParam;
|
}CardReadParam;
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user