2 个不稳定版本
0.11.0 | 2024年6月12日 |
---|---|
0.10.0 | 2024年5月16日 |
#236 in 模拟器
每月103次下载
用于 tetanes
710KB
12K SLoC
TetaNES Core
📖 概要 - ✨ 功能 - 🚧 构建 - 🚀 入门 - ⚠️ 已知问题 - 💬 联系方式
概要
背景图片版权:由 Zsolt Palatinus 在 unsplash 提供
这是 TetaNES
的核心模拟库。熟练的开发者可以在 tetanes-core
的基础上构建自己的定制模拟库或应用程序。
一些社区示例
- NES Bundler - 将你的 NES 游戏转换为针对您最喜欢的操作系统的单个可执行文件!
- Dappicom - Dappicom 是一个使用 Noir 和 Rust 编写的可验证的任天堂娱乐系统模拟器。
- NESBox - NESBox 的愿景是成为在线多人游戏玩家的首选平台,为所有用户提供出色的用户体验。
最低支持的 Rust 版本 (MSRV)
当前最低支持的 Rust 版本是 1.78.0
。
功能
- NTSC、PAL 和 Dendy 模拟。
- 无头模式。
- 像素化和 NTSC 滤镜。
- 支持光枪 (Light Gun)。
- 支持 iNES 和 NES 2.0 ROM 头部格式。
- 支持 14 个映射器,覆盖约 85% 的授权游戏。
- 支持游戏精灵代码。
- 运行时可配置。
- 增加/减少速度 & 快进
- 视觉 & 瞬时回放
- 保存 & 加载状态
- 支持电池备份 RAM 保存
构建
要构建项目,您需要一个编译器的夜间版本,并运行 cargo build
或 cargo build --release
(如果您希望帧率更好)。
特性标志
- cycle-accurate - 启用周期精确仿真。更占用CPU资源,但支持更广泛的需要精确时间间隔的游戏。禁用可能在低端机器上提高性能。默认启用。
- profiling - 启用 puffin 分析。
入门指南
以下是一个使用ROM设置 tetanes_core
并运行仿真的基本示例。要获取更深入的示例,请查看 tetanes::nes::emulation
模块。
use tetanes_core::prelude::*;
fn main() -> anyhow::Result<()> {
let mut control_deck = ControlDeck::new();
// Load a ROM from the filesystem.
// See also: `ControlDeck::load_rom` for loading anything that implements `Read`.
control_deck.load_rom_path("some_awesome_game.nes")?;
while control_deck.is_running() {
// See also: `ControlDeck::clock_frame_output` and `ControlDeck::clock_frame_into`
control_deck.clock_frame()?;
let audio_samples = control_deck.audio_samples();
// Process audio samples (e.g. by sending it to an audio device)
control_deck.clear_audio_samples();
let frame_buffer = control_deck.frame_buffer();
// Process frame buffer (e.g. by rendering it to the screen)
// If not relying on vsync, sleep or otherwise wait the remainder of the
// 16ms frame time to clock again
}
Ok(())
}
已知问题
请参阅 github问题跟踪器。
联系
对于问题报告,请使用 github问题跟踪器。您也可以直接通过 https://lukeworks.tech/contact/ 联系我。
依赖项
~2–13MB
~145K SLoC