From c22dbed34d7436b9d58c4ce5c02bc913053b95a1 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Thu, 26 Feb 2026 13:31:27 -0300 Subject: [PATCH 01/13] feat(0.3.0): migrate frontend from notan to egui and add wasm support --- Cargo.lock | 3343 +++++++++++++++++++++------------- README.md | 10 +- crates/core/Cargo.toml | 5 +- crates/core/src/cartridge.rs | 9 + crates/core/src/prelude.rs | 16 + crates/frontend/Cargo.toml | 31 +- crates/frontend/src/app.rs | 434 +++++ crates/frontend/src/lib.rs | 32 + crates/frontend/src/main.rs | 267 +-- 9 files changed, 2633 insertions(+), 1514 deletions(-) create mode 100644 crates/frontend/src/app.rs create mode 100644 crates/frontend/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 0649c03..bb24c00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,6 +18,96 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" +[[package]] +name = "accesskit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" + +[[package]] +name = "accesskit_atspi_common" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890d241cf51fc784f0ac5ac34dfc847421f8d39da6c7c91a0fcc987db62a8267" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant 5.10.0", +] + +[[package]] +name = "accesskit_consumer" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db81010a6895d8707f9072e6ce98070579b43b717193d2614014abd5cb17dd43" +dependencies = [ + "accesskit", + "hashbrown 0.15.5", +] + +[[package]] +name = "accesskit_macos" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0089e5c0ac0ca281e13ea374773898d9354cc28d15af9f0f7394d44a495b575" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301e55b39cfc15d9c48943ce5f572204a551646700d0e8efa424585f94fec528" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus 5.14.0", +] + +[[package]] +name = "accesskit_windows" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d63dd5041e49c363d83f5419a896ecb074d309c414036f616dc0b04faca971" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "static_assertions", + "windows 0.61.3", + "windows-core 0.61.2", +] + +[[package]] +name = "accesskit_winit" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8cfabe59d0eaca7412bfb1f70198dd31e3b0496fee7e15b066f9c36a1a140a0" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + [[package]] name = "adler2" version = "2.0.1" @@ -31,22 +121,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", ] [[package]] -name = "allocator-api2" -version = "0.2.21" +name = "aho-corasick" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] [[package]] name = "alsa" -version = "0.11.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812947049edcd670a82cd5c73c3661d2e58468577ba8489de58e1a73c04cbd5d" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" dependencies = [ "alsa-sys", "bitflags 2.10.0", @@ -56,9 +150,9 @@ dependencies = [ [[package]] name = "alsa-sys" -version = "0.4.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7569085a265dd3f607ebecce7458eaab2132a84393534c95b18dcbc3f31e04" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" dependencies = [ "libc", "pkg-config", @@ -66,20 +160,23 @@ dependencies = [ [[package]] name = "android-activity" -version = "0.4.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 1.3.2", + "bitflags 2.10.0", "cc", + "cesu8", + "jni", "jni-sys", "libc", "log", - "ndk 0.7.0", + "ndk 0.9.0", "ndk-context", - "ndk-sys 0.4.1+23.1.7779620", - "num_enum 0.6.1", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", ] [[package]] @@ -88,6 +185,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.21" @@ -145,12 +251,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] -name = "approx" -version = "0.5.1" +name = "arboard" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ - "num-traits", + "clipboard-win", + "image", + "log", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "parking_lot", + "percent-encoding", + "windows-sys 0.59.0", + "x11rb", ] [[package]] @@ -165,6 +282,21 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + [[package]] name = "ashpd" version = "0.8.1" @@ -180,7 +312,7 @@ dependencies = [ "serde", "serde_repr", "url", - "zbus", + "zbus 4.4.0", ] [[package]] @@ -245,7 +377,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix", + "rustix 1.1.2", "slab", "windows-sys 0.61.2", ] @@ -287,7 +419,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix", + "rustix 1.1.2", ] [[package]] @@ -298,7 +430,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -313,7 +445,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix", + "rustix 1.1.2", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -333,7 +465,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -342,12 +474,95 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atspi" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus 5.14.0", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names 4.3.1", + "zvariant 5.10.0", +] + +[[package]] +name = "atspi-connection" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus 5.14.0", +] + +[[package]] +name = "atspi-proxies" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" +dependencies = [ + "atspi-common", + "serde", + "zbus 5.14.0", +] + [[package]] name = "autocfg" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -366,51 +581,22 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "block-buffer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" -dependencies = [ - "arrayref", - "byte-tools", -] - [[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", -] - -[[package]] -name = "block-sys" -version = "0.1.0-beta.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" -dependencies = [ - "objc-sys", -] - -[[package]] -name = "block2" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" -dependencies = [ - "block-sys", - "objc2-encode 2.0.0-pre.2", + "generic-array", ] [[package]] name = "block2" -version = "0.6.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.6.3", + "objc2 0.5.2", ] [[package]] @@ -432,17 +618,11 @@ version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" -[[package]] -name = "byte-tools" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" - [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -455,7 +635,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -464,6 +644,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" version = "1.11.1" @@ -472,23 +658,60 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "calloop" -version = "0.10.6" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "log", - "nix 0.25.1", - "slotmap", - "thiserror", - "vec_map", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +dependencies = [ + "bitflags 2.10.0", + "polling", + "rustix 1.1.2", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.4", + "rustix 1.1.2", + "wayland-backend", + "wayland-client", ] [[package]] name = "cc" -version = "1.2.49" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", "jobserver", @@ -503,16 +726,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] -name = "cfg-if" -version = "1.0.4" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] [[package]] -name = "cfg_aliases" -version = "0.1.1" +name = "cfg-if" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -540,6 +766,17 @@ dependencies = [ "rand_core 0.10.0", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.5.53" @@ -571,7 +808,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -581,36 +818,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] -name = "cmake" -version = "0.1.56" +name = "clipboard-win" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b042e5d8a74ae91bb0961acd039822472ec99f8ab0948cbf6d1369588f8be586" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ - "cc", + "error-code", ] [[package]] -name = "color_quant" -version = "1.1.0" +name = "codespan-reporting" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] [[package]] -name = "colorchoice" -version = "1.0.4" +name = "color-hex" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "ecdffb913a326b6c642290a0d0ec8e8d6597291acdc07cc4c9cb4b3635d44cf9" [[package]] -name = "colored" -version = "1.9.4" +name = "colorchoice" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355" -dependencies = [ - "is-terminal", - "lazy_static", - "winapi", -] +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" @@ -642,20 +879,20 @@ dependencies = [ ] [[package]] -name = "console_log" -version = "1.0.0" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "log", - "web-sys", + "core-foundation-sys", + "libc", ] [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -669,13 +906,13 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.22.3" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "foreign-types", "libc", ] @@ -687,52 +924,62 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "libc", ] [[package]] -name = "coreaudio-rs" -version = "0.14.0" +name = "core-graphics-types" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15c3c3cee7c087938f7ad1c3098840b3ef1f1bdc7f6e496336c3b1e7a6f3914" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ "bitflags 2.10.0", + "core-foundation 0.10.1", "libc", - "objc2-audio-toolbox", - "objc2-core-audio", - "objc2-core-audio-types", - "objc2-core-foundation", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" +dependencies = [ + "bindgen", ] [[package]] name = "cpal" -version = "0.17.3" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8942da362c0f0d895d7cac616263f2f9424edc5687364dfd1d25ef7eba506d7" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" dependencies = [ "alsa", + "core-foundation-sys", "coreaudio-rs", "dasp_sample", "jni", "js-sys", "libc", "mach2", - "ndk 0.9.0", + "ndk 0.8.0", "ndk-context", - "num-derive", - "num-traits", - "objc2 0.6.3", - "objc2-audio-toolbox", - "objc2-avf-audio", - "objc2-core-audio", - "objc2-core-audio-types", - "objc2-core-foundation", - "objc2-foundation", + "oboe", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows", + "windows 0.54.0", ] [[package]] @@ -762,96 +1009,39 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crevice_notan" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0b2bca5ce777a79dd787fafb8113f2be4f020e4c2468363b473041f2d9b90" -dependencies = [ - "bytemuck", - "crevice_notan-derive", - "glam", - "mint", -] - -[[package]] -name = "crevice_notan-derive" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c99d1aa96f6017828f2d26743f8d4fa3a80927a2a169b9c5c5871cfb3b51f30" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "generic-array 0.14.7", + "generic-array", "typenum", ] [[package]] -name = "dasp_sample" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" - -[[package]] -name = "deranged" -version = "0.5.5" +name = "cursor-icon" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", -] +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] -name = "digest" -version = "0.7.6" +name = "dasp_sample" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" -dependencies = [ - "generic-array 0.9.1", -] +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] name = "digest" @@ -859,7 +1049,7 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "crypto-common", ] @@ -887,16 +1077,25 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ - "libloading 0.8.9", + "litrs", ] [[package]] @@ -905,24 +1104,150 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + [[package]] name = "ecolor" -version = "0.27.2" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e" +dependencies = [ + "bytemuck", + "color-hex", + "emath", +] + +[[package]] +name = "eframe" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10" +checksum = "457481173e6db5ca9fa2be93a58df8f4c7be639587aeb4853b526c6cf87db4e6" dependencies = [ + "ahash", "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "pollster 0.4.0", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "wgpu", + "windows-sys 0.61.2", + "winit", ] [[package]] name = "egui" -version = "0.27.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584c5d1bf9a67b25778a3323af222dbe1a1feb532190e103901187f92c7fe29a" +checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3" dependencies = [ + "accesskit", "ahash", + "bitflags 2.10.0", + "emath", "epaint", + "log", "nohash-hasher", + "profiling", + "smallvec", + "unicode-segmentation", +] + +[[package]] +name = "egui-wgpu" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d209971c84b2352a06174abdba701af1e552ce56b144d96f2bd50a3c91236" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 2.0.18", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec6687e5bb551702f4ad10ac428bab12acf9d53047ebb1082d4a0ed8c6251a29" +dependencies = [ + "accesskit_winit", + "arboard", + "bytemuck", + "egui", + "log", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_extras" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d01d34e845f01c62e3fded726961092e70417d66570c499b9817ab24674ca4ed" +dependencies = [ + "ahash", + "egui", + "enum-map", + "image", + "log", + "mime_guess2", + "profiling", +] + +[[package]] +name = "egui_glow" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6420863ea1d90e750f75075231a260030ad8a9f30a7cef82cdc966492dc4c4eb" +dependencies = [ + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", ] [[package]] @@ -933,9 +1258,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "emath" -version = "0.27.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f" +checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32" dependencies = [ "bytemuck", ] @@ -946,6 +1271,26 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "enumflags2" version = "0.7.12" @@ -964,24 +1309,33 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] name = "epaint" -version = "0.27.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b381f8b149657a4acf837095351839f32cd5c4aec1817fc4df84e18d76334176" +checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62" dependencies = [ "ab_glyph", "ahash", "bytemuck", "ecolor", "emath", + "epaint_default_fonts", + "log", "nohash-hasher", "parking_lot", + "profiling", ] +[[package]] +name = "epaint_default_fonts" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fbe202b6578d3d56428fa185cdf114a05e49da05f477b3c7f0fbb221f1862" + [[package]] name = "equivalent" version = "1.0.2" @@ -999,13 +1353,10 @@ dependencies = [ ] [[package]] -name = "euclid" -version = "0.22.11" +name = "error-code" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" -dependencies = [ - "num-traits", -] +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "event-listener" @@ -1028,12 +1379,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fastrand" version = "2.3.0" @@ -1041,66 +1386,88 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "fdeflate" -version = "0.3.7" +name = "fax" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" dependencies = [ - "simd-adler32", + "fax_derive", ] [[package]] -name = "fern" -version = "0.6.2" +name = "fax_derive" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ - "colored", - "log", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", ] [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] -name = "float_next_after" -version = "1.0.0" +name = "foldhash" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "foreign-types" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ + "foreign-types-macros", "foreign-types-shared", ] +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "foreign-types-shared" -version = "0.1.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" @@ -1111,21 +1478,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.31" @@ -1133,7 +1485,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", - "futures-sink", ] [[package]] @@ -1142,17 +1493,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - [[package]] name = "futures-io" version = "0.3.31" @@ -1180,7 +1520,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -1201,7 +1541,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1215,21 +1554,22 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.9.1" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d00328cedcac5e81c683e5620ca6a30756fc23027ebf9bff405c0e8da1fbb7e" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", + "version_check", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "gethostname" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "typenum", - "version_check", + "rustix 1.1.2", + "windows-link 0.2.1", ] [[package]] @@ -1252,9 +1592,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasip2", + "wasm-bindgen", ] [[package]] @@ -1264,11 +1606,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "rand_core 0.10.0", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -1283,20 +1627,16 @@ dependencies = [ ] [[package]] -name = "glam" -version = "0.24.2" +name = "glob" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945" -dependencies = [ - "bytemuck", - "mint", -] +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "glow" -version = "0.12.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -1304,67 +1644,58 @@ dependencies = [ "web-sys", ] -[[package]] -name = "glsl-to-spirv" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28caebc98746d507603a2d3df66dcbe04e41d4febad0320f3eec1ef72b6bbef1" -dependencies = [ - "cmake", - "sha2", - "tempfile", -] - [[package]] name = "glutin" -version = "0.30.10" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc93b03242719b8ad39fb26ed2b01737144ce7bd4bfc7adadcef806596760fe" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 1.3.2", - "cfg_aliases 0.1.1", + "bitflags 2.10.0", + "cfg_aliases", "cgl", - "core-foundation", - "dispatch", + "dispatch2", "glutin_egl_sys", "glutin_glx_sys", "glutin_wgl_sys", - "libloading 0.7.4", - "objc2 0.3.0-beta.3.patch-leaks.3", + "libloading", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "once_cell", - "raw-window-handle 0.5.2", - "wayland-sys 0.30.1", - "windows-sys 0.45.0", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", "x11-dl", ] [[package]] name = "glutin-winit" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629a873fc04062830bfe8f97c03773bcd7b371e23bcc465d0a61448cd1588fa4" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" dependencies = [ - "cfg_aliases 0.1.1", + "cfg_aliases", "glutin", - "raw-window-handle 0.5.2", + "raw-window-handle", "winit", ] [[package]] name = "glutin_egl_sys" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af784eb26c5a68ec85391268e074f0aa618c096eadb5d6330b0911cf34fe57c5" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" dependencies = [ "gl_generator", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] name = "glutin_glx_sys" -version = "0.4.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b53cb5fe568964aa066a3ba91eac5ecbac869fb0842cd0dc9e412434f1a1494" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" dependencies = [ "gl_generator", "x11-dl", @@ -1372,59 +1703,74 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.4.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef89398e90033fc6bc65e9bd42fd29bbbfd483bda5b56dc5562f455550618165" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" dependencies = [ "gl_generator", ] [[package]] -name = "glyph_brush" -version = "0.7.12" +name = "gpu-alloc" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0060f4ed4ef64a5876d9836d7d6c9ed43a463f3ca431682bec1c326064c8c93e" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "glyph_brush_draw_cache", - "glyph_brush_layout", - "ordered-float", - "rustc-hash", - "twox-hash", + "bitflags 2.10.0", + "gpu-alloc-types", ] [[package]] -name = "glyph_brush_draw_cache" -version = "0.1.6" +name = "gpu-alloc-types" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6c910def52365fef3f439a6b50a4d5c11b28eec4cf6c191f6dfea18e88d7f" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "ab_glyph", - "crossbeam-channel", - "crossbeam-deque", - "linked-hash-map", - "rayon", - "rustc-hash", + "bitflags 2.10.0", ] [[package]] -name = "glyph_brush_layout" -version = "0.2.4" +name = "gpu-allocator" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1e288bfd2f6c0313f78bf5aa538356ad481a3bb97e9b7f93220ab0066c5992" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" dependencies = [ - "ab_glyph", - "approx", - "xi-unicode", + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", ] [[package]] -name = "hashbrown" -version = "0.14.5" +name = "gpu-descriptor" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "ahash", - "allocator-api2", + "bitflags 2.10.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", ] [[package]] @@ -1433,7 +1779,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -1441,6 +1787,9 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", +] [[package]] name = "heck" @@ -1460,6 +1809,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + [[package]] name = "icu_collections" version = "2.1.1" @@ -1570,16 +1925,16 @@ dependencies = [ [[package]] name = "image" -version = "0.24.9" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", - "byteorder", - "color_quant", - "jpeg-decoder", + "byteorder-lite", + "moxcms", "num-traits", "png", + "tiff", ] [[package]] @@ -1595,34 +1950,20 @@ dependencies = [ ] [[package]] -name = "instant" -version = "0.1.13" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] -name = "is-terminal" -version = "0.4.17" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.61.2", + "either", ] -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - [[package]] name = "itoa" version = "1.0.15" @@ -1640,7 +1981,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -1661,12 +2002,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" version = "0.3.83" @@ -1678,16 +2013,21 @@ dependencies = [ ] [[package]] -name = "khronos_api" -version = "3.1.0" +name = "khronos-egl" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] [[package]] -name = "lazy_static" -version = "1.5.0" +name = "khronos_api" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "leb128fmt" @@ -1701,16 +2041,6 @@ version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - [[package]] name = "libloading" version = "0.8.9" @@ -1718,31 +2048,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link", + "windows-link 0.2.1", ] [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.5.18", + "redox_syscall 0.7.2", ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" @@ -1756,6 +2086,12 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + [[package]] name = "lock_api" version = "0.4.14" @@ -1771,63 +2107,11 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "lyon" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb7d54d54c8937364c9d41902d066656817dce1e03a44e5533afebd1ef4352" -dependencies = [ - "lyon_algorithms", - "lyon_tessellation", -] - -[[package]] -name = "lyon_algorithms" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c0829e28c4f336396f250d850c3987e16ce6db057ffe047ce0dd54aab6b647" -dependencies = [ - "lyon_path", - "num-traits", -] - -[[package]] -name = "lyon_geom" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e260b6de923e6e47adfedf6243013a7a874684165a6a277594ee3906021b2343" -dependencies = [ - "arrayvec", - "euclid", - "num-traits", -] - -[[package]] -name = "lyon_path" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aeca86bcfd632a15984ba029b539ffb811e0a70bf55e814ef8b0f54f506fdeb" -dependencies = [ - "lyon_geom", - "num-traits", -] - -[[package]] -name = "lyon_tessellation" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f586142e1280335b1bc89539f7c97dd80f08fc43e9ab1b74ef0a42b04aa353" -dependencies = [ - "float_next_after", - "lyon_path", - "num-traits", -] - [[package]] name = "mach2" -version = "0.5.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] @@ -1849,31 +2133,61 @@ checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.5.10" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] [[package]] name = "memoffset" -version = "0.6.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] [[package]] -name = "memoffset" -version = "0.9.1" +name = "metal" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "autocfg", + "bitflags 2.10.0", + "block", + "core-graphics-types 0.2.0", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess2" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1706dc14a2e140dec0a7a07109d9a3d5890b81e85bd6c60b906b249a77adf0ca" +dependencies = [ + "mime", + "phf", + "phf_shared", + "unicase", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1885,35 +2199,53 @@ dependencies = [ ] [[package]] -name = "mint" -version = "0.5.9" +name = "moxcms" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +dependencies = [ + "num-traits", + "pxfm", +] [[package]] -name = "mio" -version = "0.8.11" +name = "naga" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ - "libc", + "arrayvec", + "bit-set", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.16.1", + "hexf-parse", + "indexmap", + "libm", "log", - "wasi", - "windows-sys 0.48.0", + "num-traits", + "once_cell", + "rustc-hash 1.1.0", + "spirv", + "thiserror 2.0.18", + "unicode-ident", ] [[package]] name = "ndk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "jni-sys", - "ndk-sys 0.4.1+23.1.7779620", - "num_enum 0.5.11", - "raw-window-handle 0.5.2", - "thiserror", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror 1.0.69", ] [[package]] @@ -1926,8 +2258,9 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.6.0+11769913", - "num_enum 0.7.5", - "thiserror", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", ] [[package]] @@ -1938,9 +2271,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ "jni-sys", ] @@ -1954,31 +2287,6 @@ dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.29.0" @@ -1987,9 +2295,9 @@ checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags 2.10.0", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", - "memoffset 0.9.1", + "memoffset", ] [[package]] @@ -1999,565 +2307,347 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] -name = "notan" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27af34b08b8f61925fa62e3939f28730bc267feadf028f029dd8a2862bdd38ed" -dependencies = [ - "notan_app", - "notan_backend", - "notan_core", - "notan_draw", - "notan_egui", - "notan_glyph", - "notan_graphics", - "notan_input", - "notan_log", - "notan_macro", - "notan_math", - "notan_random", - "notan_text", - "notan_utils", -] - -[[package]] -name = "notan_app" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed53f273ccfea3c7f289e48b6f13b7da96c7124fc78f225a3f0ed2e2525b99aa" -dependencies = [ - "bytemuck", - "downcast-rs", - "futures", - "hashbrown 0.14.5", - "indexmap", - "log", - "notan_core", - "notan_graphics", - "notan_input", - "notan_macro", - "notan_math", - "notan_utils", - "parking_lot", - "platter2", -] - -[[package]] -name = "notan_backend" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46b8489021828ea64e2c13adb49a9a968e0bf212ede2d684850818fd7742154" -dependencies = [ - "notan_web", - "notan_winit", -] - -[[package]] -name = "notan_core" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba391c0d35ad96e4c292187b2721a7e677c3d24bb0c8d2657c26931edbab25e" - -[[package]] -name = "notan_draw" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31fdd377d88ff7ed2482aaf65f59f75b77601636f7762ca7226b6ef87a00929f" -dependencies = [ - "log", - "lyon", - "notan_app", - "notan_glyph", - "notan_graphics", - "notan_macro", - "notan_math", - "notan_text", - "serde", - "serde_json", -] - -[[package]] -name = "notan_egui" -version = "0.12.1" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75f772b10e5a927f54a864b84dd964fdcda84b55e63ce79fda48d8b7a67dabb" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "bytemuck", - "egui", - "log", - "notan_app", - "notan_core", - "notan_macro", -] - -[[package]] -name = "notan_glow" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8335ad97f2c9eab5774c8c7316d7a0a0005a94d31ff20aa785e1aaef3669d16" -dependencies = [ - "bytemuck", - "glow", - "hashbrown 0.14.5", - "image", - "js-sys", - "log", - "notan_graphics", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "notan_glyph" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb3b27835b3dae322ff2be0dd650a044e2f46813de88d135d0c9e827837202a" -dependencies = [ - "bytemuck", - "glyph_brush", - "log", - "notan_app", - "notan_graphics", - "notan_macro", - "notan_math", -] - -[[package]] -name = "notan_graphics" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347a7b0712a2821753ceb97082efb8bd03936eca29947d02593928fb88aafe7f" -dependencies = [ - "bytemuck", - "crevice_notan", - "log", - "notan_macro", - "notan_math", - "notan_utils", - "parking_lot", -] - -[[package]] -name = "notan_input" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b834665f551de040d53e0fc16a78aa0ffe1d6db94b3def640736b09a1d33e" -dependencies = [ - "hashbrown 0.14.5", - "log", - "notan_core", - "notan_math", -] - -[[package]] -name = "notan_log" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44ebd26da10161efaf607fd60d34ce333ffa73f2339e9608321dea48ac78b1cc" -dependencies = [ - "console_log", - "fern", - "js-sys", - "log", - "notan_app", - "time", - "wasm-bindgen", + "memchr", + "minimal-lexical", ] [[package]] -name = "notan_macro" -version = "0.12.1" +name = "num-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2604bae7f0f8a0da36302f2e9f33d837129e1f5c4677dc5b345432e4780a91c" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "cfg_aliases 0.1.1", - "glsl-to-spirv", - "num", "proc-macro2", "quote", - "spirv_cross", - "syn 2.0.111", -] - -[[package]] -name = "notan_math" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13c3a211a3d4abcda2ba3b175932bd30a18b3b8167df5e7053573743cfa396b" -dependencies = [ - "glam", -] - -[[package]] -name = "notan_random" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afe234de70d8e7654bbda7e34ac112b54ec9b7c815fc8d19a1a45fa792d98f0" -dependencies = [ - "getrandom 0.2.16", - "rand 0.8.5", - "rand_pcg", + "syn", ] [[package]] -name = "notan_text" -version = "0.12.1" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30f3f7dff9df064b2e469771959b1d13bf8bb50ec8890f07d5d5a77b199a9bfd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "hashbrown 0.14.5", - "lazy_static", - "log", - "notan_app", - "notan_glyph", - "notan_graphics", - "notan_math", - "parking_lot", + "autocfg", + "libm", ] [[package]] -name = "notan_utils" -version = "0.12.1" +name = "num_enum" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc555d444e66ef996d26c09414de20d4a7fd8df37d2bd9e54adda3e64763160" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ - "instant", - "log", + "num_enum_derive", + "rustversion", ] [[package]] -name = "notan_web" -version = "0.12.1" +name = "num_enum_derive" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9450cc80bed6b49e2474f5021f923774f0fb9b67afa5694ef4cfbcbae67900b" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "console_error_panic_hook", - "futures-util", - "js-sys", - "log", - "notan_app", - "notan_core", - "notan_glow", - "notan_graphics", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "notan_winit" -version = "0.12.1" +name = "objc" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95509984caebcaf39276e2497656a9f0319c9251acd1845d970e840f2382ee32" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ - "glutin", - "glutin-winit", - "image", - "log", - "notan_app", - "notan_core", - "notan_glow", - "raw-window-handle 0.5.2", - "winit", + "malloc_buf", ] [[package]] -name = "num" -version = "0.4.3" +name = "objc-foundation" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", + "block", + "objc", + "objc_id", ] [[package]] -name = "num-bigint" -version = "0.4.6" +name = "objc-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] -name = "num-complex" -version = "0.4.6" +name = "objc2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "num-traits", + "objc-sys", + "objc2-encode", ] [[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-derive" -version = "0.4.2" +name = "objc2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", + "objc2-encode", ] [[package]] -name = "num-integer" -version = "0.1.46" +name = "objc2-app-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "num-traits", + "bitflags 2.10.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", ] [[package]] -name = "num-iter" -version = "0.1.45" +name = "objc2-app-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", ] [[package]] -name = "num-rational" -version = "0.4.2" +name = "objc2-cloud-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "num-bigint", - "num-integer", - "num-traits", + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", ] [[package]] -name = "num-traits" -version = "0.2.19" +name = "objc2-contacts" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "autocfg", - "libm", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "num_enum" -version = "0.5.11" +name = "objc2-core-data" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "num_enum_derive 0.5.11", + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "num_enum" -version = "0.6.1" +name = "objc2-core-foundation" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "num_enum_derive 0.6.1", + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", ] [[package]] -name = "num_enum" -version = "0.7.5" +name = "objc2-core-graphics" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "num_enum_derive 0.7.5", - "rustversion", + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-io-surface", ] [[package]] -name = "num_enum_derive" -version = "0.5.11" +name = "objc2-core-image" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", ] [[package]] -name = "num_enum_derive" -version = "0.6.1" +name = "objc2-core-location" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.111", + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", ] [[package]] -name = "num_enum_derive" -version = "0.7.5" +name = "objc2-encode" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.111", -] +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" [[package]] -name = "num_threads" -version = "0.1.7" +name = "objc2-foundation" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ + "bitflags 2.10.0", + "block2", + "dispatch", "libc", + "objc2 0.5.2", ] [[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - -[[package]] -name = "objc-sys" -version = "0.2.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" - -[[package]] -name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" -dependencies = [ - "block2 0.2.0-alpha.6", - "objc-sys", - "objc2-encode 2.0.0-pre.2", -] - -[[package]] -name = "objc2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" -dependencies = [ - "objc2-encode 4.1.0", -] - -[[package]] -name = "objc2-audio-toolbox" +name = "objc2-foundation" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.10.0", - "libc", "objc2 0.6.3", - "objc2-core-audio", - "objc2-core-audio-types", "objc2-core-foundation", - "objc2-foundation", ] [[package]] -name = "objc2-avf-audio" +name = "objc2-io-surface" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ + "bitflags 2.10.0", "objc2 0.6.3", - "objc2-foundation", + "objc2-core-foundation", ] [[package]] -name = "objc2-core-audio" -version = "0.3.2" +name = "objc2-link-presentation" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "dispatch2", - "objc2 0.6.3", - "objc2-core-audio-types", - "objc2-core-foundation", - "objc2-foundation", + "block2", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "objc2-core-audio-types" -version = "0.3.2" +name = "objc2-metal" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.10.0", - "objc2 0.6.3", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "objc2-core-foundation" -version = "0.3.2" +name = "objc2-quartz-core" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.10.0", - "block2 0.6.2", - "dispatch2", - "libc", - "objc2 0.6.3", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", ] [[package]] -name = "objc2-encode" -version = "2.0.0-pre.2" +name = "objc2-symbols" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc-sys", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "objc2-encode" -version = "4.1.0" +name = "objc2-ui-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] [[package]] -name = "objc2-foundation" -version = "0.3.2" +name = "objc2-user-notifications" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.10.0", - "block2 0.6.2", - "libc", - "objc2 0.6.3", - "objc2-core-foundation", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", ] [[package]] @@ -2569,6 +2659,29 @@ dependencies = [ "objc", ] +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk 0.8.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -2583,10 +2696,11 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "orbclient" -version = "0.3.49" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" dependencies = [ + "libc", "libredox", ] @@ -2644,9 +2758,15 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link", + "windows-link 0.2.1", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pastey" version = "0.2.1" @@ -2659,6 +2779,70 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", + "unicase", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", + "unicase", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2688,25 +2872,13 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" -[[package]] -name = "platter2" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55ebe9054b9786c9bfe4dd9e8b5df8cd071284434979e9501baa612c5fa5a5e" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "png" -version = "0.17.16" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "crc32fast", "fdeflate", "flate2", @@ -2723,7 +2895,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", + "rustix 1.1.2", "windows-sys 0.61.2", ] @@ -2733,6 +2905,27 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.4" @@ -2742,12 +2935,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2757,6 +2944,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "prettyplease" version = "0.2.37" @@ -2764,17 +2957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.111", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "syn", ] [[package]] @@ -2783,7 +2966,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit", ] [[package]] @@ -2795,6 +2978,37 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "pxfm" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quote" version = "1.0.42" @@ -2817,20 +3031,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", + "rand_chacha", "rand_core 0.6.4", ] -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", -] - [[package]] name = "rand" version = "0.10.0" @@ -2852,16 +3056,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -2871,15 +3065,6 @@ dependencies = [ "getrandom 0.2.16", ] -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.4", -] - [[package]] name = "rand_core" version = "0.10.0" @@ -2887,19 +3072,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" [[package]] -name = "rand_pcg" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" -dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "raw-window-handle" -version = "0.5.2" +name = "range-alloc" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" [[package]] name = "raw-window-handle" @@ -2908,43 +3084,67 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] -name = "rayon" -version = "1.11.0" +name = "redox_syscall" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "either", - "rayon-core", + "bitflags 1.3.2", ] [[package]] -name = "rayon-core" -version = "1.13.0" +name = "redox_syscall" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "bitflags 2.10.0", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "6d94dd2f7cd932d4dc02cc8b2b50dfd38bd079a4e5d79198b99743d7fcf9a4b4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", ] [[package]] -name = "redox_syscall" -version = "0.5.18" +name = "regex" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ - "bitflags 2.10.0", + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", ] +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + [[package]] name = "rfd" version = "0.14.1" @@ -2959,8 +3159,8 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "pollster", - "raw-window-handle 0.6.2", + "pollster 0.3.0", + "raw-window-handle", "urlencoding", "wasm-bindgen", "wasm-bindgen-futures", @@ -2968,12 +3168,31 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.1.2" @@ -2983,7 +3202,7 @@ dependencies = [ "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.11.0", "windows-sys 0.61.2", ] @@ -3022,14 +3241,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.5.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", "memmap2", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "tiny-skia", ] @@ -3066,7 +3285,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -3090,7 +3309,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -3101,19 +3320,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" -dependencies = [ - "block-buffer 0.3.3", - "byte-tools", - "digest 0.7.6", - "fake-simd", + "digest", ] [[package]] @@ -3137,6 +3344,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + [[package]] name = "slab" version = "0.4.11" @@ -3160,32 +3373,83 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smithay-client-toolkit" -version = "0.16.1" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 1.3.2", - "calloop", - "dlib", - "lazy_static", + "bitflags 2.10.0", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", "log", "memmap2", - "nix 0.24.3", - "pkg-config", + "rustix 1.1.2", + "thiserror 2.0.18", + "wayland-backend", "wayland-client", + "wayland-csd-frame", "wayland-cursor", "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", ] [[package]] -name = "spirv_cross" -version = "0.23.1" +name = "smithay-clipboard" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60647fadbf83c4a72f0d7ea67a7ca3a81835cf442b8deae5c134c3e0055b2e14" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" dependencies = [ - "cc", - "js-sys", - "wasm-bindgen", + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.10.0", ] [[package]] @@ -3214,34 +3478,35 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "sturdygb" -version = "0.2.0" +version = "0.3.0" dependencies = [ "clap", + "console_error_panic_hook", "cpal", - "notan", + "eframe", + "egui", + "egui_extras", + "getrandom 0.2.16", + "getrandom 0.3.4", + "getrandom 0.4.1", + "log", "rfd", "sturdygb_core", + "walkdir", + "wasm-bindgen", + "wasm-bindgen-futures", + "zip", ] [[package]] name = "sturdygb_core" -version = "0.2.0" +version = "0.3.0" dependencies = [ + "getrandom 0.3.4", "pastey", "rand 0.10.0", ] -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.111" @@ -3261,7 +3526,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -3273,17 +3538,35 @@ dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix", + "rustix 1.1.2", "windows-sys 0.61.2", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", ] [[package]] @@ -3294,61 +3577,53 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] -name = "time" -version = "0.3.44" +name = "thiserror-impl" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ - "deranged", - "itoa", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "time-core" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" - -[[package]] -name = "time-macros" -version = "0.2.24" +name = "tiff" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" dependencies = [ - "num-conv", - "time-core", + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", ] [[package]] name = "tiny-skia" -version = "0.8.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", "arrayvec", "bytemuck", "cfg-if", - "png", + "log", "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.8.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ "arrayref", "bytemuck", @@ -3365,12 +3640,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - [[package]] name = "toml_datetime" version = "0.7.4+spec-1.0.0" @@ -3380,17 +3649,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "toml_datetime 0.6.11", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.23.10+spec-1.0.0" @@ -3398,9 +3656,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap", - "toml_datetime 0.7.4+spec-1.0.0", + "toml_datetime", "toml_parser", - "winnow 0.7.14", + "winnow", ] [[package]] @@ -3409,7 +3667,7 @@ version = "1.0.5+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c03bee5ce3696f31250db0bbaff18bc43301ce0e8db2ed1f07cbb2acf89984c" dependencies = [ - "winnow 0.7.14", + "winnow", ] [[package]] @@ -3418,6 +3676,7 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3431,7 +3690,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -3450,12 +3709,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] -name = "twox-hash" -version = "2.1.2" +name = "type-map" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rand 0.9.2", + "rustc-hash 2.1.1", ] [[package]] @@ -3470,17 +3729,35 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", "winapi", ] +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3518,10 +3795,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] -name = "vec_map" -version = "0.8.2" +name = "uuid" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +dependencies = [ + "js-sys", + "serde_core", + "wasm-bindgen", +] [[package]] name = "version_check" @@ -3608,7 +3890,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn", "wasm-bindgen-shared", ] @@ -3656,98 +3938,331 @@ dependencies = [ ] [[package]] -name = "wayland-client" -version = "0.29.5" +name = "wayland-backend" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" dependencies = [ - "bitflags 1.3.2", + "cc", "downcast-rs", - "libc", - "nix 0.24.3", + "rustix 1.1.2", "scoped-tls", - "wayland-commons", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" +dependencies = [ + "bitflags 2.10.0", + "rustix 1.1.2", + "wayland-backend", "wayland-scanner", - "wayland-sys 0.29.5", ] [[package]] -name = "wayland-commons" -version = "0.29.5" +name = "wayland-csd-frame" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys 0.29.5", + "bitflags 2.10.0", + "cursor-icon", + "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.29.5" +version = "0.31.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078" dependencies = [ - "nix 0.24.3", + "rustix 1.1.2", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.29.5" +version = "0.32.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", "wayland-client", - "wayland-commons", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.29.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" dependencies = [ "proc-macro2", + "quick-xml", "quote", - "xml-rs", ] [[package]] name = "wayland-sys" -version = "0.29.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" dependencies = [ "dlib", - "lazy_static", + "log", + "once_cell", "pkg-config", ] [[package]] -name = "wayland-sys" -version = "0.30.1" +name = "web-sys" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ - "dlib", - "lazy_static", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f00bb839c1cf1e3036066614cbdcd035ecf215206691ea646aa3c60a24f68f2" +dependencies = [ + "core-foundation 0.10.1", + "jni", "log", - "pkg-config", + "ndk-context", + "objc2 0.6.3", + "objc2-foundation 0.3.2", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + +[[package]] +name = "wgpu" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" +dependencies = [ + "arrayvec", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "document-features", + "hashbrown 0.16.1", + "js-sys", + "log", + "naga", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" +dependencies = [ + "arrayvec", + "bit-set", + "bit-vec", + "bitflags 2.10.0", + "bytemuck", + "cfg_aliases", + "document-features", + "hashbrown 0.16.1", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.18", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.10.0", + "block", + "bytemuck", + "cfg-if", + "cfg_aliases", + "core-graphics-types 0.2.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hashbrown 0.16.1", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.6.0+11769913", + "objc", + "once_cell", + "ordered-float", + "parking_lot", + "portable-atomic", + "portable-atomic-util", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror 2.0.18", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] -name = "web-sys" -version = "0.3.83" +name = "wgpu-types" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ + "bitflags 2.10.0", + "bytemuck", "js-sys", - "wasm-bindgen", + "log", + "thiserror 2.0.18", + "web-sys", ] [[package]] @@ -3783,49 +4298,104 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.62.2" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.2", "windows-future", + "windows-link 0.1.3", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.3.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", ] [[package]] name = "windows-core" -version = "0.62.2" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-future" -version = "0.3.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", "windows-threading", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -3834,7 +4404,18 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -3845,9 +4426,15 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-link" version = "0.2.1" @@ -3856,30 +4443,58 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.3.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", ] [[package]] name = "windows-result" -version = "0.4.1" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] name = "windows-strings" -version = "0.5.1" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -3924,7 +4539,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -3975,11 +4590,11 @@ dependencies = [ [[package]] name = "windows-threading" -version = "0.2.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4116,46 +4731,54 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.28.7" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ + "ahash", "android-activity", - "bitflags 1.3.2", - "cfg_aliases 0.1.1", - "core-foundation", + "atomic-waker", + "bitflags 2.10.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", "core-graphics", - "dispatch", - "instant", + "cursor-icon", + "dpi", + "js-sys", "libc", - "log", - "mio", - "ndk 0.7.0", - "objc2 0.3.0-beta.3.patch-leaks.3", - "once_cell", + "memmap2", + "ndk 0.9.0", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", "orbclient", "percent-encoding", - "raw-window-handle 0.5.2", - "redox_syscall 0.3.5", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", "wayland-client", - "wayland-commons", "wayland-protocols", - "wayland-scanner", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.45.0", + "web-time", + "windows-sys 0.52.0", "x11-dl", -] - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -4203,7 +4826,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.111", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -4219,7 +4842,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.111", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -4278,6 +4901,27 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.2", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + [[package]] name = "xcursor" version = "0.3.10" @@ -4295,10 +4939,23 @@ dependencies = [ ] [[package]] -name = "xi-unicode" -version = "0.3.0" +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.10.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" @@ -4325,7 +4982,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", "synstructure", ] @@ -4351,7 +5008,7 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "nix 0.29.0", + "nix", "ordered-stream", "rand 0.8.5", "serde", @@ -4362,9 +5019,68 @@ dependencies = [ "uds_windows", "windows-sys 0.52.0", "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", + "zbus_macros 4.4.0", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "libc", + "ordered-stream", + "rustix 1.1.2", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow", + "zbus_macros 5.14.0", + "zbus_names 4.3.1", + "zvariant 5.10.0", +] + +[[package]] +name = "zbus-lockstep" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" +dependencies = [ + "zbus_xml", + "zvariant 5.10.0", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant 5.10.0", ] [[package]] @@ -4373,11 +5089,26 @@ version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zbus_macros" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" +dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", - "zvariant_utils", + "syn", + "zbus_names 4.3.1", + "zvariant 5.10.0", + "zvariant_utils 3.3.0", ] [[package]] @@ -4388,7 +5119,30 @@ checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", - "zvariant", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus_names" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +dependencies = [ + "serde", + "winnow", + "zvariant 5.10.0", +] + +[[package]] +name = "zbus_xml" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" +dependencies = [ + "quick-xml", + "serde", + "zbus_names 4.3.1", + "zvariant 5.10.0", ] [[package]] @@ -4408,7 +5162,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", ] [[package]] @@ -4428,7 +5182,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", "synstructure", ] @@ -4462,7 +5216,34 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-jpeg" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core", ] [[package]] @@ -4476,7 +5257,21 @@ dependencies = [ "serde", "static_assertions", "url", - "zvariant_derive", + "zvariant_derive 4.2.0", +] + +[[package]] +name = "zvariant" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow", + "zvariant_derive 5.10.0", + "zvariant_utils 3.3.0", ] [[package]] @@ -4485,11 +5280,24 @@ version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zvariant_derive" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" +dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", - "zvariant_utils", + "syn", + "zvariant_utils 3.3.0", ] [[package]] @@ -4500,5 +5308,18 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn", +] + +[[package]] +name = "zvariant_utils" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn", + "winnow", ] diff --git a/README.md b/README.md index 69d71d2..2216465 100644 --- a/README.md +++ b/README.md @@ -91,9 +91,10 @@ It is **not yet** a drop-in replacement for mature emulators. ## Frontend - **Pure Rust frontend** -- Uses **[Notan](https://github.com/Nazariglez/notan)** for rendering and input +- Uses **[egui (eframe)](https://github.com/emilk/egui/tree/main/crates/eframe)** for rendering and input - Pixel-perfect nearest-neighbor scaling -- No native dependencies (SDL removed) +- No native dependencies +- Simple frontend with `egui` ## Missing / Incomplete Features @@ -143,7 +144,7 @@ Keys are not yet customizable, and they are hardcoded as follows: | Z | A | | X | B | | Return/Enter | Start | -| Right Shift | Select | +| Space | Select | ## Roadmap @@ -154,10 +155,9 @@ Planned future work includes: - Full APU implementation - Game Boy Color (CGB) mode - Debugging tools (PPU viewer, memory viewer, breakpoints) -- Save states and battery-backed RAM (to save your games) +- Save states - Libretro core - Android port (?) -- Fully functional standalone frontend - Customizable keys - Rewind diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 6c91c72..8c9c6ff 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "sturdygb_core" -version = "0.2.0" +version = "0.3.0" edition = "2021" license = "MIT" @@ -17,3 +17,6 @@ name = "sturdygb_core" [dependencies] rand = "0.10.0" pastey = "0.2.1" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +getrandom = { version = "0.3", features = ["wasm_js"] } diff --git a/crates/core/src/cartridge.rs b/crates/core/src/cartridge.rs index 05cbec1..e52aea5 100644 --- a/crates/core/src/cartridge.rs +++ b/crates/core/src/cartridge.rs @@ -15,6 +15,15 @@ pub fn load_cartridge(filename: &str) -> Result<(Box, GbMode), String> } } +pub fn load_cartridge_from_bytes(rom_data: Vec) -> Result<(Box, GbMode), String> { + // For web/memory loads, we do not have a save file path + let save_path = std::path::PathBuf::new(); + match CartridgeHeader::new(&rom_data) { + Ok(header) => Ok(get_mbc(rom_data, header, save_path)), + Err(f) => Err(f.to_string()), + } +} + #[allow(unused_variables)] pub trait Mbc { fn read_rom(&self, address: u16) -> u8; diff --git a/crates/core/src/prelude.rs b/crates/core/src/prelude.rs index 1a25fd1..8a34081 100644 --- a/crates/core/src/prelude.rs +++ b/crates/core/src/prelude.rs @@ -21,4 +21,20 @@ impl GbInstance { Err(e) => Err(format!("Error loading ROM: {e}")), } } + + pub fn build_from_bytes(rom_data: Vec) -> Result { + use crate::cartridge::load_cartridge_from_bytes; + let gb_type: GbTypes; + match load_cartridge_from_bytes(rom_data) { + Ok((mbc, gb_mode)) => { + gb_type = if gb_mode == GbMode::CgbMode { + GbTypes::Cgb + } else { + GbTypes::Dmg + }; + Ok(Gb::new(mbc, gb_mode, gb_type)) + } + Err(e) => Err(format!("Error parsing ROM bytes: {e}")), + } + } } diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index 1ff8874..32ca350 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -3,15 +3,36 @@ # SPDX-License-Identifier: MIT [package] name = "sturdygb" -version = "0.2.0" +version = "0.3.0" edition = "2021" repository = "https://github.com/sturdy-robot/sturdygb" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["cdylib", "rlib"] [dependencies] sturdygb_core = { path = "../core" } -notan = { version = "0.12.1", features = ["draw"] } clap = { version = "4.5", features = ["derive"] } -rfd = "0.14" -cpal = "0.17.3" +rfd = "0.14.1" +cpal = "0.15" +eframe = { version = "0.33.3", features = ["wgpu"] } +egui = { version = "0.33.3", features = ["color-hex"] } +egui_extras = { version = "0.33.3", features = ["image"] } +zip = { version = "0.6", default-features = false, features = ["deflate"] } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +walkdir = "2" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen = "0.2" +wasm-bindgen-futures = "0.4.50" +console_error_panic_hook = "0.1" +cpal = { version = "0.15", features = ["wasm-bindgen"] } +log = "0.4" +getrandom_02 = { package = "getrandom", version = "0.2", features = ["js"] } +getrandom_03 = { package = "getrandom", version = "0.3", features = [ + "wasm_js", +] } +getrandom_04 = { package = "getrandom", version = "0.4", features = [ + "wasm_js", +] } diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs new file mode 100644 index 0000000..0822efb --- /dev/null +++ b/crates/frontend/src/app.rs @@ -0,0 +1,434 @@ +use eframe::egui; + +use sturdygb_core::joypad::JoypadButton; +use sturdygb_core::prelude::GbInstance; + +use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; +use std::sync::mpsc::{sync_channel, SyncSender}; + +#[cfg(not(target_arch = "wasm32"))] +use rfd::FileDialog; + +#[cfg(target_arch = "wasm32")] +use rfd::AsyncFileDialog; + +const GB_W: usize = 160; +const GB_H: usize = 144; +const SCALE: f32 = 4.0; + +static mut AUDIO_PRODUCER: Option> = None; +static mut AUDIO_STREAM: Option = None; + +struct State { + gb: sturdygb_core::gb::Gb, + rgba: Vec, + leftover_audio: Vec<[f32; 2]>, +} + +pub struct EmuApp { + state: Option, + texture: Option, + error_msg: Option, + rom_load_channel: ( + std::sync::mpsc::Sender, String>>, + std::sync::mpsc::Receiver, String>>, + ), + #[cfg(not(target_arch = "wasm32"))] + game_list: Vec, + #[cfg(not(target_arch = "wasm32"))] + recursive_search: bool, +} + +impl EmuApp { + pub fn new(_cc: &eframe::CreationContext<'_>, initial_rom: Option) -> Self { + let mut app = Self { + state: None, + texture: None, + error_msg: None, + rom_load_channel: std::sync::mpsc::channel(), + #[cfg(not(target_arch = "wasm32"))] + game_list: Vec::new(), + #[cfg(not(target_arch = "wasm32"))] + recursive_search: false, + }; + + if let Some(rom) = initial_rom { + app.load_rom_file(&rom); + } + + app + } + + fn load_rom_file(&mut self, path: &str) { + if let Ok(bytes) = std::fs::read(path) { + if let Some(extracted) = extract_rom_from_bytes(&bytes) { + self.load_rom_bytes(extracted); + return; + } + } + + match GbInstance::build(path) { + Ok(mut gb) => { + setup_audio(&mut gb); + self.state = Some(State { + gb, + rgba: vec![0; GB_W * GB_H * 4], + leftover_audio: Vec::new(), + }); + self.error_msg = None; + } + Err(e) => { + self.error_msg = Some(format!("Failed to load ROM:\n{e}")); + } + } + } + + fn load_rom_bytes(&mut self, mut bytes: Vec) { + if let Some(extracted) = extract_rom_from_bytes(&bytes) { + bytes = extracted; + } + match GbInstance::build_from_bytes(bytes) { + Ok(mut gb) => { + setup_audio(&mut gb); + self.state = Some(State { + gb, + rgba: vec![0; GB_W * GB_H * 4], + leftover_audio: Vec::new(), + }); + self.error_msg = None; + } + Err(e) => { + self.error_msg = Some(format!("Failed to load ROM:\n{e}")); + } + } + } + + #[cfg(not(target_arch = "wasm32"))] + fn load_directory(&mut self, path: std::path::PathBuf) { + self.game_list.clear(); + let walker = walkdir::WalkDir::new(path); + let walker = if self.recursive_search { + walker + } else { + walker.max_depth(1) + }; + + for entry in walker.into_iter().filter_map(|e| e.ok()) { + let path = entry.path(); + if path.is_file() { + if let Some(ext) = path.extension().and_then(|e| e.to_str()) { + let ext = ext.to_lowercase(); + if ext == "gb" || ext == "gbc" || ext == "zip" { + self.game_list.push(path.to_path_buf()); + } + } + } + } + self.game_list.sort(); + } +} + +impl eframe::App for EmuApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + // Check for async loaded roms + if let Ok(result) = self.rom_load_channel.1.try_recv() { + match result { + Ok(bytes) => self.load_rom_bytes(bytes), + Err(e) => self.error_msg = Some(format!("Failed to load ROM via async: {e}")), + } + } + + egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| { + egui::menu::bar(ui, |ui| { + ui.menu_button("File", |ui| { + if ui.button("Open ROM...").clicked() { + #[cfg(not(target_arch = "wasm32"))] + { + if let Some(path) = FileDialog::new() + .add_filter("GameBoy ROMs", &["gb"]) + .pick_file() + { + self.load_rom_file(path.to_str().unwrap()); + } + } + + #[cfg(target_arch = "wasm32")] + { + let sender = self.rom_load_channel.0.clone(); + wasm_bindgen_futures::spawn_local(async move { + let file = AsyncFileDialog::new() + .add_filter("GameBoy ROMs", &["gb", "gbc"]) + .pick_file() + .await; + + if let Some(file) = file { + let bytes = file.read().await; + let _ = sender.send(Ok(bytes)); + } + }); + } + ui.close(); + } + if ui.button("Stop").clicked() { + self.state = None; + self.texture = None; + ui.close(); + } + #[cfg(not(target_arch = "wasm32"))] + { + if ui.button("Open Directory...").clicked() { + if let Some(path) = FileDialog::new().pick_folder() { + self.load_directory(path); + } + ui.close(); + } + ui.checkbox(&mut self.recursive_search, "Recursive Search"); + if ui.button("Exit").clicked() { + ctx.send_viewport_cmd(egui::ViewportCommand::Close); + } + } + }); + }); + }); + + let mut error_cleared = false; + // Handle error display + if let Some(err) = &self.error_msg { + let mut open = true; + egui::Window::new("Error") + .open(&mut open) + .collapsible(false) + .resizable(false) + .show(ctx, |ui| { + ui.label(err); + if ui.button("OK").clicked() { + error_cleared = true; + } + }); + if !open { + error_cleared = true; + } + } + + if error_cleared { + self.error_msg = None; + } + + egui::CentralPanel::default().show(ctx, |ui| { + if let Some(state) = &mut self.state { + // Input handling + set_btn(ctx, state, egui::Key::Z, JoypadButton::A); + set_btn(ctx, state, egui::Key::X, JoypadButton::B); + set_btn(ctx, state, egui::Key::Enter, JoypadButton::Start); + set_btn(ctx, state, egui::Key::Space, JoypadButton::Select); + + set_btn(ctx, state, egui::Key::ArrowUp, JoypadButton::Up); + set_btn(ctx, state, egui::Key::ArrowDown, JoypadButton::Down); + set_btn(ctx, state, egui::Key::ArrowLeft, JoypadButton::Left); + set_btn(ctx, state, egui::Key::ArrowRight, JoypadButton::Right); + + // Emulation Loop + let mut channel_full = false; + let mut frames_run = 0; + + // First try to drain leftover audio + let mut new_leftover = Vec::with_capacity(state.leftover_audio.len()); + unsafe { + #[allow(static_mut_refs)] + if let Some(prod) = &mut AUDIO_PRODUCER { + for sample in state.leftover_audio.drain(..) { + if !channel_full { + if let Err(std::sync::mpsc::TrySendError::Full(val)) = + prod.try_send(sample) + { + channel_full = true; + new_leftover.push(val); + } + } else { + new_leftover.push(sample); + } + } + } + } + state.leftover_audio = new_leftover; + + // Run frames until audio channel fills up, capped to prevent infinite loops (if audio fails) + // For wasm we might need to be very defensive about infinite loops + while !channel_full && frames_run < 5 { + state.gb.run_one_frame(); + frames_run += 1; + + let audio_data = state.gb.get_audio_buffer(); + unsafe { + #[allow(static_mut_refs)] + if let Some(prod) = &mut AUDIO_PRODUCER { + for frame in audio_data.chunks_exact(2) { + let sample = [frame[0], frame[1]]; + if !channel_full { + if let Err(std::sync::mpsc::TrySendError::Full(val)) = + prod.try_send(sample) + { + channel_full = true; + state.leftover_audio.push(val); + } + } else { + state.leftover_audio.push(sample); + } + } + } + } + } + + // Render video + let frame_data = state.gb.get_screen_data(); + for y in 0..GB_H { + for x in 0..GB_W { + let shade = frame_data[y][x]; + let (r, g, b) = match shade { + 0 => (255, 255, 255), + 1 => (192, 192, 192), + 2 => (96, 96, 96), + _ => (0, 0, 0), + }; + let i = (y * GB_W + x) * 4; + state.rgba[i + 0] = r; + state.rgba[i + 1] = g; + state.rgba[i + 2] = b; + state.rgba[i + 3] = 255; + } + } + + let image = egui::ColorImage::from_rgba_unmultiplied([GB_W, GB_H], &state.rgba); + let texture = self.texture.get_or_insert_with(|| { + ctx.load_texture("gb_screen", image.clone(), egui::TextureOptions::NEAREST) + }); + texture.set(image, egui::TextureOptions::NEAREST); + + // Show the texture centered and scaled + let available_size = ui.available_size(); + let width = (GB_W as f32) * SCALE; + let height = (GB_H as f32) * SCALE; + let x_offset = (available_size.x - width) / 2.0; + let y_offset = (available_size.y - height) / 2.0; + + let rect = egui::Rect::from_min_size( + ui.min_rect().min + egui::vec2(x_offset.max(0.0), y_offset.max(0.0)), + egui::vec2(width, height), + ); + + ui.put( + rect, + egui::Image::new(&*texture).fit_to_exact_size(egui::vec2(width, height)), + ); + } else { + #[cfg(not(target_arch = "wasm32"))] + { + if self.game_list.is_empty() { + ui.centered_and_justified(|ui| { + ui.heading("No games found. Use File -> Open Directory..."); + }); + } else { + let mut to_load = None; + ui.heading("Games"); + egui::ScrollArea::vertical().show(ui, |ui| { + for path in &self.game_list { + if let Some(file_name) = path.file_name().and_then(|n| n.to_str()) { + if ui.selectable_label(false, file_name).double_clicked() { + to_load = Some(path.clone()); + } + } + } + }); + + if let Some(path) = to_load { + self.load_rom_file(path.to_str().unwrap()); + } + } + } + + #[cfg(target_arch = "wasm32")] + ui.centered_and_justified(|ui| { + ui.heading("No game loaded."); + }); + } + }); + + // Request repaint to keep emulator running + ctx.request_repaint(); + } +} + +fn set_btn(ctx: &egui::Context, state: &mut State, key: egui::Key, btn: JoypadButton) { + if ctx.input(|i| i.key_down(key)) { + state.gb.press_button(btn); + } else { + state.gb.release_button(btn); + } +} + +fn setup_audio(gb: &mut sturdygb_core::gb::Gb) { + let host = cpal::default_host(); + let device = host.default_output_device(); + if let Some(device) = device { + let config = device.default_output_config().unwrap().config(); + + let sample_rate: u32 = config.sample_rate.0; + gb.set_sample_rate(sample_rate); + + let (prod, cons) = sync_channel::<[f32; 2]>(4096); + + let channels = config.channels as usize; + let mut last_sample = [0.0, 0.0]; + + let stream = device.build_output_stream( + &config, + move |data: &mut [f32], _: &cpal::OutputCallbackInfo| { + for frame in data.chunks_mut(channels) { + let sample = match cons.try_recv() { + Ok(v) => v, + Err(_) => [last_sample[0] * 0.90, last_sample[1] * 0.90], + }; + last_sample = sample; + + if channels >= 1 && frame.len() >= 1 { + frame[0] = sample[0]; + } + if channels >= 2 && frame.len() >= 2 { + frame[1] = sample[1]; + } + } + }, + |err| eprintln!("an error occurred on stream: {}", err), + None, + ); + + if let Ok(stream) = stream { + stream.play().unwrap(); + unsafe { + AUDIO_PRODUCER = Some(prod); + AUDIO_STREAM = Some(stream); + } + } + } +} + +fn extract_rom_from_bytes(bytes: &[u8]) -> Option> { + if bytes.len() >= 4 && bytes[0..4] == [0x50, 0x4b, 0x03, 0x04] { + let cursor = std::io::Cursor::new(bytes); + if let Ok(mut archive) = zip::ZipArchive::new(cursor) { + for i in 0..archive.len() { + if let Ok(mut file) = archive.by_index(i) { + let name = file.name().to_lowercase(); + if name.ends_with(".gb") || name.ends_with(".gbc") { + use std::io::Read; + let mut extracted = Vec::new(); + if file.read_to_end(&mut extracted).is_ok() { + return Some(extracted); + } + } + } + } + } + } + None +} diff --git a/crates/frontend/src/lib.rs b/crates/frontend/src/lib.rs new file mode 100644 index 0000000..733de8b --- /dev/null +++ b/crates/frontend/src/lib.rs @@ -0,0 +1,32 @@ +#![warn(clippy::all, rust_2018_idioms)] + +mod app; +pub use app::EmuApp; + +#[cfg(target_arch = "wasm32")] +use eframe::wasm_bindgen::{self, prelude::*}; + +#[cfg(target_arch = "wasm32")] +#[wasm_bindgen] +pub async fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> { + use wasm_bindgen::JsCast; + + // Redirect `log` message to `console.log` and friends: + eframe::WebLogger::init(log::LevelFilter::Debug).ok(); + + let web_options = eframe::WebOptions::default(); + + let document = eframe::web_sys::window().unwrap().document().unwrap(); + let canvas = document + .get_element_by_id(canvas_id) + .unwrap() + .dyn_into::()?; + + eframe::WebRunner::new() + .start( + canvas, + web_options, + Box::new(|cc| Ok(Box::new(app::EmuApp::new(cc, None)))), + ) + .await +} diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index 29829f8..3fc0e99 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -1,254 +1,37 @@ -use notan::draw::*; -use notan::math::{Mat3, Vec2}; -use notan::prelude::*; +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] +#![allow(rustdoc::missing_crate_level_docs)] // it's an app -use clap::Parser; +mod app; -use rfd::MessageDialog; -use std::sync::OnceLock; +#[cfg(not(target_arch = "wasm32"))] +fn main() -> eframe::Result<()> { + use clap::Parser; -use sturdygb_core::joypad::JoypadButton; -use sturdygb_core::prelude::GbInstance; - -use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; -use std::sync::mpsc::{sync_channel, SyncSender}; - -const GB_W: usize = 160; -const GB_H: usize = 144; - -const SCALE: f32 = 5.0; -const WIN_W: u32 = (GB_W as u32) * (SCALE as u32); -const WIN_H: u32 = (GB_H as u32) * (SCALE as u32); - -static ROM_PATH: OnceLock = OnceLock::new(); -const VERSION: &str = env!("CARGO_PKG_VERSION"); - -fn example_usage() -> &'static str { - if cfg!(windows) { - "sturdygb path\\to\\game.gb" - } else { - "sturdygb path/to/game.gb" + #[derive(Parser, Debug)] + #[command(name = "sturdygb")] + struct Cli { + #[arg(value_name = "ROM")] + rom: Option, } -} - -#[derive(Parser, Debug)] -#[command(name = "sturdygb")] -struct Cli { - #[arg(value_name = "ROM")] - rom: Option, -} - -#[derive(AppState)] -struct State { - gb: sturdygb_core::gb::Gb, - rgba: Vec, - leftover_audio: Vec<[f32; 2]>, -} -static mut AUDIO_PRODUCER: Option> = None; -static mut AUDIO_STREAM: Option = None; - -#[notan_main] -fn main() -> Result<(), String> { let cli = Cli::parse(); - let Some(rom) = cli.rom else { - let example = example_usage(); - MessageDialog::new() - .set_title("SturdyGB") - .set_description(&format!( - "No ROM was provided.\n\nRun this program from the command line and pass a ROM path.\n\nExample:\n {example}" - )) - .show(); - return Ok(()); - }; - - let _ = ROM_PATH.set(rom); - - let window = WindowConfig::new() - .set_title(&format!("SturdyGB v{}", VERSION)) - .set_size(WIN_W, WIN_H) - .set_vsync(true); - - notan::init_with(init) - .add_config(window) - .add_config(DrawConfig) - .update(update) - .draw(draw) - .build() -} -fn init(_gfx: &mut Graphics) -> State { - let rom = ROM_PATH.get().expect("ROM path must be set"); - let mut gb = match GbInstance::build(rom) { - Ok(gb) => gb, - Err(e) => { - let example = example_usage(); - let msg = format!( - "Failed to load ROM:\n {rom}\n\n{e}\n\nRun this program from the command line and pass a valid ROM path.\n\nExample:\n {example}" - ); - MessageDialog::new() - .set_title("SturdyGB") - .set_description(&msg) - .show(); - std::process::exit(1); - } + let options = eframe::NativeOptions { + viewport: eframe::egui::ViewportBuilder::default() + .with_inner_size([(160.0) * 4.0, (144.0) * 4.0 + 30.0]) + .with_title(format!("SturdyGB")), + ..Default::default() }; - setup_audio(&mut gb); - - State { - gb, - rgba: vec![0; GB_W * GB_H * 4], - leftover_audio: Vec::new(), - } -} - -fn setup_audio(gb: &mut sturdygb_core::gb::Gb) { - let host = cpal::default_host(); - let device = host.default_output_device(); - if let Some(device) = device { - let config = device.default_output_config().unwrap().config(); - - let sample_rate: u32 = config.sample_rate.into(); - gb.set_sample_rate(sample_rate); - - // Keep buffer balanced (4096 samples ~ 85ms at 48kHz) to prevent audio latency - let (prod, cons) = sync_channel::<[f32; 2]>(4096); - - let channels = config.channels as usize; - let mut last_sample = [0.0, 0.0]; - - let stream = device.build_output_stream( - &config, - move |data: &mut [f32], _: &cpal::OutputCallbackInfo| { - for frame in data.chunks_mut(channels) { - let sample = match cons.try_recv() { - Ok(v) => v, - Err(_) => [last_sample[0] * 0.90, last_sample[1] * 0.90], - }; - last_sample = sample; - - if channels >= 1 && frame.len() >= 1 { frame[0] = sample[0]; } - if channels >= 2 && frame.len() >= 2 { frame[1] = sample[1]; } - } - }, - |err| eprintln!("an error occurred on stream: {}", err), - None - ); - - if let Ok(stream) = stream { - stream.play().unwrap(); - unsafe { - AUDIO_PRODUCER = Some(prod); - AUDIO_STREAM = Some(stream); - } - } - } -} - -fn update(app: &mut App, state: &mut State) { - if app.keyboard.was_pressed(KeyCode::Escape) { - app.exit(); - } - - set_btn(app, state, KeyCode::Z, JoypadButton::A); - set_btn(app, state, KeyCode::X, JoypadButton::B); - set_btn(app, state, KeyCode::Return, JoypadButton::Start); - set_btn(app, state, KeyCode::RShift, JoypadButton::Select); - - set_btn(app, state, KeyCode::Up, JoypadButton::Up); - set_btn(app, state, KeyCode::Down, JoypadButton::Down); - set_btn(app, state, KeyCode::Left, JoypadButton::Left); - set_btn(app, state, KeyCode::Right, JoypadButton::Right); - - let mut channel_full = false; - let mut frames_run = 0; - - // First try to drain leftover audio - let mut new_leftover = Vec::with_capacity(state.leftover_audio.len()); - unsafe { - #[allow(static_mut_refs)] - if let Some(prod) = &mut AUDIO_PRODUCER { - for sample in state.leftover_audio.drain(..) { - if !channel_full { - if let Err(std::sync::mpsc::TrySendError::Full(val)) = prod.try_send(sample) { - channel_full = true; - new_leftover.push(val); - } - } else { - new_leftover.push(sample); - } - } - } - } - state.leftover_audio = new_leftover; - - // Run frames until audio channel fills up, capped to prevent infinite loops (if audio fails) - while !channel_full && frames_run < 5 { - state.gb.run_one_frame(); - frames_run += 1; - - let audio_data = state.gb.get_audio_buffer(); - unsafe { - #[allow(static_mut_refs)] - if let Some(prod) = &mut AUDIO_PRODUCER { - for frame in audio_data.chunks_exact(2) { - let sample = [frame[0], frame[1]]; - if !channel_full { - if let Err(std::sync::mpsc::TrySendError::Full(val)) = prod.try_send(sample) { - channel_full = true; - state.leftover_audio.push(val); - } - } else { - state.leftover_audio.push(sample); - } - } - } - } - } - - let frame = state.gb.get_screen_data(); - for y in 0..GB_H { - for x in 0..GB_W { - let shade = frame[y][x]; - let (r, g, b) = match shade { - 0 => (255, 255, 255), - 1 => (192, 192, 192), - 2 => (96, 96, 96), - _ => (0, 0, 0), - }; - let i = (y * GB_W + x) * 4; - state.rgba[i + 0] = r; - state.rgba[i + 1] = g; - state.rgba[i + 2] = b; - state.rgba[i + 3] = 255; - } - } -} - -fn set_btn(app: &App, state: &mut State, key: KeyCode, btn: JoypadButton) { - if app.keyboard.is_down(key) { - state.gb.press_button(btn); - } else { - state.gb.release_button(btn); - } + eframe::run_native( + "SturdyGB", + options, + Box::new(|cc| Ok(Box::new(app::EmuApp::new(cc, cli.rom)))), + ) } -fn draw(gfx: &mut Graphics, state: &mut State) { - let tex = gfx - .create_texture() - .from_bytes(&state.rgba, GB_W as u32, GB_H as u32) - .build() - .unwrap(); - - let mut draw = gfx.create_draw(); - draw.clear(Color::BLACK); - - draw.transform() - .push(Mat3::from_scale(Vec2::new(SCALE, SCALE))); - - draw.image(&tex).position(0.0, 0.0); - - draw.transform().clear(); - gfx.render(&draw); +#[cfg(target_arch = "wasm32")] +fn main() { + // Redirect `log` message to `console.log` and friends: + eframe::WebLogger::init(log::LevelFilter::Debug).ok(); } From 0c1690f458124d8237b5b26ff084213dc59c6dab Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Thu, 26 Feb 2026 14:43:37 -0300 Subject: [PATCH 02/13] feat: add game library browser with metadata and configurable keybinds - Add game library browser showing ROM title, company, and filename - Implement asynchronous directory loading with progress indication - Add configurable keybinds with persistence via serde - Add display scaling modes (integer scaling and stretch) - Add color palette options (greyscale, classic green, pocket) - Expose cartridge module and add company name lookup from licensee codes - Add FPS counter and improve title extraction --- Cargo.lock | 59 ++++ crates/core/Cargo.toml | 1 + crates/core/src/cartridge.rs | 83 ++++- crates/core/src/joypad.rs | 1 + crates/core/src/lib.rs | 2 +- crates/frontend/Cargo.toml | 6 +- crates/frontend/src/app.rs | 655 +++++++++++++++++++++++++++++++---- crates/frontend/src/main.rs | 28 +- 8 files changed, 756 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bb24c00..1580843 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,6 +23,10 @@ name = "accesskit" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" +dependencies = [ + "enumn", + "serde", +] [[package]] name = "accesskit_atspi_common" @@ -123,6 +127,7 @@ dependencies = [ "cfg-if", "getrandom 0.3.4", "once_cell", + "serde", "version_check", "zerocopy", ] @@ -530,6 +535,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bindgen" version = "0.72.1" @@ -574,6 +585,9 @@ name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] [[package]] name = "block" @@ -1119,6 +1133,7 @@ dependencies = [ "bytemuck", "color-hex", "emath", + "serde", ] [[package]] @@ -1137,6 +1152,7 @@ dependencies = [ "glow", "glutin", "glutin-winit", + "home", "image", "js-sys", "log", @@ -1148,6 +1164,8 @@ dependencies = [ "pollster 0.4.0", "profiling", "raw-window-handle", + "ron", + "serde", "static_assertions", "wasm-bindgen", "wasm-bindgen-futures", @@ -1172,6 +1190,8 @@ dependencies = [ "log", "nohash-hasher", "profiling", + "ron", + "serde", "smallvec", "unicode-segmentation", ] @@ -1212,6 +1232,7 @@ dependencies = [ "objc2-ui-kit", "profiling", "raw-window-handle", + "serde", "smithay-clipboard", "web-time", "webbrowser", @@ -1263,6 +1284,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32" dependencies = [ "bytemuck", + "serde", ] [[package]] @@ -1312,6 +1334,17 @@ dependencies = [ "syn", ] +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "epaint" version = "0.33.3" @@ -1328,6 +1361,7 @@ dependencies = [ "nohash-hasher", "parking_lot", "profiling", + "serde", ] [[package]] @@ -1815,6 +1849,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "icu_collections" version = "2.1.1" @@ -3168,6 +3211,19 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "ron" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" +dependencies = [ + "base64", + "bitflags 2.10.0", + "serde", + "serde_derive", + "unicode-ident", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -3489,8 +3545,10 @@ dependencies = [ "getrandom 0.2.16", "getrandom 0.3.4", "getrandom 0.4.1", + "image", "log", "rfd", + "serde", "sturdygb_core", "walkdir", "wasm-bindgen", @@ -3505,6 +3563,7 @@ dependencies = [ "getrandom 0.3.4", "pastey", "rand 0.10.0", + "serde", ] [[package]] diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 8c9c6ff..ce4d3e9 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -17,6 +17,7 @@ name = "sturdygb_core" [dependencies] rand = "0.10.0" pastey = "0.2.1" +serde = { version = "1.0", features = ["derive"] } [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.3", features = ["wasm_js"] } diff --git a/crates/core/src/cartridge.rs b/crates/core/src/cartridge.rs index e52aea5..6ef3f3d 100644 --- a/crates/core/src/cartridge.rs +++ b/crates/core/src/cartridge.rs @@ -46,6 +46,7 @@ pub struct CartridgeHeader { pub mbc_type: MBCTypes, pub rom_size: u32, pub ram_size: u32, + pub company: String, } pub enum MBCTypes { @@ -206,18 +207,98 @@ impl CartridgeHeader { let rom_size: u32 = 32 * (1 << rom_data[0x0148]); let ram_size: u32 = get_ram_size(&rom_data[0x0149]); let sgb_flag = rom_data[0x146] == 0x03; + let company = get_company_name(rom_data[0x14B], &rom_data[0x144..=0x145]); Ok(Self { entry: rom_data[0x100..=0x103].try_into().unwrap(), logo: rom_data[0x104..=0x133].try_into().unwrap(), - title: rom_data[0x134..=0x143].escape_ascii().to_string(), + title: rom_data[0x134..=0x143] + .iter() + .filter(|&&b| b != 0) + .map(|&b| b as char) + .collect::() + .trim() + .to_string(), cgb_flag: rom_data[0x143], sgb_flag, mbc_type, rom_size, ram_size, + company, }) } else { Err("Cartridge is not a valid GB ROM") } } } + +fn get_company_name(old_code: u8, new_code: &[u8]) -> String { + if old_code != 0x33 { + // Fall back to old ascii hash (approximate values missing) + return format!("Old Licensee: {old_code:02X}"); + } + + let code_str = std::str::from_utf8(new_code).unwrap_or("00"); + match code_str { + "01" => "Nintendo".to_string(), + "08" => "Capcom".to_string(), + "13" => "Electronic Arts".to_string(), + "18" => "Hudson Soft".to_string(), + "19" => "b-ai".to_string(), + "20" => "kss".to_string(), + "22" => "pow".to_string(), + "24" => "PCM Complete".to_string(), + "25" => "san-x".to_string(), + "28" => "Kemco Japan".to_string(), + "29" => "seta".to_string(), + "30" => "Viacom".to_string(), + "31" => "Nintendo".to_string(), + "32" => "Bandai".to_string(), + "33" => "Ocean/Acclaim".to_string(), + "34" => "Konami".to_string(), + "35" => "Hector".to_string(), + "37" => "Taito".to_string(), + "38" => "Hudson".to_string(), + "39" => "Banpresto".to_string(), + "41" => "Ubi Soft".to_string(), + "42" => "Atlus".to_string(), + "44" => "Malibu".to_string(), + "46" => "angel".to_string(), + "47" => "Bullet-Proof".to_string(), + "49" => "irem".to_string(), + "50" => "Absolute".to_string(), + "51" => "Acclaim".to_string(), + "52" => "Activision".to_string(), + "53" => "American sammy".to_string(), + "54" => "Konami".to_string(), + "55" => "Hi tech entertainment".to_string(), + "56" => "LJN".to_string(), + "57" => "Matchbox".to_string(), + "58" => "Mattel".to_string(), + "59" => "Milton Bradley".to_string(), + "60" => "Titus".to_string(), + "61" => "Virgin".to_string(), + "64" => "LucasArts".to_string(), + "67" => "Ocean".to_string(), + "69" => "Electronic Arts".to_string(), + "70" => "Infogrames".to_string(), + "71" => "Interplay".to_string(), + "72" => "Broderbund".to_string(), + "73" => "sculptured".to_string(), + "75" => "sci".to_string(), + "78" => "THQ".to_string(), + "79" => "Accolade".to_string(), + "80" => "misawa".to_string(), + "83" => "lozc".to_string(), + "86" => "Tokuma Shoten Intermedia".to_string(), + "87" => "Tsukuda Original".to_string(), + "91" => "Chunsoft".to_string(), + "92" => "Video system".to_string(), + "93" => "Ocean/Acclaim".to_string(), + "95" => "Varie".to_string(), + "96" => "Yonezawa/s'pal".to_string(), + "97" => "Kaneko".to_string(), + "99" => "Pack in soft".to_string(), + "A4" => "Konami (Yu-Gi-Oh!)".to_string(), + _ => format!("Unknown: {code_str}"), + } +} diff --git a/crates/core/src/joypad.rs b/crates/core/src/joypad.rs index ea2824b..0e20d09 100644 --- a/crates/core/src/joypad.rs +++ b/crates/core/src/joypad.rs @@ -18,6 +18,7 @@ pub struct Joypad { dpad_states: u8, } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] pub enum JoypadButton { A, B, diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index b8c7a52..b40dac4 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -mod cartridge; +pub mod cartridge; mod cb_prefix; mod cpu; mod disasm; diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index 32ca350..715e842 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -15,10 +15,12 @@ sturdygb_core = { path = "../core" } clap = { version = "4.5", features = ["derive"] } rfd = "0.14.1" cpal = "0.15" -eframe = { version = "0.33.3", features = ["wgpu"] } -egui = { version = "0.33.3", features = ["color-hex"] } +eframe = { version = "0.33.3", features = ["wgpu", "persistence"] } +egui = { version = "0.33.3", features = ["color-hex", "serde"] } egui_extras = { version = "0.33.3", features = ["image"] } zip = { version = "0.6", default-features = false, features = ["deflate"] } +image = { version = "0.25", default-features = false, features = ["png"] } +serde = { version = "1.0", features = ["derive"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] walkdir = "2" diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 0822efb..63014b3 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -4,6 +4,7 @@ use sturdygb_core::joypad::JoypadButton; use sturdygb_core::prelude::GbInstance; use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; +use std::collections::HashMap; use std::sync::mpsc::{sync_channel, SyncSender}; #[cfg(not(target_arch = "wasm32"))] @@ -23,6 +24,7 @@ struct State { gb: sturdygb_core::gb::Gb, rgba: Vec, leftover_audio: Vec<[f32; 2]>, + title: String, } pub struct EmuApp { @@ -34,13 +36,84 @@ pub struct EmuApp { std::sync::mpsc::Receiver, String>>, ), #[cfg(not(target_arch = "wasm32"))] - game_list: Vec, + game_list: Vec, #[cfg(not(target_arch = "wasm32"))] recursive_search: bool, + config: SturdyConfig, + show_options: bool, + #[cfg(not(target_arch = "wasm32"))] + loading_directory: bool, + #[cfg(not(target_arch = "wasm32"))] + dir_load_receiver: Option>, + start_time: std::time::Instant, + frames_rendered: usize, + last_fps_update: std::time::Instant, + current_fps: usize, +} + +#[derive(serde::Deserialize, serde::Serialize)] +#[serde(default)] // automatically implement Default fallback +pub struct SturdyConfig { + pub scale: ScaleMode, + pub palette: Palette, + #[cfg(not(target_arch = "wasm32"))] + pub rom_directories: Vec, + pub keybinds: HashMap, +} + +impl Default for SturdyConfig { + fn default() -> Self { + let mut keybinds = HashMap::new(); + keybinds.insert(JoypadButton::Up, egui::Key::ArrowUp); + keybinds.insert(JoypadButton::Down, egui::Key::ArrowDown); + keybinds.insert(JoypadButton::Left, egui::Key::ArrowLeft); + keybinds.insert(JoypadButton::Right, egui::Key::ArrowRight); + keybinds.insert(JoypadButton::A, egui::Key::Z); + keybinds.insert(JoypadButton::B, egui::Key::X); + keybinds.insert(JoypadButton::Start, egui::Key::Enter); + keybinds.insert(JoypadButton::Select, egui::Key::Space); + + Self { + #[cfg(not(target_arch = "wasm32"))] + rom_directories: Vec::new(), + scale: ScaleMode::Integer(4.0), + palette: Palette::Greyscale, + keybinds, + } + } +} + +#[derive(serde::Deserialize, serde::Serialize, PartialEq, Clone, Copy, Debug)] +pub enum ScaleMode { + Integer(f32), + Stretch, +} + +#[derive(serde::Deserialize, serde::Serialize, PartialEq, Clone, Copy, Debug)] +pub enum Palette { + Greyscale, + ClassicGreen, + Pocket, +} + +#[cfg(not(target_arch = "wasm32"))] +#[derive(Clone)] +struct GameEntry { + path: std::path::PathBuf, + filename: String, + title: String, + company: String, } impl EmuApp { - pub fn new(_cc: &eframe::CreationContext<'_>, initial_rom: Option) -> Self { + pub fn new(cc: &eframe::CreationContext<'_>, initial_rom: Option) -> Self { + let mut config: SturdyConfig = Default::default(); + if let Some(storage) = cc.storage { + if let Some(saved) = eframe::get_value::(storage, "sturdygb_config") { + config = saved; + } + } + let mut app = Self { state: None, texture: None, @@ -50,10 +123,23 @@ impl EmuApp { game_list: Vec::new(), #[cfg(not(target_arch = "wasm32"))] recursive_search: false, + config, + show_options: false, + #[cfg(not(target_arch = "wasm32"))] + loading_directory: false, + #[cfg(not(target_arch = "wasm32"))] + dir_load_receiver: None, + start_time: std::time::Instant::now(), + frames_rendered: 0, + last_fps_update: std::time::Instant::now(), + current_fps: 0, }; if let Some(rom) = initial_rom { app.load_rom_file(&rom); + } else { + #[cfg(not(target_arch = "wasm32"))] + app.reload_all_directories(); } app @@ -65,21 +151,31 @@ impl EmuApp { self.load_rom_bytes(extracted); return; } - } - match GbInstance::build(path) { - Ok(mut gb) => { - setup_audio(&mut gb); - self.state = Some(State { - gb, - rgba: vec![0; GB_W * GB_H * 4], - leftover_audio: Vec::new(), - }); - self.error_msg = None; + let mut title = "Unknown Title".to_string(); + if let Ok(header) = sturdygb_core::cartridge::CartridgeHeader::new(&bytes) { + title = header.title; } - Err(e) => { - self.error_msg = Some(format!("Failed to load ROM:\n{e}")); + + match GbInstance::build_from_bytes(bytes) { + Ok(mut gb) => { + setup_audio(&mut gb); + self.state = Some(State { + gb, + rgba: vec![0; GB_W * GB_H * 4], + leftover_audio: Vec::new(), + title, + }); + self.error_msg = None; + self.frames_rendered = 0; + self.last_fps_update = std::time::Instant::now(); + } + Err(e) => { + self.error_msg = Some(format!("Failed to load ROM:\n{e}")); + } } + } else { + self.error_msg = Some(format!("Could not read file {path}")); } } @@ -87,6 +183,12 @@ impl EmuApp { if let Some(extracted) = extract_rom_from_bytes(&bytes) { bytes = extracted; } + + let mut title = "Unknown Title".to_string(); + if let Ok(header) = sturdygb_core::cartridge::CartridgeHeader::new(&bytes) { + title = header.title; + } + match GbInstance::build_from_bytes(bytes) { Ok(mut gb) => { setup_audio(&mut gb); @@ -94,8 +196,11 @@ impl EmuApp { gb, rgba: vec![0; GB_W * GB_H * 4], leftover_audio: Vec::new(), + title, }); self.error_msg = None; + self.frames_rendered = 0; + self.last_fps_update = std::time::Instant::now(); } Err(e) => { self.error_msg = Some(format!("Failed to load ROM:\n{e}")); @@ -105,30 +210,83 @@ impl EmuApp { #[cfg(not(target_arch = "wasm32"))] fn load_directory(&mut self, path: std::path::PathBuf) { + if !self.config.rom_directories.contains(&path) { + self.config.rom_directories.push(path); + } + self.reload_all_directories(); + } + + #[cfg(not(target_arch = "wasm32"))] + fn reload_all_directories(&mut self) { self.game_list.clear(); - let walker = walkdir::WalkDir::new(path); - let walker = if self.recursive_search { - walker - } else { - walker.max_depth(1) - }; + if self.config.rom_directories.is_empty() { + return; + } + self.loading_directory = true; + + let (tx, rx) = std::sync::mpsc::channel(); + self.dir_load_receiver = Some(rx); + let recursive = self.recursive_search; + let dirs = self.config.rom_directories.clone(); + + std::thread::spawn(move || { + for path in dirs { + let walker = walkdir::WalkDir::new(path); + let walker = if recursive { + walker + } else { + walker.max_depth(1) + }; + + for entry in walker.into_iter().filter_map(|e| e.ok()) { + let path = entry.path(); + if path.is_file() { + if let Some(ext) = path.extension().and_then(|e| e.to_str()) { + let ext = ext.to_lowercase(); + if ext == "gb" || ext == "gbc" || ext == "zip" { + let filename = path + .file_name() + .unwrap_or_default() + .to_string_lossy() + .to_string(); + let mut title = "Unknown Title".to_string(); + let mut company = "Unknown Company".to_string(); + + if let Ok(bytes) = std::fs::read(&path) { + let try_bytes = extract_rom_from_bytes(&bytes).unwrap_or(bytes); + if let Ok(header) = + sturdygb_core::cartridge::CartridgeHeader::new(&try_bytes) + { + title = header.title; + company = header.company; + } + } - for entry in walker.into_iter().filter_map(|e| e.ok()) { - let path = entry.path(); - if path.is_file() { - if let Some(ext) = path.extension().and_then(|e| e.to_str()) { - let ext = ext.to_lowercase(); - if ext == "gb" || ext == "gbc" || ext == "zip" { - self.game_list.push(path.to_path_buf()); + if tx + .send(GameEntry { + path: path.to_path_buf(), + filename, + title, + company, + }) + .is_err() + { + return; // receiver dropped + } + } + } } } } - } - self.game_list.sort(); + }); } } impl eframe::App for EmuApp { + fn save(&mut self, storage: &mut dyn eframe::Storage) { + eframe::set_value(storage, "sturdygb_config", &self.config); + } + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { // Check for async loaded roms if let Ok(result) = self.rom_load_channel.1.try_recv() { @@ -138,6 +296,30 @@ impl eframe::App for EmuApp { } } + // Handle asynchronous directory loading updates + #[cfg(not(target_arch = "wasm32"))] + if self.loading_directory { + if let Some(rx) = &self.dir_load_receiver { + let mut loaded_some = false; + while let Ok(entry) = rx.try_recv() { + self.game_list.push(entry); + loaded_some = true; + } + + // If the channel is disconnected, the loading thread is done + if let Err(std::sync::mpsc::TryRecvError::Disconnected) = rx.try_recv() { + self.loading_directory = false; + self.dir_load_receiver = None; + self.game_list.sort_by(|a, b| a.filename.cmp(&b.filename)); + } + + // Request a repaint so we show progress + if loaded_some || self.loading_directory { + ctx.request_repaint(); + } + } + } + egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| { egui::menu::bar(ui, |ui| { ui.menu_button("File", |ui| { @@ -169,10 +351,16 @@ impl eframe::App for EmuApp { } ui.close(); } - if ui.button("Stop").clicked() { - self.state = None; - self.texture = None; - ui.close(); + if let Some(_) = self.state { + if ui.button("Stop").clicked() { + self.state = None; + self.texture = None; + ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!( + "SturdyGB v{}", + env!("CARGO_PKG_VERSION") + ))); + ui.close(); + } } #[cfg(not(target_arch = "wasm32"))] { @@ -188,6 +376,9 @@ impl eframe::App for EmuApp { } } }); + if ui.button("Options").clicked() { + self.show_options = true; + } }); }); @@ -214,18 +405,224 @@ impl eframe::App for EmuApp { self.error_msg = None; } + let mut is_open = self.show_options; + if is_open { + egui::Window::new("Emulator Options") + .collapsible(false) + .resizable(false) + .open(&mut is_open) + .show(ctx, |ui| { + egui::Grid::new("options_grid") + .num_columns(2) + .spacing([40.0, 4.0]) + .show(ui, |ui| { + ui.label("Scale Mode:"); + egui::ComboBox::from_id_salt("scale_combo") + .selected_text(format!("{:?}", self.config.scale)) + .show_ui(ui, |ui| { + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(1.0), + "1x", + ); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(2.0), + "2x", + ); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(3.0), + "3x", + ); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(4.0), + "4x", + ); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(5.0), + "5x", + ); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Integer(6.0), + "6x", + ); + ui.separator(); + ui.selectable_value( + &mut self.config.scale, + ScaleMode::Stretch, + "Stretch (Fit window)", + ); + }); + ui.end_row(); + + ui.label("Color Palette:"); + egui::ComboBox::from_id_salt("palette_combo") + .selected_text(format!("{:?}", self.config.palette)) + .show_ui(ui, |ui| { + ui.selectable_value( + &mut self.config.palette, + Palette::Greyscale, + "Greyscale", + ); + ui.selectable_value( + &mut self.config.palette, + Palette::ClassicGreen, + "Classic Green", + ); + ui.selectable_value( + &mut self.config.palette, + Palette::Pocket, + "Pocket (Grey/Green)", + ); + }); + ui.end_row(); + }); + + ui.separator(); + ui.label("Keybindings:"); + + egui::Grid::new("keybinds_grid") + .num_columns(2) + .spacing([40.0, 4.0]) + .show(ui, |ui| { + let buttons = [ + JoypadButton::Up, + JoypadButton::Down, + JoypadButton::Left, + JoypadButton::Right, + JoypadButton::A, + JoypadButton::B, + JoypadButton::Start, + JoypadButton::Select, + ]; + + for btn in buttons { + ui.label(format!("{:?}", btn)); + + let current_key = self + .config + .keybinds + .get(&btn) + .copied() + .unwrap_or(egui::Key::Escape); + + let btn_text = if ctx.memory(|mem| { + mem.data + .get_temp::(egui::Id::new("listening_bind")) + }) == Some(btn) + { + "Press any key...".to_string() + } else { + format!("{:?}", current_key) + }; + + let response = ui.button(btn_text); + + if response.clicked() { + ctx.memory_mut(|mem| { + mem.data.insert_temp(egui::Id::new("listening_bind"), btn) + }); + } + + ui.end_row(); + } + }); + + if let Some(btn) = ctx.memory(|mem| { + mem.data + .get_temp::(egui::Id::new("listening_bind")) + }) { + if ctx.input(|i| i.key_pressed(egui::Key::Escape)) { + ctx.memory_mut(|mem| { + mem.data + .remove::(egui::Id::new("listening_bind")) + }); + } else if let Some(key) = ctx.input(|i| { + i.events.iter().find_map(|e| { + if let egui::Event::Key { + key, pressed: true, .. + } = e + { + Some(*key) + } else { + None + } + }) + }) { + self.config.keybinds.insert(btn, key); + ctx.memory_mut(|mem| { + mem.data + .remove::(egui::Id::new("listening_bind")) + }); + } + } + }); + } + self.show_options = is_open; + egui::CentralPanel::default().show(ctx, |ui| { if let Some(state) = &mut self.state { - // Input handling - set_btn(ctx, state, egui::Key::Z, JoypadButton::A); - set_btn(ctx, state, egui::Key::X, JoypadButton::B); - set_btn(ctx, state, egui::Key::Enter, JoypadButton::Start); - set_btn(ctx, state, egui::Key::Space, JoypadButton::Select); + if ctx.input(|i| i.key_pressed(egui::Key::Escape)) { + self.state = None; + self.texture = None; + ctx.send_viewport_cmd(egui::ViewportCommand::Title("SturdyGB".to_string())); + return; + } - set_btn(ctx, state, egui::Key::ArrowUp, JoypadButton::Up); - set_btn(ctx, state, egui::Key::ArrowDown, JoypadButton::Down); - set_btn(ctx, state, egui::Key::ArrowLeft, JoypadButton::Left); - set_btn(ctx, state, egui::Key::ArrowRight, JoypadButton::Right); + // Input handling + let k = &self.config.keybinds; + set_btn( + ctx, + state, + *k.get(&JoypadButton::Up).unwrap(), + JoypadButton::Up, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Down).unwrap(), + JoypadButton::Down, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Left).unwrap(), + JoypadButton::Left, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Right).unwrap(), + JoypadButton::Right, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::A).unwrap(), + JoypadButton::A, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::B).unwrap(), + JoypadButton::B, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Start).unwrap(), + JoypadButton::Start, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Select).unwrap(), + JoypadButton::Select, + ); // Emulation Loop let mut channel_full = false; @@ -281,15 +678,23 @@ impl eframe::App for EmuApp { // Render video let frame_data = state.gb.get_screen_data(); + + let palette_colors = match self.config.palette { + Palette::Greyscale => { + [(255, 255, 255), (192, 192, 192), (96, 96, 96), (0, 0, 0)] + } + Palette::ClassicGreen => { + [(224, 248, 208), (136, 192, 112), (52, 104, 86), (8, 24, 32)] + } + Palette::Pocket => { + [(232, 232, 232), (160, 160, 160), (88, 88, 88), (16, 16, 16)] + } + }; + for y in 0..GB_H { for x in 0..GB_W { - let shade = frame_data[y][x]; - let (r, g, b) = match shade { - 0 => (255, 255, 255), - 1 => (192, 192, 192), - 2 => (96, 96, 96), - _ => (0, 0, 0), - }; + let shade = frame_data[y][x] as usize; + let (r, g, b) = palette_colors[shade]; let i = (y * GB_W + x) * 4; state.rgba[i + 0] = r; state.rgba[i + 1] = g; @@ -303,11 +708,34 @@ impl eframe::App for EmuApp { ctx.load_texture("gb_screen", image.clone(), egui::TextureOptions::NEAREST) }); texture.set(image, egui::TextureOptions::NEAREST); + self.frames_rendered += 1; + + if self.last_fps_update.elapsed().as_secs_f32() >= 1.0 { + self.current_fps = self.frames_rendered; + self.frames_rendered = 0; + self.last_fps_update = std::time::Instant::now(); + + ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!( + "SturdyGB v{} - {} (FPS: {})", + env!("CARGO_PKG_VERSION"), + state.title, + self.current_fps + ))); + } // Show the texture centered and scaled let available_size = ui.available_size(); - let width = (GB_W as f32) * SCALE; - let height = (GB_H as f32) * SCALE; + + let (width, height) = match self.config.scale { + ScaleMode::Integer(s) => ((GB_W as f32) * s, (GB_H as f32) * s), + ScaleMode::Stretch => { + let w_ratio = available_size.x / (GB_W as f32); + let h_ratio = available_size.y / (GB_H as f32); + let min_ratio = w_ratio.min(h_ratio); + ((GB_W as f32) * min_ratio, (GB_H as f32) * min_ratio) + } + }; + let x_offset = (available_size.x - width) / 2.0; let y_offset = (available_size.y - height) / 2.0; @@ -320,41 +748,124 @@ impl eframe::App for EmuApp { rect, egui::Image::new(&*texture).fit_to_exact_size(egui::vec2(width, height)), ); + + // Request repaint if we are running the emulator + ctx.request_repaint(); } else { #[cfg(not(target_arch = "wasm32"))] { - if self.game_list.is_empty() { + if self.config.rom_directories.is_empty() + && self.game_list.is_empty() + && !self.loading_directory + { ui.centered_and_justified(|ui| { - ui.heading("No games found. Use File -> Open Directory..."); + ui.vertical_centered(|ui| { + ui.heading("No games found."); + ui.add_space(8.0); + if ui.button("Open ROM...").clicked() { + if let Some(path) = FileDialog::new() + .add_filter("GameBoy ROMs", &["gb"]) + .pick_file() + { + self.load_rom_file(path.to_str().unwrap()); + } + } + if ui.button("Add ROM directory...").clicked() { + if let Some(path) = FileDialog::new().pick_folder() { + self.load_directory(path); + } + } + }); }); } else { - let mut to_load = None; - ui.heading("Games"); - egui::ScrollArea::vertical().show(ui, |ui| { - for path in &self.game_list { - if let Some(file_name) = path.file_name().and_then(|n| n.to_str()) { - if ui.selectable_label(false, file_name).double_clicked() { - to_load = Some(path.clone()); - } + // Show directory chips + ui.horizontal_wrapped(|ui| { + ui.label("Directories:"); + let mut to_remove = None; + for (i, dir) in self.config.rom_directories.iter().enumerate() { + let dir_name = + dir.file_name().unwrap_or_default().to_string_lossy(); + let response = ui.button(format!("{} ❌", dir_name)); + if response.clicked() { + to_remove = Some(i); + } + } + if let Some(i) = to_remove { + self.config.rom_directories.remove(i); + self.reload_all_directories(); + } + if ui.button("+ Add").clicked() { + if let Some(path) = FileDialog::new().pick_folder() { + self.load_directory(path); } } }); - - if let Some(path) = to_load { - self.load_rom_file(path.to_str().unwrap()); + ui.separator(); + + if self.loading_directory { + ui.centered_and_justified(|ui| { + ui.vertical_centered(|ui| { + ui.heading(format!( + "Loading Games... ({})", + self.game_list.len() + )); + ui.add(egui::Spinner::new().size(32.0)); + }); + }); + } else { + let mut to_load = None; + let row_height = 20.0; + + use egui_extras::{Column, TableBuilder}; + let table = TableBuilder::new(ui) + .striped(true) + .resizable(true) + .cell_layout(egui::Layout::left_to_right(egui::Align::Center)) + .column(Column::initial(150.0).clip(true).resizable(true)) + .column(Column::initial(150.0).clip(true).resizable(true)) + .column(Column::remainder()) + .min_scrolled_height(0.0); + + table + .header(row_height, |mut header| { + header.col(|ui| { + ui.strong("Filename"); + }); + header.col(|ui| { + ui.strong("Title"); + }); + header.col(|ui| { + ui.strong("Company"); + }); + }) + .body(|body| { + body.rows(row_height, self.game_list.len(), |mut row| { + let entry = &self.game_list[row.index()]; + row.col(|ui| { + if ui + .selectable_label(false, &entry.filename) + .double_clicked() + { + to_load = Some(entry.path.clone()); + } + }); + row.col(|ui| { + ui.label(&entry.title); + }); + row.col(|ui| { + ui.label(&entry.company); + }); + }); + }); + + if let Some(path) = to_load { + self.load_rom_file(path.to_str().unwrap()); + } } } } - - #[cfg(target_arch = "wasm32")] - ui.centered_and_justified(|ui| { - ui.heading("No game loaded."); - }); } }); - - // Request repaint to keep emulator running - ctx.request_repaint(); } } diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index 3fc0e99..3b5223a 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -16,10 +16,32 @@ fn main() -> eframe::Result<()> { let cli = Cli::parse(); + let icon_data = match image::load_from_memory(include_bytes!( + "../../../images/sturdygb_symbol_64x64.png" + )) { + Ok(img) => { + let img = img.into_rgba8(); + let (width, height) = img.dimensions(); + let rgba = img.into_raw(); + Some(std::sync::Arc::new(eframe::egui::IconData { + rgba, + width, + height, + })) + } + Err(_) => None, + }; + + let mut viewport = eframe::egui::ViewportBuilder::default() + .with_inner_size([(160.0) * 4.0, (144.0) * 4.0 + 30.0]) + .with_title(format!("SturdyGB")); + + if let Some(icon) = icon_data { + viewport = viewport.with_icon(icon); + } + let options = eframe::NativeOptions { - viewport: eframe::egui::ViewportBuilder::default() - .with_inner_size([(160.0) * 4.0, (144.0) * 4.0 + 30.0]) - .with_title(format!("SturdyGB")), + viewport, ..Default::default() }; From ff0ecbc539e8b1795c9d1e9126433ec9b3499c21 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Thu, 26 Feb 2026 16:19:46 -0300 Subject: [PATCH 03/13] refactor: extract app name and version to constant - Add APP_NAME constant combining name and version from Cargo.toml - Replace hardcoded "SturdyGB" strings with APP_NAME constant - Simplify title formatting by reusing constant - Remove unused SCALE constant --- crates/frontend/src/app.rs | 18 ++++++++---------- crates/frontend/src/main.rs | 6 ++++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 63014b3..015265a 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -7,6 +7,8 @@ use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use std::collections::HashMap; use std::sync::mpsc::{sync_channel, SyncSender}; +pub const APP_NAME: &str = concat!("SturdyGB v", env!("CARGO_PKG_VERSION")); + #[cfg(not(target_arch = "wasm32"))] use rfd::FileDialog; @@ -15,7 +17,6 @@ use rfd::AsyncFileDialog; const GB_W: usize = 160; const GB_H: usize = 144; -const SCALE: f32 = 4.0; static mut AUDIO_PRODUCER: Option> = None; static mut AUDIO_STREAM: Option = None; @@ -355,10 +356,9 @@ impl eframe::App for EmuApp { if ui.button("Stop").clicked() { self.state = None; self.texture = None; - ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!( - "SturdyGB v{}", - env!("CARGO_PKG_VERSION") - ))); + ctx.send_viewport_cmd(egui::ViewportCommand::Title( + APP_NAME.to_string(), + )); ui.close(); } } @@ -569,7 +569,7 @@ impl eframe::App for EmuApp { if ctx.input(|i| i.key_pressed(egui::Key::Escape)) { self.state = None; self.texture = None; - ctx.send_viewport_cmd(egui::ViewportCommand::Title("SturdyGB".to_string())); + ctx.send_viewport_cmd(egui::ViewportCommand::Title(APP_NAME.to_string())); return; } @@ -716,10 +716,8 @@ impl eframe::App for EmuApp { self.last_fps_update = std::time::Instant::now(); ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!( - "SturdyGB v{} - {} (FPS: {})", - env!("CARGO_PKG_VERSION"), - state.title, - self.current_fps + "{} - {} (FPS: {})", + APP_NAME, state.title, self.current_fps ))); } diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index 3b5223a..ba51168 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -3,6 +3,8 @@ mod app; +use crate::app::APP_NAME; + #[cfg(not(target_arch = "wasm32"))] fn main() -> eframe::Result<()> { use clap::Parser; @@ -34,7 +36,7 @@ fn main() -> eframe::Result<()> { let mut viewport = eframe::egui::ViewportBuilder::default() .with_inner_size([(160.0) * 4.0, (144.0) * 4.0 + 30.0]) - .with_title(format!("SturdyGB")); + .with_title(APP_NAME.to_string()); if let Some(icon) = icon_data { viewport = viewport.with_icon(icon); @@ -46,7 +48,7 @@ fn main() -> eframe::Result<()> { }; eframe::run_native( - "SturdyGB", + APP_NAME, options, Box::new(|cc| Ok(Box::new(app::EmuApp::new(cc, cli.rom)))), ) From 04ea52bc1768bbd322b666711d8afb6cf44a3813 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Fri, 27 Feb 2026 00:11:14 -0300 Subject: [PATCH 04/13] docs: improve README with build instructions and UI enhancements - Add detailed build instructions for desktop and WebAssembly targets - Add search and sort functionality to game library browser - Update dependencies (rfd 0.17.2, cpal 0.17) - Replace std::time::Instant with instant crate for WASM compatibility - Add web-specific UI for ROM loading on WASM target - Fix copyright year in release workflow (2024) - Enable serial message printing for debugging - Reorganize README sections and improve --- .github/workflows/release.yml | 2 +- Cargo.lock | 807 +++++++--------------------------- README.md | 117 +++-- crates/core/src/gb.rs | 2 +- crates/frontend/Cargo.toml | 19 +- crates/frontend/src/app.rs | 131 +++++- crates/frontend/src/main.rs | 26 ++ dist-workspace.toml | 2 +- 8 files changed, 403 insertions(+), 703 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7656af..3c59af5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,6 @@ # This file was autogenerated by dist: https://axodotdev.github.io/cargo-dist # -# Copyright 2022-2026, axodotdev +# Copyright 2022-2024, axodotdev # SPDX-License-Identifier: MIT or Apache-2.0 # # CI that: diff --git a/Cargo.lock b/Cargo.lock index 1580843..63fe0f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,7 +39,7 @@ dependencies = [ "atspi-common", "serde", "thiserror 1.0.69", - "zvariant 5.10.0", + "zvariant", ] [[package]] @@ -81,7 +81,7 @@ dependencies = [ "futures-lite", "futures-util", "serde", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -132,20 +132,11 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - [[package]] name = "alsa" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +checksum = "7c88dbbce13b232b26250e1e2e6ac18b6a891a646b8148285036ebce260ac5c3" dependencies = [ "alsa-sys", "bitflags 2.10.0", @@ -177,9 +168,9 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk 0.9.0", + "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "thiserror 1.0.69", ] @@ -302,24 +293,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "ashpd" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" -dependencies = [ - "async-fs", - "async-net", - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.8.5", - "serde", - "serde_repr", - "url", - "zbus 4.4.0", -] - [[package]] name = "async-broadcast" version = "0.7.2" @@ -358,17 +331,6 @@ dependencies = [ "slab", ] -[[package]] -name = "async-fs" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" version = "2.6.0" @@ -398,17 +360,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - [[package]] name = "async-process" version = "2.5.0" @@ -499,11 +450,11 @@ dependencies = [ "enumflags2", "serde", "static_assertions", - "zbus 5.14.0", + "zbus", "zbus-lockstep", "zbus-lockstep-macros", - "zbus_names 4.3.1", - "zvariant 5.10.0", + "zbus_names", + "zvariant", ] [[package]] @@ -515,7 +466,7 @@ dependencies = [ "atspi-common", "atspi-proxies", "futures-lite", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -526,7 +477,7 @@ checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" dependencies = [ "atspi-common", "serde", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -541,24 +492,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools", - "proc-macro2", - "quote", - "regex", - "rustc-hash 2.1.1", - "shlex", - "syn", -] - [[package]] name = "bit-set" version = "0.8.0" @@ -596,21 +529,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "generic-array", + "objc2 0.5.2", ] [[package]] name = "block2" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.5.2", + "objc2 0.6.3", ] [[package]] @@ -739,15 +672,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.4" @@ -776,21 +700,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" dependencies = [ "cfg-if", - "cpufeatures 0.3.0", + "cpufeatures", "rand_core 0.10.0", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "4.5.53" @@ -955,54 +868,46 @@ dependencies = [ [[package]] name = "coreaudio-rs" -version = "0.11.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +checksum = "1aae284fbaf7d27aa0e292f7677dfbe26503b0d555026f702940805a630eac17" dependencies = [ "bitflags 1.3.2", - "core-foundation-sys", - "coreaudio-sys", -] - -[[package]] -name = "coreaudio-sys" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" -dependencies = [ - "bindgen", + "libc", + "objc2-audio-toolbox", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", ] [[package]] name = "cpal" -version = "0.15.3" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +checksum = "5b1f9c7312f19fc2fa12fd7acaf38de54e8320ba10d1a02dcbe21038def51ccb" dependencies = [ "alsa", - "core-foundation-sys", "coreaudio-rs", "dasp_sample", "jni", "js-sys", "libc", "mach2", - "ndk 0.8.0", + "ndk", "ndk-context", - "oboe", + "num-derive", + "num-traits", + "objc2 0.6.3", + "objc2-audio-toolbox", + "objc2-avf-audio", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.54.0", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", + "windows 0.61.3", ] [[package]] @@ -1035,16 +940,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "cursor-icon" version = "1.2.0" @@ -1057,16 +952,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1080,6 +965,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ "bitflags 2.10.0", + "block2 0.6.2", + "libc", "objc2 0.6.3", ] @@ -1161,7 +1048,7 @@ dependencies = [ "objc2-foundation 0.2.2", "parking_lot", "percent-encoding", - "pollster 0.4.0", + "pollster", "profiling", "raw-window-handle", "ron", @@ -1271,12 +1158,6 @@ dependencies = [ "winit", ] -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - [[package]] name = "emath" version = "0.33.3" @@ -1512,15 +1393,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", -] - [[package]] name = "futures-core" version = "0.3.31" @@ -1557,12 +1429,6 @@ dependencies = [ "syn", ] -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - [[package]] name = "futures-task" version = "0.3.31" @@ -1576,26 +1442,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "gethostname" version = "1.1.0" @@ -1606,19 +1459,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -1660,12 +1500,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - [[package]] name = "glow" version = "0.16.0" @@ -1993,19 +1827,22 @@ dependencies = [ ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.2" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] [[package]] -name = "itertools" -version = "0.13.0" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itoa" @@ -2152,9 +1989,9 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "mach2" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" dependencies = [ "libc", ] @@ -2225,12 +2062,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2277,20 +2108,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "ndk" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" -dependencies = [ - "bitflags 2.10.0", - "jni-sys", - "log", - "ndk-sys 0.5.0+25.2.9519653", - "num_enum", - "thiserror 1.0.69", -] - [[package]] name = "ndk" version = "0.9.0" @@ -2300,7 +2117,7 @@ dependencies = [ "bitflags 2.10.0", "jni-sys", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -2312,15 +2129,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -2330,35 +2138,12 @@ dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - [[package]] name = "nohash-hasher" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-derive" version = "0.4.2" @@ -2411,17 +2196,6 @@ dependencies = [ "malloc_buf", ] -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -2454,7 +2228,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "libc", "objc2 0.5.2", "objc2-core-data", @@ -2470,12 +2244,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags 2.10.0", + "block2 0.6.2", "objc2 0.6.3", "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-audio-toolbox" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08" +dependencies = [ + "bitflags 2.10.0", + "libc", + "objc2 0.6.3", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-avf-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +dependencies = [ + "objc2 0.6.3", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-cloud-kit" version = "0.2.2" @@ -2483,7 +2283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", "objc2-foundation 0.2.2", @@ -2495,11 +2295,34 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-core-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" +dependencies = [ + "dispatch2", + "objc2 0.6.3", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-core-audio-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", +] + [[package]] name = "objc2-core-data" version = "0.2.2" @@ -2507,7 +2330,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] @@ -2519,7 +2342,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.10.0", + "block2 0.6.2", "dispatch2", + "libc", "objc2 0.6.3", ] @@ -2542,7 +2367,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-metal", @@ -2554,7 +2379,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-contacts", "objc2-foundation 0.2.2", @@ -2573,7 +2398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "dispatch", "libc", "objc2 0.5.2", @@ -2586,6 +2411,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.10.0", + "block2 0.6.2", + "libc", "objc2 0.6.3", "objc2-core-foundation", ] @@ -2607,7 +2434,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -2620,7 +2447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] @@ -2632,7 +2459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-metal", @@ -2655,7 +2482,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit", "objc2-core-data", @@ -2675,7 +2502,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] @@ -2687,44 +2514,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.10.0", - "block2", + "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - -[[package]] -name = "oboe" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" -dependencies = [ - "jni", - "ndk 0.8.0", - "ndk-context", - "num-derive", - "num-traits", - "oboe-sys", -] - -[[package]] -name = "oboe-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" -dependencies = [ - "cc", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -2942,12 +2737,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "pollster" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" - [[package]] name = "pollster" version = "0.4.0" @@ -2978,15 +2767,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "presser" version = "0.3.1" @@ -3073,8 +2853,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha", "rand_core 0.6.4", ] @@ -3089,24 +2867,11 @@ dependencies = [ "rand_core 0.10.0", ] -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] [[package]] name = "rand_core" @@ -3153,35 +2918,6 @@ dependencies = [ "bitflags 2.10.0", ] -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - [[package]] name = "renderdoc-sys" version = "1.1.0" @@ -3190,25 +2926,29 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "rfd" -version = "0.14.1" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" +checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" dependencies = [ - "ashpd", - "block", - "dispatch", + "block2 0.6.2", + "dispatch2", "js-sys", + "libc", "log", - "objc", - "objc-foundation", - "objc_id", - "pollster 0.3.0", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "percent-encoding", + "pollster", "raw-window-handle", - "urlencoding", "wasm-bindgen", "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", "web-sys", - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -3368,17 +3108,6 @@ dependencies = [ "syn", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "digest", -] - [[package]] name = "shlex" version = "1.3.0" @@ -3542,10 +3271,10 @@ dependencies = [ "eframe", "egui", "egui_extras", - "getrandom 0.2.16", "getrandom 0.3.4", "getrandom 0.4.1", "image", + "instant", "log", "rfd", "serde", @@ -3553,6 +3282,7 @@ dependencies = [ "walkdir", "wasm-bindgen", "wasm-bindgen-futures", + "web-sys", "zip", ] @@ -3776,12 +3506,6 @@ dependencies = [ "rustc-hash 2.1.1", ] -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - [[package]] name = "uds_windows" version = "1.1.0" @@ -3835,12 +3559,6 @@ dependencies = [ "serde", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -3880,12 +3598,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -4290,7 +4002,7 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "objc", "once_cell", "ordered-float", @@ -4355,16 +4067,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" -dependencies = [ - "windows-core 0.54.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.58.0" @@ -4397,16 +4099,6 @@ dependencies = [ "windows-core 0.61.2", ] -[[package]] -name = "windows-core" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" -dependencies = [ - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.58.0" @@ -4510,15 +4202,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.2.0" @@ -4565,15 +4248,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -4616,21 +4290,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -4662,12 +4321,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -4680,12 +4333,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -4698,12 +4345,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -4722,12 +4363,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -4740,12 +4375,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -4758,12 +4387,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -4776,12 +4399,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -4798,7 +4415,7 @@ dependencies = [ "android-activity", "atomic-waker", "bitflags 2.10.0", - "block2", + "block2 0.5.1", "bytemuck", "calloop 0.13.0", "cfg_aliases", @@ -4810,7 +4427,7 @@ dependencies = [ "js-sys", "libc", "memmap2", - "ndk 0.9.0", + "ndk", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -4987,16 +4604,6 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "xkbcommon-dl" version = "0.4.2" @@ -5045,44 +4652,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zbus" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros 4.4.0", - "zbus_names 3.0.0", - "zvariant 4.2.0", -] - [[package]] name = "zbus" version = "5.14.0" @@ -5113,9 +4682,9 @@ dependencies = [ "uuid", "windows-sys 0.61.2", "winnow", - "zbus_macros 5.14.0", - "zbus_names 4.3.1", - "zvariant 5.10.0", + "zbus_macros", + "zbus_names", + "zvariant", ] [[package]] @@ -5125,7 +4694,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" dependencies = [ "zbus_xml", - "zvariant 5.10.0", + "zvariant", ] [[package]] @@ -5139,20 +4708,7 @@ dependencies = [ "syn", "zbus-lockstep", "zbus_xml", - "zvariant 5.10.0", -] - -[[package]] -name = "zbus_macros" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils 2.1.0", + "zvariant", ] [[package]] @@ -5165,20 +4721,9 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zbus_names 4.3.1", - "zvariant 5.10.0", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant 4.2.0", + "zbus_names", + "zvariant", + "zvariant_utils", ] [[package]] @@ -5189,7 +4734,7 @@ checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", "winnow", - "zvariant 5.10.0", + "zvariant", ] [[package]] @@ -5200,8 +4745,8 @@ checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" dependencies = [ "quick-xml", "serde", - "zbus_names 4.3.1", - "zvariant 5.10.0", + "zbus_names", + "zvariant", ] [[package]] @@ -5305,20 +4850,6 @@ dependencies = [ "zune-core", ] -[[package]] -name = "zvariant" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "url", - "zvariant_derive 4.2.0", -] - [[package]] name = "zvariant" version = "5.10.0" @@ -5329,21 +4860,8 @@ dependencies = [ "enumflags2", "serde", "winnow", - "zvariant_derive 5.10.0", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zvariant_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils 2.1.0", + "zvariant_derive", + "zvariant_utils", ] [[package]] @@ -5356,18 +4874,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zvariant_utils" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "zvariant_utils", ] [[package]] diff --git a/README.md b/README.md index 2216465..04573d5 100644 --- a/README.md +++ b/README.md @@ -35,24 +35,17 @@ SPDX-License-Identifier: MIT - **SturdyGB** is an experimental **Game Boy emulator written in Rust**, focused on correctness, clean architecture, and long-term accuracy. -This project is still in **early development**. It can already run many commercial **DMG (original Game Boy)** titles, but several subsystems are incomplete or approximate. - -SturdyGB is primarily intended as: -- a learning and research project, -- a testbed for emulator accuracy, -- and a clean Rust codebase for exploring Game Boy internals. - -It is **not yet** a drop-in replacement for mature emulators. +This project is still in **early development**. It can already run many commercial **DMG (original Game Boy)** titles. ## Current Features ### Core Emulation -- LR35902 CPU + +- LR35902 CPU - Passes **blargg’s CPU instruction tests** - Timer - Interrupt controller @@ -60,18 +53,22 @@ It is **not yet** a drop-in replacement for mature emulators. - Serial I/O ### Video (PPU) + - Functional DMG PPU - Background, window, and sprite rendering - OAM DMA - Scanline-based renderer (not cycle-accurate yet) -> Some games that rely on mid-scanline PPU tricks or precise STAT timing may show graphical issues. +> [!WARNING] +> Some games may show graphical issues due to the inaccurate PPU. ### Input + - Joypad emulation - Keyboard input in frontend ### Cartridge Support + - ROM-only - MBC1 - MBC2 @@ -107,44 +104,95 @@ It is **not yet** a drop-in replacement for mature emulators. - Rewind - Customizable keys -## Building and running from GitHub +## Building and running from source You can find release builds [here](https://github.com/sturdy-robot/sturdygb/releases). -To build from source, just use: +Officially supported architectures: + +- aarch64-apple-darwin +- aarch64-pc-windows-msvc +- aarch64-unknown-linux-gnu +- x86_64-apple-darwin +- x86_64-pc-windows-msvc +- x86_64-unknown-linux-gnu + +### Prerequisites + +To build SturdyGB, you need the Rust toolchain installed. You can install it via [rustup](https://rustup.rs/). + +### Desktop Build + +To build the native desktop application from source, run: ```bash -cargo build +cargo build --release ``` -And you can run it simply with: +You can run the emulator directly using: ```bash -cargo run +# Run without a ROM +cargo run --release --bin sturdygb_bin + +# Run with a specific ROM +cargo run --release --bin sturdygb_bin ``` -## How to run +### WebAssembly (WASM) Build -Since we don't have a fully fledged frontend yet, you have to run it from the command line: +SturdyGB can also be compiled to run in a web browser using WebAssembly. -```bash -sturdygb -``` +1. **Install the `wasm32-unknown-unknown` target:** + + ```bash + rustup target add wasm32-unknown-unknown + ``` + +2. **Install `wasm-bindgen-cli`:** + Make sure the version matches the one in `Cargo.toml`. + + ```bash + cargo install wasm-bindgen-cli + ``` + +3. **Build the WebAssembly target:** + + ```bash + cd crates/frontend + cargo build --target wasm32-unknown-unknown --release + ``` + +4. **Generate the WASM bindings:** + + ```bash + wasm-bindgen --out-dir public/pkg --target web ../../target/wasm32-unknown-unknown/release/sturdygb.wasm + ``` + +5. **Serve the application:** + You will need a local web server to serve the files in the `crates/frontend/public` directory. For example, using Python: + ```bash + cd public + python -m http.server 8080 + ``` + Then navigate to `http://localhost:8080` in your web browser. ## Keys -Keys are not yet customizable, and they are hardcoded as follows: +The default keys are: + +| Key | Action | +| ------------ | ------ | +| Arrow Up | Up | +| Arrow Down | Down | +| Arrow Left | Left | +| Arrow Right | Right | +| Z | A | +| X | B | +| Return/Enter | Start | +| Space | Select | -| Key | Action | -| --- | --- | -| Arrow Up | Up | -| Arrow Down | Down | -| Arrow Left | Left | -| Arrow Right | Right | -| Z | A | -| X | B | -| Return/Enter | Start | -| Space | Select | +You can customize them in the UI (no joypad support yet). ## Roadmap @@ -152,7 +200,6 @@ Planned future work includes: - Pixel-FIFO-based, cycle-accurate PPU - Correct STAT interrupt edge behavior -- Full APU implementation - Game Boy Color (CGB) mode - Debugging tools (PPU viewer, memory viewer, breakpoints) - Save states @@ -210,7 +257,7 @@ SturdyGB is an **early technical project**. Accuracy, structure, and experimentation are prioritized over performance, UX, or completeness. Expect bugs, missing features, and breaking changes. -## 📜 License +## License Copyright © 2022-2026 Pedrenrique G. Guimarães @@ -235,4 +282,4 @@ Accuracy, structure, and experimentation are prioritized over performance, UX, o FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -The project is licensed under [MIT](LICENSE.md) license. \ No newline at end of file +The project is licensed under [MIT](LICENSE.md) license. diff --git a/crates/core/src/gb.rs b/crates/core/src/gb.rs index caac91b..236b0e9 100644 --- a/crates/core/src/gb.rs +++ b/crates/core/src/gb.rs @@ -123,7 +123,7 @@ impl Gb { self.handle_interrupt(); self.cpu_tick(); self.components_tick(); - //self.print_serial_message(); + self.print_serial_message(); } pub fn run_one_frame(&mut self) { diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index 715e842..eb1cf15 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -8,18 +8,24 @@ edition = "2021" repository = "https://github.com/sturdy-robot/sturdygb" [lib] +name = "sturdygb" crate-type = ["cdylib", "rlib"] +[[bin]] +name = "sturdygb_bin" +path = "src/main.rs" + [dependencies] sturdygb_core = { path = "../core" } clap = { version = "4.5", features = ["derive"] } -rfd = "0.14.1" -cpal = "0.15" +rfd = "0.17.2" +cpal = "0.17" eframe = { version = "0.33.3", features = ["wgpu", "persistence"] } egui = { version = "0.33.3", features = ["color-hex", "serde"] } egui_extras = { version = "0.33.3", features = ["image"] } zip = { version = "0.6", default-features = false, features = ["deflate"] } image = { version = "0.25", default-features = false, features = ["png"] } +instant = { version = "0.1", features = ["wasm-bindgen", "inaccurate"] } serde = { version = "1.0", features = ["derive"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] @@ -29,9 +35,14 @@ walkdir = "2" wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4.50" console_error_panic_hook = "0.1" -cpal = { version = "0.15", features = ["wasm-bindgen"] } +cpal = { version = "0.17", features = ["wasm-bindgen"] } log = "0.4" -getrandom_02 = { package = "getrandom", version = "0.2", features = ["js"] } +web-sys = { version = "0.3.83", features = [ + "Document", + "Element", + "HtmlCanvasElement", + "Window", +] } getrandom_03 = { package = "getrandom", version = "0.3", features = [ "wasm_js", ] } diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 015265a..e37675b 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -40,15 +40,21 @@ pub struct EmuApp { game_list: Vec, #[cfg(not(target_arch = "wasm32"))] recursive_search: bool, + #[cfg(not(target_arch = "wasm32"))] + search_query: String, + #[cfg(not(target_arch = "wasm32"))] + sort_by: SortMethod, + #[cfg(not(target_arch = "wasm32"))] + sort_ascending: bool, config: SturdyConfig, show_options: bool, #[cfg(not(target_arch = "wasm32"))] loading_directory: bool, #[cfg(not(target_arch = "wasm32"))] dir_load_receiver: Option>, - start_time: std::time::Instant, + start_time: instant::Instant, frames_rendered: usize, - last_fps_update: std::time::Instant, + last_fps_update: instant::Instant, current_fps: usize, } @@ -97,6 +103,14 @@ pub enum Palette { Pocket, } +#[cfg(not(target_arch = "wasm32"))] +#[derive(PartialEq, Clone, Copy, Debug)] +pub enum SortMethod { + Filename, + Title, + Company, +} + #[cfg(not(target_arch = "wasm32"))] #[derive(Clone)] struct GameEntry { @@ -124,15 +138,21 @@ impl EmuApp { game_list: Vec::new(), #[cfg(not(target_arch = "wasm32"))] recursive_search: false, + #[cfg(not(target_arch = "wasm32"))] + search_query: String::new(), + #[cfg(not(target_arch = "wasm32"))] + sort_by: SortMethod::Filename, + #[cfg(not(target_arch = "wasm32"))] + sort_ascending: true, config, show_options: false, #[cfg(not(target_arch = "wasm32"))] loading_directory: false, #[cfg(not(target_arch = "wasm32"))] dir_load_receiver: None, - start_time: std::time::Instant::now(), + start_time: instant::Instant::now(), frames_rendered: 0, - last_fps_update: std::time::Instant::now(), + last_fps_update: instant::Instant::now(), current_fps: 0, }; @@ -169,7 +189,7 @@ impl EmuApp { }); self.error_msg = None; self.frames_rendered = 0; - self.last_fps_update = std::time::Instant::now(); + self.last_fps_update = instant::Instant::now(); } Err(e) => { self.error_msg = Some(format!("Failed to load ROM:\n{e}")); @@ -201,7 +221,7 @@ impl EmuApp { }); self.error_msg = None; self.frames_rendered = 0; - self.last_fps_update = std::time::Instant::now(); + self.last_fps_update = instant::Instant::now(); } Err(e) => { self.error_msg = Some(format!("Failed to load ROM:\n{e}")); @@ -322,7 +342,7 @@ impl eframe::App for EmuApp { } egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| { - egui::menu::bar(ui, |ui| { + egui::MenuBar::new().ui(ui, |ui| { ui.menu_button("File", |ui| { if ui.button("Open ROM...").clicked() { #[cfg(not(target_arch = "wasm32"))] @@ -713,7 +733,7 @@ impl eframe::App for EmuApp { if self.last_fps_update.elapsed().as_secs_f32() >= 1.0 { self.current_fps = self.frames_rendered; self.frames_rendered = 0; - self.last_fps_update = std::time::Instant::now(); + self.last_fps_update = instant::Instant::now(); ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!( "{} - {} (FPS: {})", @@ -758,6 +778,7 @@ impl eframe::App for EmuApp { { ui.centered_and_justified(|ui| { ui.vertical_centered(|ui| { + ui.add_space(ui.available_height() / 2.0 - 30.0); ui.heading("No games found."); ui.add_space(8.0); if ui.button("Open ROM...").clicked() { @@ -802,6 +823,7 @@ impl eframe::App for EmuApp { if self.loading_directory { ui.centered_and_justified(|ui| { + ui.add_space(ui.available_height() / 2.0 - 30.0); ui.vertical_centered(|ui| { ui.heading(format!( "Loading Games... ({})", @@ -812,6 +834,68 @@ impl eframe::App for EmuApp { }); } else { let mut to_load = None; + + ui.horizontal(|ui| { + ui.label("Search:"); + ui.text_edit_singleline(&mut self.search_query); + + ui.separator(); + + ui.label("Sort by:"); + egui::ComboBox::from_id_salt("sort_by") + .selected_text(format!("{:?}", self.sort_by)) + .show_ui(ui, |ui| { + ui.selectable_value( + &mut self.sort_by, + SortMethod::Filename, + "Filename", + ); + ui.selectable_value( + &mut self.sort_by, + SortMethod::Title, + "Title", + ); + ui.selectable_value( + &mut self.sort_by, + SortMethod::Company, + "Company", + ); + }); + + if ui + .button(if self.sort_ascending { "⬆" } else { "⬇" }) + .clicked() + { + self.sort_ascending = !self.sort_ascending; + } + }); + ui.add_space(4.0); + + let query = self.search_query.to_lowercase(); + let mut filtered_games: Vec<_> = self + .game_list + .iter() + .filter(|g| { + query.is_empty() + || g.filename.to_lowercase().contains(&query) + || g.title.to_lowercase().contains(&query) + || g.company.to_lowercase().contains(&query) + }) + .collect(); + + filtered_games.sort_by(|a, b| { + let cmp = match self.sort_by { + SortMethod::Filename => a.filename.cmp(&b.filename), + SortMethod::Title => a.title.cmp(&b.title), + SortMethod::Company => a.company.cmp(&b.company), + }; + if self.sort_ascending { + cmp + } else { + cmp.reverse() + } + }); + let row_height = 20.0; use egui_extras::{Column, TableBuilder}; @@ -837,8 +921,8 @@ impl eframe::App for EmuApp { }); }) .body(|body| { - body.rows(row_height, self.game_list.len(), |mut row| { - let entry = &self.game_list[row.index()]; + body.rows(row_height, filtered_games.len(), |mut row| { + let entry = filtered_games[row.index()]; row.col(|ui| { if ui .selectable_label(false, &entry.filename) @@ -862,6 +946,31 @@ impl eframe::App for EmuApp { } } } + + #[cfg(target_arch = "wasm32")] + { + ui.centered_and_justified(|ui| { + ui.vertical_centered(|ui| { + ui.add_space(ui.available_height() / 2.0 - 30.0); + ui.heading("SturdyGB Web"); + ui.add_space(8.0); + if ui.button("Open ROM...").clicked() { + let sender = self.rom_load_channel.0.clone(); + wasm_bindgen_futures::spawn_local(async move { + let file = AsyncFileDialog::new() + .add_filter("GameBoy ROMs", &["gb", "gbc"]) + .pick_file() + .await; + + if let Some(file) = file { + let bytes = file.read().await; + let _ = sender.send(Ok(bytes)); + } + }); + } + }); + }); + } } }); } @@ -881,7 +990,7 @@ fn setup_audio(gb: &mut sturdygb_core::gb::Gb) { if let Some(device) = device { let config = device.default_output_config().unwrap().config(); - let sample_rate: u32 = config.sample_rate.0; + let sample_rate: u32 = config.sample_rate.into(); gb.set_sample_rate(sample_rate); let (prod, cons) = sync_channel::<[f32; 2]>(4096); diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index ba51168..06f1748 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -56,6 +56,32 @@ fn main() -> eframe::Result<()> { #[cfg(target_arch = "wasm32")] fn main() { + use wasm_bindgen::JsCast; // Redirect `log` message to `console.log` and friends: eframe::WebLogger::init(log::LevelFilter::Debug).ok(); + + wasm_bindgen_futures::spawn_local(async { + let document = web_sys::window() + .expect("No window") + .document() + .expect("No document"); + + let canvas = document + .get_element_by_id("the_canvas_id") + .expect("Failed to find the_canvas_id") + .dyn_into::() + .expect("the_canvas_id was not a HtmlCanvasElement"); + + let runner = eframe::WebRunner::new(); + let web_options = eframe::WebOptions::default(); + + runner + .start( + canvas, + web_options, + Box::new(|cc| Ok(Box::new(app::EmuApp::new(cc, None)))), + ) + .await + .expect("Failed to start eframe"); + }); } diff --git a/dist-workspace.toml b/dist-workspace.toml index e4f155a..413140e 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -10,7 +10,7 @@ ci = "github" # The installers to generate for each app installers = [] # Target platforms to build apps for (Rust target-triple syntax) -targets = ["aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"] +targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"] [dist.dependencies.apt] libasound2-dev = "*" From 125c951eb5ff0fd0e3c2ad795ebeb84fd7bdc5a9 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Fri, 27 Feb 2026 00:28:02 -0300 Subject: [PATCH 05/13] fix: implement HALT bug behavior for interrupt edge case - Add halt_bug flag to CPU state to track HALT bug condition - Implement HALT bug when HALT executed with IME=0 and pending interrupts - Fix PC increment behavior during HALT bug (decrement by 1) - Simplify interrupt handling by checking pending interrupts consistently - Remove redundant is_halted check when pushing PC to stack - Mask interrupt flags with 0x1F to check only valid interrupt bits --- crates/core/src/cpu.rs | 5 +++-- crates/core/src/instructions.rs | 7 ++++++- crates/core/src/interrupts.rs | 29 +++++++++++------------------ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/crates/core/src/cpu.rs b/crates/core/src/cpu.rs index a9fb7cc..cfdc2cf 100644 --- a/crates/core/src/cpu.rs +++ b/crates/core/src/cpu.rs @@ -76,10 +76,11 @@ impl Cpu { } pub fn advance_pc(&mut self) { + let mut adv = OPCODES_SIZE[self.current_instruction as usize]; if self.halt_bug { - return; + self.halt_bug = false; + adv = adv.saturating_sub(1); } - let adv = OPCODES_SIZE[self.current_instruction as usize]; self.pc = self.pc.wrapping_add(adv); } diff --git a/crates/core/src/instructions.rs b/crates/core/src/instructions.rs index 3b2f9f9..1da21c0 100644 --- a/crates/core/src/instructions.rs +++ b/crates/core/src/instructions.rs @@ -319,8 +319,13 @@ impl Gb { } fn halt(&mut self) { - self.cpu.is_halted = true; self.cpu.advance_pc(); + let pending = self.ie_flag & self.if_flag & 0x1F; + if !self.cpu.interrupt_master && pending != 0 { + self.cpu.halt_bug = true; + } else { + self.cpu.is_halted = true; + } } fn ld_sp_d16(&mut self) { diff --git a/crates/core/src/interrupts.rs b/crates/core/src/interrupts.rs index 0556d64..d1bcc4b 100644 --- a/crates/core/src/interrupts.rs +++ b/crates/core/src/interrupts.rs @@ -31,23 +31,19 @@ impl Gb { return; } - if self.cpu.interrupt_master && self.cpu.is_halted { + let pending = self.ie_flag & self.if_flag & 0x1F; + + if pending != 0 && self.cpu.is_halted { self.cpu.is_halted = false; - return; } - if !self.check_interrupts() { + if !self.cpu.interrupt_master || pending == 0 { return; } self.cpu.interrupt_master = false; self.cpu.sp = self.cpu.sp.wrapping_sub(2); - let pc = if self.cpu.is_halted { - self.cpu.pc.wrapping_add(1) - } else { - self.cpu.pc - }; - self.write_word(self.cpu.sp, pc); + self.write_word(self.cpu.sp, self.cpu.pc); self.cpu.pending_cycles += 5; let interrupt_source = self.get_interrupt_source(); let address = self.go_interrupt(&interrupt_source); @@ -55,20 +51,17 @@ impl Gb { self.if_flag &= !(interrupt_source as u8); } - fn check_interrupts(&mut self) -> bool { - self.cpu.interrupt_master && (self.ie_flag & self.if_flag != 0) - } - fn get_interrupt_source(&mut self) -> Interrupt { - if self.if_flag & (Interrupt::Vblank as u8) != 0 { + let pending = self.ie_flag & self.if_flag & 0x1F; + if pending & (Interrupt::Vblank as u8) != 0 { Interrupt::Vblank - } else if self.if_flag & (Interrupt::LcdStat as u8) != 0 { + } else if pending & (Interrupt::LcdStat as u8) != 0 { Interrupt::LcdStat - } else if self.if_flag & (Interrupt::Timer as u8) != 0 { + } else if pending & (Interrupt::Timer as u8) != 0 { Interrupt::Timer - } else if self.if_flag & (Interrupt::Serial as u8) != 0 { + } else if pending & (Interrupt::Serial as u8) != 0 { Interrupt::Serial - } else if self.if_flag & (Interrupt::Joypad as u8) != 0 { + } else if pending & (Interrupt::Joypad as u8) != 0 { Interrupt::Joypad } else { Interrupt::Invalid From 8b48ab0c46060e26dcbaefa680a6e944fb5c69dc Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Fri, 27 Feb 2026 00:47:06 -0300 Subject: [PATCH 06/13] feat: add save file path support for ROM loading from bytes - Add optional save_path parameter to load_cartridge_from_bytes and build_from_bytes - Generate .sav file path when loading ROMs from filesystem - Pass None for save_path when loading ROMs asynchronously (web/memory) - Extract save path generation to avoid duplication in load_rom_file --- crates/core/src/cartridge.rs | 10 ++++++---- crates/core/src/prelude.rs | 7 +++++-- crates/frontend/src/app.rs | 14 +++++++++----- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/crates/core/src/cartridge.rs b/crates/core/src/cartridge.rs index 6ef3f3d..9c9782a 100644 --- a/crates/core/src/cartridge.rs +++ b/crates/core/src/cartridge.rs @@ -15,11 +15,13 @@ pub fn load_cartridge(filename: &str) -> Result<(Box, GbMode), String> } } -pub fn load_cartridge_from_bytes(rom_data: Vec) -> Result<(Box, GbMode), String> { - // For web/memory loads, we do not have a save file path - let save_path = std::path::PathBuf::new(); +pub fn load_cartridge_from_bytes( + rom_data: Vec, + save_path: Option, +) -> Result<(Box, GbMode), String> { + let path = save_path.unwrap_or_else(|| std::path::PathBuf::new()); match CartridgeHeader::new(&rom_data) { - Ok(header) => Ok(get_mbc(rom_data, header, save_path)), + Ok(header) => Ok(get_mbc(rom_data, header, path)), Err(f) => Err(f.to_string()), } } diff --git a/crates/core/src/prelude.rs b/crates/core/src/prelude.rs index 8a34081..31cc253 100644 --- a/crates/core/src/prelude.rs +++ b/crates/core/src/prelude.rs @@ -22,10 +22,13 @@ impl GbInstance { } } - pub fn build_from_bytes(rom_data: Vec) -> Result { + pub fn build_from_bytes( + rom_data: Vec, + save_path: Option, + ) -> Result { use crate::cartridge::load_cartridge_from_bytes; let gb_type: GbTypes; - match load_cartridge_from_bytes(rom_data) { + match load_cartridge_from_bytes(rom_data, save_path) { Ok((mbc, gb_mode)) => { gb_type = if gb_mode == GbMode::CgbMode { GbTypes::Cgb diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index e37675b..711add0 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -169,7 +169,10 @@ impl EmuApp { fn load_rom_file(&mut self, path: &str) { if let Ok(bytes) = std::fs::read(path) { if let Some(extracted) = extract_rom_from_bytes(&bytes) { - self.load_rom_bytes(extracted); + self.load_rom_bytes( + extracted, + Some(std::path::PathBuf::from(path).with_extension("sav")), + ); return; } @@ -178,7 +181,8 @@ impl EmuApp { title = header.title; } - match GbInstance::build_from_bytes(bytes) { + let save_path = std::path::PathBuf::from(path).with_extension("sav"); + match GbInstance::build_from_bytes(bytes, Some(save_path)) { Ok(mut gb) => { setup_audio(&mut gb); self.state = Some(State { @@ -200,7 +204,7 @@ impl EmuApp { } } - fn load_rom_bytes(&mut self, mut bytes: Vec) { + fn load_rom_bytes(&mut self, mut bytes: Vec, save_path: Option) { if let Some(extracted) = extract_rom_from_bytes(&bytes) { bytes = extracted; } @@ -210,7 +214,7 @@ impl EmuApp { title = header.title; } - match GbInstance::build_from_bytes(bytes) { + match GbInstance::build_from_bytes(bytes, save_path) { Ok(mut gb) => { setup_audio(&mut gb); self.state = Some(State { @@ -312,7 +316,7 @@ impl eframe::App for EmuApp { // Check for async loaded roms if let Ok(result) = self.rom_load_channel.1.try_recv() { match result { - Ok(bytes) => self.load_rom_bytes(bytes), + Ok(bytes) => self.load_rom_bytes(bytes, None), Err(e) => self.error_msg = Some(format!("Failed to load ROM via async: {e}")), } } From 180da3fb873dba78adfac1efe6dd39d93e7b9ebe Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Fri, 27 Feb 2026 01:26:35 -0300 Subject: [PATCH 07/13] fix: correct RAM size constant and optimize ROM header reading - Fix RAM size 0x04 from 0x200000 to 0x20000 (128KB) - Clear serial data buffer after reading to prevent duplicates - Optimize game library loading by reading only header bytes instead of full ROM - Add separate handling for ZIP files when reading ROM headers - Cap leftover audio buffer at 8192 samples to prevent unbounded growth - Configure WGPU to prefer low power and use GL/Metal backends - Remove unnecessary to_owned() call in serial --- Cargo.lock | 56 +++++++++++++++++------------------ crates/core/src/cartridge.rs | 2 +- crates/core/src/serial.rs | 3 +- crates/frontend/src/app.rs | 57 +++++++++++++++++++++++++++++------- crates/frontend/src/main.rs | 10 ++++++- 5 files changed, 86 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63fe0f9..9840f76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -256,10 +256,10 @@ dependencies = [ "image", "log", "objc2 0.6.3", - "objc2-app-kit 0.3.2", + "objc2-app-kit 0.3.1", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", "parking_lot", "percent-encoding", "windows-sys 0.59.0", @@ -903,7 +903,7 @@ dependencies = [ "objc2-core-audio", "objc2-core-audio-types", "objc2-core-foundation", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1527,9 +1527,9 @@ dependencies = [ "glutin_wgl_sys", "libloading", "objc2 0.6.3", - "objc2-app-kit 0.3.2", + "objc2-app-kit 0.3.1", "objc2-core-foundation", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", "once_cell", "raw-window-handle", "wayland-sys", @@ -2239,23 +2239,23 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" dependencies = [ "bitflags 2.10.0", "block2 0.6.2", "objc2 0.6.3", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", ] [[package]] name = "objc2-audio-toolbox" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08" +checksum = "10cbe18d879e20a4aea544f8befe38bcf52255eb63d3f23eca2842f3319e4c07" dependencies = [ "bitflags 2.10.0", "libc", @@ -2263,17 +2263,17 @@ dependencies = [ "objc2-core-audio", "objc2-core-audio-types", "objc2-core-foundation", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", ] [[package]] name = "objc2-avf-audio" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +checksum = "bfc1d11521c211a7ebe17739fc806719da41f56c6b3f949d9861b459188ce910" dependencies = [ "objc2 0.6.3", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", ] [[package]] @@ -2302,15 +2302,15 @@ dependencies = [ [[package]] name = "objc2-core-audio" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" +checksum = "ca44961e888e19313b808f23497073e3f6b3c22bb485056674c8b49f3b025c82" dependencies = [ "dispatch2", "objc2 0.6.3", "objc2-core-audio-types", "objc2-core-foundation", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", ] [[package]] @@ -2337,9 +2337,9 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ "bitflags 2.10.0", "block2 0.6.2", @@ -2350,9 +2350,9 @@ dependencies = [ [[package]] name = "objc2-core-graphics" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" dependencies = [ "bitflags 2.10.0", "dispatch2", @@ -2406,9 +2406,9 @@ dependencies = [ [[package]] name = "objc2-foundation" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" dependencies = [ "bitflags 2.10.0", "block2 0.6.2", @@ -2419,9 +2419,9 @@ dependencies = [ [[package]] name = "objc2-io-surface" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" dependencies = [ "bitflags 2.10.0", "objc2 0.6.3", @@ -2936,9 +2936,9 @@ dependencies = [ "libc", "log", "objc2 0.6.3", - "objc2-app-kit 0.3.2", + "objc2-app-kit 0.3.1", "objc2-core-foundation", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", "percent-encoding", "pollster", "raw-window-handle", @@ -3874,7 +3874,7 @@ dependencies = [ "log", "ndk-context", "objc2 0.6.3", - "objc2-foundation 0.3.2", + "objc2-foundation 0.3.1", "url", "web-sys", ] diff --git a/crates/core/src/cartridge.rs b/crates/core/src/cartridge.rs index 9c9782a..942ad8d 100644 --- a/crates/core/src/cartridge.rs +++ b/crates/core/src/cartridge.rs @@ -196,7 +196,7 @@ fn get_ram_size(ram_size: &u8) -> u32 { 0x00 => 0, 0x02 => 0x2000, 0x03 => 0x8000, - 0x04 => 0x200000, + 0x04 => 0x20000, 0x05 => 0x10000, _ => 0, } diff --git a/crates/core/src/serial.rs b/crates/core/src/serial.rs index 902cb26..a1a7fdb 100644 --- a/crates/core/src/serial.rs +++ b/crates/core/src/serial.rs @@ -22,7 +22,8 @@ impl Serial { pub fn get_serial_message(&mut self) -> Option { if !self.serial_data.is_empty() { let serial_string = self.serial_data.escape_ascii().to_string(); - Some(serial_string.to_owned()) + self.serial_data.clear(); + Some(serial_string) } else { None } diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 711add0..04361e4 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -277,13 +277,46 @@ impl EmuApp { let mut title = "Unknown Title".to_string(); let mut company = "Unknown Company".to_string(); - if let Ok(bytes) = std::fs::read(&path) { - let try_bytes = extract_rom_from_bytes(&bytes).unwrap_or(bytes); - if let Ok(header) = - sturdygb_core::cartridge::CartridgeHeader::new(&try_bytes) - { - title = header.title; - company = header.company; + if ext == "gb" || ext == "gbc" { + if let Ok(mut f) = std::fs::File::open(&path) { + use std::io::Read; + let mut header_bytes = vec![0; 0x150]; + if f.read_exact(&mut header_bytes).is_ok() { + if let Ok(header) = + sturdygb_core::cartridge::CartridgeHeader::new( + &header_bytes, + ) + { + title = header.title; + company = header.company; + } + } + } + } else if ext == "zip" { + if let Ok(f) = std::fs::File::open(&path) { + if let Ok(mut archive) = zip::ZipArchive::new(f) { + for i in 0..archive.len() { + if let Ok(mut inner) = archive.by_index(i) { + let inner_name = inner.name().to_lowercase(); + if inner_name.ends_with(".gb") + || inner_name.ends_with(".gbc") + { + use std::io::Read; + let mut header_bytes = vec![0; 0x150]; + if inner + .read_exact(&mut header_bytes) + .is_ok() + { + if let Ok(header) = sturdygb_core::cartridge::CartridgeHeader::new(&header_bytes) { + title = header.title; + company = header.company; + } + } + break; + } + } + } + } } } @@ -673,8 +706,6 @@ impl eframe::App for EmuApp { } state.leftover_audio = new_leftover; - // Run frames until audio channel fills up, capped to prevent infinite loops (if audio fails) - // For wasm we might need to be very defensive about infinite loops while !channel_full && frames_run < 5 { state.gb.run_one_frame(); frames_run += 1; @@ -690,10 +721,14 @@ impl eframe::App for EmuApp { prod.try_send(sample) { channel_full = true; - state.leftover_audio.push(val); + if state.leftover_audio.len() < 8192 { + state.leftover_audio.push(val); + } } } else { - state.leftover_audio.push(sample); + if state.leftover_audio.len() < 8192 { + state.leftover_audio.push(sample); + } } } } diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index 06f1748..6db8aa7 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -42,11 +42,19 @@ fn main() -> eframe::Result<()> { viewport = viewport.with_icon(icon); } - let options = eframe::NativeOptions { + let mut options = eframe::NativeOptions { viewport, ..Default::default() }; + if let eframe::egui_wgpu::WgpuSetup::CreateNew(setup) = &mut options.wgpu_options.wgpu_setup { + setup.power_preference = eframe::wgpu::PowerPreference::LowPower; + setup.instance_descriptor = eframe::wgpu::InstanceDescriptor { + backends: eframe::wgpu::Backends::GL | eframe::wgpu::Backends::METAL, + ..Default::default() + }; + } + eframe::run_native( APP_NAME, options, From 7e800611b7ce0da31c33589781aa39b821f71a7c Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Fri, 27 Feb 2026 01:32:07 -0300 Subject: [PATCH 08/13] fix: bind configuration to run_native name - This avoid inconsistencies when SturdyGB hits other versions --- crates/frontend/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/frontend/src/main.rs b/crates/frontend/src/main.rs index 6db8aa7..f6a8172 100644 --- a/crates/frontend/src/main.rs +++ b/crates/frontend/src/main.rs @@ -56,7 +56,7 @@ fn main() -> eframe::Result<()> { } eframe::run_native( - APP_NAME, + "sturdygb", options, Box::new(|cc| Ok(Box::new(app::EmuApp::new(cc, cli.rom)))), ) From f69707b682e1510e45554be47649e83614b6b739 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Sat, 28 Feb 2026 18:25:53 -0300 Subject: [PATCH 09/13] docs: update README screenshots and add build support - Replace GitHub-hosted screenshots with local images in ./images directory - Increase screenshot display size from 300px to 400px - Fix table layout by adding missing closing td tag - Add winresource build dependency for Windows executable icon - Update SVG export settings to 512x512 resolution --- .github/workflows/package.yml | 169 ++++++++++++++++++++++++++++ Cargo.lock | 41 +++++++ README.md | 10 +- crates/frontend/Cargo.toml | 4 + crates/frontend/build.rs | 12 ++ images/sturdygb.ico | Bin 0 -> 3582 bytes images/sturdygb_symbol.svg | 8 +- images/sturdygb_symbol_128x128.png | Bin 0 -> 3736 bytes images/sturdygb_symbol_256x256.png | Bin 0 -> 7305 bytes images/sturdygb_symbol_512x512.png | Bin 0 -> 15086 bytes images/sturdygbv0-3-0-frontend1.PNG | Bin 0 -> 23536 bytes images/sturdygbv0-3-0-frontend2.PNG | Bin 0 -> 24977 bytes images/sturdygbv0-3-0-frontend3.PNG | Bin 0 -> 258295 bytes images/sturdygbv0-3-0-frontend4.PNG | Bin 0 -> 89596 bytes images/sturdygbv0-3-0-frontend5.PNG | Bin 0 -> 135105 bytes images/sturdygbv0-3-0-frontend6.PNG | Bin 0 -> 111283 bytes images/sturdygbv0-3-0-frontend7.PNG | Bin 0 -> 126129 bytes packaging/linux/sturdygb.desktop | 7 ++ packaging/macos/Info.plist | 26 +++++ 19 files changed, 269 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/package.yml create mode 100644 crates/frontend/build.rs create mode 100644 images/sturdygb.ico create mode 100644 images/sturdygb_symbol_128x128.png create mode 100644 images/sturdygb_symbol_256x256.png create mode 100644 images/sturdygb_symbol_512x512.png create mode 100644 images/sturdygbv0-3-0-frontend1.PNG create mode 100644 images/sturdygbv0-3-0-frontend2.PNG create mode 100644 images/sturdygbv0-3-0-frontend3.PNG create mode 100644 images/sturdygbv0-3-0-frontend4.PNG create mode 100644 images/sturdygbv0-3-0-frontend5.PNG create mode 100644 images/sturdygbv0-3-0-frontend6.PNG create mode 100644 images/sturdygbv0-3-0-frontend7.PNG create mode 100644 packaging/linux/sturdygb.desktop create mode 100644 packaging/macos/Info.plist diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000..fccafb8 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,169 @@ +name: Package + +permissions: + contents: write + +on: + pull_request: + release: + types: [published] + +env: + CARGO_TERM_COLOR: always + +jobs: + macos-app: + name: macOS .app Bundle (Universal) + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust targets + run: | + rustup target add x86_64-apple-darwin + rustup target add aarch64-apple-darwin + + - name: Build for x86_64 + run: cargo build --profile dist --bin sturdygb_bin --target x86_64-apple-darwin + + - name: Build for aarch64 + run: cargo build --profile dist --bin sturdygb_bin --target aarch64-apple-darwin + + - name: Create universal binary + run: | + mkdir -p target/universal + lipo -create \ + target/x86_64-apple-darwin/dist/sturdygb_bin \ + target/aarch64-apple-darwin/dist/sturdygb_bin \ + -output target/universal/sturdygb_bin + + - name: Generate .icns + run: | + mkdir -p sturdygb.iconset + cp images/sturdygb_symbol_16x16.png sturdygb.iconset/icon_16x16.png + cp images/sturdygb_symbol_32x32.png sturdygb.iconset/icon_32x32.png + # Use 32x32 as 16x16@2x + cp images/sturdygb_symbol_32x32.png sturdygb.iconset/icon_16x16@2x.png + # Use 64x64 as 32x32@2x + cp images/sturdygb_symbol_64x64.png sturdygb.iconset/icon_32x32@2x.png + iconutil -c icns sturdygb.iconset -o sturdygb.icns + + - name: Determine version + id: version + run: | + if [ "${{ github.event_name }}" = "release" ]; then + VERSION="${{ github.event.release.tag_name }}" + # Strip leading 'v' if present + VERSION="${VERSION#v}" + else + VERSION="dev" + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Assemble .app bundle + run: | + APP_NAME="SturdyGB.app" + mkdir -p "${APP_NAME}/Contents/MacOS" + mkdir -p "${APP_NAME}/Contents/Resources" + + # Copy binary + cp target/universal/sturdygb_bin "${APP_NAME}/Contents/MacOS/sturdygb_bin" + chmod +x "${APP_NAME}/Contents/MacOS/sturdygb_bin" + + # Copy icon + cp sturdygb.icns "${APP_NAME}/Contents/Resources/sturdygb.icns" + + # Generate Info.plist with version + sed "s/VERSION_PLACEHOLDER/${{ steps.version.outputs.version }}/g" \ + packaging/macos/Info.plist > "${APP_NAME}/Contents/Info.plist" + + - name: Create zip + run: | + ZIP_NAME="SturdyGB-${{ steps.version.outputs.version }}-macOS-universal.zip" + ditto -c -k --sequesterRsrc --keepParent SturdyGB.app "$ZIP_NAME" + echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: macos-app-bundle + path: ${{ env.ZIP_NAME }} + + - name: Upload to release + if: github.event_name == 'release' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "${{ github.event.release.tag_name }}" "$ZIP_NAME" --clobber + + linux-appimage: + name: Linux AppImage (x86_64) + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libasound2-dev pkg-config libfuse2 + + - name: Build + run: cargo build --profile dist --bin sturdygb_bin --target x86_64-unknown-linux-gnu + + - name: Determine version + id: version + run: | + if [ "${{ github.event_name }}" = "release" ]; then + VERSION="${{ github.event.release.tag_name }}" + VERSION="${VERSION#v}" + else + VERSION="dev" + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Download linuxdeploy + run: | + wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + chmod +x linuxdeploy-x86_64.AppImage + + - name: Build AppImage + run: | + export LDAI_OUTPUT="SturdyGB-${{ steps.version.outputs.version }}-x86_64.AppImage" + export LDAI_UPDATE_INFORMATION="gh-releases-zsync|sturdy-robot|sturdygb|latest|SturdyGB-*-x86_64.AppImage.zsync" + + # Set up AppDir structure + mkdir -p AppDir/usr/bin + mkdir -p AppDir/usr/share/icons/hicolor/64x64/apps + mkdir -p AppDir/usr/share/applications + + # Copy binary + cp target/x86_64-unknown-linux-gnu/dist/sturdygb_bin AppDir/usr/bin/sturdygb_bin + chmod +x AppDir/usr/bin/sturdygb_bin + + # Copy icon + cp images/sturdygb_symbol_64x64.png AppDir/usr/share/icons/hicolor/64x64/apps/sturdygb.png + + # Copy desktop file + cp packaging/linux/sturdygb.desktop AppDir/usr/share/applications/sturdygb.desktop + + # Build AppImage + ./linuxdeploy-x86_64.AppImage \ + --appdir AppDir \ + --icon-file images/sturdygb_symbol_64x64.png \ + --desktop-file packaging/linux/sturdygb.desktop \ + --output appimage + + echo "APPIMAGE_NAME=$LDAI_OUTPUT" >> "$GITHUB_ENV" + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: linux-appimage + path: ${{ env.APPIMAGE_NAME }} + + - name: Upload to release + if: github.event_name == 'release' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "${{ github.event.release.tag_name }}" "$APPIMAGE_NAME" --clobber diff --git a/Cargo.lock b/Cargo.lock index 9840f76..4150fd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3108,6 +3108,15 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + [[package]] name = "shlex" version = "1.3.0" @@ -3283,6 +3292,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "winresource", "zip", ] @@ -3429,6 +3439,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "toml" +version = "0.9.9+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5238e643fc34a1d5d7e753e1532a91912d74b63b92b3ea51fde8d1b7bc79dd" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.7.4+spec-1.0.0" @@ -3459,6 +3484,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + [[package]] name = "tracing" version = "0.1.43" @@ -4466,6 +4497,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winresource" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e287ced0f21cd11f4035fe946fd3af145f068d1acb708afd248100f89ec7432d" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "wit-bindgen" version = "0.46.0" diff --git a/README.md b/README.md index 04573d5..62dcb5f 100644 --- a/README.md +++ b/README.md @@ -21,17 +21,19 @@ SPDX-License-Identifier: MIT
- + - +
- + + - + +
diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index eb1cf15..25a31b1 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -25,9 +25,13 @@ egui = { version = "0.33.3", features = ["color-hex", "serde"] } egui_extras = { version = "0.33.3", features = ["image"] } zip = { version = "0.6", default-features = false, features = ["deflate"] } image = { version = "0.25", default-features = false, features = ["png"] } + instant = { version = "0.1", features = ["wasm-bindgen", "inaccurate"] } serde = { version = "1.0", features = ["derive"] } +[target.'cfg(target_os = "windows")'.build-dependencies] +winresource = "0.1" + [target.'cfg(not(target_arch = "wasm32"))'.dependencies] walkdir = "2" diff --git a/crates/frontend/build.rs b/crates/frontend/build.rs new file mode 100644 index 0000000..e3b192b --- /dev/null +++ b/crates/frontend/build.rs @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2026 Pedrenrique G. Guimarães +// +// SPDX-License-Identifier: MIT + +fn main() { + #[cfg(target_os = "windows")] + { + let mut res = winresource::WindowsResource::new(); + res.set_icon("../../images/sturdygb.ico"); + res.compile().expect("Failed to compile Windows resources"); + } +} diff --git a/images/sturdygb.ico b/images/sturdygb.ico new file mode 100644 index 0000000000000000000000000000000000000000..1de6ba9c02d8a9016db3d6f883a60d99f0597e4d GIT binary patch literal 3582 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 literal 0 HcmV?d00001 diff --git a/images/sturdygb_symbol_512x512.png b/images/sturdygb_symbol_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3cb21bbb3cd86e4e7e838686106c47a0b0feba GIT binary patch literal 15086 zcmdVB^+Qz8_dh-hA_xjkrA0ykX^|2n1eIF4yOeH(B_vl-5hRzAMx>jSZj(}wmPUF( zK)T^G>+Ag|e1G}=z%Dy?X3m*&=A835XXb`#s3}|`y-ErIxP(-c)dGM3{!0Kz&cm;5 zpMgX8b-_*1&;tOm9sD1{n`mGKHqxWy3{cvxHYo2$?$*HD+xwQii=&6-BRA_?uI{!e zYm!$1U;#+k`#L_Us}oOCspg-ZZMf=YcnA?*Ol(DG(fxN|OYxX5q=L)&(Lj=PX35EpKF`j zkg-=;G6YI!4_K%if zGurA%%Qb<$>rN^iko@GyrXNCXrl#d0cxxCJpXySl)-boGCs?P8O^jn@S!k*Ykd+}{IA>e$VCYftB^>Fj6 z^yvB;Rl^GU^y~r)5Y4xW_9$`7D+dcqEchH+X*a8 z-NxLBp4W7l`(nR5VFnh@dA|CY#V{PbZP<)ef2$^BLZl0d$z1N~Kl{nI8K2g%698la z-Ew@^z3y&A)vEjZ=ir2K+^-2N(t?yrj!&n!4C=y#0)dQ~yD8VmN$Q_p#$=BoWz6vW zkhY|9No!{QvBVyyZW01gnLf?pBQw=}-?F0y?>3dZyXlR5V5l!;>Q>O#vsiu|7jZHG zJ|~2uxJLcr8$uBq>ykkliO9G{-6a?ca%9q;|L7ylvi z)bmAE!pYQLeqp2TGbQpO!*XRJ+KW@oaZPY`rbdhMT5*RE_X%$&?cx)!BeIHRnfOhZD<`XTe z^rL-_WRI$@)E{vFP2Dkmhh@BWi~wR`EmoLfOxh48BQ?3mbRioUD7&U}6gdU^|L!yS zLjlmwXUP(|44OK`_af!$ewhxDp*=tTSnM>f(rdO58#^KZnVBQcqC1s_;Xw0*Ra0wE zaS95*e~wd&w4($9Wd0HheUY`QJkBBAbkn$@-3ZTupnh|wCzjx2@gD%tj}yY% zsBw~QrY8lLMt=G0k)o@Pt4FY1qMhU~1e>1#(D*5$E$)xW+`ZERzNAUiH^{{)UlnQm zs>LT}=&z!~x7$~Xy0-bA)2E%Y<1_!QUyfoW4gx^%3+=5~>e0tgX5nU9J%3Gs_Hd`U zAlHYnbD(wBKZg=kzEYs#B4|m}YUF!VW-v($(7YG)cqCVA8LFd=5me%U;naXV-d{EDHc`1Zp?9@*GQ{q|L7Wu#p#mW6ggj z>egd|r2)A6_$WYYAK7IjP-wZobPK_zei-Y|F7kd9I%7Jfpbi7RH1{66I|4I!OFmd7 z)ot_?mLLXzl`6k>+{k^bLE&)YGE`o7Q-hYZ9xKlY0$6AW(rA|5tc4r*?s!zB(>a!F zbs2bCuMVC+dU<#%iHRa_00y+$0g!n`#GPokIOTibCVi(^84OXkP!!%B zyFEXNU<$bxfGe-ZRTk+++RBfDro`NQ@WcW;nmeb=%F7&j*U5tkBNP)wF)r z=qE^j?xBDIVFu_2mdMke5gh()8$*clTg}#C#miDyCm71W%Ws}0U;XkLc*-V)ekDdp z6GUGe|NapUA+R1vm>Wkm@>3WAUdNYw<{ddB%6R6x%{OmCRW4No{=JN5kG;n)@!xj` zP5`1!y;$EPz3_2P`OkpP-*`W7ozchB( z`rEvD*TJGWlotkn1^+U}73YGp-_q}%EL=eVbn%BzRVQ0Oixn)YHmX!d9pTqvQ|-)k z7pGOw0`^zC!v9HP(+mDGXnraG9-94l`N>w!XCf92TS4fo+b@qvKV0Sq_k!YkAtNlJ ze`KoI4C|+JwW&)3Mo@TBuvP>MIgjkFs4haS-JRPvbM4y6uos7B(tf>5bSmMG_Wzz( z9jJYQ#{?_@Fv&t{ zt-){?0H6QhCIJ*#@MHQu75tQZjqgbOZ#WAckp2I-^KmXAi^uaovq{Lsh6xFJ2TU=S7lNMa|O)YNCer(YoYerR@4>0~WiL5akU zhqw6yzBEmdO4$KQ*0crnuQbFv2G(0*Yw z?loP``sr@Yb6&96C~V@bnWlTgXNSH$y~;+IVinmm+F5&wjj!(D3oE z&gsw9TdFLeK3rtyKw^@`vwZz6-!o18%nuo2`dJ#>^h*0VYxtuNd3sC1uKE4(i7NdA z8#%eNKt?aTj1(7Ut?l_0Ti|YrV>V9SeiP!2qfq~&yZEl|d^;a08ez#3?7RN5fBU1T z%J9esN0l}NIu*-nkE5Th+792S$9a%#x9J|C#!kkn+_htIcIgig?eFL*yS86?clWhT z3To$E&%lWR3ln5}-k!Oz>UxV^vYymb@%rh4^+ZkXM-;DmCYWoj9Mvk>|9Q>SvjcVD z)P=eR+Laf3=<}q_rPa=UjTf)1`I<#JI|(xuDx0FEA`(WQ z>_;8+v)fC12{?Uo35D6(rn`=uz;HA7D`nMur1DP2dP<2~^zT4GSGvcSk-NBFtFvC` zR*2)23nhqt#C|=)zfuYH!TJ0BPr^uvSb}X- zc>9x?&5L`QSE&rccL`;_HO?M$`7UtKIzrXL>4FKOuXim(3=4^x7C#j_=(+$#+&bsn zOAdS8(VjID62l%3gLh}8uwUEIoqzJJG*Q6qJ+stQ~_RA|lm$0Ir?t|w1b zwh7VKE)WMCPKYczj7Z88$OjYLCUrFszV96{?{pAg@|PHGLJFU6?JPR}E_UeGB&8v; zctP`{aHxr=Tc5MF=0Bj4&wFXu}yo=`2=A}n zZ44#lvd)Q+wq9sF%d+1bk;G8|(q4L@LR9ykt8jiAqUm#`zJ#9@fJXbI*Q8bdWqgy^ z!hr7b_asY|HUPpurO>JiGG2Gp1d+27%6Z9=5NhQda76V&LO8mop#*N%Xn)vlG6O2{ zF3c^dH`e3C4-s^-hQG=@)NE%+09CLkUoN=#is1HZvV}H+bjy2V|7*FD=--CCWY8#ZDCj_dz+o(gSPo>eVivC+`v^%Tj zEq3Da@^LRu3QI}sOso|>Rtix=_Jj4?#i7YkRi99msmX%XUr;X^A0os$Q^j3XsO*v)wVEs-u5*#!tS!Ff7u8s1R}Q144wztqLEv-C>7UlYu|V>sI`ymvg+)5$kO zE`t!$dcw3SZ}&Lno>u55mDkSp;1s9Y13H;3s+i zWk8jgaZFOfJMpYHs^9?=;FkUay0OvWY zFQZqF{8XULw3>|!TSF3GXQ0$qgt}oc29+{m4bH>&X5is8>x%^>MqQOngbxcm83NWwxP3VmBmKK#-WEZgHRuY zP4f6P#4BQjmt`P$lIit(>iUGwA?^bF(VD3gwluUv>+PK!8SRZ9dq1M&BK%*#(aZ_1 za$N(C4=ya=j3k(@?@OjNR&8sS_&2WbO*Uw3tWo~KI8NXr3^AC6Mn6X!9CR8eSu?WZsLHZnR9Prx#~h!p49&!gH#SGCssf@!Lqq}AfzgU0zkq1cj7 zK{BH!>g$UFt!?+=6xU{#m2KhJ%hE?HP_@u0!PM}D+=s#{r%4Ec^wfMJLWcY8~k5%v`89CR)0 z-#mC3!0ZnpM{-zZVHZ@)MVhZwC-3}MZH+6};_vheke-L~iFAjNIZd!`9Ch*HXDG{I ziqpSX934^4KF@WKncviyr>q~aNMEtg^B1pQqM{t3+^*867{5~mG!zJ@VpDJStro9% zxTl@PmG0wlH>sMra6ygfRyM>qPU1=*A75c{UuIwyGaU}{DaFyrt=6rsCZBaEz(9e` zJ^Oyvdr1=KDvVd_^WHxC{`uk3neWns|9+Qyx+YE@?r`il5Dp&;J%a?>{en!Y)R_-X zKNN3d-~qnO*mar#J^`k7smm*{SCq*fe$wnnVAZAkNO zKVQA8YA}Q;c!jo;rFf&3{961By`}4o$yW|-7@<%sbky12^-R>>Z}G9>SUFhyj|V{j z!nw(gc0Ta)4UJ})WI2}kr>QLy;IX0b|Maky}w@xMzG>#LY0k)Ru}cRX%0N8^3bJO$gTeUPg|pYw^9pr zrHx8)lu8hOapGnAQNm+^PHJcNjfkraM07;KP*j|xu@0YnkB?}V|BQ&_zNb2er(`#v zb8hFacY?z|@CA_vWJ;&7li(koTSijDs3d~#w=@uW0r%0Bzqc0V5}Z%p;OA2k;)utI znoH{kGLsR(P!F4oX!-L8tMr?pH~;4psH)0>rctJinM1JQ-y%fDu&BjE+M=wuK>}ht z|6!95$sg`2bi*(L9W8Wif0Js`iaiY2mTp7Jt&~n(eNp!s(0Rm651lr|J9QZ)_(qiKveEVo}Tnn7R-Uz z`voGW_eTB?cx|>*rljDr73dI5bq!@8OxD#ur)$de6S9?TKzWCeheItxuRt_IN^?)T zX$nPU$qCvE+V0$0u84@pwY>I@ZSFmoCZUk>)0jHld6R2NC(z8D&2AgsZ`_@p?ae2J z)U`(R$6yyc5;JCS1g-3l=SQlHniE@d_X7TeIEvt;_HaVdW@WDu?)6t-XZk+ebQp?r z?-vMv2ZeEdkXChh;iwu{S#(zT&p=YcKk(unx)uvDex`%#pMFt)bmed$Y6urATCCmo zM76CWAL7Ebkq$I|BN(|f1U2A+L%)Ea!{G}pzBJKp)J0ajIaN+a$Vqab{OjAyaUZH;4F@yxvzD=j)HxeOa^ zCRJQb&;RRLTqR^9{@`1qi*F8&H(d!oa7;C3j zRea;f_U09y^qdHM&cJe&zjQ(0RMRBZ1I#6g@+L#H^Gy>-7XCW@JPf(C3bjVUx&x=cZgYnc#|Z|UD?I5~7YhozWoY0(d`3|%H%B$*^p`RdK)93$px@jb-zq^^ z4a4+zV)LaO+)ZDfRlokH2)fJqQW60387d+R^og7SfNr&Zo{UVj z4QOP-pj_Cp?CHCZt1RrH1(ROG!D)C303-H6HXRw7&9uU)@buIq)}`4s1;+_Uzu@}0 zckpEZg(=C0vqfPZ?PqqE_$IF+;A+ZSUZ2gLEeUPuUfslnoHbM}B}kqZEUCYtv2ELM z;=uhJ<^qMeH}VT+l|2_abn7kF#0FLWe#;2TO!R_>PSM(UyytmN215{NJasmgWaPEr z6R_LHP?=XSjACPP4Zuz0;gr|!{Xkuu`?bKx_$8&Qd^NqycJFJFv zc;;Z;4uhn)l}|QD+V0U5^ZwDlZ9(By)j#H0;F@JucVrenAXLpKU-`e>81VV+_jAyRk6( zeqAYQn6&|)LR)==tW}-jf!g;96Vleu?_@^^Pe*!;(Ft^YlP z0VSl|!MZ~3>%Mx%T3hPW(Ll-4w=pr*XeCYnSb|Gi#%68LFl_qOso6NHr>ijb93FWv zxrPA^wl&j<%pj-Th0Y)aw^%AP%73<-56`lEL6byj&qU=UD*Sl*rgc{ixM)4N_2V!_ zftdyYzRsAtj81p7osxIH1KF!Z-cEWqI$j_Fr|e#-%TIph`JuJX<1d`(99 zth+*!V7cV+1qJ<}b;DakKnCGvqOTuxW?1sH;wvidc=j6|g09rFtP(eB?xqj**zgaw zJ@t>m(H(Hn$MSJpzezye;~lt#2|U?%!4nB~GsV3TbshMz=Pbm?E`7KA-56l!q8CZc zEw3%z?qx2v=0bvYp%??L^)qQl)Mu%(w~?5Z)B%4I(pHikxme#Zk)q1(F7;Rfv?R7g zBx~N>sH6N$1EW9%Y!o7871T`+DnH&D*oa?|%+8DQ zl+uti61O}Yv~1Yf3h{Q3@-~f_oF>W?6`^Rw5+9MsPe&E);`m{f5i(_vSJrZdQq5>( zrwKQ)bv1!S4^*Z|RsdhX=+qVDNi*Nh*6Gmet44EZG0zr`2}&@L0iLpjQsjjxqSu3pY>yDuvT<3XS>zel1;Q(uVh?S#N#4neH~= zvy|D~Ql+lCs>$f|W?9CVZD(coHF>4{z`$i)OJkkLuFpBse9+%k!h8f4xPRs{uEKJ4 zEL^Kf8+TyE8f&1R72>rwa*eH{)B1)hlFjtQ`bQxC4<_8pC$y^l@wDp0hIzVO)%)KT z8QMGt`{=cy*ZINN`>-Xluzet%)qr${ph=nbjtTkwVlnt_zaV%k8QVM%qp(GY6 zXyAVb(_NU^mYs}KYy0)Q%OGx?42pKWw=Kl6^pL@rUT5OmX}7PcH`_a(Pns|ZRQ#?f zoIa zoNT+4I?Yxa#7O}(tY%EL_A1mBw<$LDxJK0woCGJfQ?LN=rkdh#b9yiHYdu@YZ|KTM zlT#EUz{MFc(RU46PJh2aG)O8tx8JroTlRp`nR-te0ZU0)Z9##bHptMi(KC!AuL)tC z;TyeGw=o-d@MYzvywSkfxCP9}WFGTz9B+n_$q4!`34DapoIRe<5)_;p>+_>=Hm3}RaKsuT*a^Qo$yMi}; zU>qbw8SA?ndI0-crSN#JD^Ki6E4}9j7^-zlR`C@QcyhE;l^t0}ADu+Nf^3SAyaO3^ z3iZC^SaSBxsuU;|I9};!4tKc%K##JlR@<+OolXe1w1I4ybXu5K*@#^zu-(h&IAP@b z0GTCPo#eaQ5$+0)#MR-t_DUZ~&GVZk@dGUfXLNd60W~24wEnGATYe#~ys~PQ2Nbn# zB$IYugZs&@_3r~D;rHOGIX2+ziGo;h!I*f z#vYmt4Q#Ivsg8 zsC(~M*`AEUD@z=7WC0X#3D@+OC-~*YBG_;112(RqnEEx%d%9Rc`S(!zlxnF=EOAiBHc9IvH3v?%Nxpd11l|ms4Af5Kiel3x zt>S(Z=JWR`a1rW9ye22`JjkT`BA(N&zqLHgKmUWI6{y|tbY?RMw0q9t0qumST~$$v zINK+XasO!E9I-^Zk}xxt^Vf&V#8Uhc0JtZnTtnPDBJ(?h8=Eyyn<6ns?PISb;S z$LCTafSZ44`ha1JWguosW3vHldpy?aG2=2y;3hb|(jN*lLDekvFkz()rha6f9vxAp z`I&oYU>MX31skhY_TBZH`#JB+No86-%Vp}2M#U4%V|e=u05FSLip^3jIB*~;yiF$4 zB3m{v!E^AbAoTf1ZcTW1VB~jh_ckk^+=kWIr(56zbGabz`i}oIi+HL+wRnhl<$361 zA3GO#9!+H9gz2@f5oKnqWG7HXR_81bpX1i{CjXlXwcy4!TX3{z$td@vTKeq_Hy~s` z)RI0VZ`L~x+2FSlrw1&|?5qWb#}#T^BevqIL)5MaIy(#c@)Jypr0)6SoPsGr(AXB5 zw}AQTmo4ki zi`Tq{OMNkiQrw6fHv4c=aATS*J6&#?jOlPB(O2u;*P2VPRF)!!idI*0;q|;U6_FR{ zbpxX<8M`O=l6Ax)Rd%^8R6dy37_&3_{tX|`4k3t^Dor`O&X^ptzOdtabP!H(Tk9m~ zci2(_bSU1xa-p`-<8X)le|aGQp2Wi~OWuX0E=|tXkSlp^EwV|ZG)MMguD&!?RwdM~ z=JCXjFq8=Q=%Agr%OsxqX2L32{^LGeVX~xtj!3`tQLuf$E&3H*?=3ISKNH#Mxz6sU z99>AVs2sWBy4;7bI1nvukei&eSeWZl;S^-2Go~b4KY(?v8ucoRjSaWueDwR@w6Cm3 z3QLWPNBa|^4qJmNWh;$|&5u*Wckd3yAg$y{o{5FTLFuN_^RA% zw|UvL%B2Y`uSdv@G3LI3uj{cr!K}H^&&za=oMz_o9@~yIqj8+1aXR*$&%G5Bti_eo z@FyF0MIY_5lg390G0v86Zsg_rE)&3NQW!Lj_5!y-Hr?SgYw>Ra4(csmv=a&N)uYtH zw1AlGV+NN!A|+w3g%x;gK@VAAvHcWJse5nD3YPnLD3vK_N&hu|Q!#!!9J}fiq^KLa z2umT9c#hNz5=siWJm7hO)*#Xr9&G%tH7-2qhI!@}RQUDyA(eRk|KLf{%0G&njK;R& z50ZIdvk>Er|Fw}s!3x@gQAiY?8;Rp-aXhfLR8>$kz8yuw)k*WOMMe6$rx+>MisFXY z^nFNlb5vWtD#G7jrjMCh`|AsBg{p|=-2f$7KfyQ>bmB;JCXU2@>!}4FAZ=wi%pliY z`lK7HaI*Mo>rdIBr<>!eD~P{>vFaxbwum6wz*Iptp^RBk@hJ`poTV(nIm90~Ow};#aFV>ATkMzFT1%s1JyMdxov(h`u1V zBuJF;x+rheHa?OgNcGhQY7Lcj?rxwuu&-JWU0NM)xwz?t#I7N1j>DpLrp#<-X@)kj}@x<#1PXjBj#H(bJ>lVkbYgUDsywjb<-6 zy5MVq7%!d6TFh4YUxI6V|#|@gig8gq6T-MJ)Mjf>6l6I%#L}PD)~!|6cGSMB+AFym-iWPO#@XiBbTic2xQqmTFaZtSLe5~EQmqP307sA&z@(5lPo8Iqi%P2;AOg$D3wmuT^-0-93{BfK^%t1e# zUe%(x(rqi)y!x?LO^Z1Ftccv{X(mg;&F(Nei@ep+64wOOPZSMktvLQos+xWl+4z=k zoh)uC`{jCPCp*b7a=A5uxXO0b^@A_jbBX7yHssJkVdGCJxv13?KNwKzn z{#yp1->al<*&IByhBbXXL7T8|-TqCK{{#ZFU5 zSI9<5#*wo}bB`cy-TPhxOl zzwogXub1CNM+-#sx;>Y@AUUu=V=Fwl3+{EG!e#J1Ff@o3{ib4SA^z!tVYRugcK7Y- zpkX8@6HceH!LTBohW&==wd4N&;;Lb%cygHEdzvC0!{rHpqSB=b{kh*&XYX~>gnLlu zE+!TYhD07*_2F0W%0&@?S2>k7M&E2&Y_*Z|YzNPCaxE>y{tQR%lu?7RzyU=%(0W;^ zZ3ucPrY^0KU$|Ut3o(qt0b>aKBt<-v4x&sC7bP>XtIa;vGsbeY*=o zx`gl?@wxpUcILkKs=oO7=4t6&siAfDJ*)|Pr}|ochCBog*b|$SiWRoF@SO+;1~tL- zcfz1=rrteO_Wt;J&YYoDh5P#_z5Fl{^Q=DT*55XkF8W~e`vfQrdGUynvr z+gd{nhDuH-&hCzGkjd1}c_A6wPQ(EV52j-BAv;Tp=N)+K0KqZDCA$4#HejQcX!_?1 zggk_|=v^s>kib}EY0<7!PmO$MyHGh(0HjiS)c9S?1$bo)dwU0N{3qulb{=_bsUOolbLs&yZ>^qw2m-Qs~SRy?C@=n7a^ z@l)G=^={Zr+jJfe%^&Fr} zhck&ZZ|CFaxJrux7|!yoQs;xV3^I-nz2LQ>B2eqN;;np`p(zIss1>_*^EPKn(S$wH z2LIJ?_>NPIi|qLIKeasUc@n-fhS`l0z6>np@Wf4t&F@s7<(BXa)^8bF9w`{@a%HXO z9xYUop&N3VjZ1fSVyxkeuU5oIxBj>eR{I5%dKW{Fodttm&uXB6f5J}2TEgKPYAXGd z1kG0B9dup4D1?y|L?a52&xp-^3}CDZaP9EP@RB}qta6&oI3f6(Jv2nIQXQ}&rhJb1 zjL^2^Eua1S?4RZLmIQJJwROd-yX{^XxE6^sq>CmaWW3^ZREM&K__b@@AL~_5dAdR0 z4P%v}tzLChcvxre1Mh$nvd;%U%i%GN;TwGu4*i|ar!0WQlDBKUN4YcI8=pMAV2yH(BW983~r7ey>AP) zbnjHFVT&IHOnP2f7XOQdC_=}3wrJ!+sMARHYnle*<&Y+esn?{CvaPwaLgZF)Hs-Q3 z1V&FzEs{FF{m{Vu!jbBR>z6wfLu_lP=g^r5t@ZUT=jcT7|G-IM-qXBPHnL`#%zTry z)zYFVVGKo7El|W%?YA^@4xjvfEeaj@g|1y>X-aHIa69$N*4n6}>$QzM1zo_~)t9xx z6ooiF*df=#1PTc=;yR*d9M!d+FH)iGb5H3@99tF4-njMz*fO`Ai@T2A!%(_ zrunTa;5r(r18cH#Fh0d_`M8nm8LkKKEbWG@s(@mM5?Z=kw(m8Q9t4&ljVubZwdz5v zD?EQ}n(*Tm9EsUYdDqC{8r>4owKSBW1TMk%Zq%Tf>l{~7bl+KHx5rFYDPc{-0>@NW z{{_l3`Gcv=$}RNl+D|NRnx|=#$>1Ui9^TC5F*~L;zr`ILhhVl~#jEYj>B=m2oPqsi zILzW(i(i|p2ql?JdW(g_nhmzws6wOfOsPPeT2|oK$952-RPa8wumLsPVn*RHT^iAj7guP8qZrb-f=r}CQ&c{i@ z(_}4^KJP)z4`LbQr&{T-{%FOwzrcHdsX^A`krI%%h`$!_$<+MpIgTZ`V~l`>(M)KX zyY4VD8<`8=eT#l|zRu{~PCYAg=?=5H87(?+C~1mcyL_?BeTN$PsQ)P}`^l>G@sTF_ ze-7A`u2%`6SGrFHdyPybb8~F4BQvPTNDyH2p-E{VYfITZT8fR1xaZv9q}ZeR?!%6` zD$G3=E(>uA&>A~~S<}**LWvHn3p3i(l48O3hi)?g&C+}9`WcBj&iFo*^=uPdIO4U@ z!-?F_;X3#6?9}ma$Ny}Ls~3hhpC#e_w{0x%ir&F^Mm-F4sv-0x@LfGZ!#AboY-0y6 zOaf%!p)lwmlbT&OATi-TK4r{`xYSmE|I zaq3^)U}YtX56(oU7apVT8j~a1HJF3>mePF=wDUx`??gMT+^>5_JYHpvyUoZsCJAp- zVvDJ(Y3$xPncl$pBg+znhunC9jEhKDpEf2v&QiK?r~8$^StSR9q&|pD@V)YT=Y#cK zTje!+%mPyUVV~^hUI3CR%=>JRDQu2!OpfSFS{8C1*QZNgN#_S`mT5Iv@&bb$x@o+F z$U<$0Y>Q&vi1?zb$asvuQi+^~3okG5QLfS2o91Bm?9?hUsZtCH`V&`_hON}D_(_h( gx+<@J=$|of3*9Gle9klrGi`vBQ)Y2-;m_PpG-@xDVj(zJJrKP323i>zWyC1$B($exj``wm}`(lFzdGjuYMC0G7 z9iD9O%Q&nJKWdGhDq!iXC-+rpYx*hRr!r0r<4vpe&mIqjhB8OIf`AFhyJ zIlcJSmZcZ64%;yt>9O|PmJ)Nm6V$~i`}%^U2_xK&$zawULcVi!O~Q)~&7BJO1BG>y z*g|~E`=Hd35yAwv#fm!k3asuSBL@~4Bxk^AHXYs7qpgpMj@-(RIl9xS_hR25xiv!3 z6 z3xJN*B7+Nimj?LqoU-SVqGAa5v&nFJTl~KKbcK<5e~!FwPOfnb=lWRQ$D^O^mPMan zh%Pi+8>@WmixysYV?A}^MtK)3g}y)Np#Kdm-O7GwlOx_&FK&GM9C!Pj7%wT!EZx{; zm&;6rY%FSOiA`pk8(93?oQb$M!sa}Dd|DVvI51%zuUuxXPI!MsyI=2R0d;u#n#XM6 zu*6pmwGxew;qFO|tkvE>Up1a}@3OmKT;S=!ZR(Pq@AF>n#&b{TEf*XOvKe+!Fr@<5 zH`OoM&d1Zsk`0fx&V$zH{}XZaPJU$6@J;K4GN<0R7mC%ZmkJ4E7Yg?&L-d_#6!Ly$ zLP^{c-@>D`FJPP z@o`bT=GtiIq6vg8rXvy-rR%DAynxM#iYPx|XKET}DX4BEK8BW%s+P&3GdS}NMn_dCEmg~87IhwiBa-gxw#e%vw8}GigbyPbYVh6js+=DS7J-!> zY+US7A>OO6sOmz#xH9&`S=PGl9Foqr%8U_6J|Dz{2#*(Y+(%f=d83OmN;Nes#P#4E zEH~5e7+2v1ge^je6-n)*f(QiLe&QlK({Z|z6AqtPH0fGnHTX0RQW|o_$_+c`=9_cj zYzKpx%(IRA441;USB=M#uVLV|oe}gfxLSq29?A6jTcbAXRb0!V6FFWCKqxPcNSo~!|e9^;JcN zqhqxV?d27Qz!uA-6tZvOShs+ZK^P+w!U=Gkw6GG^nKRfQI{99Z6L=t@CY#LKCyRdQ zy#& z``y~}2&_VT)6plU4jz-238+eDNhg8O&16J89(iv)c_U65B?y<8$VMa6T5uYE#^lXW z_@c>gZA0tVYzyr;P+;pdVy}Lwaq|d&ook`k(e2LBmWC<5T9fLbOgB}ZN9mhxV5Xb8 z6!o)X1SeNk7rUW%T{K!@x2r$?t`6qItTw;TuV~-y=(j*B{vZqS_s293)l%M}EG%YiX>Bza9fIJb9aRq@=tf{4DsSb}Y6{~WIVeYl$6$`xP64~d#1jV1%+0)mYn zygy&<(wyhr&25V7Rp*Fzskcxq6Lf>dsn!;5yW?8+7+wn*_tI6~-FQ4lW}gtxJiuCy ze-qEx)RVN-Ywk6k$N(7=f#pZw@(1ll*lbaD!~)|(<6iEjkox$tvkEz*4s)K+C_iR! zjV=xu)T7k!FmV&>Y7dGHyvweM;X=-$5Ay|MxBBQK@WTgcg^kT;F@%cIHy-2tG3sSX zLS6o-UndU#*4E>&mHIU+XRSmXFK_B6v`3^C@(xV4%-_CfUjZ5Qq4>RFLcDpH{ooE5 zZRa>geRyffEP-~b^07tBSQIf=+u0Xqgdbj>P}9nyk~I2X{t!VQNt_Y!B^JB8;H)opjW)^}SoZRA~9=VNj7u1Tc zMgncOuIVpsc9M>_0ihAPjbeIDAHcXNBLSBM;|+c7{u4Kx-ZQN2wnyqkKYvQ84A7iw zCK<0kUV0V^Szje&RTx z^YSLakhsQy)z3BC-hz!I@GTO5jA7nNl`y|lF6iuq#*hSl~3QLu|{DT z1waV+2R3DqxO|J4^lgvt0B`iIf9mP$yWDNQOfR@y9kn%J*Q)fLHZCU~M?WxJojdAx zzPzres$gC#E64R0MMor3G~0Fz2ewZu_p0hnc;WN=%w~r(NgbEhKU}yRj;V{W`$ZDp z{8Wm{y)2GF*oN}Co+fbEFjn)fQ0?b&yh$5TPl$fx;%U`$SG(WH2?&I{+qtW$HR68m zq0ZhUwDqh<+8d)!2-#KfUl^6WQAyZK^o60p>jv}cV`#fwLW`GRxn*u7!V}qMTYy}cePyh;qYDEmG)6F z#gVvw zuzEXb%|KLoL(M#oOTIT(9c8p8Rw*C1GQGo+Pv_f+uXZ>(U0dqUEsW`Y7v1sM;W*j^ z`ot4^FV*|FKpv}o^gWFFz`MHOS;qUgj5W23mYN?Gm#@}-xwHk=@zE%%9r|v?(3+oJ zrl}f^oNL#cY%3hUQDfZ*a0`ZZ90(V;RsLL_@Pg5n9}$)_DSsz8+E@EyxV*gDTpc`H zG)pIpbR^+O_jSRs5glS0CReb_!i->jYWh!AARi zIL!#GZUygI!rAK0D zH;)8GKg!5)iVWaNQllECkXw`@+p$;|(hm0V1o^fB7yZ(=AB`MxG%Q{S^+|O6vaj~g-$79Pb^*5 z^(^BKu5;dA5%|sP6diAE-Jnz-dGuTM%c1xXY-#h#TH5{6lA$RS>tB9VI0bLDE-d}; z!QaJyIGxcWik#?+oC2QfHvfZIdiux0*2|*L8OPj?fZ&E!7BT1-RZX)4Hw}wxbyM0c z@)#eg3imJPD?fgXM_SOV0;=v;%UfJ>F||VD4nbq4C5mZG7?(9iwYstLF#I?KlP1MW zxi@-5hWw$Vz8X;}%3bwnk;5(z&55W z1pas*%v(8?E|8z3HLx!1biNZeG1{Md&LsYJ-0M?wR{K;R4{?bQ;FaM8xZ!7g@2+Q< zxWw#DA))h4)of-?XhB?2+@x9{2q0)i#7*59xVPqF5mw|c@Ng1N%t^ zm665wC`Th|-WMtCOMS^jaifiJ_lU_8Te<@)BLbtLu&Z@HE=#6z#z?vcCd|x`X>q-4 z;ZBr$f+p6zN`8&g;Qc2#y^WW5#Yu>=0q^>n(RZF69NfFjrgtUQ5}I1#P(Yg)A(>XX z1+m=KgKb9G!LsI8H@D~J1KD;@lsZmuP^579F8Y9~PE6ra)WLPEXYLtuX=SxfKn~W4 znU|=yyiwOE?(NUw{&J=X*2^H(e7$LO`<~{MWotQIPa|+p3aVv`V1RIVv=8O#-DE|4 z?M>N=Bldn?Biyv5NtKe2S2>>UTTY5=My*cc`CJZ)KZ2dmCQsqL4T@Y%%xRY z3*A1vaIj!dB<$>CVDBsXOU0sPFXb|(sVO$#^bt&c=cv5D5;l;+x*sd+DHE?O2rUnp z^Sru-8@w$%Z;e@WcD8|3Zl2-#s-Re1+pCf+=**Ad+`$tNVNFApT=S=Vth7!%*i&wa z?9B9-(!VFUGL-?0HTH0h`-|BfAZm<_AcST#MioDsR3{sG>1i4sU3qr9RrL)wcUpmf z8i}CqC^Z3_b*l3?@wS2O)<&Vc)q}8Uou%2UZ6)G})VT(*?z?W@^tM<$55LG=bx{7H zZC8fj^58qCv#L47mlvAzh&Q!^)z$q4T=(=V#;r>mwNEgoGUlnhO8zOH6^N;T-AfU? z87L;17{YvUVk?)$Z`N&k)36-wO1b9)tO+}QYL1EHj{-(=mAKdOO9?oln><%;gEGV4qs%0lux6Ie^iMgpbrEVeMV5W$Gd^FXpp zfFBVu{!RSwNRrrkwr|W8I;*&}=C0G5#HF0C*vq&UW~swF9hF}VD=f) z{xVaOY5WywRcUn?xIKnyeN;3!0A*_JPYHX>J~rBWIRh(6u!SS$C1(BHO?Bh9C6i>X zW&08hBOob1WaP?1=FF~sb0AH$9Bw|*kd@WpO9}CRaCncQC8@eEXJ8_DWS~P_(IB$q zjx{@2?it$=8Q%tyDUx>px}gfa)v|ygOfKP}x6<1=7Ttb0qHn1*K}lT`W}WV)U@QEr zYlj{WBtQ~9c+5H;chAygF{V3%G>l7SekJnEwk+aEC>D;G)mGK%A6XY2)^!#b9SnG-P->ma zb_cq`k@fiOd?v#rs>w!Nxc#Y^!DE}UzJSf*g3!Rl%S`AM3^fJ#taPGyIULb-Y6)Cu z6k3RnQRfKJ-HS_Hl|c1fB#u)88gn?WGI(i^3}7fEEV+4&`{>&XVnu1RsFO&{K0=CZ zSeqjv)zh@IWC1*Zjrjx0>ag>f8SZ26st{&rot;OCN^1AJyH#olmD#e4sccaZcN>;f zV4F5CaCwn(CN0IVcA5|_Px4O^dEk+d$ z0=FzK>G<1xU9aS;fvaeYLd5F#kQWO{T&Rhevr1Ew9HjG&-@s*uUrQIO?MrB+6UawJ;{{*Q@s9! z6+37_Ysq(6KDD>{W}m3B`-9Nme@>yjV6bj(zkC4m5iI06&`fYck2>=SM+U@v4tj)%0M0@quX_3J0$LqeVXS`Xi9fw1!(v zp8})Fh<|q6e-WeqlkF?2zva^nAak<+YfSu~$@vd1>rr>L{L?*WBm4e7lK=1g=|8Ix z92Sc1+$!+nP4VInk8xBrxY6N(ol}l3$^4VI1P6V6EANNtgQmA79OnjtOtH%pJpVZ46dOW9I&U^PpCNH4kd0$^$3gJdi~{`(@R%KfOgH$@`j%C9|Nb9(4R9 zl+z#xdVj2FWF7G|#XtC1`?VbMtIvmZ zPr3DP4|Ywh{O_)({F$i3ae?KBzKdQnb-5=tpA6&AB>rc=@&{e`v(p{Nho1auk4HPc znZEN+b~o=pX~5Uhw$)MWo%+e8i}RvdK9!S@IU!T|o7R#%tfYF{_WUc3UizbiUlSv7 z2-`Iiw+^3iON0&0KlmFmP{+&0pqNezhY@YmUFZ9O}-t?{i zo$LI6{IwaNc4Z*01-`q$$B>4@WBW4Hfr*uy_bZ9o*}M2qfz3b*N> zivCxKr1`oQx2J<==O20i{!-PyR2ATof3$VvFSYqgZT_2Tv+k@$!6j7>+%3+@ji|X( zJ<{o)>mN~lGmgvUcMd*i+u0$@&9!ZDyk0%pmz!Is;1t)GYMpe3fWw%h=0h9zbv&qf z*h9sSQrg(SR9&PpoZRftfpCCS< zBjLtv%ix|FGM$4cb+)ltjVI1cJxDHASAHStyk`sG{lU3Y=X{T|+&Hp~6uUJ#pbQjv zQc1a|AbMM4w8-)G$$<&Wvk=anN}?73Le@uan*fi0e-mFHV+prHGUC5#kvqoV*VH$E!ARS_|8z(2f$QD0RWUdf|47kQ_pvP=rOr~fv8w%__|BB+95 zJ|==sjtxvaqhkZz+W=d1fO#mnpQ!xG{R|L!rG~oS5SAUAA(UsJ1R<9L8I)WA{eHch zZCu75b>eVwRVgTBp|6{H)5%$AE|$L-mR>Xbd~NYcMXkK0 z*d*$SHp~tyu3#m~R+AJJYiVY>66KP`hGTFJ7YEI>!`ujB3r7^82-A z@dz(vR?elh-W1jgH-{E|DLyU&+K2cl%{n1Oxu$nrmZ^$zBaTAc?>ylxznIrQZC-!4{3D^R1i*s>c{R4W1pI!P~gT}8d;IvvN z1slO-UWO-(vPXl9j!JFNyfW+01ZS5AvE9>ARjQs;u5z{FQh%BNP19QnyFXCiQb1OA z{|M-LLu_HsNQqC`H7AgJGtYJmXMa&<5}BQE)Hplu#H;U`fA%!#vH+=e94O&&B1GxZ zTZ!$l@E-f0!Go@%2(e#R7KM9~M|N))ly2&~dJxz);D9idlf z@o-y{CCS$Px}#N)|9Jj+<=p@*6cdU(0lv`NK(9>Rr8D;ZinVWSdi)~oL@>F1aQM7m zn5KmBM2$|>^NFkm4wbN8Ev+YDy^IW3-ghXX^PV9GJGTs`Axdio?#@$xuX2&mm#!I1 z)hF@h`uTrzP}b8Rp2!;QqFP^!)%&pq1IOu>SqDi0b?!#d+<&qVRS8EoEE6&oUElKT z4yaoc9!Y$D$Gwe%^;jyicR$0C>HL5oh^4{FYy-8hPU411W(9RRLp0W>MK|Gyj-B}- z`d5o*mGNJ9TGKK~N|G-b`Iy#o`+B;;{NM^rUGTjYl|h1$JhQU)rt|6rOX0%qRSOjo zP~X@bXDplOP@G$$fNHK8+=M0@<^wM3Wo7cJFM^vOZkr-*vTY5kY$$1yuz$R$8cTxJ zUahHTvs>+u^H_XA=`iLVESMR(n7LD-pSXU$6LJZrk||0-m@n|OkV-@;^)Q>AK)P8b zQx2f6ap4y-!5*EPo0Ro;#w=ZSBRA}fmfywn)3ollHziB2~j=KcgW9`#bILxrLIJtVCG8;!IrI@__GK6lmizJoIEy zBWfbd+C#hjw&B3+bb!&@~w zc;4yq?u}anK1m1Jb6vj0<)3f0i|RVH8#z;1>STy|&5$c{EsdW?OY4;U4vm&pJH&#_ zylv_7VwudkXJ2*HBybPy?vlWmgKr+66)TeCd18C0l+EnybP-p?j|`k*DEwnqY(iyc zJ7x1pf<>Ujf=~6$ufVV5lN~+dq?@+TCGwp&mBr)0(ekQtk2kO+2>sJ@Z}QN4^$&HO z%2s)iFB>~Tg*F@6I8VIluC#&`B%~p^K$}z;(vlhXT$Gx9zoN{3)lLQI z1afbyy5kd0@Q$mG_h`!+HQ>Tx`cN1w3%Fx$x|6ayiWzR*_#Hiz$K!8@EF8)%)}2g% zbg)CLxAf;QQ0FA;BD}hdim7!)vjiK1e>{In6R~sI_c(DNC^vTS4c9LVnSEGFfGu1y z(bN5e&RX&%mX&SHK*80VGU^z!zr4Qydw@A&0EG4)R}|t9Ar1A5$n2CBdE4s1v7t1E z;Bu@-I*8OD4EV-;A_5<373GZjU99qrIMfcbE_t#3qhi>#k#9Ce{4{wWHDqB=-j7f> zM*6&pkU7Dcc6O&>3U#%5OmjtMUs_DDhJ3A?XC%(DOm=eSLcK~nf*wV8qQc${g#M&5 z`2H&sg)PyST;_({fvLn?@~wh?MZHcI-H@_Ote9_Id#qa#goIRn%I!S_zxp`z{1qFT zF5G;)f#zd&1q0WyH3wpGyi2JsnpNvVpeRO0*t(6z^sES+rKoM;Qn)Qp4^au3BbIgZ z#D<88@zFNt{uPZ26Nwrx^8^Mh`D&dyWyy8eYMKHRr%A=*cw+q=9zGCKonuqs=VHhl zUF#rFwp#`(O)0yoYlnzAM1RUAy#3j8C);%UXBRbX=L5^yH#%7%eHhVn;>DgE1o5S$ z`9VAjXUXh{phLR^tPbdQ(oUW@5G~owUA{V%#8ZBK?NI&5Zt55@6`1g7QO>>nIdRp+krb8p zXJL_tEN9pixFFGt9h6K9-&fl@lA~4`(XxPm0D3t#s7bzJ^zy^o3%epnYad58c@Yg0 zqchISw|<-ULT`pMUlbeJs9w?!p+2UuZT3bX3OL*kJ*n0a%*44lXk2Zl<7)Q{$J4U| zVpfDzbQ}k+>?w-m7h?~(1KF+1&3;6_C3h7LJL|_ zR)`*aV+J}sN3TC7n*UFeJ%OifVkdE!qS_`BBF|I3`ZXC+)@JS)_5jS8u}t+PKwG4 zL5Y&e7mj5s)C+pt(hLvP4PPP|VVYJHZltpuBY~U)b^NylTd! z7|J$Cg^S;C?Q-fg4$mj}A-n>0H4VfEJ0;z)dSlSMk*xc2y_jw@C3F#dp;+v?wPaMbQ)mqX@iPXK0K?{k8?wEbs3uyJ zV~^^50EZ_l2ZipV|hbKN##@v_Fxw;ZN0}d76ks!CAsSwn+rYa0oK?t1!zIL7q-ib-mhOM zl2D~Vn(i4|><`c`lG&hfiMtyEB|ZQh#zlcvE^>C&V0mK>5O%WnrCjqX&e>{iwi;1l{ z^^JY%6_;8fUfLrkW;fdyQWQ#1W8ZNZ^84Exa;}uMZ?I(7wL4Vk-yjF#T4Zso2@}w$ z^?nJ!Q^-52Z{nMhN*ZdKUuGJigi-0O)Zd9c=liTDdaQHm)zo?vO(Twk)yrM#+n|iDLl&6(YQd{2`Q#dp z(Pw?F6N9ZB)^GQ^R($EG1XIr)2VG)EX^IMx zeXFb7D~hh;xsQ3S71w9mY+2d;1CJH0dUFm|I62;*3;g{3n)06K#eBTOjY5%H zFgejzI5}FFOHiF79EO_AV1*MOZgCHfDhZRy=GFuSx$oJU!V(i$Nt2KI95_mBPmt#d z!f4~Y)-d?!bMG8zr^OV)*e$}*QmUk;@Aa8QCYYv`=Zs#>=IAYb;h)at*Y~OoK0J`~=s0Z8)Y=Nel*vir~o7fLWO2RI+>t0CsuER+_VN!$OTGhO}=8)z-IWE6In^We- zza=G1s)YX?J9JMyd_xQ%&t<3s=5k;x}SkSh{q->2PYPob^7n2i(qtqE=Gfh<+sFt9SNar9nvSrzJ19}Nd z6;-lX?M)c*-s|qox*`&$KpyDAln2JCcrV>axK`0C zgObd2Vy;g#^X%M0v~jNtl!sr34Ph2jDoe9yOX0DD8mUR_zy3|lsP7`SMcKvU@(iwK2s}b zgL(^^c0v)u!hS!FxL6N%!Qji;+dibd@G()Ql4P|yyLSQjt&joO4cY*+Z`C0X+rpak zEHlh$j5t#L#28w*DY4ZDQ-Q&HgFrfAC{S$^0bV6WUP(|_iYduVo__T?(}Y-RUH2^1 zUEd-!j@~n@A{T1HPxDP!LJu344rYX%VcVLL<1egTy{J_2NfBR?J3ZSPt9l&)B47o(vaqk z^1%%ND$$!I_U-iMdp#;^!f4|?YuuapVjEdNg<)_5+e6dlkw5H~tg&&3DBVxd$V?|? zRX6oOBLzSGykUHU_TwJ=Z2?y5LeQ`qlMA+R!%9eQKkRK_t>12kJlUyOt~1}3>4_w=FqkU2G?TRV#=eNblrXB%Jg%Z#lS z8H<0c#$ZXn+g9T1c)1C903O04uXW%{*}AqVklRtXiTF=Nz@vF{m6%G$KV0Kg#ZnKI6TvZ|8jPFa)He88p^d`(60urlvWOIptC@JxHIO- zJ>W5m>yjX%u3O=A-JSvw0C>R}pO}@UsIKx51UJ~Y+o$siHlUW_2&eOR;Rp62xK98S zWJ%UGE@}GmH~#!i4=S1T(sN(!>(le^szFF-Qmj?$=u^4s29_R|ctaLFnfx5}3VQ3EFMM0&2Q?iQI$-rqupt;gKB7Hw)>s(^?U7MMJ!pSg((UN)W~Q!`DPKJif1yz zp3xBYGWiPVChV`$>k5=tU{()YXnH%y4M(X!=f|+-y@=)5Q3PTOPcmM{|ih0eWV!dAeip<1!n$Jp%_C z%OjbW5W)Fv+z4v;W7QB%Sx3^oZc~~pgjk?5z(CO!0__io+|tgW?KT?%%|^^{50Fjg zL?*~{5v1$t_~3lN+Zvc9Gvp%?*72K_m%M|z3T%TTyL3rwrhKJXIJX|;R;s&6Ret%qG!5t{b?Zt zBM?E~=v=d=sd{4iA`)LGNFRA6XEV`f$|aPn@45pGR+fMkcHi1q*$pWPa+EGpsI48O zjJq|RxZVb6?C6uXT1DF#@soZH`TTE=(}s1gi@?9kUXWh48dY!qEev+17GoXqq7EQD z&hJ4~L)cRY@&&GapgZ_f9?amVaKhE0f52fNfvD4bGj{WGP|dSh>>c>o@57cBqHr{s z6SF^1jRifrMN<*6VJC>w4owYBPkm0WKzf$PCAZqTv%oL@4o*gZ+_V{>ZI1m$^Y-xf zQ1&;VDBZ}YZSRq%wRWUI8xQ^5pJC|DY%rye3z%UCz}PMiQz!s9Q%JGnbtDZ~%9SZ{ zt7z`-iVc7B|7?aX=;?)a$*wsUMl!g0aQkAyBx=$MqzB(ZR#K$;JjU|-N0}=oCRh`J zfENE56621F6_-NlH3}5SP<(hS6ySX#7P<~S9H3b?K)c7y_N^d*R!=Wz>%I0`ZVPdQ zrUw8KOLGD__+2#?|JK~}2w#?t*{2MjXH`Ew+y{DS4J*Szlf1DqD|?R`Gehg)mZ^nx z1h*e*@t7R%<4F@R{ekye6%3U`wwe_oDO9M3Dq!~LBYiBO_q;hh1t=x^Y09pTiwF?;qkVk{Fg>#S4Sw(M7qzc> z>+-;M2Gi3d?nd0eom)l5Z;D*x_GbP2Y~dgrSMkMjj8E*w647;K-5W9Rrf#Ab+&nLl zwHQ^x5T%M-f#oyAsZk7c8ASXVSCT|fm$i9_J}j&xO=ZyP%~k%8tTK>R0ByM63qkdw zJG$4WCR6$V+(JRs0Ef>@0X^}+Ki#*8XQP7<;-pxCniEB54N;lPbP^GD zoUHwZgi_)ir`IQE=76Th3UV~!{3+1De&0}7!`(Ei&$iW-Tn$1EN9h{08AHgkZovas z=>SR&Lsj^?;G|(NfY4ol0uUL&6}qL~Hc|_QGb(7yb}c}6$V7zTP$8FbTSEmrnHd!3a*o>E^)3lCc!M4t?iCBO_8Y)Q z3M~@v!9mOSIkeX(D5&kKtj7vb^vd;nAEXg`wR>96Sh&21bU^08I-@N!ggFTAzQ)<~ z^3T!6{h(P4wCP_)?>J|4{9Cn4XO7rpDWIUb3npJ}w+_GTksN&p%lwdnI^VnGxyV|& zmCjZ1jJbw4%x{2^lQJ3AqH?jcaR-cNNAaK+n%~Hb`T}UgAvs`i(p|jAtMk?(X$)bh zUK?JD*uhr02E*e@Ro&)^mu*(^8;?&62gqCs)>5{9DNSEwv)767A);{J@6CE7C3=tf zwM#E_QQ6zROwG=!Lu?8SVDvwVj*=)B3Lpm0XGwFlOx#4B_7b-vQ za5ANsdQsi|EpohUB^M zS)B5Pi(H2`sDnoS-MvR|O-@^(yOI=^ntNcYYpNrMh}Q8(U`vYqD9ZqUX||JL!I4x2 zJ2x);5Rq})JEC?Oc@M%rAk>wBSsmtq=1ZD7s$TAoEA=sSXfZxjJ!p-3%ve81=9sxA zIm=hUqQBBc?*Oi;;64dZ(NgS^JuZy)2#W*ml^m?zj2bmf0Gzxy?x;;&a#uMRTq(Ka z|2WEfUYCxbkrEq@4zGyX`k+*kpWH7=`jEZvcP?umi_2F~915aCzfQ{1Hnh1W-f1m5UZwknA+3XrLza)m8i$O%4hC|lo`=4{GjvR*f`m!zqA7R76k+1qYd zWFROgdc%?h=BpV|7qhRT`4M?(`giN3yGU~%>8wPlXP+nax)D_z!}aFJnKYlBSEz2a zfL1WYNV4)d_6zbQcq=Y8jFlZRB;2#XRSjim0A$ibcHChp;BC8irRl0 zee^n(+1NftN)=#2t3o?iC!mp19Alq!O;dDfXb-|?0QCmnMQ#k@bmXC0v1H_#+C4?v}J zhq{}Gw!Nc}ex`NuJcQJa+-U966)n?Ju?DKLOYqBo)Eo?ATIh z!s{_@@yZ&tA4mYSbzV|!Ll6ffD`3`!2gCvZEtW!ns%>BDo~_kaJ0S8849JCbOBZik zZ{}BmF%Y&o3ey}O=O2Im_0pCO5L)PEHrLBtO7*^^Wr{?^Sa9!-m;eL@yX9e3Qq@au zkg_D-)!9o$U2z9Bb8-1>UcWO`tC2TEjkLTXD!*1->MF1gx!2*BX!IowR7$`IO#$I2 z(tzhr=`3%qH@$?<7rjrx%O*M%4JB_S@t{USOG2bO71b%AYO!=jTE4}r)JM0!m-Ne22^r?8fnBjsJ4oy+iIMFo!NT=h`4ITfjqUF zG;SBw3YDh>v{{5z)$7yfJ&r+}fq%T98V~leFxHXoZ;}vgWbO^sJ@LXQ4j_-X_2x40 z)R$4ApIH{8Tw4|(%Vw4@KugwJwLd;iQel@M%;J@^-zJaC;^=}hFuv%|l%I$kiyrCl zuH0DF{Wg64?<37wkUG36fo)QxjO;Z3<dTMS&hoU1dVeGxwNys=tObFy7^Iw`%249uSHT!s(b)b!f*{f!G8{k*zULpK+bTsobI8;r@jP>7^u&!|qtQ2v|D(iT`^{R~l%A!!2U#3-{bA;E9 z->+imht!+%gJV!lhwq6Czx%zUA8lWm>6jd{4B(^!huVbKGfi)&=N|dZF>O#0Li>lI zV5)+H$_0!~6|vNsk;eK%;sE9V_h0`aY+jF)@SBT20Aq9qppS#(Ijnt?zh)GPbMJ$) zbH%I~{)sBA2|*x~;>7|m-UW39f!BZfjHUl`H3YDlUq>GPNgbtsE&i`AKcH5BYz{r` zKr3~Z*8XOar$W^En@JuMOwFe`DBEW_AY4N~0S1Sl4EfXG5Tg0h03jHS!57$rG!49v zzkK@7ug^1sPLj!fGX@k-yYcc%eMdWYyX?)=KY;+ zaibxeRqF5k@2BDd!D9ucr@_kp!7;uEvXP(uHh;RwAI#MKN0<1k$^ZXG5g&M-|1<#q zJC9b(y7%i~BXEXT{`+aC7J8y<1`5!W;MH{7fyS6@kNG%l4mALS*PlMtaaujW5T&># zdiv*}4khsVrwuj!yJ1b>API+b6962tfk+v;U}j ze+El|Re&^p-=|sNKhtmU%mwh&kL%Mj!v9~5JpS38|0jS23~x~f%ePMli~r{HUZ)+y zKPWjMcko;i?|+-rZUGgU|4F;>FPjp4I4Nk+kXJ9Dqm2?g|29YG#GXgbHXhS4%KKuH zHaYU#c%NU@t6zpKAGkgtzs1aZ_VcR3m5}kx`m}*FK3UsIQ0xG&#h;YyudhF*=F?(% z(IYyv{{6zK97C_Df%WomyYa_Jn)W|Ma1T`Rt|rvYkd|mA9g&S3b3Acw>W>9&J)#(@ z_}_%naddwv3l-;TvV&MQ;&H#@c(ujl#$KmliBf&eKDW8ZxR~7bejk$D6{Rq4d;g#v zZdw~is25;Zc%*ybW%+1#%RS}Tgddexifw_z4z+^Elfr#1bXzgKG1N;V@w`B#_jqML n=;IWuGs)ndTdlRb?xMHHW^q2;$YbjH4&QCvxutZ|!PEZ>MDqZa literal 0 HcmV?d00001 diff --git a/images/sturdygbv0-3-0-frontend2.PNG b/images/sturdygbv0-3-0-frontend2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e28028692a32ee77a0e27013a7208c5501155d59 GIT binary patch literal 24977 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 Ikl(fc2d~ba`Tzg` literal 0 HcmV?d00001 diff --git a/images/sturdygbv0-3-0-frontend3.PNG b/images/sturdygbv0-3-0-frontend3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..161c6304a1b103c85237c6e6b05f750af31b3cc3 GIT binary patch literal 258295 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�g9v!}ud>#Ro7VkY~RL6Qq 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

