4 个版本
0.1.3 | 2021 年 10 月 5 日 |
---|---|
0.1.2 | 2021 年 10 月 4 日 |
0.1.1 | 2021 年 10 月 4 日 |
0.1.0 | 2021 年 10 月 3 日 |
#3 在 #libretro
170KB
5K SLoC
libretro-rs
设计理念
本软件包的设计理念可以概括为希望暴露所有功能,即使这些功能不是惯用的。libretro 有很多功能,一开始就实现所有这些功能只会导致延迟。相反,所有 API 都对您开放。如果您遇到不支持的功能,您始终可以使用原始 API。
另一个设计注意点是尝试包含 C 实现可能需要的数据。例如,不能期望没有参数(例如 Default
)就能构造出模拟器。因此,RetroCore::init
函数传递了 RetroEnvironment
,以便可以查询和使用资产路径来构建模拟器。考虑到这一点,将注意隐藏不允许的 API 功能。
在满足上述要求之后,最后一个目标是使绑定逻辑和直观。如果您在 API 中任何地方感到不适,请一定告诉我们!
入门
在 example
文件夹中提供了一个参考实现,应该足以让您入门。从高层次来看,您需要修改您的 Cargo.toml
[dependencies]
libretro-rs = "0.1"
[lib]
crate-type = ["cdylib"]
然后实现一个特质并调用宏
use libretro_rs::*;
struct Emulator {
// ...
}
impl RetroCore for Emulator {
// ...
}
libretro_core!(Emulator);
就这样!运行 cargo build
将生成一个共享库(.so
,.dll
等),您可以使用 libretro 前端使用它
$ retroarch --verbose -L libemulator.so /path/to/game.rom