diff --git a/Cargo.lock b/Cargo.lock index bc72cc4..f4b968c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,16 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli", + "gimli 0.25.0", +] + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli 0.26.1", ] [[package]] @@ -37,18 +46,18 @@ dependencies = [ [[package]] name = "ansi_term" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi 0.3.9", ] [[package]] name = "anyhow" -version = "1.0.44" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" +checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" [[package]] name = "ariadne" @@ -78,11 +87,11 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.62" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091bcdf2da9950f96aa522681ce805e6857f6ca8df73833d35736ab2dc78e152" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" dependencies = [ - "addr2line", + "addr2line 0.17.0", "cc", "cfg-if 1.0.0", "libc", @@ -152,9 +161,9 @@ checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" [[package]] name = "cc" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" dependencies = [ "jobserver", ] @@ -201,9 +210,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10612c0ec0e0a1ff0e97980647cb058a6e7aedb913d01d009c406b8b7d0b26ee" +checksum = "fa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90" dependencies = [ "glob", "libc", @@ -212,9 +221,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", @@ -258,9 +267,9 @@ dependencies = [ [[package]] name = "cpp_demangle" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea47428dc9d2237f3c6bc134472edfd63ebba0af932e783506dcfd66f10d18a" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ "cfg-if 1.0.0", ] @@ -293,7 +302,7 @@ dependencies = [ "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli", + "gimli 0.25.0", "log", "regalloc", "smallvec", @@ -366,9 +375,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" dependencies = [ "cfg-if 1.0.0", ] @@ -423,6 +432,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + [[package]] name = "curlywas" version = "0.1.0" @@ -480,9 +495,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" -version = "0.8.29" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746" +checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" dependencies = [ "cfg-if 1.0.0", ] @@ -515,9 +530,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ "errno-dragonfly", "libc", @@ -641,6 +656,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" + [[package]] name = "glob" version = "0.3.0" @@ -719,9 +740,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] @@ -774,15 +795,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.105" +version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869d572136620d55835903746bcb5cdc54cb2851fd0aeec53220b4bb65ef3013" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "libloading" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0" +checksum = "afe203d669ec979b7128619bae5a63b7b42e9203c1b29146079ee05e2f604b52" dependencies = [ "cfg-if 1.0.0", "winapi 0.3.9", @@ -814,9 +835,9 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -829,7 +850,7 @@ checksum = "7b6e41119d1667465608d36488fa5dcd228057a26c156e25f17f492f38435124" dependencies = [ "cc", "orbclient", - "raw-window-handle", + "raw-window-handle 0.3.4", "tempfile", "wayland-client", "wayland-cursor", @@ -842,9 +863,9 @@ dependencies = [ [[package]] name = "minimal-lexical" -version = "0.1.4" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c64630dcdd71f1a64c435f54885086a0de5d6a12d104d69b165fb7d5286d677" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" @@ -901,9 +922,9 @@ dependencies = [ [[package]] name = "more-asserts" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] name = "net2" @@ -941,9 +962,9 @@ dependencies = [ [[package]] name = "nom" -version = "7.0.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffd9d26838a953b4af82cbeb9f1592c6798916983959be223a7124e992742c1" +checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" dependencies = [ "memchr", "minimal-lexical", @@ -979,9 +1000,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -1009,9 +1030,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "opaque-debug" @@ -1026,7 +1047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c976c5018e7f1db4359616d8b31ef8ae7d9649b11803c0b38fff67fd2999fc8" dependencies = [ "libc", - "raw-window-handle", + "raw-window-handle 0.3.4", "redox_syscall", "sdl2", "sdl2-sys", @@ -1036,9 +1057,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" +checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" [[package]] name = "pbr" @@ -1066,9 +1087,9 @@ checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pkg-config" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "ppv-lite86" @@ -1084,9 +1105,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.30" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc3358ebc67bc8b7fa0c007f945b0b18226f78437d61bec735a9eb96b61ee70" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] @@ -1108,9 +1129,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.10" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "22849d5b648cf354b3d9aa83fc555f3496061bfd3b34e01824c40a621a260aa1" dependencies = [ "proc-macro2", ] @@ -1157,11 +1178,21 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" +checksum = "e28f55143d0548dad60bb4fbdc835a3d7ac6acc3324506450c5fdd6e42903a76" dependencies = [ "libc", + "raw-window-handle 0.4.2", +] + +[[package]] +name = "raw-window-handle" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba75eee94a9d5273a68c9e1e105d9cffe1ef700532325788389e5a83e2522b7" +dependencies = [ + "cty", ] [[package]] @@ -1302,7 +1333,7 @@ dependencies = [ "bitflags", "lazy_static", "libc", - "raw-window-handle", + "raw-window-handle 0.3.4", "sdl2-sys", ] @@ -1323,18 +1354,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.130" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.130" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" dependencies = [ "proc-macro2", "quote", @@ -1386,9 +1417,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "1.0.80" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" +checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" dependencies = [ "proc-macro2", "quote", @@ -1397,9 +1428,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f5515d3add52e0bbdcad7b83c388bb36ba7b754dda3b5f5bc2d38640cdba5c" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" dependencies = [ "filetime", "libc", @@ -1494,9 +1525,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicode-width" @@ -1735,7 +1766,7 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli", + "gimli 0.25.0", "more-asserts", "object 0.26.2", "target-lexicon", @@ -1753,7 +1784,7 @@ dependencies = [ "anyhow", "cfg-if 1.0.0", "cranelift-entity", - "gimli", + "gimli 0.25.0", "indexmap", "log", "more-asserts", @@ -1782,11 +1813,11 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534" dependencies = [ - "addr2line", + "addr2line 0.16.0", "anyhow", "bincode", "cfg-if 1.0.0", - "gimli", + "gimli 0.25.0", "libc", "log", "more-asserts", @@ -2024,7 +2055,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" dependencies = [ - "nom 7.0.0", + "nom 7.1.0", ] [[package]] @@ -2063,18 +2094,18 @@ checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" [[package]] name = "zstd" -version = "0.9.0+zstd.1.5.0" +version = "0.9.1+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccd" +checksum = "538b8347df9257b7fbce37677ef7535c00a3c7bf1f81023cc328ed7fe4b41de8" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.1+zstd.1.5.0" +version = "4.1.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079" +checksum = "9fb4cfe2f6e6d35c5d27ecd9d256c4b6f7933c4895654917460ec56c29336cc1" dependencies = [ "libc", "zstd-sys", @@ -2082,9 +2113,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.1+zstd.1.5.0" +version = "1.6.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" dependencies = [ "cc", "libc", diff --git a/platform/Cargo.lock b/platform/Cargo.lock index fbc9062..cf6abf1 100644 --- a/platform/Cargo.lock +++ b/platform/Cargo.lock @@ -30,9 +30,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.47" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d9ff5d688f1c13395289f67db01d4826b46dd694e7580accdc3e8430f2d98e" +checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" [[package]] name = "ariadne" @@ -51,9 +51,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "bytemuck" -version = "1.7.2" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" +checksum = "439989e6b8c38d1b6570a384ef1e49c8848128f5a97f3914baef02920842712f" [[package]] name = "cc" @@ -110,9 +110,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3825b1e8580894917dc4468cb634a1b4e9745fddc854edad72d9c04644c0319f" +checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" dependencies = [ "cfg-if", ] @@ -158,9 +158,9 @@ dependencies = [ [[package]] name = "fallible_collections" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaefd4190151d458f16f0793d3452d7f13aeb3701566a4cefc4c37598876cc00" +checksum = "52db5973b6a19247baf19b30f41c23a1bfffc2e9ce0a5db2f60e3cd5dc8895f7" dependencies = [ "hashbrown", ] @@ -211,9 +211,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.108" +version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "lodepng" @@ -248,9 +248,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "pbr" @@ -288,9 +288,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "rgb" -version = "0.8.29" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27fa03bb1e3e2941f52d4a555a395a72bf79b0a85fbbaab79447050c97d978c" +checksum = "9a374af9a0e5fdcdd98c1c7b64f05004f9ea2555b6c75f211daa81268a3c50f1" dependencies = [ "bytemuck", ] diff --git a/platform/bin/loader.wasm b/platform/bin/loader.wasm index f80d030..5f6f9da 100644 Binary files a/platform/bin/loader.wasm and b/platform/bin/loader.wasm differ diff --git a/platform/src/loader.cwa b/platform/src/loader.cwa index c1db35d..8c4eadc 100644 --- a/platform/src/loader.cwa +++ b/platform/src/loader.cwa @@ -14,9 +14,9 @@ export fn load_uw8(module_size: i32) -> i32 { } else { copy(0x1e000, 0, module_size); } - copy(0, 0x3c800, 8); + copy(0, 0x3c200, 8); - let base_start = 0x3c808; + let base_start = 0x3c208; let dest = 8; let src = 0x1e001; @@ -170,7 +170,7 @@ fn upkr_bit(context_index: i32) -> i32 { } start fn unpack_base() { - base_end = uncompress(0, 0x3c800); + base_end = uncompress(0, 0x3c200); } data 0 { diff --git a/platform/src/main.rs b/platform/src/main.rs index 3ae45ec..c0809bb 100644 --- a/platform/src/main.rs +++ b/platform/src/main.rs @@ -21,7 +21,7 @@ fn main() -> Result<()> { println!("Compressing platform module"); let platform = uw8_tool::pack( &platform, - uw8_tool::PackConfig::default().with_compression_level(4), + &uw8_tool::PackConfig::default().with_compression_level(4), )?; File::create("bin/platform.uw8")?.write_all(&platform)?; println!("Platform module: {} bytes", platform.len()); diff --git a/src/main.rs b/src/main.rs index 7a13599..27775e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,13 +18,15 @@ fn main() -> Result<()> { match args.subcommand()?.as_ref().map(|s| s.as_str()) { Some("run") => run(args), + Some("pack") => pack(args), Some(other) => { eprintln!("Unknown command '{}'", other); process::exit(1); } None => { println!("Usage:"); - println!(" uw8 run [-w] [-p] [-c] [-l] [-o ] "); + println!(" uw8 run [-w/--watch] [-p/--pack] [-u/--uncompressed] [-l/--level] [-o/--output ] "); + println!(" uw8 pack [-u/--uncompressed] [-l/--level] "); Ok(()) } } @@ -34,13 +36,17 @@ fn run(mut args: Arguments) -> Result<()> { let watch_mode = args.contains(["-w", "--watch"]); let mut config = Config::default(); - config.pack = args.contains(["-p", "--pack"]); - if args.contains(["-c", "--compress"]) { - config.compression = Some(2); - } + if args.contains(["-p", "--pack"]) { + let mut pack = uw8_tool::PackConfig::default(); + if args.contains(["-u", "--uncompressed"]) { + pack = pack.uncompressed(); + } - if let Some(level) = args.opt_value_from_str(["-l", "--level"])? { - config.compression = Some(level); + if let Some(level) = args.opt_value_from_str(["-l", "--level"])? { + pack = pack.with_compression_level(level); + } + + config.pack = Some(pack); } if let Some(path) = @@ -60,7 +66,7 @@ fn run(mut args: Arguments) -> Result<()> { watcher.watch(&filename, notify::RecursiveMode::NonRecursive)?; } - if let Err(err) = load_cart(&filename, &mut uw8, &config) { + if let Err(err) = start_cart(&filename, &mut uw8, &config) { eprintln!("Load error: {}", err); if !watch_mode { exit(1); @@ -70,7 +76,7 @@ fn run(mut args: Arguments) -> Result<()> { while uw8.is_open() { match rx.try_recv() { Ok(DebouncedEvent::Create(_) | DebouncedEvent::Write(_)) => { - if let Err(err) = load_cart(&filename, &mut uw8, &config) { + if let Err(err) = start_cart(&filename, &mut uw8, &config) { eprintln!("Load error: {}", err); } } @@ -86,12 +92,11 @@ fn run(mut args: Arguments) -> Result<()> { #[derive(Default)] struct Config { - pack: bool, - compression: Option, + pack: Option, output_path: Option, } -fn load_cart(filename: &Path, uw8: &mut MicroW8, config: &Config) -> Result<()> { +fn load_cart(filename: &Path, pack: &Option) -> Result> { let mut cart = vec![]; File::open(filename)?.read_to_end(&mut cart)?; @@ -104,15 +109,17 @@ fn load_cart(filename: &Path, uw8: &mut MicroW8, config: &Config) -> Result<()> }; } - if config.pack { - let mut pack_config = uw8_tool::PackConfig::default(); - if let Some(level) = config.compression { - pack_config = pack_config.with_compression_level(level); - } + if let Some(pack_config) = pack { cart = uw8_tool::pack(&cart, pack_config)?; println!("packed size: {} bytes", cart.len()); } + Ok(cart) +} + +fn start_cart(filename: &Path, uw8: &mut MicroW8, config: &Config) -> Result<()> { + let cart = load_cart(filename, &config.pack)?; + if let Some(ref path) = config.output_path { File::create(path)?.write_all(&cart)?; } @@ -124,3 +131,25 @@ fn load_cart(filename: &Path, uw8: &mut MicroW8, config: &Config) -> Result<()> Ok(()) } } + +fn pack(mut args: Arguments) -> Result<()> { + let mut pack_config = uw8_tool::PackConfig::default(); + + if args.contains(["-u", "--uncompressed"]) { + pack_config = pack_config.uncompressed(); + } + + if let Some(level) = args.opt_value_from_str(["-l", "--level"])? { + pack_config = pack_config.with_compression_level(level); + } + + let in_file = args.free_from_os_str::(|s| Ok(s.into()))?; + + let out_file = args.free_from_os_str::(|s| Ok(s.into()))?; + + let cart = load_cart(&in_file, &Some(pack_config))?; + + File::create(out_file)?.write_all(&cart)?; + + Ok(()) +} diff --git a/uw8-tool/Cargo.lock b/uw8-tool/Cargo.lock index 7d55196..dd9f351 100644 --- a/uw8-tool/Cargo.lock +++ b/uw8-tool/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.45" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee10e43ae4a853c0a3591d4e2ada1719e553be18199d9da9d4a83f5927c2f5c7" +checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" [[package]] name = "autocfg" @@ -70,9 +70,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.108" +version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "num-traits" diff --git a/uw8-tool/src/main.rs b/uw8-tool/src/main.rs index 012653d..e63b60c 100644 --- a/uw8-tool/src/main.rs +++ b/uw8-tool/src/main.rs @@ -15,12 +15,12 @@ fn main() -> Result<()> { } "pack" => { let mut config = uw8_tool::PackConfig::default(); - if args.contains(["-c", "--compress"]) { - config = config.with_compression(); + if args.contains(["-u", "--uncompressed"]) { + config = config.uncompressed(); } let source: PathBuf = args.free_from_str()?; let dest: PathBuf = args.free_from_str()?; - uw8_tool::pack_file(&source, &dest, config)?; + uw8_tool::pack_file(&source, &dest, &config)?; } "unpack" => { let source: PathBuf = args.free_from_str()?; diff --git a/uw8-tool/src/pack.rs b/uw8-tool/src/pack.rs index ba8add2..7b2d800 100644 --- a/uw8-tool/src/pack.rs +++ b/uw8-tool/src/pack.rs @@ -18,8 +18,8 @@ pub struct PackConfig { } impl PackConfig { - pub fn with_compression(mut self) -> Self { - self.compression = Some(2); + pub fn uncompressed(mut self) -> Self { + self.compression = None; self } @@ -31,11 +31,11 @@ impl PackConfig { impl Default for PackConfig { fn default() -> PackConfig { - PackConfig { compression: None } + PackConfig { compression: Some(2) } } } -pub fn pack_file(source: &Path, dest: &Path, config: PackConfig) -> Result<()> { +pub fn pack_file(source: &Path, dest: &Path, config: &PackConfig) -> Result<()> { let mut source_data = vec![]; File::open(source)?.read_to_end(&mut source_data)?; @@ -45,7 +45,7 @@ pub fn pack_file(source: &Path, dest: &Path, config: PackConfig) -> Result<()> { Ok(()) } -pub fn pack(data: &[u8], config: PackConfig) -> Result> { +pub fn pack(data: &[u8], config: &PackConfig) -> Result> { let base = BaseModule::for_format_version(1)?; let parsed_module = ParsedModule::parse(data)?; @@ -66,6 +66,7 @@ pub fn pack(data: &[u8], config: PackConfig) -> Result> { }), )); pb.finish(); + std::io::stdout().flush()?; Ok(uw8) } else { let mut uw8 = vec![1];