koute / libretro-backend

Libretro API bindings for Rust
Other
46 stars 16 forks source link

Libretro API bindings for Rust

Documentation

This crate exposes idiomatic Rust API bindings to the excellent libretro API.

The target audience of this library are emulator authors who want to turn their emulator into a libretro core, which relieves them from the necessity of creating a full blown frontend for their emulator and allows them to concentrate on actual emulation.

In its current state there is still a lot of features missing, nevertheless it should be useful enough to create a basic emulator.

As always, contributions are welcome!

Getting started

Add this to your Cargo.toml:

[lib]
crate-type = ["cdylib"]

[dependencies]
libretro-backend = "0.2"

and this to your crate root:

#[macro_use]
extern crate libretro_backend;

then just implement the Core trait:

struct Emulator {
    // ...
}

impl libretro_backend::Core for Emulator {
    // ...
}

and use a macro:

libretro_core!( Emulator );

For a full example you can check out this file, which is part of my NES emulator Pinky.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.