CSUに含むロム一覧を出力するように変更

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2358 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-09-02 05:14:23 +00:00
parent f07d989e2f
commit c899fe82c8
6 changed files with 132 additions and 40 deletions

View File

@ -70,9 +70,9 @@ SRCDIR = src \
DATA_ROOT = ../data
ROMSET_FILE = ../romset
ROM_CHECKER = ruby ../romchecker.rb
ROM_CHECKER = ../romchecker.rb
SUMAKER = ruby ../sumaker.rb custom
SUMAKER = ../sumaker.rb custom
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
@ -129,7 +129,8 @@ INSTALL_DIR = ../bin
check_rom:
ifeq ($(DISABLE_ROMCHECK),)
$(ROM_CHECKER) $(ROMSET)
$(ROM_CHECKER) $(ROMSET) $(SYSM_REGION)
$(ROM_CHECKER) $(ROMSET) VERUP
endif
#ifeq ($(DISABLE_ROMCHECK),)
# $(ROM_CHECKER) $(DATA_ROOT)/$(ROMSET)

View File

@ -58,7 +58,6 @@ do-something:
-$(REMAKE) TWLSDK_PLATFORM=TWL REGION=USA ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL)
-rm `find . -name "*autogen*"`
-$(REMAKE) TWLSDK_PLATFORM=TWL REGION=EUR ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL)
include $(TWLSDK_ROOT)/build/buildtools/modulerules
else

View File

