add old-prob-update to compare script, add reverse option

This commit is contained in:
2022-09-14 23:51:38 +02:00
parent a1dabaf7f9
commit e7aaf1491a
2 changed files with 15 additions and 5 deletions

View File

@@ -2,7 +2,9 @@
configs = [ configs = [
[:master, '-b'], [:master, '-b'],
[:z80, '-b'] [:z80, '-b'],
[:z80, ['-b', '-r']],
['old-prob-update', '-b']
] ]
files = Dir[ARGV[0] + '/*'].select {|f| !(f =~ /\.txt$/) } files = Dir[ARGV[0] + '/*'].select {|f| !(f =~ /\.txt$/) }
@@ -34,8 +36,8 @@ for config in configs
config_results = [] config_results = []
results << config_results results << config_results
for file in files for file in files
if system('cargo', 'run', '--release', 'pack', '-l', '9', config[1], file, '/tmp/out.upk') && 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') && system(*['cargo', 'run', '--release', 'unpack', config[1], '/tmp/out.upk', '/tmp/out.bin'].flatten) &&
File.read(file) == File.read('/tmp/out.bin') File.read(file) == File.read('/tmp/out.bin')
size = File.size('/tmp/out.upk') size = File.size('/tmp/out.upk')
config_results << size config_results << size

View File

@@ -10,12 +10,16 @@ fn main() -> Result<()> {
Some("pack") => { Some("pack") => {
let level = args.opt_value_from_str(["-l", "--level"])?.unwrap_or(2u8); let level = args.opt_value_from_str(["-l", "--level"])?.unwrap_or(2u8);
let use_bitstream = args.contains(["-b", "--bitstream"]); let use_bitstream = args.contains(["-b", "--bitstream"]);
let reverse = args.contains(["-r", "--reverse"]);
let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?; let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?; let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let mut data = vec![]; let mut data = vec![];
File::open(infile)?.read_to_end(&mut data)?; File::open(infile)?.read_to_end(&mut data)?;
if reverse {
data.reverse();
}
let mut pb = pbr::ProgressBar::new(data.len() as u64); let mut pb = pbr::ProgressBar::new(data.len() as u64);
pb.set_units(pbr::Units::Bytes); pb.set_units(pbr::Units::Bytes);
@@ -39,14 +43,18 @@ fn main() -> Result<()> {
} }
Some("unpack") => { Some("unpack") => {
let use_bitstream = args.contains(["-b", "--bitstream"]); let use_bitstream = args.contains(["-b", "--bitstream"]);
let reverse = args.contains(["-r", "--reverse"]);
let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?; let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?; let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let mut data = vec![]; let mut data = vec![];
File::open(infile)?.read_to_end(&mut data)?; File::open(infile)?.read_to_end(&mut data)?;
let packed_data = upkr::unpack(&data, use_bitstream); let mut unpacked_data = upkr::unpack(&data, use_bitstream);
File::create(outfile)?.write_all(&packed_data)?; if reverse {
unpacked_data.reverse();
}
File::create(outfile)?.write_all(&unpacked_data)?;
} }
Some(other) => { Some(other) => {
bail!("Unknown subcommand '{}'", other); bail!("Unknown subcommand '{}'", other);