Rust reimplementation of the xenia Xbox 360 emulator targeting reverse- engineering and preservation, initially scoped to Project Sylpheed. Includes: - XEX2 loader (LZX decompression, AES decryption, PE parsing) - XISO / XGD2 disc image VFS - PPC interpreter with 200+ opcodes and VMX128 decoding - Static analyzer: functions, cross-references, labels, asm + SQLite output - HLE kernel covering the xboxkrnl/xam subset used by Sylpheed init - Debugger with in-memory and SQLite-backed execution tracing - `xenia-rs` CLI with extract/dis/exec commands that produce cumulative, superset SQLite databases and opt-in instruction/import/branch traces Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
34 lines
801 B
Rust
34 lines
801 B
Rust
pub mod device;
|
|
pub mod disc_image;
|
|
|
|
use thiserror::Error;
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum VfsError {
|
|
#[error("I/O error: {0}")]
|
|
Io(#[from] std::io::Error),
|
|
|
|
#[error("Invalid format: {0}")]
|
|
InvalidFormat(String),
|
|
|
|
#[error("File not found: {0}")]
|
|
NotFound(String),
|
|
}
|
|
|
|
/// A virtual filesystem entry (file or directory).
|
|
#[derive(Debug)]
|
|
pub struct VfsEntry {
|
|
pub name: String,
|
|
pub is_directory: bool,
|
|
pub size: u64,
|
|
pub offset: u64,
|
|
}
|
|
|
|
/// Trait for VFS device implementations (XISO, STFS, host path, etc.)
|
|
pub trait VfsDevice: Send + Sync {
|
|
fn name(&self) -> &str;
|
|
fn list_root(&self) -> Result<Vec<VfsEntry>, VfsError>;
|
|
fn read_file(&self, path: &str) -> Result<Vec<u8>, VfsError>;
|
|
fn stat(&self, path: &str) -> Result<VfsEntry, VfsError>;
|
|
}
|