mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei)
・WRAM経由カードアプリロード実装中。 一応使えるが、リード関数がエラーを返さないなど、要修正箇所あり。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1325 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3239302e4a
commit
6fbf5a91e6
@ -27,10 +27,14 @@ extern "C" {
|
|||||||
#define HOTSW_PAGE_SIZE 0x200 // 512B
|
#define HOTSW_PAGE_SIZE 0x200 // 512B
|
||||||
#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB
|
#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB
|
||||||
#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB
|
#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB
|
||||||
|
#define HOTSW_KEYTABLE_AREA_SIZE 0x3000 // 12KB
|
||||||
|
#define HOTSW_KEYTABLE2_AREA_SIZE 0x3000 // 12KB
|
||||||
#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB
|
#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB
|
||||||
#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB
|
#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB
|
||||||
#define HOTSW_ROMEMU_INFO_SIZE 0x20
|
#define HOTSW_ROMEMU_INFO_SIZE 0x20
|
||||||
|
|
||||||
|
#define HOTSW_BOOTSEGMENT_AREA_OFS 0x0000 // 0KB
|
||||||
|
#define HOTSW_KEYTABLE_AREA_OFS 0x1000 // 4KB
|
||||||
#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB
|
#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB
|
||||||
#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB
|
#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB
|
||||||
#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB
|
#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB
|
||||||
|
|||||||
@ -711,7 +711,11 @@ HotSwState ReadIDGame(CardBootData *cbd)
|
|||||||
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_STAT;
|
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_STAT;
|
||||||
|
|
||||||
// メッセージ受信
|
// メッセージ受信
|
||||||
|
#ifndef USE_WRAM_LOAD
|
||||||
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
||||||
|
#else
|
||||||
|
HOTSW_WaitDmaCtrl(HOTSW_NDMA_NO);
|
||||||
|
#endif
|
||||||
|
|
||||||
return HOTSW_SUCCESS;
|
return HOTSW_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -756,7 +760,11 @@ HotSwState ReadPageGame(CardBootData *cbd, u32 start_addr, void* buf, u32 size)
|
|||||||
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_1;
|
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_1;
|
||||||
|
|
||||||
// メッセージ受信
|
// メッセージ受信
|
||||||
|
#ifndef USE_WRAM_LOAD
|
||||||
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
||||||
|
#else
|
||||||
|
HOTSW_WaitDmaCtrl(HOTSW_NDMA_NO);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return HOTSW_SUCCESS;
|
return HOTSW_SUCCESS;
|
||||||
@ -792,7 +800,11 @@ HotSwState ReadStatusGame(CardBootData *cbd)
|
|||||||
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_STAT;
|
reg_HOTSW_MCCNT1 = cbd->gameCommondParam | START_MASK | HOTSW_PAGE_STAT;
|
||||||
|
|
||||||
// メッセージ受信
|
// メッセージ受信
|
||||||
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
#ifndef USE_WRAM_LOAD
|
||||||
|
OS_ReceiveMessage(&HotSwThreadData.hotswDmaQueue, (OSMessage *)&s_Msg, OS_MESSAGE_BLOCK);
|
||||||
|
#else
|
||||||
|
HOTSW_WaitDmaCtrl(HOTSW_NDMA_NO);
|
||||||
|
#endif
|
||||||
|
|
||||||
return HOTSW_SUCCESS;
|
return HOTSW_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -175,26 +175,31 @@ static CardSecureModeFunction s_funcTable[] = {
|
|||||||
{ReadIDSecure_ROMEMU, ReadSegSecure_ROMEMU, SwitchONPNGSecure_ROMEMU, ChangeModeSecure_ROMEMU}
|
{ReadIDSecure_ROMEMU, ReadSegSecure_ROMEMU, SwitchONPNGSecure_ROMEMU, ChangeModeSecure_ROMEMU}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef DHT_TEST
|
|
||||||
#include <twl/os/ARM7/debugLED.h>
|
|
||||||
#include <sysmenu/dht/dht.h>
|
|
||||||
DHTFile* dht;
|
|
||||||
static DHTPhase2Work* p2work = (void*)0x02e80000;
|
|
||||||
static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg)
|
static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg)
|
||||||
{
|
{
|
||||||
HotSwState retval;
|
HotSwState retval;
|
||||||
|
|
||||||
|
static u8 page_buffer[512];
|
||||||
|
u32 page_offset = (u32)(offset & -512);
|
||||||
|
u32 buffer_offset = (u32)(offset % 512);
|
||||||
|
u32 valid_length = 512 - buffer_offset;
|
||||||
|
u32 remain_length;
|
||||||
|
|
||||||
|
// 開始アドレスがページの途中
|
||||||
if ( offset % 512 )
|
if ( offset % 512 )
|
||||||
{
|
{
|
||||||
static u8 page_buffer[512];
|
|
||||||
u32 page_offset = (u32)(offset & -512);
|
|
||||||
u32 buffer_offset = (u32)(offset % 512);
|
|
||||||
u32 valid_length = 512 - buffer_offset;
|
|
||||||
retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512);
|
retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512);
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
|
||||||
if (retval != HOTSW_SUCCESS)
|
if (retval != HOTSW_SUCCESS)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length));
|
MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length));
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
|
||||||
dest = (u8*)dest + valid_length;
|
dest = (u8*)dest + valid_length;
|
||||||
offset += valid_length;
|
offset += valid_length;
|
||||||
length -= valid_length;
|
length -= valid_length;
|
||||||
@ -203,9 +208,36 @@ static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)length);
|
|
||||||
|
remain_length = (u32)(length % 512);
|
||||||
|
retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)(length - remain_length));
|
||||||
|
|
||||||
|
// ケツがページ途中
|
||||||
|
if( remain_length ){
|
||||||
|
dest = (u8*)dest + (length - remain_length);
|
||||||
|
offset += length - remain_length;
|
||||||
|
|
||||||
|
retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512);
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
|
||||||
|
if (retval != HOTSW_SUCCESS)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
MI_CpuCopy8(page_buffer, dest, remain_length);
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
return (retval == HOTSW_SUCCESS);
|
return (retval == HOTSW_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DHT_TEST
|
||||||
|
#include <twl/os/ARM7/debugLED.h>
|
||||||
|
#include <sysmenu/dht/dht.h>
|
||||||
|
DHTFile* dht;
|
||||||
|
static DHTPhase2Work* p2work = (void*)0x02e80000;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Global Values ------------------------------------------------------------
|
// Global Values ------------------------------------------------------------
|
||||||
@ -533,8 +565,6 @@ static HotSwState LoadCardData(void)
|
|||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
||||||
|
|
||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
|
||||||
|
|
||||||
// 排他制御ここまで(※CRCチェックまでにミスがなかったら、排他制御ここまで)
|
// 排他制御ここまで(※CRCチェックまでにミスがなかったら、排他制御ここまで)
|
||||||
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
||||||
#else
|
#else
|
||||||
@ -851,24 +881,103 @@ static HotSwState LoadBannerData(void)
|
|||||||
Name: ReadCardData
|
Name: ReadCardData
|
||||||
|
|
||||||
Description: ARM9から通知された範囲のデータをカードから読み込み
|
Description: ARM9から通知された範囲のデータをカードから読み込み
|
||||||
|
|
||||||
|
twl_card_normal_area_rom_offset -> Normal領域オフセット
|
||||||
|
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 HotSwState ReadCardData(u32 src, u32 dest, u32 size)
|
||||||
{
|
{
|
||||||
// [TODO] src と size の範囲で場合分け
|
u32 sendSize = 0;
|
||||||
// Boot Segment, Secure Segmentが指定されていたら、バッファからコピー
|
u32 remainSize = size;
|
||||||
// Game Segmentが指定されていたら、コマンド発行してページ読み
|
u32 srcAdd = src;
|
||||||
|
u32 destAdd = dest;
|
||||||
|
|
||||||
/*
|
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = FALSE;
|
||||||
0x0000_0000 - 0x0000_0fff Boot Segment
|
|
||||||
0x0000_1000 - 0x0000_3fff Key Table
|
if(!SYSMi_GetWork()->flags.hotsw.isCardGameMode){
|
||||||
0x0000_4000 - 0x0000_8000 Secure Segment
|
// [TODO] 適切なエラーコード作って、返す
|
||||||
|
return HOTSW_UNEXPECTED_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
TWL Card
|
// カードのロック
|
||||||
0x90の境界値でKey Table2の開始アドレスが決まる
|
#ifndef DEBUG_USED_CARD_SLOT_B_
|
||||||
4Mbit単位なので index × 0x0008_0000 で開始アドレスを求める
|
CARD_LockRom(s_CardLockID);
|
||||||
*/
|
#else
|
||||||
|
LockExCard(s_CardLockID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while(remainSize > 0){
|
||||||
|
// --- Boot Segment
|
||||||
|
if(srcAdd >= HOTSW_BOOTSEGMENT_AREA_OFS && srcAdd < HOTSW_KEYTABLE_AREA_OFS){
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
sendSize = ((srcAdd + remainSize) > HOTSW_KEYTABLE_AREA_OFS) ? HOTSW_KEYTABLE_AREA_OFS - srcAdd : remainSize;
|
||||||
|
MI_CpuCopy8((u32 *)(SYSM_CARD_ROM_HEADER_BAK + (srcAdd - HOTSW_BOOTSEGMENT_AREA_OFS)), (u32 *)destAdd, sendSize);
|
||||||
|
}
|
||||||
|
// --- Key Table
|
||||||
|
else if(srcAdd >= HOTSW_KEYTABLE_AREA_OFS && srcAdd < HOTSW_SECURE_AREA_OFS){
|
||||||
|
// [TODO] ここなにも処理しない?
|
||||||
|
sendSize = remainSize;
|
||||||
|
}
|
||||||
|
// --- Secure Segment
|
||||||
|
else if(srcAdd >= HOTSW_SECURE_AREA_OFS && srcAdd < HOTSW_GAME_AREA_OFS){
|
||||||
|
sendSize = ((srcAdd + remainSize) > HOTSW_GAME_AREA_OFS) ? HOTSW_GAME_AREA_OFS - srcAdd : remainSize;
|
||||||
|
OS_TPrintf("%s %d Src Adr : 0x%08x\n", __FUNCTION__, __LINE__, (SYSM_CARD_NTR_SECURE_BUF + (srcAdd - HOTSW_SECURE_AREA_OFS)) );
|
||||||
|
MI_CpuCopy8((u32 *)(SYSM_CARD_NTR_SECURE_BUF + (srcAdd - HOTSW_SECURE_AREA_OFS)), (u32 *)destAdd, sendSize);
|
||||||
|
}
|
||||||
|
// --- Game Segment
|
||||||
|
else if(srcAdd >= HOTSW_GAME_AREA_OFS){
|
||||||
|
// KeyTable2が設定されている場合
|
||||||
|
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 Secure2Adr = keyTable2Adr + HOTSW_SECURE2_AREA_OFS;
|
||||||
|
u32 Game2Adr = keyTable2Adr + HOTSW_GAME2_AREA_OFS;
|
||||||
|
|
||||||
|
// --- Game Segment
|
||||||
|
if(srcAdd < keyTable2Adr){
|
||||||
|
sendSize = ((srcAdd + remainSize) > keyTable2Adr) ? keyTable2Adr - srcAdd : remainSize;
|
||||||
|
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
||||||
|
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
||||||
|
}
|
||||||
|
// --- Key Table2
|
||||||
|
else if(srcAdd >= keyTable2Adr && srcAdd < Secure2Adr){
|
||||||
|
// [TODO] ここなにも処理しない?
|
||||||
|
sendSize = remainSize;
|
||||||
|
}
|
||||||
|
// --- Secure2 Segment
|
||||||
|
else if(srcAdd >= Secure2Adr && srcAdd < Game2Adr){
|
||||||
|
sendSize = ((srcAdd + remainSize) > Game2Adr) ? Game2Adr - srcAdd : remainSize;
|
||||||
|
OS_TPrintf("%s %d Src Adr : 0x%08x\n", __FUNCTION__, __LINE__, (SYSM_CARD_TWL_SECURE_BUF + (srcAdd - Secure2Adr)) );
|
||||||
|
MI_CpuCopy8((u32 *)(SYSM_CARD_TWL_SECURE_BUF + (srcAdd - Secure2Adr)), (u32 *)destAdd, sendSize);
|
||||||
|
}
|
||||||
|
// --- Game2 Segment
|
||||||
|
else{
|
||||||
|
sendSize = remainSize;
|
||||||
|
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
||||||
|
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --- Game Segment
|
||||||
|
else{
|
||||||
|
sendSize = remainSize;
|
||||||
|
OS_TPrintf("%s %d Src Adr : 0x%08x Dest Adr : 0x%08x Size : 0x%08x\n", __FUNCTION__, __LINE__, srcAdd, destAdd, sendSize );
|
||||||
|
ReadImage((u32 *)destAdd, (s32)srcAdd, (s32)sendSize, &s_cbData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
remainSize -= sendSize;
|
||||||
|
srcAdd += sendSize;
|
||||||
|
destAdd += sendSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef DEBUG_USED_CARD_SLOT_B_
|
||||||
|
CARD_UnlockRom(s_CardLockID);
|
||||||
|
#else
|
||||||
|
UnlockExCard(s_CardLockID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
|
||||||
|
SYSMi_GetWork()->flags.hotsw.isCardReadCompleted = TRUE;
|
||||||
|
|
||||||
return HOTSW_SUCCESS;
|
return HOTSW_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -1580,7 +1689,9 @@ static void HotSwThread(void *arg)
|
|||||||
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;
|
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
|
||||||
|
#ifdef USE_WRAM_LOAD
|
||||||
|
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
|
||||||
|
#endif
|
||||||
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
||||||
|
|
||||||
OS_PutString("ok!\n");
|
OS_PutString("ok!\n");
|
||||||
@ -2059,10 +2170,13 @@ 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{
|
else{
|
||||||
|
#ifdef USE_WRAM_LOAD
|
||||||
OS_PutString("--- ARM7\n");
|
OS_PutString("--- ARM7\n");
|
||||||
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
||||||
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
||||||
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
||||||
|
ReadCardData(SYSMi_GetWork()->cardReadParam.src, SYSMi_GetWork()->cardReadParam.dest, SYSMi_GetWork()->cardReadParam.size);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -115,16 +115,21 @@ void HOTSW_ReadCardData(void* src, void* dest, u32 size)
|
|||||||
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
||||||
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
||||||
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
||||||
|
|
||||||
|
DC_FlushRange( dest, size );
|
||||||
|
|
||||||
msg.msg.read = TRUE;
|
msg.msg.read = TRUE;
|
||||||
|
|
||||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
||||||
{
|
{
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
// [TODO] ARM7側でリードが終了してステートが返ってくるのを待つ?
|
// [TODO] ARM7側でリードが終了してステートが返ってくるのを待つ?
|
||||||
|
while (!SYSMi_GetWork()->flags.hotsw.isCardReadCompleted)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -115,6 +115,7 @@ typedef struct SYSM_work {
|
|||||||
vu16 isCardGameMode :1; // カードがゲームモードに遷移したか?
|
vu16 isCardGameMode :1; // カードがゲームモードに遷移したか?
|
||||||
vu16 :0;
|
vu16 :0;
|
||||||
vu8 isCardStateChanged; // カード状態更新フラグ
|
vu8 isCardStateChanged; // カード状態更新フラグ
|
||||||
|
vu8 isCardReadCompleted; // カードデータリード完了?
|
||||||
}hotsw;
|
}hotsw;
|
||||||
}flags; // 7B
|
}flags; // 7B
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user