Skip to content
Snippets Groups Projects
Name Last commit Last update
..
res/test
src
Cargo.toml
README.md

Boytacean SDL

Build

Build SDL using vcpkg

To be able to run the cargo build one must first install a local version of vcpkg using:

cargo install cargo-vcpkg
cargo vcpkg build
cargo build

Build SDL in Windows

For windows the vcpkg based SDL building is simpler:

cargo install cargo-vcpkg
cargo build

Make sure that the current Rust in use is MSVC based using:

rustup default stable-msvc

For more information check GitHub - Rust-SDL2/rust-sdl2.

Build binaries

Then you can use the following command to build and run Boytacean SDL:

cargo build
cargo run

To reload the code continuously use the cargo watch tool:

cargo install cargo-watch
cargo watch -x run

There are some feature flags that control the verbosity of the emulator to run in debug mode use:

cargo build --features debug

To obtain more information about the issues.

Troubleshooting

I'm facing issues with the vcpkg binaries

If there're issues with the cargo vcpkg build build process you may need to remove the ~/.vcpkg-root and re-run the process to re-build the whole set of packages. It's also important to completely delete the target directory.

I'm having difficulties building SDL for arm64 in Mac OS

Try the above strategy and also try to remove ~/.cache/vcpkg. If that does not work try to remove the Cargo.lock file to flush dependencies.

A quick shortcut to the complete set of operations would be:

rm -rf ~/.vcpkg-root
rm -rf ~/.cache/vcpkg
cargo vcpkg -v build

Execution

Headless

It's possible to run the emulator in headless mode using the --headless parameter:

cargo run -- --rom-path ../../res/roms/test/blargg/cpu/cpu_instrs.gb --cycles 100000000 --headless --device stdout --unlimited

Features

Provider Description
debug Activates the base debug feature from Boytacean.
pedantic Additional safety instructions are executed to make sure the machine does no run "out of tracks", making sure to run many panic() calls.
slow Runs the emulator at a very slow page 60x slower to allow visual debugging.
cpulog Prints a log of the CPU instruction executed.