mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(TWLCaptureSystemWriter)ARM9.TWL/data 以下にtad,nandfirmを置くとオブジェクトファイル化して取り込む機能を追加。警告が出ていたので修正。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2734 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
5a4d921ab4
commit
d109de03fd
@ -32,7 +32,9 @@ extern "C" {
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
AUTO_PROCESS_MENU_FORMAT = 0,
|
AUTO_PROCESS_MENU_FORMAT = 0,
|
||||||
|
#ifndef TWL_CAPTURE_VERSION
|
||||||
AUTO_PROCESS_MENU_HARDWARE_INFO,
|
AUTO_PROCESS_MENU_HARDWARE_INFO,
|
||||||
|
#endif // TWL_CAPTURE_VERSION
|
||||||
#ifdef USE_WRITE_VARIOUS_DATA
|
#ifdef USE_WRITE_VARIOUS_DATA
|
||||||
AUTO_PROCESS_MENU_VARIOUS_DATA,
|
AUTO_PROCESS_MENU_VARIOUS_DATA,
|
||||||
#endif // USE_WRITE_VARIOUS_DATA
|
#endif // USE_WRITE_VARIOUS_DATA
|
||||||
|
|||||||
@ -100,13 +100,13 @@ TwlMain()
|
|||||||
|
|
||||||
// initialize file-system
|
// initialize file-system
|
||||||
FS_Init(FS_DMA_NOT_USE);
|
FS_Init(FS_DMA_NOT_USE);
|
||||||
|
|
||||||
// SDカードの挿抜イベント監視コールバック設定
|
// SDカードの挿抜イベント監視コールバック設定
|
||||||
// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||||
|
|
||||||
// FS_Initの後の方が良い模様
|
// FS_Initの後の方が良い模様
|
||||||
InitAllocation();
|
InitAllocation();
|
||||||
|
|
||||||
|
|
||||||
// 表示関連初期化
|
// 表示関連初期化
|
||||||
InitGraphics();
|
InitGraphics();
|
||||||
kamiFontInit();
|
kamiFontInit();
|
||||||
@ -118,7 +118,7 @@ TwlMain()
|
|||||||
SDK_ASSERT(p_table != NULL);
|
SDK_ASSERT(p_table != NULL);
|
||||||
(void)FS_LoadTable(p_table, need_size);
|
(void)FS_LoadTable(p_table, need_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初期シーケンス設定
|
// 初期シーケンス設定
|
||||||
sProcess = TopmenuProcess0;
|
sProcess = TopmenuProcess0;
|
||||||
|
|
||||||
@ -140,7 +140,10 @@ TwlMain()
|
|||||||
// NAMライブラリ初期化
|
// NAMライブラリ初期化
|
||||||
NAM_Init( OS_AllocFromMain, OS_FreeToMain);
|
NAM_Init( OS_AllocFromMain, OS_FreeToMain);
|
||||||
NAMUT_Init( OS_AllocFromMain, OS_FreeToMain);
|
NAMUT_Init( OS_AllocFromMain, OS_FreeToMain);
|
||||||
|
|
||||||
|
#ifdef TWL_CAPTURE_VERSION
|
||||||
|
kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" );
|
||||||
|
#else
|
||||||
// HWInfo関連の前準備
|
// HWInfo関連の前準備
|
||||||
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
|
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
|
||||||
{
|
{
|
||||||
@ -157,7 +160,7 @@ TwlMain()
|
|||||||
kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" );
|
kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -30,6 +30,12 @@
|
|||||||
#include "cursor.h"
|
#include "cursor.h"
|
||||||
#include "keypad.h"
|
#include "keypad.h"
|
||||||
|
|
||||||
|
#ifdef TWL_CAPTURE_VERSION
|
||||||
|
// TWLCAPTURE<52>¶ŽY<C5BD>H’ö<E28099>‘‚«<E2809A>ž‚Ý—p
|
||||||
|
#include "process_nandfirm_twlc.h"
|
||||||
|
#include "process_import_twlc.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
型定義
|
型定義
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
@ -83,8 +89,8 @@ void* AutoProcess0(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// メニュー初期化
|
// メニュー初期化
|
||||||
sMenuSelectNo = 0;
|
// sMenuSelectNo = 0; for twlcapturedebug
|
||||||
|
sMenuSelectNo = AUTO_PROCESS_MENU_IMPORT_TAD;
|
||||||
// カーソル消去
|
// カーソル消去
|
||||||
SetCursorPos((u16)200, (u16)200);
|
SetCursorPos((u16)200, (u16)200);
|
||||||
|
|
||||||
@ -108,19 +114,30 @@ void* AutoProcess1(void)
|
|||||||
case AUTO_PROCESS_MENU_FORMAT:
|
case AUTO_PROCESS_MENU_FORMAT:
|
||||||
return FormatProcess0;
|
return FormatProcess0;
|
||||||
|
|
||||||
|
#ifndef TWL_CAPTURE_VERSION
|
||||||
case AUTO_PROCESS_MENU_HARDWARE_INFO:
|
case AUTO_PROCESS_MENU_HARDWARE_INFO:
|
||||||
return HWInfoProcess0;
|
return HWInfoProcess0;
|
||||||
|
#endif // TWL_CAPTURE_VERSION
|
||||||
|
|
||||||
#ifdef USE_WRITE_VARIOUS_DATA
|
#ifdef USE_WRITE_VARIOUS_DATA
|
||||||
case AUTO_PROCESS_MENU_VARIOUS_DATA:
|
case AUTO_PROCESS_MENU_VARIOUS_DATA:
|
||||||
return WriteDataProcess0;
|
return WriteDataProcess0;
|
||||||
#endif // USE_WRITE_VARIOUS_DATA
|
#endif // USE_WRITE_VARIOUS_DATA
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TWL_CAPTURE_VERSION
|
||||||
|
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
||||||
|
return ImportProcessTWLC0;
|
||||||
|
|
||||||
|
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
||||||
|
return NandfirmProcessTWLC0;
|
||||||
|
#else
|
||||||
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
||||||
return ImportProcess0;
|
return ImportProcess0;
|
||||||
|
|
||||||
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
||||||
return NandfirmProcess0;
|
return NandfirmProcess0;
|
||||||
|
#endif // TWL_CAPTURE_VERSION
|
||||||
|
|
||||||
case AUTO_PROCESS_MENU_MCU:
|
case AUTO_PROCESS_MENU_MCU:
|
||||||
return mcuProcess0;
|
return mcuProcess0;
|
||||||
@ -170,7 +187,9 @@ void* AutoProcess2(void)
|
|||||||
|
|
||||||
// メニュー一覧
|
// メニュー一覧
|
||||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " FORMAT NAND ");
|
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " FORMAT NAND ");
|
||||||
|
#ifndef TWL_CAPTURE_VERSION
|
||||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE HARDWARE INFO ");
|
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE HARDWARE INFO ");
|
||||||
|
#endif
|
||||||
#ifdef USE_WRITE_VARIOUS_DATA
|
#ifdef USE_WRITE_VARIOUS_DATA
|
||||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE VARIOUS DATA ");
|
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE VARIOUS DATA ");
|
||||||
#endif // USE_WRITE_VARIOUS_DATA
|
#endif // USE_WRITE_VARIOUS_DATA
|
||||||
|
|||||||
@ -217,13 +217,14 @@ void* TopmenuProcess1(void)
|
|||||||
|
|
||||||
void* TopmenuProcess2(void)
|
void* TopmenuProcess2(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#ifndef TWL_CAPTURE_VERSION
|
||||||
switch ( sMenuSelectNo )
|
switch ( sMenuSelectNo )
|
||||||
{
|
{
|
||||||
case MENU_FORMAT:
|
case MENU_FORMAT:
|
||||||
FADE_OUT_RETURN( FormatProcess0 );
|
FADE_OUT_RETURN( FormatProcess0 );
|
||||||
case MENU_HARDWARE_INFO:
|
case MENU_HARDWARE_INFO:
|
||||||
FADE_OUT_RETURN( HWInfoProcess0 );
|
FADE_OUT_RETURN( HWInfoProcess0 );
|
||||||
|
|
||||||
#ifdef USE_WIRELESS_FORCE_DISABLE_SETTING
|
#ifdef USE_WIRELESS_FORCE_DISABLE_SETTING
|
||||||
case MENU_WIRELESS_SETTING:
|
case MENU_WIRELESS_SETTING:
|
||||||
FADE_OUT_RETURN( WirelessSettingProcess0 );
|
FADE_OUT_RETURN( WirelessSettingProcess0 );
|
||||||
@ -245,7 +246,7 @@ void* TopmenuProcess2(void)
|
|||||||
FADE_OUT_RETURN( mcuProcess0 );
|
FADE_OUT_RETURN( mcuProcess0 );
|
||||||
#endif // NAND_INITIALIZER_LIMITED_MODE
|
#endif // NAND_INITIALIZER_LIMITED_MODE
|
||||||
}
|
}
|
||||||
|
#endif // TWL_CAPTURE_VERSION
|
||||||
return TopmenuProcess1;
|
return TopmenuProcess1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -100,12 +100,10 @@ void* NandfirmProcessTWLC1(void)
|
|||||||
static BOOL writebackFirm( void )
|
static BOOL writebackFirm( void )
|
||||||
{
|
{
|
||||||
u8 *pBuf;
|
u8 *pBuf;
|
||||||
u8 *pVerifyBuf;
|
|
||||||
u32 allocSize;
|
u32 allocSize;
|
||||||
u32 fileSize = (u32)(&nandfirm_end) - (u32)(&nandfirm_begin);
|
u32 fileSize = (u32)(&nandfirm_end) - (u32)(&nandfirm_begin);
|
||||||
u32 nandfirmSize = fileSize - NANDFIRM_FILE_START_OFFSET;
|
u32 nandfirmSize = fileSize - NANDFIRM_FILE_START_OFFSET;
|
||||||
u32 writeBlock;
|
u32 writeBlock;
|
||||||
u16 crc1,crc2;
|
|
||||||
BOOL ret = TRUE;
|
BOOL ret = TRUE;
|
||||||
|
|
||||||
if( 800*1024 < fileSize )
|
if( 800*1024 < fileSize )
|
||||||
|
|||||||
@ -13,8 +13,28 @@ NandInitializer
|
|||||||
|
|
||||||
##つかいかた
|
##つかいかた
|
||||||
|
|
||||||
1. ARM9.TWL/data/dev,prod以下に書き込むtadファイルとnandfirmを入れる
|
1. 以下の配置で書き込みたいtadファイルとnandfirmを入れる
|
||||||
(既にオブジェクトファイル化したものがあるならそれでもOK、
|
|
||||||
ただし、[gamecode].beginと[gamecode].endを
|
-ARM9.TWL---include
|
||||||
開始、終了位置シンボルとして埋め込んでいないと駄目)
|
|-src
|
||||||
2. ./make.rb [dev または prod または full]
|
--data---dev---HNAA.tad(開発ビルド用tad)
|
||||||
|
| |-HNBA.tad
|
||||||
|
| |-HNCA.tad
|
||||||
|
| |-HNHA.tad
|
||||||
|
| |-HNLA.tad
|
||||||
|
| --nandfirm.nand
|
||||||
|
|
|
||||||
|
--prod---HNAA.tad(量産用ビルドtad,要mastering,cls)
|
||||||
|
|-HNBA.tad
|
||||||
|
|-HNCA.tad
|
||||||
|
|-HNHA.tad
|
||||||
|
|-HNLA.tad
|
||||||
|
--nandfirm.nand
|
||||||
|
|
||||||
|
2. ./make.rb [dev/prod/full]
|
||||||
|
|
||||||
|
|
||||||
|
・もし該当するtad/nandファイルが無ければ既に配置してある.oファイルを利用する。
|
||||||
|
|
||||||
|
|
||||||
|
※あとでちゃんとしたMakefileを書く予定
|
||||||
|
|||||||
159
build/systemMenu_tools/TWLCaptureSystemWriter/make.rb
Executable file
159
build/systemMenu_tools/TWLCaptureSystemWriter/make.rb
Executable file
@ -0,0 +1,159 @@
|
|||||||
|
#!ruby
|
||||||
|
# build TwlIPL Root -> build nandfirm -> convert nandfirm ->
|
||||||
|
# build systemlogreader -> build gcdfirm
|
||||||
|
# 実行時引数に"dev"を渡すと開発ビルド(default)、"prod"を渡すと量産ビルドを生成
|
||||||
|
|
||||||
|
# mastering.TWL.exeにパスが通っている環境
|
||||||
|
#MASTERING = "mastering"
|
||||||
|
# mastering.TWL.exeにパスが通っていない環境
|
||||||
|
MASTERING = ENV['TWL_IPL_RED_PRIVATE_ROOT'] + "/tools/bin/mastering.TWL.exe -i " +
|
||||||
|
ENV['TWL_IPL_RED_PRIVATE_ROOT'] + "/tools/bin/mastering.TWL.ini -s -t"
|
||||||
|
|
||||||
|
BIN2OBJ = ENV['TWLSDK_ROOT'] + '/tools/bin/bin2obj.TWL.exe'
|
||||||
|
TARGET_BIN = "TWLCaptureSystemWriter"
|
||||||
|
INCLUDE_FILE = ['HNAA', 'HNBA', 'HNCA', 'HNHA', 'HNLA', 'nandfirm']
|
||||||
|
ROOT_DIR = ENV['TWL_IPL_RED_ROOT'] + "/build/systemMenu_tools/#{TARGET_BIN}"
|
||||||
|
def putex(str)
|
||||||
|
# puts command and execute
|
||||||
|
puts 'execute : ' + str
|
||||||
|
system str
|
||||||
|
end
|
||||||
|
|
||||||
|
def namesafix(basename)
|
||||||
|
if basename == 'nandfirm'
|
||||||
|
return 'nand'
|
||||||
|
else
|
||||||
|
return 'tad'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# .tad/.nandを探す
|
||||||
|
def checkOriginalFile(basename)
|
||||||
|
return Dir.entries(".").include?("#{basename}.#{namesafix(basename)}")
|
||||||
|
end
|
||||||
|
|
||||||
|
def checkObjectFile(basename)
|
||||||
|
return Dir.entries(".").include?("#{basename}.o")
|
||||||
|
end
|
||||||
|
|
||||||
|
def convertToObj(basename)
|
||||||
|
putex("#{BIN2OBJ} -b #{basename.downcase}_begin -e #{basename.downcase}_end #{basename}.#{namesafix(basename)} #{basename}.o")
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_TWLIPLTree(prodopt)
|
||||||
|
Dir.chdir(ENV['TWL_IPL_RED_ROOT']) do
|
||||||
|
putex "make -f Makefile.full clean; " +
|
||||||
|
"makesp CYGPATH_NOCMD=TRUE -j 2 -f Makefile.full TWL_FINALROM=TRUE #{prodopt}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_target(buildtype, prodopt)
|
||||||
|
# build target
|
||||||
|
putex "makesp CYGPATH_NOCMD=TRUE -j 2 clean; makesp CYGPATH_NOCMD=TRUE -j 2 TWL_FINALROM=TRUE #{prodopt}"
|
||||||
|
Dir.chdir(ROOT_DIR + "/ARM9.TWL/bin/ARM9-TS.LTD.thumb/Rom") do
|
||||||
|
if buildtype == "dev"
|
||||||
|
putex "cp ./#{TARGET_BIN}.srl $TWL_IPL_RED_ROOT/build/gcdfirm/memory-launcher-writer/"
|
||||||
|
else
|
||||||
|
# 量産用の場合はsrlにマスタリングをかける
|
||||||
|
putex "#{MASTERING} #{TARGET_BIN}.srl #{TARGET_BIN}.srl.master -s -t"
|
||||||
|
putex "cp ./#{TARGET_BIN}.srl.master $TWL_IPL_RED_ROOT/build/gcdfirm/memory-launcher-writer/#{TARGET_BIN}.srl"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_nandfirm(prodopt)
|
||||||
|
|
||||||
|
kDir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/nandfirm/menu-launcher") do
|
||||||
|
putex "make clean; make TWL_FINALROM=TRUE #{prodopt}"
|
||||||
|
nandfirm = Dir.glob("menu_launcher*#{buildtype}.nand")
|
||||||
|
if nandfirm.none?
|
||||||
|
puts "build nandfirm failed."
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
nandfirm = nandfirm[0]
|
||||||
|
end
|
||||||
|
putex "$TWLSDK_ROOT/tools/bin/bin2obj.TWL.exe #{nandfirm} nandfirm.#{buildtype}.o " +
|
||||||
|
"-b nandfirm_begin -e nandfirm_end"
|
||||||
|
putex "cp nandfirm.#{buildtype}.o #{ROOT_DIR}/ARM9.TWL/nandfirm/"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_includeFile(buildtype)
|
||||||
|
Dir.chdir(ROOT_DIR + "/ARM9.TWL/data/#{buildtype}") do
|
||||||
|
INCLUDE_FILE.each do |f|
|
||||||
|
if checkOriginalFile f
|
||||||
|
convertToObj f
|
||||||
|
elsif checkObjectFile f
|
||||||
|
puts "WARNING(#{f}): original file notfound. using object file in existence."
|
||||||
|
else
|
||||||
|
puts "ERROR(#{f}): both tad/nand file and object file is not found."
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def mainproc(buildtype, shortbuild)
|
||||||
|
prodopt = buildtype == "dev"? "FIRM_USE_PRODUCT_KEYS=" : "FIRM_USE_PRODUCT_KEYS=TRUE"
|
||||||
|
puts "buildtype : #{buildtype}"
|
||||||
|
puts "**shortbuild**" if shortbuild
|
||||||
|
|
||||||
|
# build TwlIPL Root
|
||||||
|
unless shortbuild
|
||||||
|
build_TWLIPLTree(prodopt)
|
||||||
|
end
|
||||||
|
|
||||||
|
build_includeFile buildtype
|
||||||
|
build_target buildtype, prodopt
|
||||||
|
build_gcdfirm(buildtype, prodopt)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def build_gcdfirm(buildtype, prodopt)
|
||||||
|
|
||||||
|
# build memory_launcher
|
||||||
|
Dir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/nandfirm/memory-launcher") do
|
||||||
|
putex "make clean; make TWL_FINALROM=TRUE #{prodopt}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# build memorylauncherwriter
|
||||||
|
Dir.chdir(ENV['TWL_IPL_RED_ROOT'] + "/build/gcdfirm/memory-launcher-writer") do
|
||||||
|
putex "make clean; make TWL_FINALROM=TRUE APPEND_SRL=#{TARGET_BIN}.srl #{prodopt} "
|
||||||
|
putex "cp ./memory_launcher_writer-FINALROM.gcd " +
|
||||||
|
"$TWL_IPL_RED_ROOT/build/systemMenu_tools/#{TARGET_BIN}/memory_launcher_writer-FINALROM.#{buildtype}.gcd -f"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#=== main ===
|
||||||
|
|
||||||
|
|
||||||
|
shortbuild = false
|
||||||
|
|
||||||
|
# default buildtype = dev
|
||||||
|
if ARGV.none? || ARGV.include?('dev')
|
||||||
|
build = ["dev"]
|
||||||
|
elsif ARGV.include?("prod")
|
||||||
|
build = ["prod"]
|
||||||
|
elsif ARGV.include? "full"
|
||||||
|
build = ["dev", "prod"]
|
||||||
|
else
|
||||||
|
puts "invalid arguments."
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
||||||
|
if ARGV.include? "short"
|
||||||
|
# build=fullでshortbuildは無効
|
||||||
|
if ARGV.include? "full"
|
||||||
|
puts 'build "full" needs to re-build TWLIPL tree.'
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
shortbuild = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
build.each do |b|
|
||||||
|
mainproc(b,shortbuild)
|
||||||
|
end
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user