diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 8c6a17ba..5e075943 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -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 ); } diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index 05aae74e..947c117d 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -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 ); } } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index 55e7c930..f8535fed 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -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