mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
暫定的に再配置チェック及びリスト作成の処理をbootAPIに追加。後で関数化&処理追加予定。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@297 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
83deb399dd
commit
a013d63162
@ -77,6 +77,66 @@ BOOL BOOT_WaitStart( void )
|
||||
HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SYSTEM_END - HW_PXI_SIGNAL_PARAM_ARM9,
|
||||
NULL
|
||||
};
|
||||
|
||||
/*
|
||||
#define SYSM_TWL_ARM9_LOAD_MMEM 0x02000400 // ロード可能なARM9 static MMEM アドレス
|
||||
#define SYSM_TWL_ARM9_LOAD_MMEM_END SYSM_NTR_ARM9_LOAD_MMEM_END // ロード可能なARM9 static MMEM 最終アドレス
|
||||
#define SYSM_TWL_ARM7_LOAD_MMEM SYSM_NTR_ARM7_LOAD_MMEM // ロード可能なARM7 static MMEM アドレス
|
||||
#define SYSM_TWL_ARM7_LOAD_MMEM_END SYSM_NTR_ARM7_LOAD_MMEM_END // ロード可能なARM7 static MMEM 最終アドレス
|
||||
|
||||
#define SYSM_TWL_ARM9_LTD_LOAD_MMEM 0x02400000 // ロード可能なARM9 LTD static MMEM アドレス
|
||||
#define SYSM_TWL_ARM9_LTD_LOAD_MMEM_END 0x02800000 // ロード可能なARM9 LTD static MMEM 最終アドレス
|
||||
#define SYSM_TWL_ARM7_LTD_LOAD_MMEM 0x02e80000 // ロード可能なARM7 LTD static MMEM アドレス
|
||||
#define SYSM_TWL_ARM7_LTD_LOAD_MMEM_END 0x02f88000 // ロード可能なARM7 LTD static MMEM 最終アドレス
|
||||
*/
|
||||
|
||||
// [TODO]再配置リストの作成と設定
|
||||
// 自分以外のデフォルトロード領域に被る場合は即NG
|
||||
static u32 relocate_list[13] =
|
||||
{
|
||||
NULL
|
||||
};
|
||||
u32 revCopy = 0;
|
||||
|
||||
ROM_Header *pHeader = (ROM_Header *)HW_TWL_ROM_HEADER_BUF;
|
||||
u32 arm9ltd_dest = (u32)pHeader->s.main_ltd_ram_address;
|
||||
u32 arm9ltd_size = (u32)pHeader->s.main_ltd_size;
|
||||
u32 arm9flx_dest = (u32)pHeader->s.main_ram_address;
|
||||
u32 arm9flx_size = (u32)pHeader->s.main_size;
|
||||
u32 arm7ltd_dest = (u32)pHeader->s.sub_ltd_ram_address;
|
||||
u32 arm7ltd_size = (u32)pHeader->s.sub_ltd_size;
|
||||
u32 arm7flx_dest = (u32)pHeader->s.sub_ram_address;
|
||||
u32 arm7flx_size = (u32)pHeader->s.sub_size;
|
||||
|
||||
{
|
||||
// チェックコード例
|
||||
// とりあえずarm9ltdのみ。同じような処理は関数化しないとぐちゃぐちゃ。NTRの場合は領域が若干違うので注意。
|
||||
if( SYSM_TWL_ARM9_LTD_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM9_LTD_LOAD_MMEM_END)
|
||||
{
|
||||
// リロケート必要なし
|
||||
}else
|
||||
{
|
||||
// リロケート必要あり
|
||||
if( SYSM_TWL_ARM7_LTD_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM7_LTD_LOAD_MMEM_END ) return FALSE;//NG
|
||||
if( SYSM_TWL_ARM7_LTD_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM7_LTD_LOAD_MMEM_END ) return FALSE;//NG
|
||||
if( SYSM_TWL_ARM9_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM9_LOAD_MMEM_END ) return FALSE;//NG
|
||||
if( SYSM_TWL_ARM9_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM9_LOAD_MMEM_END ) return FALSE;//NG
|
||||
if( SYSM_TWL_ARM7_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM7_LOAD_MMEM_END ) return FALSE;//NG
|
||||
if( SYSM_TWL_ARM7_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM7_LOAD_MMEM_END ) return FALSE;//NG
|
||||
|
||||
// リロケート可能
|
||||
if( SYSM_TWL_ARM9_LTD_LOAD_MMEM <= arm9ltd_dest && SYSM_TWL_ARM9_LTD_LOAD_MMEM_END <= arm9ltd_dest + arm9ltd_size )
|
||||
{
|
||||
revCopy = 1; // 後方からコピーするフラグON
|
||||
}
|
||||
|
||||
relocate_list[0] = SYSM_TWL_ARM9_LTD_LOAD_MMEM;
|
||||
relocate_list[1] = arm9ltd_dest;
|
||||
relocate_list[2] = arm9ltd_size;
|
||||
relocate_list[3] = revCopy;
|
||||
}
|
||||
}
|
||||
|
||||
// [TODO]起動するターゲットの種類を指定する必要あり
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x34), clr_list, REBOOT_TARGET_TWL_SYSTEM );
|
||||
}
|
||||
|
||||
@ -102,7 +102,14 @@ void BOOT_Ready( void )
|
||||
//HW_DTCM, HW_DTCM_SIZE,
|
||||
NULL
|
||||
};
|
||||
// [TODO]起動するターゲットの種類を指定する必要あり
|
||||
|
||||
// [TODO]再配置リストの作成と設定(ほぼARM7側でやるのでこちらは空)
|
||||
static u32 relocate_list[] =
|
||||
{
|
||||
NULL
|
||||
};
|
||||
|
||||
// 起動するターゲットの種類を指定する必要あり
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x24), clr_list, REBOOT_TARGET_TWL_SYSTEM );
|
||||
}
|
||||
}
|
||||
|
||||
@ -577,9 +577,30 @@ static void MoveByScrollBar( void )
|
||||
static void DrawScrollBar( TitleProperty *pTitleList )
|
||||
{
|
||||
int l;
|
||||
static int col_count = 0;
|
||||
static int col_count_d = 1;
|
||||
static const int COL_FLAME_MAX = 30;
|
||||
static const int COL_NUM = 15;
|
||||
static const int COL_DIV = COL_FLAME_MAX / COL_NUM;
|
||||
|
||||
col_count += col_count_d;
|
||||
if(col_count < 0)
|
||||
{
|
||||
col_count = 0;
|
||||
col_count_d = 1;
|
||||
}
|
||||
if(COL_FLAME_MAX <= col_count)
|
||||
{
|
||||
col_count = COL_FLAME_MAX - 1;
|
||||
col_count_d = -1;
|
||||
}
|
||||
|
||||
for(l=0; l<LAUNCHER_TITLE_LIST_NUM; l++)
|
||||
{
|
||||
PutStringUTF16( (int)(BAR_ZERO_X + l * (ITEM_SIZE + ITEM_INTERVAL)), BAR_ZERO_Y, (pTitleList[l].flags.isValid ? TXT_UCOLOR_G1 : TXT_COLOR_BLACK), (const u16 *)L"<EFBFBD>E" );
|
||||
PutStringUTF16( (int)(BAR_ZERO_X + l * (ITEM_SIZE + ITEM_INTERVAL)),
|
||||
BAR_ZERO_Y,
|
||||
(pTitleList[l].flags.isValid ? (TXT_UCOLOR_G0 + col_count/COL_DIV) : TXT_COLOR_BLACK),
|
||||
(const u16 *)L"<EFBFBD>E" );
|
||||
}
|
||||
for(l=0; l<4; l++)
|
||||
{
|
||||
|
||||
@ -69,7 +69,7 @@ extern "C" {
|
||||
#define SYSM_NTR_ARM7_LOAD_WRAM 0x037f8000 // ロード可能なARM7 static WRAM アドレス
|
||||
#define SYSM_NTR_ARM7_LOAD_WRAM_END 0x0380f000 // ロード可能なARM7 static WRAM 最終アドレス
|
||||
|
||||
#define SYSM_TWL_ARM9_LOAD_MMEM SYSM_NTR_ARM9_LOAD_MMEM // ロード可能なARM9 static MMEM アドレス
|
||||
#define SYSM_TWL_ARM9_LOAD_MMEM 0x02000400 // ロード可能なARM9 static MMEM アドレス
|
||||
#define SYSM_TWL_ARM9_LOAD_MMEM_END SYSM_NTR_ARM9_LOAD_MMEM_END // ロード可能なARM9 static MMEM 最終アドレス
|
||||
#define SYSM_TWL_ARM7_LOAD_MMEM SYSM_NTR_ARM7_LOAD_MMEM // ロード可能なARM7 static MMEM アドレス
|
||||
#define SYSM_TWL_ARM7_LOAD_MMEM_END SYSM_NTR_ARM7_LOAD_MMEM_END // ロード可能なARM7 static MMEM 最終アドレス
|
||||
|
||||
Loading…
Reference in New Issue
Block a user