2 Commits

Author SHA1 Message Date
2ce91ef49c continue TomCat's optimization of the tunnel 2022-06-22 00:18:20 +02:00
7caad08b7c print fractional compressed size 2022-06-22 00:16:35 +02:00
8 changed files with 94 additions and 8 deletions

View File

@@ -27,4 +27,4 @@ webbrowser = { version = "0.6.0", optional = true }
ansi_term = "0.12.1"
cpal = { version = "0.13.5", optional = true }
rubato = { version = "0.11.0", optional = true }
winapi = { version = "0.3.9", features = ["timeapi"], optional = true }
winapi = { version = "0.3.9", features = ["timeapi"], optional = true }

View File

@@ -0,0 +1,74 @@
(module
(import "env" "atan2" (func $atan2 (param f32 f32) (result f32)))
(import "env" "time" (func $time (result f32)))
(import "env" "memory" (memory 4))
(func (export "upd")
(local $y i32)
(local $i i32)
(local $x i32)
(loop $pixels
i32.const 1
local.get $i
local.get $i
i32.const 36928
f32.convert_i32_s
local.get $i
i32.const 320
i32.rem_s
i32.const 160
i32.sub
local.tee $x
local.get $x
i32.mul
local.get $i
i32.const 320
i32.div_s
i32.const 120
i32.sub
local.tee $y
local.get $y
i32.mul
i32.add
f32.convert_i32_s
f32.sqrt
f32.div
i32.const 163
f32.convert_i32_s
call $time
f32.mul
f32.add
i32.trunc_sat_f32_s
i32.const 163
f32.convert_i32_s
local.get $x
f32.convert_i32_s
local.get $y
f32.convert_i32_s
call $atan2
f32.mul
i32.const 64
f32.convert_i32_s
call $time
f32.mul
f32.add
i32.trunc_f32_s
i32.xor
i32.const 4
i32.shr_s
i32.const 15
i32.and
i32.store8 offset=120
i32.add
local.tee $i
i32.const 76800
i32.rem_s
br_if $pixels
)
)
)

View File

@@ -164,7 +164,10 @@ fn load_cart(filename: &Path, config: &Config) -> (Result<Vec<u8>>, Vec<PathBuf>
if let Some(ref pack_config) = config.pack {
cart = uw8_tool::pack(&cart, pack_config)?;
println!("packed size: {} bytes", cart.len());
println!(
"\npacked size: {:.2} bytes",
uw8_tool::compressed_size(&cart)
);
}
if let Some(ref path) = config.output_path {

2
uw8-tool/Cargo.lock generated
View File

@@ -189,7 +189,7 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "upkr"
version = "0.1.0"
source = "git+https://github.com/exoticorn/upkr.git?rev=2e7983fc#2e7983fc650788d98da2eecef2d16f63e849e4a0"
source = "git+https://github.com/exoticorn/upkr.git?rev=d93aec186c9fb91d962c488682a2db125c61306c#d93aec186c9fb91d962c488682a2db125c61306c"
dependencies = [
"anyhow",
"cdivsufsort",

View File

@@ -11,5 +11,5 @@ wasm-encoder = "0.8"
walrus = "0.19"
anyhow = "1"
pico-args = "0.4"
upkr = { git = "https://github.com/exoticorn/upkr.git", rev = "2e7983fc" }
upkr = { git = "https://github.com/exoticorn/upkr.git", rev = "d93aec186c9fb91d962c488682a2db125c61306c" }
pbr = "1"

View File

@@ -286,7 +286,7 @@ impl BaseModule {
pub fn create_binary(path: &Path) -> Result<()> {
let base1 = BaseModule::for_format_version(1)?.to_wasm();
let data = upkr::pack(&base1, 4, None);
let data = upkr::pack(&base1, 4, false, None);
File::create(path)?.write_all(&data)?;
Ok(())
}

View File

@@ -1,7 +1,15 @@
mod base_module;
mod pack;
mod filter_exports;
mod pack;
pub use base_module::BaseModule;
pub use pack::{pack, pack_file, unpack, unpack_file, PackConfig};
pub use filter_exports::filter_exports;
pub use pack::{pack, pack_file, unpack, unpack_file, PackConfig};
pub fn compressed_size(cart: &[u8]) -> f32 {
if cart[0] != 2 {
cart.len() as f32
} else {
upkr::compressed_size(&cart[1..]) + 1.
}
}

View File

@@ -63,6 +63,7 @@ pub fn pack(data: &[u8], config: &PackConfig) -> Result<Vec<u8>> {
uw8.extend_from_slice(&upkr::pack(
&result[8..],
level,
false,
Some(&mut |pos| {
pb.set(pos as u64);
}),
@@ -89,7 +90,7 @@ pub fn unpack(data: Vec<u8>) -> Result<Vec<u8>> {
let (version, data) = match data[0] {
0 => return Ok(data),
1 => (1, data[1..].to_vec()),
2 => (1, upkr::unpack(&data[1..])),
2 => (1, upkr::unpack(&data[1..], false)),
other => bail!("Uknown format version {}", other),
};