ehbrs-tools 0.24.0 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.avm.yml +4 -0
- data/.rspec +1 -0
- data/.rubocop.yml +39 -0
- data/Gemfile.lock +286 -0
- data/lib/ehbrs/{core_ext.rb → tools/core_ext.rb} +0 -0
- data/lib/ehbrs/tools/runner/finances/bb_browser.rb +1 -1
- data/lib/ehbrs/tools/runner/fs/selected.rb +19 -22
- data/lib/ehbrs/tools/runner/music/lyrics.rb +69 -0
- data/lib/ehbrs/tools/runner/web_utils/videos/download.rb +20 -10
- data/lib/ehbrs/tools/runner/web_utils/videos/upload.rb +1 -1
- data/lib/ehbrs/tools/version.rb +1 -1
- data/lib/ehbrs/videos/extract/package.rb +2 -2
- data/lib/ehbrs/videos/extract/package_file.rb +0 -1
- data/spec/code/rubocop_spec.rb +3 -0
- data/spec/lib/ehbrs/cooking_book/recipe/measure_spec.rb +21 -0
- data/spec/lib/ehbrs/observers/base_spec.rb +93 -0
- data/spec/lib/ehbrs/tools/runner/fs/used_space_spec.rb +61 -0
- data/spec/lib/ehbrs/tools/runner/vg/ips_spec.rb +31 -0
- data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/expected.rom +0 -0
- data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_0.ips +0 -0
- data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_1.ips +0 -0
- data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/source.rom +0 -0
- data/spec/lib/ehbrs/tools/runner/videos/probe_spec.rb +19 -0
- data/spec/lib/ehbrs/tools/runner/videos/probe_spec_files/fixed.target.yaml +105 -0
- data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec.rb +75 -0
- data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec_files/dts_audio.probe.yaml +90 -0
- data/spec/lib/ehbrs/tools/runner_spec.rb +16 -0
- data/spec/lib/ehbrs/vg/wii/game_file_spec.rb +21 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec.rb +11 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump +27 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml +22 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump +28 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml +21 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump +16 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml +19 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump +28 -0
- data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml +23 -0
- data/spec/lib/ehbrs/vg/wii/wit/path_spec.rb +33 -0
- data/spec/spec_helper/videos.rb +30 -0
- data/spec/spec_helper/videos_files/stub_source.mp4 +0 -0
- data/spec/spec_helper.rb +7 -0
- data/vendor/aranha-parsers/aranha-parsers.gemspec +3 -2
- data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
- data/vendor/aranha-parsers/lib/aranha/parsers/rspec/{source_target_fixtures_example.rb → shared_examples/source_target_fixtures.rb} +0 -0
- data/vendor/aranha-parsers/lib/aranha/parsers/source_address/fetch_content_error.rb +10 -0
- data/vendor/aranha-parsers/lib/aranha/parsers/source_address/http_get.rb +15 -2
- data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/argument_option.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +9 -1
- data/vendor/eac_cli/lib/eac_cli/definition/boolean_option.rb +6 -0
- data/vendor/eac_cli/lib/eac_cli/runner_with/help/builder.rb +3 -3
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +6 -5
- data/vendor/eac_docker/eac_docker.gemspec +2 -2
- data/vendor/eac_docker/lib/eac_docker/rspec/setup.rb +17 -0
- data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
- data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/compact.rb +22 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs_cache.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +36 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +2 -3
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/compact.rb +20 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/string/delimited.rb +16 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +4 -37
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/string_delimited.rb +70 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/compact_spec.rb +20 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/compact_spec.rb +20 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/string/delimited_spec.rb +34 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
- data/vendor/ehbrs_ruby_utils/ehbrs_ruby_utils.gemspec +6 -1
- data/{lib/ehbrs → vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils}/fs/compressed_package.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/fs/selected/build.rb +41 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/fs/selected/build_file.rb +27 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/fs/selected.rb +35 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/fs.rb +10 -0
- data/{lib/ehbrs/fs.rb → vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/music.rb} +2 -2
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb +31 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb +28 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file.rb +11 -8
- data/vendor/ultimate_lyrics/Gemfile +5 -0
- data/vendor/ultimate_lyrics/bin/download_parser_spec_files.rb +94 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/field.rb +83 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/lyrics.rb +13 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/parser.rb +28 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/exclude_item.rb +17 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/extract_item.rb +21 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/item.rb +48 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/replace_fields.rb +13 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/rule.rb +52 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider/url_format.rb +21 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider.rb +92 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/provider_search.rb +43 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/providers_data.xml +355 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/song_metadata/field.rb +24 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/song_metadata.rb +28 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics/version.rb +5 -0
- data/vendor/ultimate_lyrics/lib/ultimate_lyrics.rb +7 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec.rb +20 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__michael_jackson_thriller.source.html +8 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__michael_jackson_thriller.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__milton_nascimento_rouxinol.source.html +8 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__milton_nascimento_rouxinol.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/encyclopaedia_metallum__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__michael_jackson_thriller.source.html +193 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__michael_jackson_thriller.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__milton_nascimento_rouxinol.source.html +193 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__milton_nascimento_rouxinol.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/hindilyrics_net_bollywood_songs__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__michael_jackson_thriller.source.html +87 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__michael_jackson_thriller.target.yaml +36 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__milton_nascimento_rouxinol.source.html +4 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__milton_nascimento_rouxinol.target.yaml +5 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyrics_com__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__michael_jackson_thriller.source.html +2 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__michael_jackson_thriller.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__milton_nascimento_rouxinol.source.html +2 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__milton_nascimento_rouxinol.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsplugin_com__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsreg_com__milton_nascimento_rouxinol.source.html +101 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsreg_com__milton_nascimento_rouxinol.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/lyricsreg_com__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__michael_jackson_thriller.source.html +29 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__michael_jackson_thriller.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__milton_nascimento_rouxinol.source.html +29 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__milton_nascimento_rouxinol.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/mp3lyrics_org__milton_nascimento_rouxinol.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/songlyrics_com__michael_jackson_thriller.source.html +1298 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/songlyrics_com__michael_jackson_thriller.target.yaml +3 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/parser_spec_files/songlyrics_com__michael_jackson_thriller.url +1 -0
- data/vendor/ultimate_lyrics/spec/lib/ultimate_lyrics/provider_search_spec.rb +72 -0
- data/vendor/ultimate_lyrics/spec/rubocop_spec.rb +3 -0
- data/vendor/ultimate_lyrics/spec/spec_helper.rb +4 -0
- data/vendor/ultimate_lyrics/ultimate_lyrics.gemspec +21 -0
- metadata +168 -11
- data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup_include.rb +0 -17
- data/vendor/eac_docker/lib/eac_docker/rspec/setup_include.rb +0 -23
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +0 -35
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/stubbed_ssh.rb +0 -44
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs/observers/base'
|
4
|
+
|
5
|
+
RSpec.describe ::Ehbrs::Observers::Base do
|
6
|
+
let(:instance) { described_class.new }
|
7
|
+
let(:first_value) { 'a value' }
|
8
|
+
let(:same_value) { first_value.dup }
|
9
|
+
let(:different_value) { 'another value' }
|
10
|
+
let(:first_time) { ::Time.required_zone.local(2020, 5, 1, 12, 45, 0) }
|
11
|
+
let(:second_time) { ::Time.required_zone.local(2020, 5, 1, 12, 45, 0) }
|
12
|
+
|
13
|
+
it { expect(instance.records.count).to be_zero }
|
14
|
+
it { expect(instance.last_change_time).to be_blank }
|
15
|
+
it { expect(instance.last_check_time).to be_blank }
|
16
|
+
|
17
|
+
it { expect(instance).to be_changing_value(nil) }
|
18
|
+
it { expect(instance).to be_changing_value(first_value) }
|
19
|
+
it { expect(instance).to be_changing_value(same_value) }
|
20
|
+
it { expect(instance).to be_changing_value(different_value) }
|
21
|
+
|
22
|
+
context 'when firstly checked' do
|
23
|
+
before { instance.check(first_value, first_time) }
|
24
|
+
|
25
|
+
it { expect(instance.records.count).to eq(1) }
|
26
|
+
it { expect(instance.last_value).to eq(first_value) }
|
27
|
+
it { expect(instance).not_to be_changing_value(same_value) }
|
28
|
+
it { expect(instance).to be_changing_value(different_value) }
|
29
|
+
it { expect(instance.last_change_time).to eq(first_time) }
|
30
|
+
it { expect(instance.last_check_time).to eq(first_time) }
|
31
|
+
|
32
|
+
context 'when same first_value is checked' do
|
33
|
+
before { instance.check(same_value, second_time) }
|
34
|
+
|
35
|
+
it { expect(instance.records.count).to eq(1) }
|
36
|
+
it { expect(instance.last_value).to eq(same_value) }
|
37
|
+
it { expect(instance.last_change_time).to eq(first_time) }
|
38
|
+
it { expect(instance.last_check_time).to eq(second_time) }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when different first_value is checked' do
|
42
|
+
before { instance.check(different_value, second_time) }
|
43
|
+
|
44
|
+
it { expect(instance.records.count).to eq(2) }
|
45
|
+
it { expect(instance.last_value).to eq(different_value) }
|
46
|
+
it { expect(instance.last_change_time).to eq(second_time) }
|
47
|
+
it { expect(instance.last_check_time).to eq(second_time) }
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when checked first_value is blank' do
|
51
|
+
context 'when blank_value == :add' do
|
52
|
+
let(:instance) { described_class.new(blank_value: :add) }
|
53
|
+
|
54
|
+
before { instance.check(nil, second_time) }
|
55
|
+
|
56
|
+
it { expect(instance.records.count).to eq(2) }
|
57
|
+
it { expect(instance.last_value).to eq(nil) }
|
58
|
+
it { expect(instance.last_change_time).to eq(second_time) }
|
59
|
+
it { expect(instance.last_check_time).to eq(second_time) }
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when blank_value == :ignore' do
|
63
|
+
let(:instance) { described_class.new(blank_value: :ignore) }
|
64
|
+
|
65
|
+
before { instance.check(nil, second_time) }
|
66
|
+
|
67
|
+
it { expect(instance.records.count).to eq(1) }
|
68
|
+
it { expect(instance.last_value).to eq(first_value) }
|
69
|
+
it { expect(instance.last_change_time).to eq(first_time) }
|
70
|
+
it { expect(instance.last_check_time).to eq(second_time) }
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'when blank_value == :raise' do
|
74
|
+
let(:instance) { described_class.new(blank_value: :raise) }
|
75
|
+
|
76
|
+
before do
|
77
|
+
@exception = nil
|
78
|
+
begin
|
79
|
+
instance.check(nil, second_time)
|
80
|
+
rescue StandardError => e
|
81
|
+
@exception = e
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it { expect(@exception).to be_a(::ArgumentError) } # rubocop:disable RSpec/InstanceVariable
|
86
|
+
it { expect(instance.records.count).to eq(1) }
|
87
|
+
it { expect(instance.last_value).to eq(first_value) }
|
88
|
+
it { expect(instance.last_change_time).to eq(first_time) }
|
89
|
+
it { expect(instance.last_check_time).to eq(second_time) }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/fs/temp'
|
4
|
+
require 'ehbrs/tools/runner'
|
5
|
+
require 'ehbrs/tools/runner/fs/used_space'
|
6
|
+
require 'ehbrs/observers/with_persistence'
|
7
|
+
|
8
|
+
RSpec.describe ::Ehbrs::Tools::Runner::Fs::UsedSpace do
|
9
|
+
let(:target) { ::EacRubyUtils::Fs::Temp.directory }
|
10
|
+
let(:user_dir) { ::EacRubyUtils::Fs::Temp.directory }
|
11
|
+
let(:cached_user_dir) { ::EacRubyUtils::FilesystemCache.new(user_dir) }
|
12
|
+
let(:observers_user_dir) { cached_user_dir.child('observers') }
|
13
|
+
let(:observer_path) do
|
14
|
+
observers_user_dir.child(target.to_s.parameterize).content_path.to_pathname
|
15
|
+
end
|
16
|
+
|
17
|
+
before do
|
18
|
+
allow(::Ehbrs::UserDirs).to receive(:data).and_return(cached_user_dir)
|
19
|
+
end
|
20
|
+
|
21
|
+
after { [target, user_dir].each(&:remove!) }
|
22
|
+
|
23
|
+
it { expect(observer_path).not_to exist }
|
24
|
+
it { expect(cached_user_dir.path.to_pathname).to exist }
|
25
|
+
|
26
|
+
%w[--check --verbose].bool_array_combs.each do |comb|
|
27
|
+
it "run with options #{comb}" do
|
28
|
+
expect { runner_run(*comb, target.to_path) }.not_to raise_error
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when is firstly checked' do
|
33
|
+
before { runner_run('--check', target.to_path) }
|
34
|
+
|
35
|
+
it { expect(observer_path).to exist }
|
36
|
+
it { expect(observer.records.count).to eq(1) }
|
37
|
+
|
38
|
+
context 'when target does not change' do
|
39
|
+
before { runner_run('--check', target.to_path) }
|
40
|
+
|
41
|
+
it { expect(observer.records.count).to eq(1) }
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when target changes' do
|
45
|
+
before do
|
46
|
+
target.join('a_file').write('A' * 1024)
|
47
|
+
runner_run('--check', target.to_path)
|
48
|
+
end
|
49
|
+
|
50
|
+
it { expect(observer.records.count).to eq(2) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def observer
|
55
|
+
::Ehbrs::Observers::WithPersistence.new(observer_path)
|
56
|
+
end
|
57
|
+
|
58
|
+
def runner_run(*args)
|
59
|
+
::Ehbrs::Tools::Runner.run(argv: %w[fs used-space] + args)
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/fs/temp'
|
4
|
+
require 'ehbrs/tools/runner'
|
5
|
+
require 'ehbrs/tools/runner/vg/ips'
|
6
|
+
|
7
|
+
RSpec.describe ::Ehbrs::Tools::Runner::Vg::Ips do
|
8
|
+
let(:source_dir) { ::Pathname.new('ips_spec_files').expand_path __dir__ }
|
9
|
+
let(:source_file) { source_dir / 'source.rom' }
|
10
|
+
let(:patches) { 2.times.map { |i| source_dir / "patch_#{i}.ips" } }
|
11
|
+
|
12
|
+
describe '#run' do
|
13
|
+
let(:output_file) { ::EacRubyUtils::Fs::Temp.file }
|
14
|
+
let(:expected_file) { source_dir / 'expected.rom' }
|
15
|
+
let(:run_argv) do
|
16
|
+
['vg', 'ips', '--output-file', output_file.to_path, source_file.to_path] +
|
17
|
+
patches.map(&:to_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
before do
|
21
|
+
::Ehbrs::Tools::Runner.run(argv: run_argv)
|
22
|
+
end
|
23
|
+
|
24
|
+
after do
|
25
|
+
output_file.unlink if output_file.exist?
|
26
|
+
end
|
27
|
+
|
28
|
+
it { expect(output_file).to exist }
|
29
|
+
it { expect(::FileUtils.compare_file(output_file.to_path, expected_file.to_path)).to be_truthy }
|
30
|
+
end
|
31
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs/tools/runner'
|
4
|
+
|
5
|
+
RSpec.describe ::Ehbrs::Tools::Runner::Videos::Probe do
|
6
|
+
let(:source_file) { stub_video_source_file }
|
7
|
+
let(:target_dir) { ::Pathname.new(__dir__).expand_path / 'probe_spec_files' }
|
8
|
+
let(:target_file) { target_dir / 'fixed.target.yaml' }
|
9
|
+
let(:target_content) { target_file.read.gsub('%%PATH%%', source_file.to_path) }
|
10
|
+
|
11
|
+
let(:argv) { %w[videos probe] + [source_file.to_path] }
|
12
|
+
let(:runner) { ::Ehbrs::Tools::Runner.create(argv: argv) }
|
13
|
+
|
14
|
+
describe '#run' do
|
15
|
+
it do
|
16
|
+
expect { runner.run }.to(output(target_content).to_stdout_from_any_process)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
---
|
2
|
+
:streams:
|
3
|
+
- :index: 0
|
4
|
+
:codec_name: h264
|
5
|
+
:codec_long_name: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
|
6
|
+
:profile: Constrained Baseline
|
7
|
+
:codec_type: video
|
8
|
+
:codec_time_base: 1/50
|
9
|
+
:codec_tag_string: avc1
|
10
|
+
:codec_tag: '0x31637661'
|
11
|
+
:width: 352
|
12
|
+
:height: 288
|
13
|
+
:coded_width: 352
|
14
|
+
:coded_height: 288
|
15
|
+
:has_b_frames: 0
|
16
|
+
:sample_aspect_ratio: '1:1'
|
17
|
+
:display_aspect_ratio: '11:9'
|
18
|
+
:pix_fmt: yuv420p
|
19
|
+
:level: 13
|
20
|
+
:chroma_location: left
|
21
|
+
:refs: 1
|
22
|
+
:is_avc: 'true'
|
23
|
+
:nal_length_size: '4'
|
24
|
+
:r_frame_rate: 25/1
|
25
|
+
:avg_frame_rate: 25/1
|
26
|
+
:time_base: 1/25
|
27
|
+
:start_pts: 0
|
28
|
+
:start_time: '0.000000'
|
29
|
+
:duration_ts: 168
|
30
|
+
:duration: '6.720000'
|
31
|
+
:bit_rate: '112583'
|
32
|
+
:bits_per_raw_sample: '8'
|
33
|
+
:nb_frames: '168'
|
34
|
+
:disposition:
|
35
|
+
:default: 1
|
36
|
+
:dub: 0
|
37
|
+
:original: 0
|
38
|
+
:comment: 0
|
39
|
+
:lyrics: 0
|
40
|
+
:karaoke: 0
|
41
|
+
:forced: 0
|
42
|
+
:hearing_impaired: 0
|
43
|
+
:visual_impaired: 0
|
44
|
+
:clean_effects: 0
|
45
|
+
:attached_pic: 0
|
46
|
+
:timed_thumbnails: 0
|
47
|
+
:tags:
|
48
|
+
:language: und
|
49
|
+
:handler_name: VideoHandler
|
50
|
+
- :index: 1
|
51
|
+
:codec_name: aac
|
52
|
+
:codec_long_name: AAC (Advanced Audio Coding)
|
53
|
+
:profile: LC
|
54
|
+
:codec_type: audio
|
55
|
+
:codec_time_base: 1/44100
|
56
|
+
:codec_tag_string: mp4a
|
57
|
+
:codec_tag: '0x6134706d'
|
58
|
+
:sample_fmt: fltp
|
59
|
+
:sample_rate: '44100'
|
60
|
+
:channels: 2
|
61
|
+
:channel_layout: stereo
|
62
|
+
:bits_per_sample: 0
|
63
|
+
:r_frame_rate: 0/0
|
64
|
+
:avg_frame_rate: 0/0
|
65
|
+
:time_base: 1/44100
|
66
|
+
:start_pts: 0
|
67
|
+
:start_time: '0.000000'
|
68
|
+
:duration_ts: 299008
|
69
|
+
:duration: '6.780227'
|
70
|
+
:bit_rate: '95999'
|
71
|
+
:max_bit_rate: '100304'
|
72
|
+
:nb_frames: '292'
|
73
|
+
:disposition:
|
74
|
+
:default: 1
|
75
|
+
:dub: 0
|
76
|
+
:original: 0
|
77
|
+
:comment: 0
|
78
|
+
:lyrics: 0
|
79
|
+
:karaoke: 0
|
80
|
+
:forced: 0
|
81
|
+
:hearing_impaired: 0
|
82
|
+
:visual_impaired: 0
|
83
|
+
:clean_effects: 0
|
84
|
+
:attached_pic: 0
|
85
|
+
:timed_thumbnails: 0
|
86
|
+
:tags:
|
87
|
+
:creation_time: '2015-05-17T06:08:17.000000Z'
|
88
|
+
:language: und
|
89
|
+
:handler_name: IsoMedia File Produced by Google, 5-11-2011
|
90
|
+
:format:
|
91
|
+
:filename: "%%PATH%%"
|
92
|
+
:nb_streams: 2
|
93
|
+
:nb_programs: 0
|
94
|
+
:format_name: mov,mp4,m4a,3gp,3g2,mj2
|
95
|
+
:format_long_name: QuickTime / MOV
|
96
|
+
:start_time: '0.000000'
|
97
|
+
:duration: '6.780000'
|
98
|
+
:size: '179200'
|
99
|
+
:bit_rate: '211445'
|
100
|
+
:probe_score: 100
|
101
|
+
:tags:
|
102
|
+
:major_brand: mp42
|
103
|
+
:minor_version: '0'
|
104
|
+
:compatible_brands: isommp42
|
105
|
+
:creation_time: '2015-05-17T06:08:17.000000Z'
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs/tools/runner'
|
4
|
+
require 'eac_ruby_utils/fs/temp'
|
5
|
+
require 'ehbrs/tools/runner/videos/unsupported'
|
6
|
+
require 'ehbrs_ruby_utils/videos/container'
|
7
|
+
|
8
|
+
RSpec.describe ::Ehbrs::Tools::Runner::Videos::Unsupported do
|
9
|
+
let(:source_dir) { ::Pathname.new(__dir__).expand_path / 'unsupported_spec_files' }
|
10
|
+
let(:temp_dir) { ::EacRubyUtils::Fs::Temp.directory }
|
11
|
+
let(:dts_audio) do
|
12
|
+
stub_video(['-c:v', 'copy', '-c:a', 'dts', '-strict', '-2'], temp_dir / 'to_fix_file.mp4')
|
13
|
+
end
|
14
|
+
|
15
|
+
['dts_audio'].each do |video_var|
|
16
|
+
context "when source file is #{video_var}" do
|
17
|
+
let(:to_fix_file) { send(video_var) }
|
18
|
+
|
19
|
+
before do
|
20
|
+
to_fix_file
|
21
|
+
end
|
22
|
+
|
23
|
+
after do
|
24
|
+
temp_dir.remove
|
25
|
+
end
|
26
|
+
|
27
|
+
it { expect(to_fix_file.file?).to eq(true) }
|
28
|
+
it { expect(to_fix_file.dirname).to eq(temp_dir) }
|
29
|
+
|
30
|
+
describe '#run' do
|
31
|
+
let(:run_argv) { ['videos', 'unsupported', '-f', temp_dir.to_s] }
|
32
|
+
let(:converted_file) { to_fix_file.basename_sub { |b| "#{b}.converted" } }
|
33
|
+
let(:fixed_file) { to_fix_file.basename_sub { |b| "#{b.basename('.*')}.mkv" } }
|
34
|
+
let(:fixed_file_actual_probe_data) do
|
35
|
+
sanitize_probe_data(::EhbrsRubyUtils::Videos::Container.new(fixed_file).probe_data)
|
36
|
+
end
|
37
|
+
|
38
|
+
let(:fixed_file_expect_probe_file) { source_dir.join("#{video_var}.probe.yaml") }
|
39
|
+
let(:fixed_file_expect_probe_data) do
|
40
|
+
::EacRubyUtils::Yaml.load_file(fixed_file_expect_probe_file)
|
41
|
+
end
|
42
|
+
|
43
|
+
before do
|
44
|
+
::Ehbrs::Tools::Runner.run(argv: run_argv)
|
45
|
+
end
|
46
|
+
|
47
|
+
it { expect(converted_file).to be_a_file }
|
48
|
+
it { expect(fixed_file).to be_a_file }
|
49
|
+
|
50
|
+
it 'has expected probe data' do
|
51
|
+
expect(fixed_file_actual_probe_data).to eq(fixed_file_expect_probe_data)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def sanitize_probe_data(data)
|
56
|
+
sanitize_format_data(data.fetch(:format))
|
57
|
+
data.fetch(:streams).each { |stream_data| sanitize_stream_data(stream_data) }
|
58
|
+
data
|
59
|
+
end
|
60
|
+
|
61
|
+
def sanitize_stream_data(data)
|
62
|
+
data[:tags].if_present do |v|
|
63
|
+
%i[HANDLER_NAME ENCODER].each { |field| v.delete(field) }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def sanitize_format_data(data)
|
68
|
+
data.if_present do |v|
|
69
|
+
%i[filename size bit_rate].each { |field| v.delete(field) }
|
70
|
+
v[:tags].if_present { |vv| vv.delete(:ENCODER) }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
---
|
2
|
+
:streams:
|
3
|
+
- :index: 0
|
4
|
+
:codec_name: h264
|
5
|
+
:codec_long_name: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
|
6
|
+
:profile: Constrained Baseline
|
7
|
+
:codec_type: video
|
8
|
+
:codec_time_base: 1/50
|
9
|
+
:codec_tag_string: "[0][0][0][0]"
|
10
|
+
:codec_tag: '0x0000'
|
11
|
+
:width: 352
|
12
|
+
:height: 288
|
13
|
+
:coded_width: 352
|
14
|
+
:coded_height: 288
|
15
|
+
:has_b_frames: 0
|
16
|
+
:sample_aspect_ratio: '1:1'
|
17
|
+
:display_aspect_ratio: '11:9'
|
18
|
+
:pix_fmt: yuv420p
|
19
|
+
:level: 13
|
20
|
+
:chroma_location: left
|
21
|
+
:field_order: progressive
|
22
|
+
:refs: 1
|
23
|
+
:is_avc: 'true'
|
24
|
+
:nal_length_size: '4'
|
25
|
+
:r_frame_rate: 25/1
|
26
|
+
:avg_frame_rate: 25/1
|
27
|
+
:time_base: 1/1000
|
28
|
+
:start_pts: 23
|
29
|
+
:start_time: '0.023000'
|
30
|
+
:bits_per_raw_sample: '8'
|
31
|
+
:disposition:
|
32
|
+
:default: 1
|
33
|
+
:dub: 0
|
34
|
+
:original: 0
|
35
|
+
:comment: 0
|
36
|
+
:lyrics: 0
|
37
|
+
:karaoke: 0
|
38
|
+
:forced: 0
|
39
|
+
:hearing_impaired: 0
|
40
|
+
:visual_impaired: 0
|
41
|
+
:clean_effects: 0
|
42
|
+
:attached_pic: 0
|
43
|
+
:timed_thumbnails: 0
|
44
|
+
:tags:
|
45
|
+
:DURATION: '00:00:06.743000000'
|
46
|
+
- :index: 1
|
47
|
+
:codec_name: aac
|
48
|
+
:codec_long_name: AAC (Advanced Audio Coding)
|
49
|
+
:profile: LC
|
50
|
+
:codec_type: audio
|
51
|
+
:codec_time_base: 1/44100
|
52
|
+
:codec_tag_string: "[0][0][0][0]"
|
53
|
+
:codec_tag: '0x0000'
|
54
|
+
:sample_fmt: fltp
|
55
|
+
:sample_rate: '44100'
|
56
|
+
:channels: 2
|
57
|
+
:channel_layout: stereo
|
58
|
+
:bits_per_sample: 0
|
59
|
+
:r_frame_rate: 0/0
|
60
|
+
:avg_frame_rate: 0/0
|
61
|
+
:time_base: 1/1000
|
62
|
+
:start_pts: 0
|
63
|
+
:start_time: '0.000000'
|
64
|
+
:disposition:
|
65
|
+
:default: 1
|
66
|
+
:dub: 0
|
67
|
+
:original: 0
|
68
|
+
:comment: 0
|
69
|
+
:lyrics: 0
|
70
|
+
:karaoke: 0
|
71
|
+
:forced: 0
|
72
|
+
:hearing_impaired: 0
|
73
|
+
:visual_impaired: 0
|
74
|
+
:clean_effects: 0
|
75
|
+
:attached_pic: 0
|
76
|
+
:timed_thumbnails: 0
|
77
|
+
:tags:
|
78
|
+
:DURATION: '00:00:06.803000000'
|
79
|
+
:format:
|
80
|
+
:nb_streams: 2
|
81
|
+
:nb_programs: 0
|
82
|
+
:format_name: matroska,webm
|
83
|
+
:format_long_name: Matroska / WebM
|
84
|
+
:start_time: '0.000000'
|
85
|
+
:duration: '6.803000'
|
86
|
+
:probe_score: 100
|
87
|
+
:tags:
|
88
|
+
:COMPATIBLE_BRANDS: isomiso2avc1mp41
|
89
|
+
:MAJOR_BRAND: isom
|
90
|
+
:MINOR_VERSION: '512'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs/tools/runner'
|
4
|
+
require 'ehbrs/tools/version'
|
5
|
+
|
6
|
+
RSpec.describe ::Ehbrs::Tools::Runner do
|
7
|
+
let(:runner) { described_class.create(argv: argv) }
|
8
|
+
|
9
|
+
describe '--version option' do
|
10
|
+
let(:argv) { %w[--version] }
|
11
|
+
|
12
|
+
it do
|
13
|
+
expect { runner.run }.to(output("#{::Ehbrs::Tools::VERSION}\n").to_stdout_from_any_process)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs/vg/wii/game_file'
|
4
|
+
|
5
|
+
RSpec.describe ::Ehbrs::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/vg/wii/wit/parsers/dump'
|
4
|
+
|
5
|
+
RSpec.describe ::Ehbrs::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'
|