7&jm2Fv_1PY@?@}F#uSy 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�(PO9SKm59w&44vTjovj_I>1zs= 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ʈGf7h==NY>Exi}y^Yq1{ zSh&D(0Xv@KqQ+CvRV~ZZ{eu-^1dS|kS^YvSjp15e3nS>xCP?5`cehzfLIgxu)a7Hc z>VNeSYbo$Su#I@zYnS>eRq;2bEwFrZ8fZeS+0dyGj+u3vx{GW*cp6PL&3#ob zq`KT*gYpK1&)Fzjb*iT>?*bDhFxX&lzBAieU#yw+#QwN*+Cz?9Yc+AU!`TbCY~`?u z&=mVg8+6sIbY9guOf4wDM++!9{z>%xp)%Z?;g%H|U{obf7}rBP@^)X&*a`;I3I%Dy zYm0YjdzCg$f!h#_#V)~Z+tsCrdub3E{>f$83p*Q%8doG}yg`h&GP8QSsUUIhh&*XN z&x(g0`~2Q~!2lp$VmBg$P$9Z?Dk!!@mGf(p9T|ndOiZ#Wc)mwcSIL!t|>?4Va!o zL)ks9R&S!Wr=!F=!F||TBViEO1wvD02x<6Ne)MYj^LcVrn!FW^rgu3a^u`<28A`6} z)`6_N!rnVe*h|AFbp*sZP*KW^`PFHFQjGp9wtOr3wBYba*Q`30twgM(&LncV9Z^BM zXjc*>F2hxSG`IXOziD{zC@FO%+tnGb_sH<2?(6A?wBrefV2M>$kK@B?Xw@>r)}@o&01ZCTbnTr1>)M|i4j3i%&Tz&35oVTHO;2!MWpaCPGnOQN{6QbQF z9~}^cL&`^&F9eo#tbzw*9|#WEzh#Vz&feq-VLvtM2tt#8avux#kng)J2;-)om{(r! zgHgaBKz)LFYl1{O4eqLnuQx);m#SDaXE^7M!W!Ii%c;p7 z=H|Y8#Ht$ued*s-|@9n16bJ_PeTF&dNjy&h6rK7%AAL&1nGOq`jdb&XD zs{16J%9DBj`=i(Q`2R`NNcsY#7?^s3;7Zot+i(24wQxaqwX(a zN&xx^91Ae~Hn8qMPM#9Q4r_#W0sh*bc+?;I6GRG_2I_=!gImpL1W#2DG

