diff --git a/compare-variants b/compare-variants index 87cee5e..f31260c 100755 --- a/compare-variants +++ b/compare-variants @@ -2,7 +2,9 @@ configs = [ [:master, '-b'], - [:z80, '-b'] + [:z80, '-b'], + [:z80, ['-b', '-r']], + ['old-prob-update', '-b'] ] files = Dir[ARGV[0] + '/*'].select {|f| !(f =~ /\.txt$/) } @@ -34,8 +36,8 @@ for config in configs config_results = [] results << config_results for file in files - if system('cargo', 'run', '--release', 'pack', '-l', '9', config[1], file, '/tmp/out.upk') && - system('cargo', 'run', '--release', 'unpack', config[1], '/tmp/out.upk', '/tmp/out.bin') && + if system(*['cargo', 'run', '--release', 'pack', config[1], file, '/tmp/out.upk'].flatten) && + system(*['cargo', 'run', '--release', 'unpack', config[1], '/tmp/out.upk', '/tmp/out.bin'].flatten) && File.read(file) == File.read('/tmp/out.bin') size = File.size('/tmp/out.upk') config_results << size diff --git a/src/main.rs b/src/main.rs index 711cb32..b809969 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,12 +10,16 @@ fn main() -> Result<()> { Some("pack") => { let level = args.opt_value_from_str(["-l", "--level"])?.unwrap_or(2u8); let use_bitstream = args.contains(["-b", "--bitstream"]); + let reverse = args.contains(["-r", "--reverse"]); let infile = args.free_from_os_str::(|s| Ok(s.into()))?; let outfile = args.free_from_os_str::(|s| Ok(s.into()))?; let mut data = vec![]; File::open(infile)?.read_to_end(&mut data)?; + if reverse { + data.reverse(); + } let mut pb = pbr::ProgressBar::new(data.len() as u64); pb.set_units(pbr::Units::Bytes); @@ -39,14 +43,18 @@ fn main() -> Result<()> { } Some("unpack") => { let use_bitstream = args.contains(["-b", "--bitstream"]); + let reverse = args.contains(["-r", "--reverse"]); let infile = args.free_from_os_str::(|s| Ok(s.into()))?; let outfile = args.free_from_os_str::(|s| Ok(s.into()))?; let mut data = vec![]; File::open(infile)?.read_to_end(&mut data)?; - let packed_data = upkr::unpack(&data, use_bitstream); - File::create(outfile)?.write_all(&packed_data)?; + let mut unpacked_data = upkr::unpack(&data, use_bitstream); + if reverse { + unpacked_data.reverse(); + } + File::create(outfile)?.write_all(&unpacked_data)?; } Some(other) => { bail!("Unknown subcommand '{}'", other);