mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@26 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
e25fa58006
commit
ec1bd5f622
@ -288,8 +288,10 @@ const u32 d_CharData[0xe0 * 8] = {
|
||||
0x00000000,0x00000000,0x00000000,0x00000000, //007F
|
||||
0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
|
||||
0x00000000,0x00000000,0x00000000,0x00000000, //0080
|
||||
0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
// 0x00000000,0x00000000,0x00000000,0x00000000, //0080
|
||||
// 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
0x11111111,0x11111111,0x11111111,0x11111111, //0080
|
||||
0x11111111,0x11111111,0x11111111,0x11111111,
|
||||
0x00000000,0x00000000,0x00000000,0x00000000, //0081
|
||||
0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
0x00000000,0x00000000,0x00000000,0x00000000, //0082
|
||||
|
||||
@ -3,6 +3,29 @@
|
||||
#include "mprintf.h"
|
||||
#include "gfx.h"
|
||||
|
||||
|
||||
|
||||
|
||||
#define DPR_HEIGHT_MAX 24
|
||||
#define DPR_WIDTH_MAX 32
|
||||
|
||||
static u16 sDPRScrnBuffer[DPR_HEIGHT_MAX * DPR_WIDTH_MAX];
|
||||
|
||||
|
||||
|
||||
void Gfx_Set_BG1_Color(u16 col)
|
||||
{
|
||||
int i,j;
|
||||
for( i = 0 ; i < DPR_HEIGHT_MAX ; i++ ) {
|
||||
for( j = 0 ; j < DPR_WIDTH_MAX ; j++ ) {
|
||||
sDPRScrnBuffer[i*DPR_WIDTH_MAX + j] = (u16)( ((col & 0xf) << 12) | ((u16)0x80) );
|
||||
}
|
||||
}
|
||||
DC_FlushRange( (void *)&(sDPRScrnBuffer),sizeof(sDPRScrnBuffer));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GXOamAttr g_oam[128];
|
||||
#define VRAM_SIZE 2*32*24
|
||||
|
||||
@ -33,19 +56,16 @@ void Gfx_Init(void)
|
||||
GX_DispOff();
|
||||
GXS_DispOff();
|
||||
|
||||
|
||||
|
||||
line_buf_count = init_text_buf_sys((void *)&(text_heap_buffer[0]),
|
||||
(void *)&(text_heap_buffer[TEXT_HEAPBUF_SIZE]));
|
||||
|
||||
// OS_TPrintf("Init start 1\n");
|
||||
for( i = 0 ; i < NUM_OF_SCREEN ; i++) {
|
||||
tc[i] = &(textctrl[i]);
|
||||
init_text(tc[i], (u16 *)&(g_screen[i]), palette_no);
|
||||
init_text(tc[i], (u16 *)&(g_screen[i]), palette_no);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Gfx_Set_BG1_Color(0);
|
||||
|
||||
// VRAM初期化
|
||||
GX_SetBankForLCDC(GX_VRAM_LCDC_ALL);
|
||||
@ -67,6 +87,8 @@ void Gfx_Init(void)
|
||||
GX_BG_EXTPLTT_01);
|
||||
G2_SetBG0Priority(0);
|
||||
G2_BG0Mosaic(FALSE);
|
||||
G2_BG1Mosaic(FALSE);
|
||||
|
||||
// 2D表示設定
|
||||
GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS,GX_BGMODE_0,GX_BG0_AS_2D);
|
||||
GX_LoadBG0Char(d_CharData,0,sizeof(d_CharData));
|
||||
@ -78,10 +100,21 @@ void Gfx_Init(void)
|
||||
GX_LoadOBJ(d_IconCharData,0,sizeof(d_IconCharData));
|
||||
GX_LoadOBJPltt(d_IconPaletteData,0,sizeof(d_IconPaletteData));
|
||||
|
||||
GX_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_OBJ );
|
||||
|
||||
/* <20>ã‰æ–Ê—pBG1<47>Ý’è */
|
||||
G2_SetBG1Priority(1);
|
||||
GX_LoadBG1Char(d_CharData,0,sizeof(d_CharData));
|
||||
G2_SetBG1Control(GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text
|
||||
GX_BG_COLORMODE_16, // use 16 colors mode
|
||||
GX_BG_SCRBASE_0x3800, // screen base offset + 0x3800 is the address for BG #1 screen
|
||||
GX_BG_CHARBASE_0x00000,
|
||||
// character base offset + 0x00000 is the address for BG #1 characters
|
||||
GX_BG_EXTPLTT_01 // use BGExtPltt slot #1 if BGExtPltt is enabled
|
||||
);
|
||||
GX_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ );
|
||||
|
||||
|
||||
/* BG1•\ަ<C5BD>Ý’è */
|
||||
/* sub‰æ–Ê•\ަ<C5BD>Ý’è */
|
||||
GX_SetBankForSubBG( GX_VRAM_SUB_BG_48_HI );
|
||||
G2S_SetBG0Control(
|
||||
GX_BG_SCRSIZE_TEXT_256x256 ,
|
||||
@ -90,20 +123,34 @@ void Gfx_Init(void)
|
||||
GX_BG_CHARBASE_0x10000 , // CHR ベースブロック 0
|
||||
GX_BG_EXTPLTT_01
|
||||
);
|
||||
|
||||
G2S_SetBG1Control(GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text
|
||||
GX_BG_COLORMODE_16, // use 16 colors mode
|
||||
GX_BG_SCRBASE_0x8800, // screen base offset + 0x3800 is the address for BG #1 screen
|
||||
GX_BG_CHARBASE_0x00000,
|
||||
// character base offset + 0x00000 is the address for BG #1 characters
|
||||
GX_BG_EXTPLTT_01 // use BGExtPltt slot #1 if BGExtPltt is enabled
|
||||
);
|
||||
|
||||
|
||||
G2S_SetBG0Priority( 0 );
|
||||
G2S_SetBG1Priority( 1 );
|
||||
G2S_BG0Mosaic( FALSE );
|
||||
G2S_BG1Mosaic( FALSE );
|
||||
GXS_SetGraphicsMode(GX_BGMODE_0);
|
||||
GXS_LoadBG0Char(d_CharData,0,sizeof(d_CharData));
|
||||
GXS_LoadBG1Char(d_CharData,0,sizeof(d_CharData));
|
||||
GXS_LoadBGPltt(d_PaletteData,0,sizeof(d_PaletteData));
|
||||
|
||||
GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D);
|
||||
GXS_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D);
|
||||
|
||||
|
||||
GXS_LoadOBJ(d_IconCharData,0,sizeof(d_IconCharData));
|
||||
GXS_LoadOBJPltt(d_IconPaletteData,0,sizeof(d_IconPaletteData));
|
||||
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_OBJ );
|
||||
|
||||
|
||||
|
||||
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ );
|
||||
|
||||
|
||||
// LCD表示開始
|
||||
GX_DispOn();
|
||||
@ -115,7 +162,8 @@ void Gfx_Init(void)
|
||||
|
||||
G2_SetBG0Offset( 0, 0 );
|
||||
G2S_SetBG0Offset( 0, 0 );
|
||||
|
||||
G2_SetBG1Offset( 0, 0 );
|
||||
G2S_SetBG1Offset( 0, 0 );
|
||||
|
||||
// for V Blank
|
||||
(void)OS_SetIrqFunction( OS_IE_V_BLANK, VBlankIntr );
|
||||
@ -136,6 +184,11 @@ static void VBlankIntr(void)
|
||||
}
|
||||
GXS_LoadBG0Scr( (void *)&(g_screen[vram_num_sub]) , 0 , VRAM_SIZE );
|
||||
|
||||
|
||||
GX_LoadBG1Scr(sDPRScrnBuffer, 0, sizeof(sDPRScrnBuffer));
|
||||
GXS_LoadBG1Scr(sDPRScrnBuffer, 0, sizeof(sDPRScrnBuffer));
|
||||
|
||||
|
||||
// 仮想OAMをVRAMに反映
|
||||
DC_FlushRange(g_oam,sizeof(g_oam));
|
||||
GX_LoadOAM(g_oam,0,sizeof(g_oam));
|
||||
|
||||
@ -8,6 +8,7 @@ extern "C" {
|
||||
|
||||
void Gfx_Init(void);
|
||||
void Gfx_Render(int main_no, int sub_no);
|
||||
void Gfx_Set_BG1_Color(u16 col);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@ -1456,6 +1456,15 @@ BOOL TitleIDSave(const char *path, u64 *pData, int count, FSFile *log_fd)
|
||||
|
||||
|
||||
|
||||
/* TWLƒJ<C692>[ƒh‚ª‚ ‚é‚©‚Ç‚¤‚© */
|
||||
BOOL TWLCardValidation(void)
|
||||
{
|
||||
if( TRUE == OS_IsRunOnDebugger() ) {
|
||||
return FALSE;
|
||||
}
|
||||
return CARD_IsPulledOut();
|
||||
}
|
||||
|
||||
/* SDカードがあるかどうか */
|
||||
BOOL SDCardValidation(void)
|
||||
{
|
||||
@ -1500,6 +1509,11 @@ BOOL CheckShopRecord(u8 region, FSFile *log_fd)
|
||||
FSFile f;
|
||||
BOOL bSuccess;
|
||||
char path[256];
|
||||
u32 fileSize;
|
||||
s32 readSize = 0;
|
||||
void *pBuffer;
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
FS_InitFile(&f);
|
||||
|
||||
@ -1513,14 +1527,44 @@ BOOL CheckShopRecord(u8 region, FSFile *log_fd)
|
||||
}
|
||||
(void)FS_CloseFile(&f);
|
||||
|
||||
|
||||
#if 0
|
||||
// CopyFile( dst <= src );
|
||||
CopyFile("sdmc:/shop.log", "nand:/sys/log/shop.log",NULL);
|
||||
|
||||
STD_StrCpy(path, "nand:/sys/log/shop.log");
|
||||
bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R));
|
||||
if( ! bSuccess ) {
|
||||
if( !bSuccess ) {
|
||||
if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) {
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fileSize = FS_GetFileLength(&f);
|
||||
if( fileSize ) {
|
||||
pBuffer = (char*)OS_Alloc(fileSize + 1);
|
||||
if( pBuffer == NULL ) {
|
||||
OS_TPrintf("Mem alloc error: %s %d\n", __FUNCTION__,__LINE__);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
readSize = FS_ReadFile(&f, pBuffer, (s32)fileSize);
|
||||
if( readSize != fileSize ) {
|
||||
OS_TPrintf("Failed Read File: %s %s %d\n",path,__FUNCTION__,__LINE__);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
str = (char *)pBuffer;
|
||||
|
||||
mprintf("\n\n");
|
||||
for( i = 0 ; i < readSize ; i++ ) {
|
||||
OS_PutChar( *str++ );
|
||||
m_putchar(tc[0],*str++ );
|
||||
}
|
||||
mprintf("\n\n");
|
||||
}
|
||||
else {
|
||||
}
|
||||
(void)FS_CloseFile(&f);
|
||||
#endif
|
||||
|
||||
|
||||
@ -37,6 +37,7 @@ BOOL RestoreDirEntryList( char *path, char *log_file_name);
|
||||
BOOL ClearDirEntryList( MY_DIR_ENTRY_LIST **headp );
|
||||
void write_debug_data(void);
|
||||
BOOL SDCardValidation(void);
|
||||
BOOL TWLCardValidation(void);
|
||||
BOOL CheckShopRecord(u8 region, FSFile *log_fd);
|
||||
BOOL MydataSave(const char *path, void *pData, int size, FSFile *log_fd);
|
||||
BOOL MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd);
|
||||
|
||||
@ -11,6 +11,11 @@ typedef struct {
|
||||
int num_of_photo_files;
|
||||
int num_of_shared2_files;
|
||||
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID 16byte
|
||||
// typedef u32 ESId; /* 32-bit device identity */
|
||||
u32 deviceId;
|
||||
u8 region;
|
||||
u64 fuseId;
|
||||
char bmsDeviceId[32];
|
||||
} MyData;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -164,9 +164,6 @@ BOOL nvram_backup(char *path)
|
||||
if( TRUE != my_nvram_read( NVRAM_PERSONAL_DATA_OFFSET , sizeof(u16), (void* )&offset) ) {
|
||||
OS_TPrintf( "nvram error: %s %s %d\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
else {
|
||||
OS_TPrintf( "nvram success: offset = 0x%02x\n", offset);
|
||||
}
|
||||
|
||||
if( offset == 0 ) {
|
||||
OS_TPrintf( "nvram error: offset = 0x%02x\n", offset);
|
||||
@ -176,14 +173,11 @@ BOOL nvram_backup(char *path)
|
||||
offset *= 8;
|
||||
offset -= 0xA00;
|
||||
|
||||
OS_TPrintf( "nvram %d: offset = 0x%02x\n",__LINE__, offset);
|
||||
|
||||
for( vol = 0 ; vol < NVRAM_PERSONAL_DATA_SIZE ; vol += BUF_SIZE ) {
|
||||
if( TRUE != my_nvram_read( offset+vol , BUF_SIZE, (void* )nor_buf) ) {
|
||||
OS_TPrintf( "nvram error: %s %s %d\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
else {
|
||||
OS_TPrintf( " --: offset = 0x%02x\n", offset+vol);
|
||||
#if 0
|
||||
len = FS_WriteFile(&nor_fd, nor_buf, BUF_SIZE);
|
||||
#else
|
||||
|
||||
@ -62,7 +62,11 @@ static u8 strm_tmp[STRM_BUF_PAGESIZE * 2] ATTRIBUTE_ALIGN(32);
|
||||
|
||||
// ƒtƒ@ƒCƒ‹–¼
|
||||
//const char filename2[] = "kart_title.32.wav";
|
||||
const char filename1[] = "fanfare.32.wav";
|
||||
//const char filename1[] = "fanfare.32.wav";
|
||||
const char filename0[] = "cursor.wav";
|
||||
const char filename1[] = "ok.wav";
|
||||
const char filename2[] = "ng.wav";
|
||||
const char filename3[] = "fanfare.32.wav";
|
||||
|
||||
static StreamInfo strm;
|
||||
|
||||
@ -80,12 +84,27 @@ void stream_main(void)
|
||||
OS_WakeupThreadDirect(&strmThread);
|
||||
}
|
||||
|
||||
void stream_play0(void)
|
||||
{
|
||||
PlayStream(&strm, filename0);
|
||||
}
|
||||
|
||||
void stream_play1(void)
|
||||
{
|
||||
PlayStream(&strm, filename1);
|
||||
}
|
||||
|
||||
BOOL stream_is_play1_end(void)
|
||||
void stream_play2(void)
|
||||
{
|
||||
PlayStream(&strm, filename2);
|
||||
}
|
||||
|
||||
void stream_play3(void)
|
||||
{
|
||||
PlayStream(&strm, filename3);
|
||||
}
|
||||
|
||||
BOOL stream_play_is_end(void)
|
||||
{
|
||||
if (strm.dataSize <= 0) {
|
||||
return TRUE;
|
||||
@ -93,8 +112,6 @@ BOOL stream_is_play1_end(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void PlayStream(StreamInfo * strm, const char *filename)
|
||||
{
|
||||
int timerValue;
|
||||
|
||||
@ -8,8 +8,11 @@ extern "C" {
|
||||
|
||||
extern void channel_play(void);
|
||||
extern void stream_main(void);
|
||||
extern void stream_play0(void);
|
||||
extern void stream_play1(void);
|
||||
extern BOOL stream_is_play1_end(void);
|
||||
extern void stream_play2(void);
|
||||
extern void stream_play3(void);
|
||||
extern BOOL stream_play_is_end(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
#define M_TEXT_COLOR_YELLOW 4
|
||||
#define M_TEXT_COLOR_PURPLE 5
|
||||
#define M_TEXT_COLOR_LIGHTBLUE 6
|
||||
#define M_TEXT_COLOR_DRAKRED 7
|
||||
#define M_TEXT_COLOR_DARKRED 7
|
||||
#define M_TEXT_COLOR_DARKGREEN 8
|
||||
#define M_TEXT_COLOR_DRAKBLUE 9
|
||||
#define M_TEXT_COLOR_DARKBLUE 9
|
||||
#define M_TEXT_COLOR_DARKYELLOW 0xa
|
||||
#define M_TEXT_COLOR_DARKPURPLE 0xb
|
||||
#define M_TEXT_COLOR_DARKLIGHTBLUE 0xc
|
||||
|
||||
@ -62,7 +62,7 @@ LLIBRARIES += libecx$(TWL_LIBSUFFIX).a \
|
||||
|
||||
|
||||
MAKEROM_ROMROOT = ../files
|
||||
MAKEROM_ROMFILES = fanfare.32.wav
|
||||
MAKEROM_ROMFILES = fanfare.32.wav ok.wav ng.wav cursor.wav
|
||||
|
||||
|
||||
COMPONENT_NAME = armadillo
|
||||
|
||||
@ -555,17 +555,20 @@ static void MyThreadProc(void *arg)
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||
mprintf("Restore completed.\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play1();
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||
mprintf("Restore failed.\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play2();
|
||||
}
|
||||
}
|
||||
mprintf("\n");
|
||||
/* 全部成功したらフォルダを消す */
|
||||
if( TRUE == stream_is_play1_end() ) {
|
||||
stream_play1();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,9 +594,10 @@ static void MyThreadProcNuc(void *arg)
|
||||
NcFinish();
|
||||
TerminateWcmControl();
|
||||
|
||||
if( TRUE == stream_is_play1_end() ) {
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play1();
|
||||
}
|
||||
|
||||
/* ハードウェアリセットを行い、自分自身を起動します。 */
|
||||
OS_Sleep(30000);
|
||||
OS_RebootSystem();
|
||||
|
||||
@ -60,7 +60,7 @@ LLIBRARIES += libecx$(TWL_LIBSUFFIX).a \
|
||||
|
||||
|
||||
MAKEROM_ROMROOT = ../files
|
||||
MAKEROM_ROMFILES = fanfare.32.wav
|
||||
MAKEROM_ROMFILES = fanfare.32.wav ok.wav ng.wav cursor.wav
|
||||
|
||||
|
||||
COMPONENT_NAME = armadillo
|
||||
|
||||
@ -37,7 +37,9 @@
|
||||
#include "menu_version.h"
|
||||
|
||||
//================================================================================
|
||||
#define LCD_UPPER_LOWER_FLIP 1
|
||||
|
||||
static BOOL completed_flag = FALSE;
|
||||
static FSEventHook sSDHook;
|
||||
static BOOL sd_card_flag = FALSE;
|
||||
|
||||
@ -55,38 +57,45 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
|
||||
}
|
||||
else if (event == FS_EVENT_MEDIA_INSERTED) {
|
||||
sd_card_flag = TRUE;
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||
mprintf("SD card:inserted!\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
mprintf("push A button to start BACKUP\n");
|
||||
if( completed_flag == FALSE ) {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||
mprintf("SD card:inserted!\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
mprintf("press A button to start BACKUP\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static MyData mydata;
|
||||
|
||||
#ifdef LCD_UPPER_LOWER_FLIP
|
||||
static int vram_num_main = 1;
|
||||
static int vram_num_sub = 0;
|
||||
#else
|
||||
static int vram_num_main = 1;
|
||||
static int vram_num_sub = 0;
|
||||
#endif
|
||||
|
||||
static LCFGTWLHWNormalInfo hwn_info;
|
||||
static LCFGTWLHWSecureInfo hws_info;
|
||||
|
||||
|
||||
|
||||
#define MY_STACK_SIZE (1024*16) /* でかいほうがいい */
|
||||
#define MY_THREAD_PRIO 20
|
||||
static OSThread MyThread;
|
||||
static u64 MyStack[MY_STACK_SIZE / sizeof(u64)];
|
||||
static void MyThreadProc(void *arg);
|
||||
|
||||
static OSMessage MyMesgBuffer[1];
|
||||
static OSMessageQueue MyMesgQueue;
|
||||
|
||||
static OSMessage MyMesgBuffer_request[1];
|
||||
static OSMessage MyMesgBuffer_response[1];
|
||||
static OSMessageQueue MyMesgQueue_request;
|
||||
static OSMessageQueue MyMesgQueue_response;
|
||||
|
||||
static void init_my_thread(void)
|
||||
{
|
||||
|
||||
OS_InitMessageQueue(&MyMesgQueue, &MyMesgBuffer[0], 1);
|
||||
OS_InitMessageQueue(&MyMesgQueue_request, &MyMesgBuffer_request[0], 1);
|
||||
OS_InitMessageQueue(&MyMesgQueue_response, &MyMesgBuffer_response[0], 1);
|
||||
|
||||
OS_CreateThread(&MyThread, MyThreadProc,
|
||||
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
|
||||
@ -94,9 +103,14 @@ static void init_my_thread(void)
|
||||
OS_WakeupThreadDirect(&MyThread);
|
||||
}
|
||||
|
||||
static void start_my_thread(void)
|
||||
static BOOL start_my_thread(void)
|
||||
{
|
||||
(void)OS_SendMessage(&MyMesgQueue, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||
OSMessage message;
|
||||
if( TRUE == OS_ReceiveMessage(&MyMesgQueue_response, &message, OS_MESSAGE_NOBLOCK) ) {
|
||||
(void)OS_SendMessage(&MyMesgQueue_request, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -381,7 +395,9 @@ static void MyThreadProc(void *arg)
|
||||
BOOL flag;
|
||||
OSMessage message;
|
||||
while( 1 ) {
|
||||
(void)OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK);
|
||||
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||
|
||||
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
|
||||
flag = TRUE;
|
||||
MyFile_SetPathBase("sdmc:/");
|
||||
MyFile_AddPathBase((const char *)hws_info.serialNo );
|
||||
@ -393,22 +409,55 @@ static void MyThreadProc(void *arg)
|
||||
}
|
||||
mprintf("\n");
|
||||
if( flag == TRUE ) {
|
||||
completed_flag = TRUE;
|
||||
#if 0
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||
mprintf("Backup completed.\n");
|
||||
mprintf("Backup succeded.\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
#endif
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play0();
|
||||
}
|
||||
|
||||
/* TWLカード、SDカード抜いたかをチェックする */
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||
mprintf("Pull out DS(DSi) & SD CARDs!\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
while( 1 ) {
|
||||
if( (FALSE == SDCardValidation()) && (FALSE == TWLCardValidation()) ) {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||
mprintf("Backup completed.\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play1();
|
||||
}
|
||||
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKGREEN);
|
||||
break;
|
||||
}
|
||||
OS_Sleep(200);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||
mprintf("Backup failed.\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play2();
|
||||
}
|
||||
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
|
||||
}
|
||||
mprintf("\n");
|
||||
if( TRUE == stream_is_play1_end() ) {
|
||||
stream_play1();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL myTWLCardCallback( void )
|
||||
{
|
||||
return FALSE; // means that not terminate
|
||||
}
|
||||
|
||||
|
||||
void TwlMain(void)
|
||||
{
|
||||
@ -465,24 +514,21 @@ void TwlMain(void)
|
||||
SND_Init();
|
||||
stream_main();
|
||||
|
||||
CARD_Init();
|
||||
CARD_SetPulledOutCallback( myTWLCardCallback );
|
||||
|
||||
// 必須;SEA の初期化
|
||||
SEA_Init();
|
||||
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mprintf( "Sys-menu ver." );
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
|
||||
mprintf( "%d.%d", s_major, s_minor );
|
||||
mprintf( " (%08x)\n", s_timestamp );
|
||||
}
|
||||
else {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||
mprintf( "read error!\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
}
|
||||
mprintf( "\n");
|
||||
|
||||
if( FALSE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||
mprintf( "system menu ver. read error!\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
s_major = 0;
|
||||
s_minor = 0;
|
||||
s_timestamp = 0;
|
||||
}
|
||||
|
||||
|
||||
// 不要:NAM の初期化
|
||||
@ -491,7 +537,6 @@ void TwlMain(void)
|
||||
// 必須:ES の初期化
|
||||
ES_InitLib();
|
||||
|
||||
|
||||
if( RTC_RESULT_SUCCESS != RTC_GetDate( &rtc_date ) ) {
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||
mprintf("rtc date read error.\n");
|
||||
@ -504,53 +549,46 @@ void TwlMain(void)
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
}
|
||||
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mprintf("Unique ID:\n");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
|
||||
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
|
||||
m_set_palette(tc[0], 0x1); /* red */
|
||||
mprintf(" read error.\n");
|
||||
mprintf("HW Normal Info. read error.\n");
|
||||
m_set_palette(tc[0], 0xF);
|
||||
}
|
||||
else {
|
||||
mprintf(" 0x");
|
||||
for( i = 0; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN/2 ; i++ ) {
|
||||
mprintf("%02X:", hwn_info.movableUniqueID[i]);
|
||||
}
|
||||
mprintf("\n 0x");
|
||||
for( ; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ; i++ ) {
|
||||
mprintf("%02X:", hwn_info.movableUniqueID[i]);
|
||||
}
|
||||
mprintf("\n");
|
||||
}
|
||||
mprintf("\n");
|
||||
|
||||
|
||||
// mprintf("HW Secure Info. read ");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mprintf("Serial No. ");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
if( FALSE == MiyaReadHWSecureInfo( &hws_info ) ) {
|
||||
m_set_palette(tc[0], 0x1); /* red */
|
||||
mprintf("read error.\n");
|
||||
mprintf("HW Secure Info. read error.\n");
|
||||
m_set_palette(tc[0], 0xF); /* white */
|
||||
}
|
||||
else {
|
||||
mprintf("%s\n", hws_info.serialNo);
|
||||
}
|
||||
mprintf("\n");
|
||||
|
||||
OS_GetMacAddress( macAddress );
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mprintf("MAC add.(HEX):");
|
||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||
for ( i = 0 ; i < 6 ; i++ ) {
|
||||
mprintf("%02X", macAddress[i]);
|
||||
}
|
||||
mprintf("\n\n");
|
||||
|
||||
|
||||
|
||||
// region
|
||||
mydata.region = LCFG_THW_GetRegion();
|
||||
// ES Device ID
|
||||
|
||||
mydata.fuseId = SCFG_ReadFuseData();
|
||||
OS_TPrintf("eFuseID: %08X%08X\n", (u32)(mydata.fuseId >> 32), (u32)(mydata.fuseId));
|
||||
|
||||
OS_GetMacAddress( macAddress );
|
||||
|
||||
mydata.shop_record_flag = CheckShopRecord( hws_info.region, NULL );
|
||||
|
||||
if( TRUE == mydata.shop_record_flag ) {
|
||||
if( TRUE == ES_GetDeviceId(&mydata.deviceId) ) {
|
||||
snprintf(mydata.bmsDeviceId, sizeof(mydata.bmsDeviceId), "%lld", ((0x3ull << 32) | mydata.deviceId));
|
||||
OS_TPrintf("DeviceID: %08X %u\n", mydata.deviceId, mydata.deviceId);
|
||||
OS_TPrintf(" %s\n", mydata.bmsDeviceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mprintf("\n");
|
||||
mprintf("press A button to start BACKUP\n\n");
|
||||
|
||||
|
||||
if( FALSE == SDCardValidation() ) {
|
||||
sd_card_flag = FALSE;
|
||||
m_set_palette(tc[0], 0x1); /* red */
|
||||
@ -567,10 +605,17 @@ void TwlMain(void)
|
||||
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||
|
||||
|
||||
|
||||
init_my_thread();
|
||||
|
||||
#if 0 /* 自動スタートはいらない */
|
||||
if( sd_card_flag == TRUE ) {
|
||||
start_my_thread();
|
||||
(void)start_my_thread();
|
||||
}
|
||||
#endif
|
||||
|
||||
if( TRUE == stream_play_is_end() ) {
|
||||
stream_play0();
|
||||
}
|
||||
|
||||
while( 1 ) {
|
||||
@ -587,27 +632,42 @@ void TwlMain(void)
|
||||
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
||||
|
||||
|
||||
if ( keyData & PAD_BUTTON_R ) {
|
||||
#ifdef LCD_UPPER_LOWER_FLIP
|
||||
vram_num_main ^= 1;
|
||||
vram_num_sub ^= 1;
|
||||
#else
|
||||
vram_num_main++;
|
||||
if( vram_num_main > (MAX_VRAM_NUM-1) ) {
|
||||
vram_num_main = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if ( keyData & PAD_BUTTON_L ) {
|
||||
#ifdef LCD_UPPER_LOWER_FLIP
|
||||
vram_num_main ^= 1;
|
||||
vram_num_sub ^= 1;
|
||||
#else
|
||||
vram_num_main--;
|
||||
if( vram_num_main < 0 ) {
|
||||
vram_num_main = (MAX_VRAM_NUM-1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
else if ( keyData & PAD_BUTTON_A ) {
|
||||
/* ユーザーデータ吸出しモード */
|
||||
if( sd_card_flag == TRUE ) {
|
||||
start_my_thread();
|
||||
}
|
||||
else {
|
||||
mprintf("insert SD card\n");
|
||||
if(completed_flag == FALSE ) {
|
||||
if( sd_card_flag == TRUE ) {
|
||||
if( FALSE == start_my_thread() ) {
|
||||
OS_TPrintf("\nnow backup..\n\n");
|
||||
}
|
||||
}
|
||||
else {
|
||||
mprintf("insert SD card\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( keyData & PAD_BUTTON_B ) {
|
||||
@ -642,8 +702,72 @@ void TwlMain(void)
|
||||
}
|
||||
|
||||
|
||||
// mfprintf(tc[1], "\f\ncounter = %d\n\n", loop_counter);
|
||||
mfprintf(tc[1], "\f\n%4d/%02d/%02d %02d:%02d:%02d\n\n",
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1], "\fRepaire Tool BACKUP");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1], " ver. 0.0 \n");
|
||||
mfprintf(tc[1], " build:%s %s\n\n",__DATE__,__TIME__);
|
||||
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1],"Sys-menu ver." );
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
|
||||
mfprintf(tc[1],"%d.%d", s_major, s_minor );
|
||||
mfprintf(tc[1]," (%08x)\n\n", s_timestamp );
|
||||
|
||||
|
||||
/* ユニークIDは表示しなくていい? */
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1], "Unique ID:\n");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1], " ");
|
||||
for( i = 0; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN/2 ; i++ ) {
|
||||
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
|
||||
}
|
||||
mfprintf(tc[1], "\n ");
|
||||
for( ; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ; i++ ) {
|
||||
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
|
||||
}
|
||||
mfprintf(tc[1], "\n\n");
|
||||
|
||||
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1], "Serial No. ");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1], "%s\n", hws_info.serialNo);
|
||||
mfprintf(tc[1], "\n");
|
||||
|
||||
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1], "eFuse ID: ");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1],"%08X%08X\n\n", (u32)(mydata.fuseId >> 32), (u32)(mydata.fuseId));
|
||||
|
||||
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1],"MAC add.: ");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1],"%02X:%02X:%02X:%02X:%02X:%02X", macAddress[0],macAddress[1],
|
||||
macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
|
||||
mfprintf(tc[1],"\n\n");
|
||||
|
||||
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1],"Shop record: ");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
if( TRUE == mydata.shop_record_flag ) {
|
||||
mfprintf(tc[1],"exist.\n");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||
mfprintf(tc[1],"Device ID: ");
|
||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||
mfprintf(tc[1],"%s\n", mydata.bmsDeviceId);
|
||||
}
|
||||
else {
|
||||
mfprintf(tc[1],"none.\n");
|
||||
}
|
||||
mfprintf(tc[1],"\n");
|
||||
|
||||
mfprintf(tc[1], "%4d/%02d/%02d %02d:%02d:%02d\n\n",
|
||||
rtc_date.year + 2000, rtc_date.month , rtc_date.day,
|
||||
rtc_time.hour , rtc_time.minute , rtc_time.second );
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user