mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2882 b08762b0-b915-fc4b-9d8c-17b2551a87ff
150 lines
3.8 KiB
C
150 lines
3.8 KiB
C
|
||
#include <twl.h>
|
||
//#include <twl/os/common/ownerInfoEx_private.h>
|
||
#include "font.h"
|
||
#include "screen.h"
|
||
#include "keypad.h"
|
||
|
||
#define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log"
|
||
|
||
void VBlankIntr(void);
|
||
void myInit(void);
|
||
|
||
s16 drawLine = 0;
|
||
|
||
void TwlMain( void )
|
||
{
|
||
myInit();
|
||
|
||
//---- interrupt setting
|
||
OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||
OS_EnableIrqMask(OS_IE_V_BLANK);
|
||
OS_EnableIrq();
|
||
GX_VBlankIntr(TRUE);
|
||
|
||
{
|
||
FSFile file;
|
||
if( FS_OpenFileEx( &file, SYSTEM_UPDATER_LOG_PATH, FS_FILEMODE_R ) ) {
|
||
(void)FS_CloseFile( &file );
|
||
}else {
|
||
PrintString(0, drawLine++, CONSOLE_GREEN, "UpdaterLog is already deleted.");
|
||
OS_WaitVBlankIntr();
|
||
OS_Terminate();
|
||
}
|
||
}
|
||
|
||
PrintString(0, drawLine++, CONSOLE_WHITE, "Press A key To delete UpdaterLog.");
|
||
|
||
while(1){
|
||
|
||
kamiPadRead();
|
||
|
||
if(kamiPadIsTrigger(PAD_BUTTON_A)){
|
||
|
||
if ( !FS_DeleteFile(SYSTEM_UPDATER_LOG_PATH) )
|
||
{
|
||
FSResult res = FS_GetArchiveResultCode(SYSTEM_UPDATER_LOG_PATH);
|
||
PrintString(0, drawLine++, CONSOLE_RED, "Delete Failed. Err:%03x", res);
|
||
break;
|
||
}
|
||
|
||
PrintString(0, drawLine++, CONSOLE_WHITE, "Delete Succeeded.");
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
OS_WaitVBlankIntr();
|
||
OS_Terminate();
|
||
}
|
||
|
||
|
||
static void
|
||
VBlankIntr(void)
|
||
{
|
||
//---- upload pseudo screen to VRAM
|
||
DC_FlushRange(gScreen, sizeof(gScreen));
|
||
GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
|
||
GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
|
||
|
||
|
||
OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt
|
||
}
|
||
|
||
|
||
void myInit(void)
|
||
{
|
||
//---- init
|
||
OS_Init();
|
||
OS_InitTick();
|
||
OS_InitAlarm();
|
||
FX_Init();
|
||
GX_Init();
|
||
GX_DispOff();
|
||
GXS_DispOff();
|
||
|
||
//---- init displaying
|
||
GX_SetBankForLCDC(GX_VRAM_LCDC_ALL);
|
||
MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE);
|
||
(void)GX_DisableBankForLCDC();
|
||
|
||
MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE);
|
||
MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE);
|
||
MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE);
|
||
MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
|
||
|
||
//---- setting 2D for top screen
|
||
GX_SetBankForBG(GX_VRAM_BG_128_A);
|
||
|
||
G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256,
|
||
GX_BG_COLORMODE_16,
|
||
GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01);
|
||
G2_SetBG0Priority(0);
|
||
G2_BG0Mosaic(FALSE);
|
||
GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D);
|
||
GX_SetVisiblePlane(GX_PLANEMASK_BG0);
|
||
|
||
GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData));
|
||
GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData));
|
||
|
||
|
||
|
||
//---- setting 2D for bottom screen
|
||
GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C);
|
||
|
||
G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256,
|
||
GX_BG_COLORMODE_16,
|
||
GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01);
|
||
G2S_SetBG0Priority(0);
|
||
G2S_BG0Mosaic(FALSE);
|
||
GXS_SetGraphicsMode(GX_BGMODE_0);
|
||
GXS_SetVisiblePlane(GX_PLANEMASK_BG0);
|
||
|
||
GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData));
|
||
GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData));
|
||
|
||
|
||
//---- screen
|
||
MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen));
|
||
DC_FlushRange(gScreen, sizeof(gScreen));
|
||
/* DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD>W<EFBFBD>X<EFBFBD>^<5E>փA<D683>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>̂ŃL<C583><4C><EFBFBD>b<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD> Wait <20>͕s<CD95>v */
|
||
// DC_WaitWriteBufferEmpty();
|
||
GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
|
||
GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
|
||
|
||
//---- init interrupt
|
||
OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||
(void)GX_VBlankIntr(TRUE);
|
||
(void)OS_EnableIrq();
|
||
(void)OS_EnableInterrupts();
|
||
|
||
//---- FileSytem init
|
||
FS_Init(FS_DMA_NOT_USE);
|
||
|
||
//---- start displaying
|
||
GX_DispOn();
|
||
GXS_DispOn();
|
||
}
|
||
|