%VI%9 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

VSRu3TE5_*nf`-c`ohV>GoB1#J2?zk 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 z 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 Bok#!x literal 0 HcmV?d00001 diff --git a/images/sturdygbv0-3-0-frontend4.PNG b/images/sturdygbv0-3-0-frontend4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..976bbbdab97348904e1cc247fbaa894cfeec318c GIT binary patch literal 89596 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ᆌMX2$MpM^yXFfkAm=jGgygq`7MMerfYM^=Fc?A9-<1Zh|4|OP1 z^0SgJws-OrK}!waCtjs@Sl|Xtf|Rc0=UxSuJG0{`<$8J$vxGr^ch2yqGeCrhNCl=C z^#oJXRh)ltvRPQdWUk8Yq?PmN!lTSN#1twjqThapy#C;I3uT! zc`b8orDH`*0~N(o#K!$V3O0JadGKNm_keJLtF1_{v(?d%EfNP|Xp6W_JGDc}MOqip zODLv_xGYU5dUv7IAZ!}UIfjixmwW1K8%TPd8o%V_xr z7eec>;X+Vmo>61ycEHY*F+? znFL0ocyXYn^9f@#P^Wsn<527qs4hP;Ps0EFZ+VAT8{&pK+MisG_4>v5Y_)u&28yhBwu8FMZ zzx`$_oj(ntS zB!xd;v#+!ekh2gkq(HR>jiGQnfy~dnQS(ogI9T+0IbD1n#!*jRYi3!_$i?{H+--f2 zXr|FLpv{>=-=3XFoexoU&mh#jKkFRtIW+6H1HLWZ|F>7HjJiE&pHGRD~&+}vB(taej>q(p&B(v*v3F^@q!Bj#c8%Q#8*B+IHdQs=pQxlwreDA@K( zy}t$i$`V^t+Kw%kcbVT$nGMp z*<(n@p{fII&w|GD+@}SWc_wA$WHK=iiGRC%WGNxWDY-ZVt-(E1xV+*qf90u6E!)OH zRvR&0lNiiaEiO2WgF*JoW^iPZ@ILRVFVE~x%Vw5Zq*kTUYw*R6F@?%{nOzLoiaj@~ zUKuv;I8Y_xPG@^U9akZ}Sno01QSqbpCFi0P{ph?T)n+C!Gg&fqPcTy%gOksHDt%^O z&Ra^uqEWgKd^UqK^2SkGhA3iL#5^MG#xV;JhTkVaB=M?azMH5Dn>H`q*Iq z6da*{SmXj^7R7>!YNu0-Ve?DtUoDg79~5Lm!^@gbmzWP-a-Su$;MCz*P|(-sf&nqA z$#-o%)p4j$ZC1)VhWHW4j`ZJJt@Cg|yB$A+Jhb)Fy0@4fL)ZzZh)eyhty-8D7LJ}v;x;T!?y#>|*uRUszUU_Z`!i*kgu#BeUe8!m_6P)xFhDF6waD=j3i{l~p~4srb

