mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
CSUに含むロム一覧を出力するように変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2358 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f07d989e2f
commit
c899fe82c8
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
#!/bin/ruby
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK
|
||||
# File: sumaker.rb
|
||||
|
||||
@ -26,4 +26,4 @@ then
|
||||
fi
|
||||
|
||||
./tocsu.sh $1
|
||||
ruby toaqua.rb $1
|
||||
./toaqua.rb $1
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
#!/bin/ruby
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - tools
|
||||
# File: toaqua.sh
|
||||
|
||||
Loading…
Reference in New Issue
Block a user