@ -1,3 +1,4 @@
#!/bin/ruby
#----------------------------------------------------------------------------
# Project: TwlSDK
# File: romchecker.rb
@ -25,15 +26,30 @@ FIX_REGION = [
HEADER = "HN"
ROM_DATA = {
"#{HEADER}A" => ["Launcher", "00030017"],
"#{HEADER}B" => ["本体設定", "00030015"],
"#{HEADER}C" => ["無線ファーム", "0003000f"],
"#{HEADER}D" => ["DSダウンロードプレイ", "00030005"],
"#{HEADER}E" => ["ピクトチャット", "00030005"],
"#{HEADER}F" => ["ショップ", "00030015"],
"#{HEADER}G" => ["フルブラウザ", "00030004"],
"#{HEADER}H" => ["DSハッシュリスト", "0003000f"],
"#{HEADER}I" => ["写真帳", "00030005"],
"#{HEADER}J" => ["ホットスポット", "00030005"],
"#{HEADER}K" => ["DSサウンド", "00030005"],
"#{HEADER}L" => ["バージョンデータ", "0003000f"],
}
REGION_DIRS = {
"aus" => "U",
"euro" => "P",
"jp" => "J",
"usa" => "E",
"AUS" => ["aus", "U"],
"EUR" => ["euro", "P"],
"JPN" => ["jp", "J"],
"USA" => ["usa", "E"],
"VERUP" => ["verup", "UPJE"],
}
REG_PATH = /[a-zA-Z0-9\.\-_]+\/[a-zA-Z0-9\.\-_*]+\z/
NAND_FIRM = "*.nand"
FONT_DATA = "*.dat"
@ -64,43 +80,112 @@ def check_pickuped(path, print_success)
ret
end
def add_rom_list(rom_list, code, region, version)
rom_list << [code, region, version]
end
def check(target_dir)
ret = true
REGION_DIRS.each{|region_dir, region_code|
ALL_REGION.each{|app_code|
# オールリージョンのロムが含まれているかのチェック
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}A*.tad")
#p search_path
ret &= check_pickuped(search_path, false)
}
FIX_REGION.each{|app_code|
# 各リージョン固有のロムが含まれているかのチェック
def make_rom_list(target_dir, region)
region_dir = REGION_DIRS[region][0]
region_codes = (REGION_DIRS[region][1] + "A").unpack("A" * (REGION_DIRS[region][1].size + 1))
p region_codes
# 出力用リスト
rom_list = []
(ALL_REGION + FIX_REGION).each{|app_code|
region_codes.each{|region_code|
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad")
ret &= check_pickuped(search_path, false)
files = Dir.glob(search_path)
files.each{|tad|
add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(tad))
}
}
(ALL_REGION + FIX_REGION).each{|app_code|
# HNxy が 各リージョンごと1つだけ存在するかのチェック
# HNxA と HNxU など、aとuが混在していたりするとここでひっかかる
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}*.tad")
ret &= check_pickuped(search_path, false)
}
# nand firm, font のチェック
search_path = File.join(target_dir, region_dir, NAND_FIRM)
ret &= check_pickuped(search_path, false)
search_path = File.join(target_dir, region_dir, FONT_DATA)
ret &= check_pickuped(search_path, false)
$stdout.printf("\n")
}
write_rom_list(rom_list, "rom_list_#{region}.txt")
end
def write_rom_list(rom_list, file_name)
region_name = {
"A" => "ALL", "E" => "USA", "U" => "AUS", "J" => "JPN", "P" => "EUR"
}
out = ""
sp = [8, 20, 10, 17, 10]
line = ""
sp.each{|s|
line += "+#{"-" * s}"
}
line += "+\n"
out += line
out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%#{sp[2]}s|%-#{sp[3]}s|%#{sp[4]}s|\n",
"コード", "名前", "リージョン", "タイトルID", "バージョン")
out += line
rom_list.each{|rom|
rom_data = ROM_DATA[rom[0]]
out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%-#{sp[2]}s|%8s %8x|%#{sp[4]}s|\n",
rom[0] + rom[1], rom_data[0],region_name[rom[1]], rom_data[1], (rom[0] + rom[1]).unpack("N")[0], rom[2]);
}
out += line
File.open(file_name, "w") {|file|
file.puts out
}
end
def get_rom_version(path)
files = Dir.glob(path)
files[0].slice(/v[0-9]+/).delete("v")
end
def check(target_dir, region)
ret = true
if REGION_DIRS[region] == nil
puts "Invalid region, [JPN, USA, EUR, AUS, VERUP]"
return false
end
region_dir = REGION_DIRS[region][0]
region_code = REGION_DIRS[region][1]
# 出力用リスト
rom_list = []
ALL_REGION.each{|app_code|
# オールリージョンのロムが含まれているかのチェック
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}A*.tad")
if ret &= check_pickuped(search_path, false)
add_rom_list(rom_list, "#{HEADER}#{app_code}", "A", get_rom_version(search_path))
end
}
FIX_REGION.each{|app_code|
# 各リージョン固有のロムが含まれているかのチェック
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad")
if ret &= check_pickuped(search_path, false)
add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(search_path))
end
}
(ALL_REGION + FIX_REGION).each{|app_code|
# HNxy が 各リージョンごと1つだけ存在するかのチェック
# HNxA と HNxU など、aとuが混在していたりするとここでひっかかる
search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}*.tad")
ret &= check_pickuped(search_path, false)
}
# nand firm, font のチェック
search_path = File.join(target_dir, region_dir, NAND_FIRM)
ret &= check_pickuped(search_path, false)
search_path = File.join(target_dir, region_dir, FONT_DATA)
ret &= check_pickuped(search_path, false)
$stdout.printf("\n")
# CSUに含まれているロムの一覧を書き出す
# write_rom_list(rom_list, "rom_list_#{region}.txt")
# make_rom_list(target_dir, region)
ret
end
# こっからメイン
if ARGV.size < 1
p "Usage: #{__FILE__} targetdir"
if ARGV.size < 2
p "Usage: #{__FILE__} targetdir region"
exit -1
end
@ -109,6 +194,11 @@ Dir.chdir(File.dirname(File.expand_path(__FILE__)))
target = ARGV[0]
exit (check target) ? 0 : -1
region = ARGV[1]
make_rom_list(target, region)
if region == "VERUP"
exit 0
else
exit check(target,region) ? 0 : -1
end

View File

@ -1,3 +1,4 @@
#!/bin/ruby
#----------------------------------------------------------------------------
# Project: TwlSDK
# File: sumaker.rb

View File

@ -26,4 +26,4 @@ then
fi
./tocsu.sh $1
ruby toaqua.rb $1
./toaqua.rb $1

View File

@ -1,3 +1,4 @@
#!/bin/ruby
#----------------------------------------------------------------------------
# Project: TwlSDK - tools
# File: toaqua.sh