a project creating a relatively ergonomic SDK for making libretro frontends in Rust.
Go to file
lifning ebea5ffd22 video and audio callback API change:
fn video_refresh(&mut self, data: &[u8], width: c_uint, height: c_uint, pitch: c_uint);
    fn video_refresh_dupe(&mut self, width: c_uint, height: c_uint, pitch: c_uint);
    fn video_refresh_hw(&mut self, width: c_uint, height: c_uint);
    fn audio_sample(&mut self, left: i16, right: i16);
    fn audio_sample_batch(&mut self, stereo_pcm: &[i16]) -> usize;

have been replaced with

    fn video_refresh(&mut self, frame: &VideoFrame);
    fn audio_samples(&mut self, stereo_pcm: &[i16]) -> usize;

where VideoFrame is

    pub enum VideoFrame<'a> {
        XRGB1555 { data: &'a [u16], width: c_uint, height: c_uint, pitch_u16: usize },
        RGB565 { data: &'a [u16], width: c_uint, height: c_uint, pitch_u16: usize },
        XRGB8888 { data: &'a [u32], width: c_uint, height: c_uint, pitch_u32: usize },
        Duplicate { width: c_uint, height: c_uint, pitch_u8: usize, },
        HardwareRender { width: c_uint, height: c_uint, },
    }

use `pub fn VideoFrame::data_pitch_as_bytes(&self) -> Option<(&'a [u8], usize)>` for things that need to access the framebuffer data as a byte array rather than a pixel array.
2021-11-01 00:56:23 -07:00
ferretro_base video and audio callback API change: 2021-11-01 00:56:23 -07:00
ferretro_components video and audio callback API change: 2021-11-01 00:56:23 -07:00
.gitignore Split into two crates in one workspace: ferretro_core & ferretro_components 2021-08-18 14:32:55 -07:00
Cargo.toml ferretro_core -> ferretro_base 2021-08-18 14:47:57 -07:00
README.md readme 2021-10-11 15:17:12 -07:00

README.md

ferretro: FrontEnd in Rust for libRETRO

Development status:

  • Supports loading many libretro shared library cores, including some requiring GL.
  • Includes batteries for using SDL2, ffmpeg, and/or libGL to render the emulated system and read inputs.
  • Code documentation is sparse-to-nonexistent as we're still experimenting with some of the details of what the most flexible & usable public interface should be.