diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_auto.h b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_auto.h index c102856a..7aeecf89 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_auto.h +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_auto.h @@ -32,7 +32,9 @@ extern "C" { enum { AUTO_PROCESS_MENU_FORMAT = 0, +#ifndef TWL_CAPTURE_VERSION AUTO_PROCESS_MENU_HARDWARE_INFO, +#endif // TWL_CAPTURE_VERSION #ifdef USE_WRITE_VARIOUS_DATA AUTO_PROCESS_MENU_VARIOUS_DATA, #endif // USE_WRITE_VARIOUS_DATA diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c index 1029d731..a0bb1f21 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c @@ -100,13 +100,13 @@ TwlMain() // initialize file-system FS_Init(FS_DMA_NOT_USE); + // SDカードの挿抜イベント監視コールバック設定 // FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL); // FS_Initの後の方が良い模様 InitAllocation(); - // 表示関連初期化 InitGraphics(); kamiFontInit(); @@ -118,7 +118,7 @@ TwlMain() SDK_ASSERT(p_table != NULL); (void)FS_LoadTable(p_table, need_size); } - + // 初期シーケンス設定 sProcess = TopmenuProcess0; @@ -140,7 +140,10 @@ TwlMain() // NAMライブラリ初期化 NAM_Init( OS_AllocFromMain, OS_FreeToMain); NAMUT_Init( OS_AllocFromMain, OS_FreeToMain); - + +#ifdef TWL_CAPTURE_VERSION + kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" ); +#else // HWInfo関連の前準備 switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain )) { @@ -157,7 +160,7 @@ TwlMain() kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" ); break; } - +#endif while (1) { diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_auto.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_auto.c index a00578c3..16822f0a 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_auto.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_auto.c @@ -30,6 +30,12 @@ #include "cursor.h" #include "keypad.h" +#ifdef TWL_CAPTURE_VERSION +// TWLCAPTURE生産工程書き込み用 +#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); @@ -108,19 +114,30 @@ void* AutoProcess1(void) case AUTO_PROCESS_MENU_FORMAT: return FormatProcess0; +#ifndef TWL_CAPTURE_VERSION case AUTO_PROCESS_MENU_HARDWARE_INFO: return HWInfoProcess0; +#endif // TWL_CAPTURE_VERSION #ifdef USE_WRITE_VARIOUS_DATA case AUTO_PROCESS_MENU_VARIOUS_DATA: return WriteDataProcess0; #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: return ImportProcess0; case AUTO_PROCESS_MENU_IMPORT_NANDFIRM: return NandfirmProcess0; +#endif // TWL_CAPTURE_VERSION case AUTO_PROCESS_MENU_MCU: return mcuProcess0; @@ -170,7 +187,9 @@ void* AutoProcess2(void) // メニュー一覧 kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " FORMAT NAND "); +#ifndef TWL_CAPTURE_VERSION kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE HARDWARE INFO "); +#endif #ifdef USE_WRITE_VARIOUS_DATA kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE VARIOUS DATA "); #endif // USE_WRITE_VARIOUS_DATA diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_topmenu.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_topmenu.c index 9e6bec24..f9e7d167 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_topmenu.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_topmenu.c @@ -217,13 +217,14 @@ void* TopmenuProcess1(void) void* TopmenuProcess2(void) { + +#ifndef TWL_CAPTURE_VERSION switch ( sMenuSelectNo ) { case MENU_FORMAT: FADE_OUT_RETURN( FormatProcess0 ); case MENU_HARDWARE_INFO: FADE_OUT_RETURN( HWInfoProcess0 ); - #ifdef USE_WIRELESS_FORCE_DISABLE_SETTING case MENU_WIRELESS_SETTING: FADE_OUT_RETURN( WirelessSettingProcess0 ); @@ -245,7 +246,7 @@ void* TopmenuProcess2(void) FADE_OUT_RETURN( mcuProcess0 ); #endif // NAND_INITIALIZER_LIMITED_MODE } - +#endif // TWL_CAPTURE_VERSION return TopmenuProcess1; } diff --git a/build/systemMenu_tools/TWLCaptureSystemWriter/ARM9.TWL/src/process_nandfirm_twlc.c b/build/systemMenu_tools/TWLCaptureSystemWriter/ARM9.TWL/src/process_nandfirm_twlc.c index 4548d1f8..71cab92e 100644 --- a/build/systemMenu_tools/TWLCaptureSystemWriter/ARM9.TWL/src/process_nandfirm_twlc.c +++ b/build/systemMenu_tools/TWLCaptureSystemWriter/ARM9.TWL/src/process_nandfirm_twlc.c @@ -100,12 +100,10 @@ void* NandfirmProcessTWLC1(void) static BOOL writebackFirm( void ) { u8 *pBuf; - u8 *pVerifyBuf; u32 allocSize; u32 fileSize = (u32)(&nandfirm_end) - (u32)(&nandfirm_begin); u32 nandfirmSize = fileSize - NANDFIRM_FILE_START_OFFSET; u32 writeBlock; - u16 crc1,crc2; BOOL ret = TRUE; if( 800*1024 < fileSize ) diff --git a/build/systemMenu_tools/TWLCaptureSystemWriter/about.txt b/build/systemMenu_tools/TWLCaptureSystemWriter/about.txt index 2cba8de8..32ddc564 100644 --- a/build/systemMenu_tools/TWLCaptureSystemWriter/about.txt +++ b/build/systemMenu_tools/TWLCaptureSystemWriter/about.txt @@ -13,8 +13,28 @@ NandInitializer ##つかいかた -1. ARM9.TWL/data/dev,prod以下に書き込むtadファイルとnandfirmを入れる -(既にオブジェクトファイル化したものがあるならそれでもOK、 -ただし、[gamecode].beginと[gamecode].endを -開始、終了位置シンボルとして埋め込んでいないと駄目) -2. ./make.rb [dev または prod または full] +1. 以下の配置で書き込みたいtadファイルとnandfirmを入れる + +-ARM9.TWL---include + |-src + --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を書く予定 diff --git a/build/systemMenu_tools/TWLCaptureSystemWriter/make.rb b/build/systemMenu_tools/TWLCaptureSystemWriter/make.rb new file mode 100755 index 00000000..37dd2176 --- /dev/null +++ b/build/systemMenu_tools/TWLCaptureSystemWriter/make.rb @@ -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 +