#模拟器 #nes #6502

无 std runes

无 std NES 模拟器库和最小化模拟器,完全用 Rust 编写

16 个版本

0.2.5 2021 年 2 月 20 日
0.2.4 2019 年 4 月 18 日
0.2.3 2018 年 7 月 9 日
0.2.1 2018 年 2 月 5 日
0.1.1 2017 年 11 月 19 日

#57模拟器

MIT 许可证

145KB
4K SLoC

RuNES

https://img.shields.io/crates/v/runes.svg https://img.shields.io/crates/l/runes.svg

正如我们所知,已经有很多种语言的 NES 模拟器实现(主要是 C 语言)。所有这些模拟器都有不同的准确性和可移植性。RuNES 是尝试使用 Rust 构建一个合理准确的(周期级准确)的、轻量级且高效的模拟核心库。与 sprocketnespinky 不同,RuNES 力求提供一个干净且最小的核心库,没有标准库(即没有 Box、Rc、Vectors 等),可以编译并轻松移植到嵌入式环境中。当然,还提供了一个最小但可用的基于 SDL 的 GUI,以展示其用法。

特性

  • 核心库,对 Rust 核心crate的使用最小化,完全不使用 std。
  • 轻量级且干净的代码库。
  • 支持标准 6502 指令集(将来将考虑非官方指令)。
  • 加载/保存机器状态。
  • 周期级准确度(进行中)。

指南

  • 核心库中永远不使用 std。
  • 同时,尽可能避免不安全使用,但在需要提高性能时酌情使用:在一个非常局部的上下文中删除不必要的检查。
  • 保持核心库代码库最小。

构建示例模拟器

GNU/Linux

# for Ubuntu
# install Rust toolchain (https://www.rustup.rs/):
# $ sudo apt install curl gcc
# $ curl https://sh.rustup.rs -sSf | sh
# and add $HOME/.cargo/bin to your $PATH
# install SDL2 by:
# $ sudo apt install libsdl2-dev        # install SDL2 library

git clone https://github.com/Determinant/runes.git
cd runes
cargo build --examples --release        # build the binary
target/release/examples/runes --help    # see the help message

Mac OS X

# install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install Xcode command line tools
xcode-select --install
# install SDL2
brew install sdl2
# rust up
curl https://sh.rustup.rs -sSf | sh
# build RuNES and enjoy
git clone https://github.com/Determinant/runes.git
cargo build --examples --release

无运行时依赖