Vpjc 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 UO*r3TNsGI?ZE!7I^Xk9;FCujxR{#J2 literal 0 HcmV?d00001 diff --git a/images/sturdygbv0-3-0-frontend5.PNG b/images/sturdygbv0-3-0-frontend5.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f1289620d8b64bb9977ab3a5d66dfc1c08c1cf27 GIT binary patch literal 135105 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�P&;@GH?e} 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 lq`CBPp;R5}%4EWcIx7`Sgq$Or~3Dig9ZY6sty z%pzu2#2qoDaaR4j2H;8|i!sTWm8cL=?H6rvvh+I#LDTr9wDfkc?mTon|K1ePVovP; zttKq2>q%-`f`uYBi-8W)mOe=w_GQQ>8+7RS(hP|(5tn9ZFfurIEb_D>6hCqE@B%2J%9cv~ ztVpVbkLcRJ$!Z4qUaL}R|H4}Ujw-^^tVWw5uOBG zB8Syg4%lqW*~(ySNM%M;u0Z5>gw2upU8q0(ZJ@mqCo;=~=cfaI5=1g@RF~j~e{RAp zUXgy%cO`K#l?9OYdg#R!(*ZX($-%YNbxUDs8HK z#{MrqC3Xr)B!kK^hgEho09{U}TzW2*yKnw)mtt+?G`m)V`&7=7a)%P8!Xl5~oKBB3 zrVQTd+4sjPWkjTvM43?qbD`-Gh!@>W0b{XlpFNT9LcwDd*@Xe-hizFbORl}I>hnBYJE2pNj3SqkOs;p^pnI!_`^lyJ_8Cz#kZd*hGhfzSVC`7~ZfnOV z9LHw0-ldI23ftNGW(h`~hHC)Y0qei9x5rAm2)DggrF;3RB45JlKh8=UdfYg|r2Rva zMv~OqmHgR3quRVaVYPTudkM+5dYp*n>lqWR6$=(vvRlRq@ck)>=q)sLy4yf zHTyvZ-tgcPx9hNq#?+(<2g~7}gC7?ImG)qC?)h65r+BTwB=bwNA~X|rZ#e&)TczCkRENMBDI_& zv{#5(M7IVi+4e zzwbFg?ft*C?z+p~Yje(dhdn%d@8>}u`nbGa##OkzOk zl3$!v%8Y}GU(>Gm8o%?;U{FUK3Bxq9)%P=JKsF&Ns>m_6<+nQ3l6D-lrOD|cA4J1L z&KM#<(^Ka@2=L)}#Yo?cR%h0@O>O(U^lnzfaQD&Fj3X!%UlY>qvb>gK9;(@ws)0sAFj2TPgl^+{AZ}WEVXrcNo!{>~K|ha~Sd?NG1lq~V z-a>5eN0hUOy%B%x@bLI`;fn3SD@AW&6Y57+=ft7mDV~3$r&_7cm8pAYYW%vNMP#D$ zWavm?ijAa9G;sj=>|Z2poE6L!AKY_Z1M^tGq?4b?4KgspkkX|V>dCd~v!1!sDJ%vG z!oBQyc?N=QwE#cGL6fd%UAjMep+DTBfKq7K^k$AazHl4a?(P~EIuV~%0sqcmirvwQ z;xZK|4|-MPw_U^|J1D(;r*)SIf)HQ_A#e)4CXDvC*{#8yY59)13+xs*T{wxU7qOwX~Vtz_Jd8SI>a|E4NuGfFnkzFp3N(v7DQI%fMwnBsEg; zmSF|Ben1x`$ar%>=q`5SFOgX@h9eY>Ic*nD+k#M%I%_@b3KW90T1K8(_VoLJuBFT zX$9Zd_(A1xj^l3Wvd2P(lj4~K2*Atf#gCGEUT}aNKLwDUyd^H;IedywnXb`n=)yPl z8}?}X2sXaG!akLKw>`rOpX=ONsJr^Ng=9ML6>n;?)@Zr z#fV$j!$BiaWT0g*oSQ}siaD&Qyc?RW0NS#V?F)6Ha#83w{(Vr46H;1QE0NA@a98;Ck8G_I=Uj!fk6;a>dhuwf`#rS7fv zsazA)nZFHxc9Ux^2cC@n9~edBY`}HUvLuTQ#x@h9C#v;(v-wer{P~kenwJ%vMs`uF z*(IALm{NhgA1h{}42EPeI}(t~FS;<(P9HG%nhLWKVS{;a9{;1`R*|xeujn{ zaXSJb`_#gL{3Q7-1TfK#r{GY_BV*k2Yv@b57SvzaBMf6mIUXVErQlH^S%5Ge#?lh= zpaFfKw*lGM0>2|nw+2dI`IS!E)YX#Cl0va%CSrD}vo zIZklXtH&C~!&XBEPeR%8#$?6p+~9|gKmy6n;H(mS>9Gz?5=OquTR9{5A$O*eznBK`Do zH&k9PTv&gln`i22;hyd$9e*YEOW7_}DHI=ClmaxRdDX2qN&R__2|7{5aH1ZTBSmA7 zq=lec(i&onpezp-xYPe)o@6-8u8m*##2zVo^&K~K-;r{!L-m8SH7)hVmW^8xrE{yn zA!YwWsA%(`q3Z$YF_5z@5VyW$9a>g`=LO{H#VGm)c;q5zZUCr5w7MwCfRYiCwNJQv z-epX~ZPqwpP(Qf9Wn)Pw#G=qF%zt_;_K1$rc+nq}5(CGX zPT2

`?M+$|+_#sf+qWK79?~QSxiZ2EhmUsjEYR#bb_ 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%0Dt^Vc}n2a@m}P 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%0D%YXuG+IoPw)73O^*PqucE5FeJ22tm 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 + + + + CFBundleName + SturdyGB + CFBundleDisplayName + SturdyGB + CFBundleIdentifier + com.sturdyrobot.sturdygb + CFBundleVersion + VERSION_PLACEHOLDER + CFBundleShortVersionString + VERSION_PLACEHOLDER + CFBundlePackageType + APPL + CFBundleExecutable + sturdygb_bin + CFBundleIconFile + sturdygb + NSHighResolutionCapable + + CFBundleInfoDictionaryVersion + 6.0 + + From 3b67611cbc5ec538a0a3985d7361c77d3614f912 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Sat, 28 Feb 2026 22:20:59 -0300 Subject: [PATCH 10/13] feat: add pause/reset functionality and improve WASM build support - Add pause/resume and reset options to Emulation menu - Store ROM bytes and save path in State for reset functionality - Skip Windows resource compilation when targeting wasm32 - Fix paused state management when stopping or loading ROMs - Only process input and run emulation loop when not paused - Improve WASM welcome screen with app name and instructions - Clone ROM bytes and save path when loading to enable reset --- crates/frontend/build.rs | 9 +- crates/frontend/src/app.rs | 225 ++++++++++++++++++++++--------------- 2 files changed, 140 insertions(+), 94 deletions(-) diff --git a/crates/frontend/build.rs b/crates/frontend/build.rs index e3b192b..79557a2 100644 --- a/crates/frontend/build.rs +++ b/crates/frontend/build.rs @@ -5,8 +5,11 @@ fn main() { #[cfg(target_os = "windows")] { - let mut res = winresource::WindowsResource::new(); - res.set_icon("../../images/sturdygb.ico"); - res.compile().expect("Failed to compile Windows resources"); + let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap_or_default(); + if target_arch != "wasm32" { + let mut res = winresource::WindowsResource::new(); + res.set_icon("../../images/sturdygb.ico"); + res.compile().expect("Failed to compile Windows resources"); + } } } diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 04361e4..b00bdf2 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -26,6 +26,8 @@ struct State { rgba: Vec, leftover_audio: Vec<[f32; 2]>, title: String, + rom_bytes: Vec, + save_path: Option, } pub struct EmuApp { @@ -46,6 +48,7 @@ pub struct EmuApp { sort_by: SortMethod, #[cfg(not(target_arch = "wasm32"))] sort_ascending: bool, + paused: bool, config: SturdyConfig, show_options: bool, #[cfg(not(target_arch = "wasm32"))] @@ -144,6 +147,7 @@ impl EmuApp { sort_by: SortMethod::Filename, #[cfg(not(target_arch = "wasm32"))] sort_ascending: true, + paused: false, config, show_options: false, #[cfg(not(target_arch = "wasm32"))] @@ -182,7 +186,7 @@ impl EmuApp { } let save_path = std::path::PathBuf::from(path).with_extension("sav"); - match GbInstance::build_from_bytes(bytes, Some(save_path)) { + match GbInstance::build_from_bytes(bytes.clone(), Some(save_path.clone())) { Ok(mut gb) => { setup_audio(&mut gb); self.state = Some(State { @@ -190,7 +194,10 @@ impl EmuApp { rgba: vec![0; GB_W * GB_H * 4], leftover_audio: Vec::new(), title, + rom_bytes: bytes, + save_path: Some(save_path), }); + self.paused = false; self.error_msg = None; self.frames_rendered = 0; self.last_fps_update = instant::Instant::now(); @@ -214,7 +221,7 @@ impl EmuApp { title = header.title; } - match GbInstance::build_from_bytes(bytes, save_path) { + match GbInstance::build_from_bytes(bytes.clone(), save_path.clone()) { Ok(mut gb) => { setup_audio(&mut gb); self.state = Some(State { @@ -222,7 +229,10 @@ impl EmuApp { rgba: vec![0; GB_W * GB_H * 4], leftover_audio: Vec::new(), title, + rom_bytes: bytes, + save_path, }); + self.paused = false; self.error_msg = None; self.frames_rendered = 0; self.last_fps_update = instant::Instant::now(); @@ -413,6 +423,7 @@ impl eframe::App for EmuApp { if ui.button("Stop").clicked() { self.state = None; self.texture = None; + self.paused = false; ctx.send_viewport_cmd(egui::ViewportCommand::Title( APP_NAME.to_string(), )); @@ -433,6 +444,34 @@ impl eframe::App for EmuApp { } } }); + ui.menu_button("Emulation", |ui| { + let has_state = self.state.is_some(); + if ui + .add_enabled( + has_state, + egui::Button::new(if self.paused { + "Resume" + } else { + "Pause" + }), + ) + .clicked() + { + self.paused = !self.paused; + ui.close(); + } + if ui + .add_enabled(has_state, egui::Button::new("Reset")) + .clicked() + { + if let Some(state) = &self.state { + let rom_bytes = state.rom_bytes.clone(); + let save_path = state.save_path.clone(); + self.load_rom_bytes(rom_bytes, save_path); + } + ui.close(); + } + }); if ui.button("Options").clicked() { self.show_options = true; } @@ -626,108 +665,111 @@ impl eframe::App for EmuApp { if ctx.input(|i| i.key_pressed(egui::Key::Escape)) { self.state = None; self.texture = None; + self.paused = false; ctx.send_viewport_cmd(egui::ViewportCommand::Title(APP_NAME.to_string())); return; } - // Input handling - let k = &self.config.keybinds; - set_btn( - ctx, - state, - *k.get(&JoypadButton::Up).unwrap(), - JoypadButton::Up, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Down).unwrap(), - JoypadButton::Down, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Left).unwrap(), - JoypadButton::Left, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Right).unwrap(), - JoypadButton::Right, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::A).unwrap(), - JoypadButton::A, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::B).unwrap(), - JoypadButton::B, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Start).unwrap(), - JoypadButton::Start, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Select).unwrap(), - JoypadButton::Select, - ); - - // Emulation Loop - let mut channel_full = false; - let mut frames_run = 0; - - // First try to drain leftover audio - let mut new_leftover = Vec::with_capacity(state.leftover_audio.len()); - unsafe { - #[allow(static_mut_refs)] - if let Some(prod) = &mut AUDIO_PRODUCER { - for sample in state.leftover_audio.drain(..) { - if !channel_full { - if let Err(std::sync::mpsc::TrySendError::Full(val)) = - prod.try_send(sample) - { - channel_full = true; - new_leftover.push(val); - } - } else { - new_leftover.push(sample); - } - } - } - } - state.leftover_audio = new_leftover; - - while !channel_full && frames_run < 5 { - state.gb.run_one_frame(); - frames_run += 1; - - let audio_data = state.gb.get_audio_buffer(); + if !self.paused { + // Input handling + let k = &self.config.keybinds; + set_btn( + ctx, + state, + *k.get(&JoypadButton::Up).unwrap(), + JoypadButton::Up, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Down).unwrap(), + JoypadButton::Down, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Left).unwrap(), + JoypadButton::Left, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Right).unwrap(), + JoypadButton::Right, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::A).unwrap(), + JoypadButton::A, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::B).unwrap(), + JoypadButton::B, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Start).unwrap(), + JoypadButton::Start, + ); + set_btn( + ctx, + state, + *k.get(&JoypadButton::Select).unwrap(), + JoypadButton::Select, + ); + + // Emulation Loop + let mut channel_full = false; + let mut frames_run = 0; + + // First try to drain leftover audio + let mut new_leftover = Vec::with_capacity(state.leftover_audio.len()); unsafe { #[allow(static_mut_refs)] if let Some(prod) = &mut AUDIO_PRODUCER { - for frame in audio_data.chunks_exact(2) { - let sample = [frame[0], frame[1]]; + for sample in state.leftover_audio.drain(..) { if !channel_full { if let Err(std::sync::mpsc::TrySendError::Full(val)) = prod.try_send(sample) { channel_full = true; - if state.leftover_audio.len() < 8192 { - state.leftover_audio.push(val); - } + new_leftover.push(val); } } else { - if state.leftover_audio.len() < 8192 { - state.leftover_audio.push(sample); + new_leftover.push(sample); + } + } + } + } + state.leftover_audio = new_leftover; + + while !channel_full && frames_run < 5 { + state.gb.run_one_frame(); + frames_run += 1; + + let audio_data = state.gb.get_audio_buffer(); + unsafe { + #[allow(static_mut_refs)] + if let Some(prod) = &mut AUDIO_PRODUCER { + for frame in audio_data.chunks_exact(2) { + let sample = [frame[0], frame[1]]; + if !channel_full { + if let Err(std::sync::mpsc::TrySendError::Full(val)) = + prod.try_send(sample) + { + channel_full = true; + if state.leftover_audio.len() < 8192 { + state.leftover_audio.push(val); + } + } + } else { + if state.leftover_audio.len() < 8192 { + state.leftover_audio.push(sample); + } } } } @@ -991,7 +1033,8 @@ impl eframe::App for EmuApp { ui.centered_and_justified(|ui| { ui.vertical_centered(|ui| { ui.add_space(ui.available_height() / 2.0 - 30.0); - ui.heading("SturdyGB Web"); + ui.heading(format!("{}", APP_NAME, )); + ui.heading("Select a ROM file"); ui.add_space(8.0); if ui.button("Open ROM...").clicked() { let sender = self.rom_load_channel.0.clone(); From 75d3c94ee80a73beb8e774f2043a21d584f810ea Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Tue, 3 Mar 2026 09:08:58 -0300 Subject: [PATCH 11/13] feat: add fullscreen support and improve UI with icons - Add fullscreen toggle via F11 key and View menu - Store fullscreen state in SturdyConfig with persistence - Add emoji icons to menu items for better visual clarity - Support ZIP files in ROM file picker dialogs - Move Stop button from File menu to Emulation menu - Improve game library table column sizing with auto-sizing - Update file filter to include .zip extension for both native and WASM --- crates/frontend/src/app.rs | 68 ++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index b00bdf2..030a9f5 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -69,6 +69,7 @@ pub struct SturdyConfig { #[cfg(not(target_arch = "wasm32"))] pub rom_directories: Vec, pub keybinds: HashMap, + pub fullscreen: bool, } impl Default for SturdyConfig { @@ -89,6 +90,7 @@ impl Default for SturdyConfig { scale: ScaleMode::Integer(4.0), palette: Palette::Greyscale, keybinds, + fullscreen: false, } } } @@ -356,6 +358,14 @@ impl eframe::App for EmuApp { } fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + // Apply fullscreen state + ctx.send_viewport_cmd(egui::ViewportCommand::Fullscreen(self.config.fullscreen)); + + // Toggle fullscreen with F11 + if ctx.input(|i| i.key_pressed(egui::Key::F11)) { + self.config.fullscreen = !self.config.fullscreen; + } + // Check for async loaded roms if let Ok(result) = self.rom_load_channel.1.try_recv() { match result { @@ -391,11 +401,11 @@ impl eframe::App for EmuApp { egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| { egui::MenuBar::new().ui(ui, |ui| { ui.menu_button("File", |ui| { - if ui.button("Open ROM...").clicked() { + if ui.button("📁 Open ROM...").clicked() { #[cfg(not(target_arch = "wasm32"))] { if let Some(path) = FileDialog::new() - .add_filter("GameBoy ROMs", &["gb"]) + .add_filter("GameBoy ROMs", &["gb", "zip"]) .pick_file() { self.load_rom_file(path.to_str().unwrap()); @@ -407,7 +417,7 @@ impl eframe::App for EmuApp { let sender = self.rom_load_channel.0.clone(); wasm_bindgen_futures::spawn_local(async move { let file = AsyncFileDialog::new() - .add_filter("GameBoy ROMs", &["gb", "gbc"]) + .add_filter("GameBoy ROMs", &["gb", "zip"]) .pick_file() .await; @@ -419,40 +429,41 @@ impl eframe::App for EmuApp { } ui.close(); } - if let Some(_) = self.state { - if ui.button("Stop").clicked() { - self.state = None; - self.texture = None; - self.paused = false; - ctx.send_viewport_cmd(egui::ViewportCommand::Title( - APP_NAME.to_string(), - )); - ui.close(); - } - } + #[cfg(not(target_arch = "wasm32"))] { - if ui.button("Open Directory...").clicked() { + if ui.button("📁 Open Directory...").clicked() { if let Some(path) = FileDialog::new().pick_folder() { self.load_directory(path); } ui.close(); } - ui.checkbox(&mut self.recursive_search, "Recursive Search"); - if ui.button("Exit").clicked() { + ui.checkbox(&mut self.recursive_search, "🔍 Recursive Search"); + if ui.button("❎ Exit").clicked() { ctx.send_viewport_cmd(egui::ViewportCommand::Close); } } }); ui.menu_button("Emulation", |ui| { let has_state = self.state.is_some(); + if has_state { + if ui.button("🟥 Stop").clicked() { + self.state = None; + self.texture = None; + self.paused = false; + ctx.send_viewport_cmd(egui::ViewportCommand::Title( + APP_NAME.to_string(), + )); + ui.close(); + } + } if ui .add_enabled( has_state, egui::Button::new(if self.paused { - "Resume" + "▶ Resume" } else { - "Pause" + "⏸ Pause" }), ) .clicked() @@ -461,7 +472,7 @@ impl eframe::App for EmuApp { ui.close(); } if ui - .add_enabled(has_state, egui::Button::new("Reset")) + .add_enabled(has_state, egui::Button::new("🔄 Reset")) .clicked() { if let Some(state) = &self.state { @@ -472,6 +483,19 @@ impl eframe::App for EmuApp { ui.close(); } }); + ui.menu_button("View", |ui| { + if ui + .button(if self.config.fullscreen { + "⛶ Exit Fullscreen (F11)" + } else { + "⛶ Fullscreen (F11)" + }) + .clicked() + { + self.config.fullscreen = !self.config.fullscreen; + ui.close(); + } + }); if ui.button("Options").clicked() { self.show_options = true; } @@ -984,8 +1008,8 @@ impl eframe::App for EmuApp { .striped(true) .resizable(true) .cell_layout(egui::Layout::left_to_right(egui::Align::Center)) - .column(Column::initial(150.0).clip(true).resizable(true)) - .column(Column::initial(150.0).clip(true).resizable(true)) + .column(Column::auto_with_initial_suggestion(300.0).clip(true).resizable(true)) + .column(Column::auto_with_initial_suggestion(150.0).clip(true).resizable(true)) .column(Column::remainder()) .min_scrolled_height(0.0); From 9393b4ea760fc8312cb07901228b174046a84193 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Tue, 3 Mar 2026 10:21:53 -0300 Subject: [PATCH 12/13] fix: disable fullscreen feature for WASM target - Add cfg(not(target_arch = "wasm32")) guards to fullscreen field and logic - Fullscreen API not supported in WASM, causing compilation issues - Add folder emoji icons to ROM picker buttons on WASM welcome screen - Fix WASM file filter to include .zip instead of .gbc extension --- crates/frontend/src/app.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 030a9f5..55bfb44 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -69,6 +69,7 @@ pub struct SturdyConfig { #[cfg(not(target_arch = "wasm32"))] pub rom_directories: Vec, pub keybinds: HashMap, + #[cfg(not(target_arch = "wasm32"))] pub fullscreen: bool, } @@ -90,6 +91,7 @@ impl Default for SturdyConfig { scale: ScaleMode::Integer(4.0), palette: Palette::Greyscale, keybinds, + #[cfg(not(target_arch = "wasm32"))] fullscreen: false, } } @@ -359,9 +361,11 @@ impl eframe::App for EmuApp { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { // Apply fullscreen state + #[cfg(not(target_arch = "wasm32"))] ctx.send_viewport_cmd(egui::ViewportCommand::Fullscreen(self.config.fullscreen)); - + // Toggle fullscreen with F11 + #[cfg(not(target_arch = "wasm32"))] if ctx.input(|i| i.key_pressed(egui::Key::F11)) { self.config.fullscreen = !self.config.fullscreen; } @@ -483,6 +487,7 @@ impl eframe::App for EmuApp { ui.close(); } }); + #[cfg(not(target_arch = "wasm32"))] ui.menu_button("View", |ui| { if ui .button(if self.config.fullscreen { @@ -886,7 +891,7 @@ impl eframe::App for EmuApp { ui.add_space(ui.available_height() / 2.0 - 30.0); ui.heading("No games found."); ui.add_space(8.0); - if ui.button("Open ROM...").clicked() { + if ui.button("📁 Open ROM...").clicked() { if let Some(path) = FileDialog::new() .add_filter("GameBoy ROMs", &["gb"]) .pick_file() @@ -894,7 +899,7 @@ impl eframe::App for EmuApp { self.load_rom_file(path.to_str().unwrap()); } } - if ui.button("Add ROM directory...").clicked() { + if ui.button("📁 Add ROM directory...").clicked() { if let Some(path) = FileDialog::new().pick_folder() { self.load_directory(path); } @@ -1060,11 +1065,11 @@ impl eframe::App for EmuApp { ui.heading(format!("{}", APP_NAME, )); ui.heading("Select a ROM file"); ui.add_space(8.0); - if ui.button("Open ROM...").clicked() { + if ui.button("📁 Open ROM...").clicked() { let sender = self.rom_load_channel.0.clone(); wasm_bindgen_futures::spawn_local(async move { let file = AsyncFileDialog::new() - .add_filter("GameBoy ROMs", &["gb", "gbc"]) + .add_filter("GameBoy ROMs", &["gb", "zip"]) .pick_file() .await; From 88122ba5b629a97c96525a731bd5bc371a185bf1 Mon Sep 17 00:00:00 2001 From: Sturdy Robot Date: Tue, 3 Mar 2026 10:52:00 -0300 Subject: [PATCH 13/13] refactor: improve thread safety and code organization - Replace unsafe static mut with Mutex-wrapped statics for audio components - Add SturdyConfig::default_key() and keybind() helper methods - Simplify input handling loop using button array iteration - Fix directory loading channel disconnection detection - Add .gbc extension to all file picker filters - Fix README web server path instructions to be relative to crates/frontend - Remove unsafe blocks and static_mut_refs lint allowances --- README.md | 4 +- crates/frontend/src/app.rs | 113 +++++++++++++++++-------------------- 2 files changed, 53 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 62dcb5f..1ffad63 100644 --- a/README.md +++ b/README.md @@ -172,9 +172,9 @@ SturdyGB can also be compiled to run in a web browser using WebAssembly. ``` 5. **Serve the application:** - You will need a local web server to serve the files in the `crates/frontend/public` directory. For example, using Python: + You will need a local web server to serve the files in the `crates/frontend/public` directory. Assuming you are still in `crates/frontend` from the previous steps: ```bash - cd public + cd crates/frontend/public python -m http.server 8080 ``` Then navigate to `http://localhost:8080` in your web browser. diff --git a/crates/frontend/src/app.rs b/crates/frontend/src/app.rs index 55bfb44..a743092 100644 --- a/crates/frontend/src/app.rs +++ b/crates/frontend/src/app.rs @@ -6,6 +6,7 @@ use sturdygb_core::prelude::GbInstance; use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use std::collections::HashMap; use std::sync::mpsc::{sync_channel, SyncSender}; +use std::sync::Mutex; pub const APP_NAME: &str = concat!("SturdyGB v", env!("CARGO_PKG_VERSION")); @@ -18,8 +19,8 @@ use rfd::AsyncFileDialog; const GB_W: usize = 160; const GB_H: usize = 144; -static mut AUDIO_PRODUCER: Option> = None; -static mut AUDIO_STREAM: Option = None; +static AUDIO_PRODUCER: Mutex>> = Mutex::new(None); +static AUDIO_STREAM: Mutex> = Mutex::new(None); struct State { gb: sturdygb_core::gb::Gb, @@ -73,6 +74,25 @@ pub struct SturdyConfig { pub fullscreen: bool, } +impl SturdyConfig { + fn default_key(btn: &JoypadButton) -> egui::Key { + match btn { + JoypadButton::Up => egui::Key::ArrowUp, + JoypadButton::Down => egui::Key::ArrowDown, + JoypadButton::Left => egui::Key::ArrowLeft, + JoypadButton::Right => egui::Key::ArrowRight, + JoypadButton::A => egui::Key::Z, + JoypadButton::B => egui::Key::X, + JoypadButton::Start => egui::Key::Enter, + JoypadButton::Select => egui::Key::Space, + } + } + + fn keybind(&self, btn: &JoypadButton) -> egui::Key { + self.keybinds.get(btn).copied().unwrap_or_else(|| Self::default_key(btn)) + } +} + impl Default for SturdyConfig { fn default() -> Self { let mut keybinds = HashMap::new(); @@ -383,13 +403,18 @@ impl eframe::App for EmuApp { if self.loading_directory { if let Some(rx) = &self.dir_load_receiver { let mut loaded_some = false; - while let Ok(entry) = rx.try_recv() { - self.game_list.push(entry); - loaded_some = true; - } + let disconnected = loop { + match rx.try_recv() { + Ok(entry) => { + self.game_list.push(entry); + loaded_some = true; + } + Err(std::sync::mpsc::TryRecvError::Disconnected) => break true, + Err(std::sync::mpsc::TryRecvError::Empty) => break false, + } + }; - // If the channel is disconnected, the loading thread is done - if let Err(std::sync::mpsc::TryRecvError::Disconnected) = rx.try_recv() { + if disconnected { self.loading_directory = false; self.dir_load_receiver = None; self.game_list.sort_by(|a, b| a.filename.cmp(&b.filename)); @@ -409,7 +434,7 @@ impl eframe::App for EmuApp { #[cfg(not(target_arch = "wasm32"))] { if let Some(path) = FileDialog::new() - .add_filter("GameBoy ROMs", &["gb", "zip"]) + .add_filter("GameBoy ROMs", &["gb", "gbc", "zip"]) .pick_file() { self.load_rom_file(path.to_str().unwrap()); @@ -421,7 +446,7 @@ impl eframe::App for EmuApp { let sender = self.rom_load_channel.0.clone(); wasm_bindgen_futures::spawn_local(async move { let file = AsyncFileDialog::new() - .add_filter("GameBoy ROMs", &["gb", "zip"]) + .add_filter("GameBoy ROMs", &["gb", "gbc", "zip"]) .pick_file() .await; @@ -701,55 +726,19 @@ impl eframe::App for EmuApp { if !self.paused { // Input handling - let k = &self.config.keybinds; - set_btn( - ctx, - state, - *k.get(&JoypadButton::Up).unwrap(), + let buttons = [ JoypadButton::Up, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Down).unwrap(), JoypadButton::Down, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Left).unwrap(), JoypadButton::Left, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Right).unwrap(), JoypadButton::Right, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::A).unwrap(), JoypadButton::A, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::B).unwrap(), JoypadButton::B, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Start).unwrap(), JoypadButton::Start, - ); - set_btn( - ctx, - state, - *k.get(&JoypadButton::Select).unwrap(), JoypadButton::Select, - ); + ]; + for btn in buttons { + set_btn(ctx, state, self.config.keybind(&btn), btn); + } // Emulation Loop let mut channel_full = false; @@ -757,9 +746,8 @@ impl eframe::App for EmuApp { // First try to drain leftover audio let mut new_leftover = Vec::with_capacity(state.leftover_audio.len()); - unsafe { - #[allow(static_mut_refs)] - if let Some(prod) = &mut AUDIO_PRODUCER { + if let Ok(guard) = AUDIO_PRODUCER.lock() { + if let Some(prod) = guard.as_ref() { for sample in state.leftover_audio.drain(..) { if !channel_full { if let Err(std::sync::mpsc::TrySendError::Full(val)) = @@ -781,9 +769,8 @@ impl eframe::App for EmuApp { frames_run += 1; let audio_data = state.gb.get_audio_buffer(); - unsafe { - #[allow(static_mut_refs)] - if let Some(prod) = &mut AUDIO_PRODUCER { + if let Ok(guard) = AUDIO_PRODUCER.lock() { + if let Some(prod) = guard.as_ref() { for frame in audio_data.chunks_exact(2) { let sample = [frame[0], frame[1]]; if !channel_full { @@ -893,7 +880,7 @@ impl eframe::App for EmuApp { ui.add_space(8.0); if ui.button("📁 Open ROM...").clicked() { if let Some(path) = FileDialog::new() - .add_filter("GameBoy ROMs", &["gb"]) + .add_filter("GameBoy ROMs", &["gb", "gbc", "zip"]) .pick_file() { self.load_rom_file(path.to_str().unwrap()); @@ -1069,7 +1056,7 @@ impl eframe::App for EmuApp { let sender = self.rom_load_channel.0.clone(); wasm_bindgen_futures::spawn_local(async move { let file = AsyncFileDialog::new() - .add_filter("GameBoy ROMs", &["gb", "zip"]) + .add_filter("GameBoy ROMs", &["gb", "gbc", "zip"]) .pick_file() .await; @@ -1133,9 +1120,11 @@ fn setup_audio(gb: &mut sturdygb_core::gb::Gb) { if let Ok(stream) = stream { stream.play().unwrap(); - unsafe { - AUDIO_PRODUCER = Some(prod); - AUDIO_STREAM = Some(stream); + if let Ok(mut guard) = AUDIO_PRODUCER.lock() { + *guard = Some(prod); + } + if let Ok(mut guard) = AUDIO_STREAM.lock() { + *guard = Some(stream); } } }