[workspace] resolver = "2" members = [ "crates/gc-formats", "crates/gc-extract", "crates/gc-engine", "crates/gc-game", "crates/gc-video", "tools/trace", "tools/overlay-anchors", ] [workspace.package] version = "0.1.0" edition = "2021" rust-version = "1.85" license = "MIT OR ISC" publish = false # The PS2's Emotion Engine is a MIPS R5900 with a 128-bit vector unit and a # float model that differs from x86 in ways that matter for this game (no # denormals, specific rounding). Every ported routine must reproduce that model # rather than Rust's native f32, or the game will subtly not feel right. # See docs/plan/float-model.md. [workspace.dependencies] gc-formats = { path = "crates/gc-formats" } gc-extract = { path = "crates/gc-extract" } gc-engine = { path = "crates/gc-engine" } gc-game = { path = "crates/gc-game" } gc-video = { path = "crates/gc-video" } gc-trace = { path = "tools/trace" } # Dev tools. PCSX2's savestates are zip archives whose entries are # zstd- or deflate-compressed; both backends are pure Rust and are already # in the lockfile through Bevy, so the trace tool adds no new sources. ruzstd = "0.8" flate2 = { version = "1", default-features = false, features = ["rust_backend"] } anyhow = "1" thiserror = "2" bytemuck = { version = "1", features = ["derive", "min_const_generics"] } sha1 = "0.10" # Bevy 0.19.1 is the engine ReRAC uses; matching it keeps the GS/VU work portable. # # default-features = false avoids the cpal audio backend, which needs system # ALSA development headers on Fedora (alsa-lib-devel). Audio decode lives in # gc-video and is the last phase of the port, so the host audio backend is not # needed to build. Re-enable "audio" and install alsa-lib-devel when it is. bevy = { version = "0.19.1", default-features = false, features = [ "std", "bevy_asset", "bevy_color", "bevy_core_pipeline", "bevy_gizmos", "bevy_log", "bevy_mesh", "bevy_pbr", "bevy_render", "bevy_shader", "bevy_sprite", "bevy_state", "bevy_text", "bevy_ui", "bevy_window", "bevy_winit", "bevy_animation", "bevy_gltf", "png", "ktx2", "zlib", "zstd_rust", "tonemapping_luts", "multi_threaded", "x11", "wayland", "keyboard", "mouse", "gamepad", ] } [profile.dev] # Iterate fast on our own code; do not rebuild dependencies unoptimised. opt-level = 1 [profile.dev.package."*"] opt-level = 3 debug = false [profile.release] lto = "thin" codegen-units = 1