ehbrs_ruby_utils 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/base/format_option.rb +22 -0
  3. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/base/format_player.rb +27 -0
  4. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/base.rb +68 -0
  5. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/beginning/format_player.rb +24 -0
  6. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/beginning.rb +35 -0
  7. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/ending/format_player.rb +32 -0
  8. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters/ending.rb +45 -0
  9. data/lib/ehbrs_ruby_utils/bga/table/whatsapp_formatters.rb +13 -0
  10. data/lib/ehbrs_ruby_utils/cooking_book/build/base_page.rb +42 -0
  11. data/lib/ehbrs_ruby_utils/cooking_book/build/index_page.rb +26 -0
  12. data/lib/ehbrs_ruby_utils/cooking_book/build/recipe_page.rb +26 -0
  13. data/lib/ehbrs_ruby_utils/cooking_book/build.rb +45 -0
  14. data/lib/ehbrs_ruby_utils/cooking_book/project.rb +31 -0
  15. data/lib/ehbrs_ruby_utils/cooking_book/recipe/ingredient.rb +21 -0
  16. data/lib/ehbrs_ruby_utils/cooking_book/recipe/measure.rb +60 -0
  17. data/lib/ehbrs_ruby_utils/cooking_book/recipe/part.rb +32 -0
  18. data/lib/ehbrs_ruby_utils/cooking_book/recipe.rb +37 -0
  19. data/lib/ehbrs_ruby_utils/cooking_book.rb +9 -0
  20. data/lib/ehbrs_ruby_utils/gjt1/manager.rb +8 -5
  21. data/lib/ehbrs_ruby_utils/version.rb +1 -1
  22. data/lib/ehbrs_ruby_utils/vg/wii/file_move.rb +89 -0
  23. data/lib/ehbrs_ruby_utils/vg/wii/game_file.rb +87 -0
  24. data/lib/ehbrs_ruby_utils/vg/wii/wit/image_format.rb +47 -0
  25. data/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump.rb +67 -0
  26. data/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/info.rb +39 -0
  27. data/lib/ehbrs_ruby_utils/vg/wii/wit/path.rb +55 -0
  28. data/lib/ehbrs_ruby_utils/vg/wii/wit.rb +13 -0
  29. data/lib/ehbrs_ruby_utils/vg/wii.rb +11 -0
  30. data/lib/ehbrs_ruby_utils/vg.rb +9 -0
  31. data/spec/lib/ehbrs_ruby_utils/cooking_book/recipe/measure_spec.rb +21 -0
  32. data/spec/lib/ehbrs_ruby_utils/vg/wii/game_file_spec.rb +21 -0
  33. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec.rb +11 -0
  34. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump +27 -0
  35. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml +22 -0
  36. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump +28 -0
  37. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml +21 -0
  38. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump +16 -0
  39. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml +19 -0
  40. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump +28 -0
  41. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml +23 -0
  42. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/path_spec.rb +33 -0
  43. metadata +104 -62
  44. data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_option.rb +0 -18
  45. data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter/format_player.rb +0 -30
  46. data/lib/ehbrs_ruby_utils/bga/table_whatsapp_formatter.rb +0 -66
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'ehbrs/executables'
5
+ require 'ehbrs_ruby_utils/vg/wii/wit/image_format'
6
+ require 'ehbrs_ruby_utils/vg/wii/wit/path'
7
+ require 'fileutils'
8
+
9
+ module EhbrsRubyUtils
10
+ module Vg
11
+ module Wii
12
+ class FileMove
13
+ common_constructor :game, :target do
14
+ self.target = ::EhbrsRubyUtils::Vg::Wii::Wit::Path.assert(target)
15
+ end
16
+
17
+ ['', 'path_', 'type_'].each do |prefix|
18
+ method_name = "#{prefix}change?"
19
+ define_method(method_name) do
20
+ source.send(method_name, target)
21
+ end
22
+ end
23
+
24
+ def run
25
+ [%w[path type], %w[path], %w[type]].each do |parts|
26
+ next unless parts.all? { |part| send("#{part}_change?") }
27
+
28
+ assert_target_dir
29
+ send("change_#{parts.join('_and_')}")
30
+ check_target
31
+ break
32
+ end
33
+ end
34
+
35
+ def source
36
+ game.wit_path
37
+ end
38
+
39
+ private
40
+
41
+ def assert_target_dir
42
+ target.path.parent.mkpath
43
+ end
44
+
45
+ def change_path
46
+ ::FileUtils.mv(source.path, target.path)
47
+ end
48
+
49
+ def change_path_and_type
50
+ ::Ehbrs::Executables.wit.command
51
+ .append(change_path_and_type_args)
52
+ .system!
53
+ check_target
54
+ source.path.unlink
55
+ end
56
+
57
+ def change_path_and_type_args
58
+ r = %w[copy]
59
+ target_image_format.if_present { |v| r << v.option }
60
+ r + [source.path, target.path]
61
+ end
62
+
63
+ def change_type
64
+ ::Ehbrs::Executables.wit.command
65
+ .append(change_type_args)
66
+ .system!
67
+ end
68
+
69
+ def change_type_args
70
+ r = %w[convert]
71
+ target_image_format.if_present { |v| r << v.option }
72
+ r + [target.path]
73
+ end
74
+
75
+ def check_target
76
+ return if ::EhbrsRubyUtils::Vg::Wii::GameFile.new(target.path).valid?
77
+
78
+ raise "Target \"#{target}\" is not a valid Wii game"
79
+ end
80
+
81
+ def target_image_format
82
+ return nil if target.type.blank?
83
+
84
+ ::EhbrsRubyUtils::Vg::Wii::Wit::ImageFormat.by_name(target.type)
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/custom_format'
5
+ require 'ehbrs_ruby_utils/vg/wii/wit/parsers/dump'
6
+ require 'ehbrs_ruby_utils/vg/wii/wit/path'
7
+ require 'pathname'
8
+
9
+ module EhbrsRubyUtils
10
+ module Vg
11
+ module Wii
12
+ class GameFile < ::Pathname
13
+ enable_simple_cache
14
+
15
+ DISC_NUMBER_PATTERN = /disc.?(\d)/i.freeze
16
+
17
+ FORMAT = ::EacRubyUtils::CustomFormat.new(
18
+ b: :basename,
19
+ d: :dirname,
20
+ D: :disc_number,
21
+ e: :extname,
22
+ i: :id6,
23
+ m: :normalized_disc_name,
24
+ n: :disc_name,
25
+ N: :nintendont_basename,
26
+ s: :sanitized_disc_name,
27
+ t: :database_title,
28
+ T: :disc_type
29
+ )
30
+
31
+ def database_title
32
+ properties.fetch('DB title')
33
+ end
34
+
35
+ def disc_name
36
+ properties.fetch('Disc name')
37
+ end
38
+
39
+ def disc_number
40
+ DISC_NUMBER_PATTERN.if_match(basename.to_s, false) { |m| m[1].to_i }.if_present(1)
41
+ end
42
+
43
+ def disc_type
44
+ properties.fetch('File & disc type/type')
45
+ end
46
+
47
+ def format(string)
48
+ FORMAT.format(string).with(self)
49
+ end
50
+
51
+ def normalized_disc_name
52
+ sanitized_disc_name.downcase
53
+ end
54
+
55
+ def nintendont_basename
56
+ n = disc_number
57
+ n == 1 ? 'game' : "disc#{n}"
58
+ end
59
+
60
+ def id6
61
+ properties.fetch('Disc & part IDs/disc')
62
+ end
63
+
64
+ def sanitized_disc_name
65
+ ::ActiveSupport::Inflector.transliterate(disc_name).gsub(/[^0-9a-z ]/i, '')
66
+ end
67
+
68
+ def valid?
69
+ properties.present?
70
+ end
71
+
72
+ def wit_path
73
+ ::EhbrsRubyUtils::Vg::Wii::Wit::Path.new(disc_type, self)
74
+ end
75
+
76
+ private
77
+
78
+ def properties_uncached
79
+ r = ::Ehbrs::Executables.wit.command.append(['dump', to_s]).execute
80
+ return nil unless r.fetch(:exit_code).zero?
81
+
82
+ ::EhbrsRubyUtils::Vg::Wii::Wit::Parsers::Dump.new(r.fetch(:stdout)).properties
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'ehbrs/executables'
5
+ require 'ehbrs_ruby_utils/vg/wii/wit/parsers/info'
6
+
7
+ module EhbrsRubyUtils
8
+ module Vg
9
+ module Wii
10
+ module Wit
11
+ class ImageFormat
12
+ class << self
13
+ SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/.freeze
14
+
15
+ enable_simple_cache
16
+
17
+ def by_name(name)
18
+ all.find { |i| i.name.downcase == name.to_s.downcase } ||
19
+ raise(::ArgumentError, "Image not found with name \"#{name.to_s.downcase}\"" \
20
+ " (Available: #{all.map(&:name).join(', ')})")
21
+ end
22
+
23
+ private
24
+
25
+ def all_uncached
26
+ ::EhbrsRubyUtils::Vg::Wii::Wit::Parsers::Info.new(info_output).images
27
+ .map do |_label, data|
28
+ new(
29
+ *%w[name info option].map { |k| data.fetch(k) },
30
+ *%w[extensions attributes].map { |k| data.fetch(k).to_s.split(/\s+/) }
31
+ )
32
+ end
33
+ end
34
+
35
+ def info_output
36
+ ::Ehbrs::Executables.wit.command
37
+ .append(%w[info image-format --sections])
38
+ .execute!
39
+ end
40
+ end
41
+
42
+ common_constructor :name, :description, :option, :extensions, :attributes
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ module Wit
9
+ module Parsers
10
+ class Dump
11
+ enable_simple_cache
12
+ common_constructor :output
13
+
14
+ # WIA/WII (v1.00,LZMA2.7@100) & Wii
15
+ # ISO/WII & Wii
16
+ # WBFS/WII & Wii
17
+ # ISO/GC & GameCube
18
+ FILE_DISC_TYPE_PATTERN = %r{\A(\S+)/(\S+)\s+(?:\(([^\)]+)\)\s+)?&\s+(\S+)\z}.freeze
19
+
20
+ private
21
+
22
+ def properties_uncached
23
+ r = {}
24
+ output.each_line do |line|
25
+ dump_output_line_to_hash(line).if_present { |v| r.merge!(v) }
26
+ end
27
+ r
28
+ end
29
+
30
+ def dump_output_line_to_hash(line)
31
+ m = /\A\s*([^:]+):\s+(.+)\z/.match(line.strip)
32
+ return nil unless m
33
+
34
+ parse_attribute(m[1].strip, m[2].strip)
35
+ end
36
+
37
+ def line_method_parser(label)
38
+ "parse_#{label}".parameterize.underscore
39
+ end
40
+
41
+ def parse_attribute(label, value)
42
+ method = line_method_parser(label)
43
+ return { label => value } unless respond_to?(method, true)
44
+
45
+ send(method, value).transform_keys { |k| "#{label}/#{k}" }
46
+ end
47
+
48
+ def parse_file_disc_type(value)
49
+ r = FILE_DISC_TYPE_PATTERN.match(value).if_present do |m|
50
+ { type: m[1], platform_acronym: m[2], type_extra: m[3],
51
+ platform_name: m[4] }
52
+ end
53
+ r.if_blank { raise "\"#{FILE_DISC_TYPE_PATTERN}\" does not match \"#{value}\"" }
54
+ end
55
+
56
+ def parse_disc_part_ids(value)
57
+ value.split(',').map(&:strip).map do |v|
58
+ r = v.split('=')
59
+ [r[0].strip, r[1].strip]
60
+ end.to_h
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'ehbrs/executables'
5
+ require 'fileutils'
6
+ require 'inifile'
7
+
8
+ module EhbrsRubyUtils
9
+ module Vg
10
+ module Wii
11
+ module Wit
12
+ module Parsers
13
+ class Info
14
+ SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/.freeze
15
+
16
+ enable_simple_cache
17
+ common_constructor :output
18
+
19
+ private
20
+
21
+ def images_uncached
22
+ ini = ::IniFile.new(content: output)
23
+ r = {}
24
+ ini.sections.each do |section_name|
25
+ image_section_name = parse_image_section_name(section_name)
26
+ r[image_section_name] = ini[section_name] if image_section_name.present?
27
+ end
28
+ r
29
+ end
30
+
31
+ def parse_image_section_name(section_name)
32
+ SECTION_NAME_PATTERN.match(section_name).if_present { |m| m[1] }
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ module Wit
9
+ class Path
10
+ WIT_PATH_PATTERN = /\A(?:([a-z0-9]+):)?(.+)\z/i.freeze
11
+
12
+ class << self
13
+ def assert(source)
14
+ source = parse(source) unless source.is_a?(self)
15
+ source
16
+ end
17
+
18
+ def parse(path)
19
+ WIT_PATH_PATTERN
20
+ .match(path)
21
+ .if_present { |m| new(m[1], m[2]) }
22
+ .if_blank { raise "\"#{WIT_PATH_PATTERN}\" does not match \"#{path}\"" }
23
+ end
24
+ end
25
+
26
+ common_constructor :type, :path do
27
+ self.type = type.to_s.upcase
28
+ self.path = ::Pathname.new(path.to_s)
29
+ end
30
+
31
+ def change?(other)
32
+ type_change?(other) || path_change?(other)
33
+ end
34
+
35
+ def path_change?(other)
36
+ path.expand_path.to_s != other.path.expand_path.to_s
37
+ end
38
+
39
+ def to_s
40
+ r = path.to_s
41
+ r = "#{type.to_s.upcase}:#{r}" if type.present?
42
+ r
43
+ end
44
+
45
+ def type_change?(other)
46
+ return false if other.type.blank?
47
+ return true if type.blank?
48
+
49
+ type != other.type
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ module Wit
9
+ require_sub __FILE__
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/cooking_book/recipe/measure'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::CookingBook::Recipe::Measure do
6
+ describe '#build'
7
+ {
8
+ '1.5 cup' => [1.5, nil, 'cup'],
9
+ '~' => [nil, nil, nil],
10
+ '2/ 3 u' => [2, 3, 'u'],
11
+ '4.5/7.8' => [4.5, 7.8, nil]
12
+ }.each do |source, expected|
13
+ context "when source is \"#{source}\"" do
14
+ let(:instance) { described_class.build(source) }
15
+
16
+ it { expect(instance.numerator).to eq(expected[0]) }
17
+ it { expect(instance.denominator).to eq(expected[1]) }
18
+ it { expect(instance.unit).to eq(expected[2]) }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/vg/wii/game_file'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Vg::Wii::GameFile do
6
+ [['game.iso', 1, 'game'], ['disc1.iso', 1, 'game'], ['disc2.iso', 2, 'disc2'],
7
+ ['Resident Evil - Code - Veronica X (USA) (Disc 1)', 1, 'game'],
8
+ ['Resident Evil - Code - Veronica X (USA) (Disc 2)', 2, 'disc2']].each do |s|
9
+ context "when game file is #{s[0]}" do
10
+ let(:game_file) { described_class.new(s[0]) }
11
+
12
+ it "disc_number should be #{s[1]}" do
13
+ expect(game_file.disc_number).to eq(s[1])
14
+ end
15
+
16
+ it "nintendont_basename should be #{s[2]}" do
17
+ expect(game_file.nintendont_basename).to eq(s[2])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/vg/wii/wit/parsers/dump'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Vg::Wii::Wit::Parsers::Dump do
6
+ include_examples 'source_target_fixtures', __FILE__
7
+
8
+ def source_data(source_file)
9
+ described_class.new(::File.read(source_file)).properties
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/wii/games_untested/Pikmin 2 - New Play Control_ [R92P01].wia
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/games_untested/Pikmin 2 - New Play Control_ [R92P01].wia
5
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: 7af30000/hex = 2062745600 = 1967 MiB, 43.9%, 62950*32K
7
+ WIA file size: 63d2da4e/hex = 1674762830 = 1597 MiB, 35.6%, 81.2%
8
+ File & disc type: WIA/WII (v1.00,LZMA2.7@100) & Wii
9
+ Disc & part IDs: disc=R92P01, ticket=R92P, tmd=R92P, boot=R92P01
10
+ Disc name: PIKMIN2 for Wii
11
+ DB title: Pikmin 2
12
+ ID Region: PAL [PAL ]
13
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
14
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
15
+ Partitions: 1 [encrypted, well signed]
16
+ Directories: 593
17
+ Files: 2376
18
+
19
+ 1 partition table with 1 partition:
20
+
21
+ index type offset .. end off size/hex = size/dec = MiB status
22
+ ----------------------------------------------------------------------------------------
23
+ 0 part.tab 40020 .. 40028 8 = 8 1 partition
24
+ ----------------------------------------------------------------------------------------
25
+ 0.0 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed
26
+ ----------------------------------------------------------------------------------------
27
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/games_untested/Pikmin 2 - New Play Control_
3
+ [R92P01].wia"
4
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
5
+ Scrubbed size: 7af30000/hex = 2062745600 = 1967 MiB, 43.9%, 62950*32K
6
+ WIA file size: 63d2da4e/hex = 1674762830 = 1597 MiB, 35.6%, 81.2%
7
+ File & disc type/type: WIA
8
+ File & disc type/platform_acronym: WII
9
+ File & disc type/type_extra: v1.00,LZMA2.7@100
10
+ File & disc type/platform_name: Wii
11
+ Disc & part IDs/disc: R92P01
12
+ Disc & part IDs/ticket: R92P
13
+ Disc & part IDs/tmd: R92P
14
+ Disc & part IDs/boot: R92P01
15
+ Disc name: PIKMIN2 for Wii
16
+ DB title: Pikmin 2
17
+ ID Region: PAL [PAL ]
18
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
19
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
20
+ Partitions: 1 [encrypted, well signed]
21
+ Directories: '593'
22
+ Files: '2376'
@@ -0,0 +1,28 @@
1
+
2
+ Dump of file pikmin2_pal.iso
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/games_untested/pikmin2_pal.iso
5
+ ISO file size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: 85790000/hex = 2239299584 = 2136 MiB, 47.6%, 68338*32K
7
+ File & disc type: ISO/WII & Wii
8
+ Disc & part IDs: disc=R92P01, ticket=R92P, tmd=R92P, boot=R92P01
9
+ Disc name: PIKMIN2 for Wii
10
+ DB title: Pikmin 2
11
+ ID Region: PAL [PAL ]
12
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
13
+ System menu: v386 = 3.4E
14
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
15
+ Partitions: 2 [encrypted, well signed]
16
+ Directories: 598
17
+ Files: 2421
18
+
19
+ 1 partition table with 2 partitions:
20
+
21
+ index type offset .. end off size/hex = size/dec = MiB status
22
+ ----------------------------------------------------------------------------------------
23
+ 0 part.tab 40020 .. 40030 10 = 16 2 partitions
24
+ ----------------------------------------------------------------------------------------
25
+ 0.0 UPDATE 1 50000 .. a8b8000 a868000 = 176586752 = 168 enc,signed
26
+ 0.1 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed
27
+ ----------------------------------------------------------------------------------------
28
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/games_untested/pikmin2_pal.iso"
3
+ ISO file size: 118240000/hex = 4699979776 = 4482 MiB
4
+ Scrubbed size: 85790000/hex = 2239299584 = 2136 MiB, 47.6%, 68338*32K
5
+ File & disc type/type: ISO
6
+ File & disc type/platform_acronym: WII
7
+ File & disc type/type_extra:
8
+ File & disc type/platform_name: Wii
9
+ Disc & part IDs/disc: R92P01
10
+ Disc & part IDs/ticket: R92P
11
+ Disc & part IDs/tmd: R92P
12
+ Disc & part IDs/boot: R92P01
13
+ Disc name: PIKMIN2 for Wii
14
+ DB title: Pikmin 2
15
+ ID Region: PAL [PAL ]
16
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
17
+ System menu: v386 = 3.4E
18
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
19
+ Partitions: 2 [encrypted, well signed]
20
+ Directories: '598'
21
+ Files: '2421'
@@ -0,0 +1,16 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/gc/RESIDENT EVIL CVX [GCDE08]/disc2.iso
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/disk/games/RESIDENT EVIL CVX [GCDE08]/disc2.iso
5
+ ISO file size: 57058000/hex = 1459978240 = 1392 MiB
6
+ Scrubbed size: 4fcf8000/hex = 1338998784 = 1277 MiB, 91.7%, 40863*32K
7
+ File & disc type: ISO/GC & GameCube
8
+ Disc & part IDs: disc=GCDE08, ticket=...., tmd=-, boot=GCDE08
9
+ Disc name: RESIDENT EVIL CVX
10
+ DB title: Resident Evil Code: Veronica X
11
+ ID Region: NTSC/USA [USA ]
12
+ BI2 Region: 1 [USA]
13
+ Partitions: 1 []
14
+ Directories: 4
15
+ Files: 54
16
+
@@ -0,0 +1,19 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/disk/games/RESIDENT EVIL CVX [GCDE08]/disc2.iso"
3
+ ISO file size: 57058000/hex = 1459978240 = 1392 MiB
4
+ Scrubbed size: 4fcf8000/hex = 1338998784 = 1277 MiB, 91.7%, 40863*32K
5
+ File & disc type/type: ISO
6
+ File & disc type/platform_acronym: GC
7
+ File & disc type/type_extra:
8
+ File & disc type/platform_name: GameCube
9
+ Disc & part IDs/disc: GCDE08
10
+ Disc & part IDs/ticket: "...."
11
+ Disc & part IDs/tmd: "-"
12
+ Disc & part IDs/boot: GCDE08
13
+ Disc name: RESIDENT EVIL CVX
14
+ DB title: 'Resident Evil Code: Veronica X'
15
+ ID Region: NTSC/USA [USA ]
16
+ BI2 Region: 1 [USA]
17
+ Partitions: 1 []
18
+ Directories: '4'
19
+ Files: '54'
@@ -0,0 +1,28 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0
5
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: d0b28000/hex = 3501359104 = 3339 MiB, 74.5%, 106853*32K
7
+ WBFS file size: d1200000/hex = 3508535296 = 3346 MiB, 74.7%, 100.2%
8
+ WBFS fragments: 1+0 = a ratio of 0.00 additional_fragments/GiB
9
+ File & disc type: WBFS/WII & Wii
10
+ Disc & part IDs: disc=RMGE01, ticket=RMGE, tmd=RMGE, boot=RMGE01, wbfs=RMGE01
11
+ Disc name: SUPER MARIO GALAXY
12
+ DB title: Super Mario Galaxy
13
+ ID Region: NTSC/USA [USA ]
14
+ Region setting: 1 [USA] / Jap=128 USA=6 ?=128 Eur=128,128,128,128,128,128 Kor=128
15
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
16
+ Partitions: 1 [encrypted, scrubbed, well signed]
17
+ Directories: 79
18
+ Files: 2383
19
+
20
+ 1 partition table with 1 partition:
21
+
22
+ index type offset .. end off size/hex = size/dec = MiB status
23
+ ----------------------------------------------------------------------------------------
24
+ 0 part.tab 40020 .. 40028 8 = 8 1 partition
25
+ ----------------------------------------------------------------------------------------
26
+ 0.0 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed,scrub
27
+ ----------------------------------------------------------------------------------------
28
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0"
3
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
4
+ Scrubbed size: d0b28000/hex = 3501359104 = 3339 MiB, 74.5%, 106853*32K
5
+ WBFS file size: d1200000/hex = 3508535296 = 3346 MiB, 74.7%, 100.2%
6
+ WBFS fragments: 1+0 = a ratio of 0.00 additional_fragments/GiB
7
+ File & disc type/type: WBFS
8
+ File & disc type/platform_acronym: WII
9
+ File & disc type/type_extra:
10
+ File & disc type/platform_name: Wii
11
+ Disc & part IDs/disc: RMGE01
12
+ Disc & part IDs/ticket: RMGE
13
+ Disc & part IDs/tmd: RMGE
14
+ Disc & part IDs/boot: RMGE01
15
+ Disc & part IDs/wbfs: RMGE01
16
+ Disc name: SUPER MARIO GALAXY
17
+ DB title: Super Mario Galaxy
18
+ ID Region: NTSC/USA [USA ]
19
+ Region setting: 1 [USA] / Jap=128 USA=6 ?=128 Eur=128,128,128,128,128,128 Kor=128
20
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
21
+ Partitions: 1 [encrypted, scrubbed, well signed]
22
+ Directories: '79'
23
+ Files: '2383'