Commit Graph

156 Commits

Author SHA1 Message Date
lifning 74f8a948e5 less underrun 2021-12-18 00:31:33 -08:00
lifning 08e69a3062 again with timeout 2021-12-17 23:52:15 -08:00
lifning 085445b35d again with feeling 2021-12-17 23:41:07 -08:00
lifning 5ad81c3c5e we bringing back threaded audio components babey 2021-12-17 02:47:08 -08:00
lifning df21f69128 attempt to use OS's audio resampling first 2021-12-14 03:15:56 -08:00
lifning e308af9a2a better keyboard mappings 2021-12-14 03:15:41 -08:00
lifning 3a43b37de1 we don't actually use this any more 2021-12-14 03:15:23 -08:00
lifning 768dfb75bb simple core info querying 2021-12-14 03:15:00 -08:00
lifning b2c2c93537 experimental dynamic rate control feature in audio component (TBD: merge into SimpleSdl2Audio as an option) 2021-12-11 03:10:39 -08:00
lifning 72366248d7 fix dupe frames 2021-12-11 01:55:08 -08:00
lifning 709a23307a fix a couple minor sdl a/v bugs 2021-12-11 01:38:48 -08:00
lifning b8cc606bd5 bit more env var stuff 2021-12-11 01:38:34 -08:00
lifning 2259265107 first pass at env variable component 2021-12-10 18:57:25 -08:00
lifning 9de6008ef5 factor out frame-to-surface code in SDL, use it to convert pixel format before upscaling in frame-to-canvas 2021-12-10 18:57:00 -08:00
lifning 82217ff117 ffmpeg not mandatory 2021-12-10 15:53:02 -08:00
lifning 2dd8556fe2 fullscreen option, add keyboard component 2021-12-10 02:36:13 -08:00
lifning 8efff459c4 integer scaling 2021-12-10 00:53:07 -08:00
lifning e7f6c58d0a minor fixes 2021-12-10 00:08:01 -08:00
lifning 904b7c2a41 fix audio in gpSP (sample rate too high after fixed-point conversion) 2021-12-09 23:40:38 -08:00
lifning d74f625c62 add more stderr logging stuff 2021-12-09 23:40:19 -08:00
lif 56729dac15 WIP local save file component 2021-12-07 18:14:00 -08:00
lif ed3b78eaa1 resizable window 2021-12-07 18:10:25 -08:00
lifning f5b86f9f8e static-linked libretro core support 2021-11-11 16:09:14 -08:00
lifning 464e670be4 variable storage component 2021-11-11 02:10:31 -08:00
lifning 2071ee21fd add stateful input component for programmatic gamepad stuff 2021-11-10 00:31:19 -08:00
lifning e02a183670 missed a spot 2021-11-09 21:58:51 -08:00
lifning 82b9cba976 threads! 2021-11-09 21:36:55 -08:00
lifning aa33f331f0 actually load multiple separate instances of the core (OS will deduplicate by path) 2021-11-08 22:34:53 -08:00
lifning 53642557a0 refactor, first pass of supporting multiple simultaneous cores 2021-11-08 21:45:57 -08:00
lifning fd2eb03c07 round out a bit more of camera support 2021-11-04 22:54:27 -07:00
lifning bbee2b95dd Merge branch 'liffy/camera' into liffy/sdl2surf 2021-11-04 16:27:18 -07:00
lifning 674adecd55 minor refactor 2021-11-04 16:23:23 -07:00
lifning 56e070a30d add some QOL stuff to the SDL2 Simple video components 2021-11-04 15:27:13 -07:00
lifning e95e13df1e add checks for sequencing, fix audio sync in paraLLEl-n64 2021-11-04 11:23:02 -07:00
lifning 41e3352927 more fixes for invalid calls to get_system_av_info 2021-11-03 18:31:40 -07:00
lifning 344d88f26b fix incorrect early uses of get_system_av_info (pre-load_game it is not valid) 2021-11-03 18:11:14 -07:00
lifning a42aa936fe replace SimpleSdl2AudioComponent with the AudioCVT-based resampler 2021-11-03 17:16:38 -07:00
lifning f60b2c579c WIP: refactor ratecontrol audio component to use SDL AudioQueue, which might just be better for the Simple audio component too 2021-11-03 13:28:37 -07:00
lifning 5451aa735d WIP still awful but builds and runs 2021-11-03 02:12:38 -07:00
lifning c505428895 WIP messier shit figuring out audio format changing that the sdl2 crate generics currently make impossible 2021-11-02 23:43:48 -07:00
lifning a1e28e9838 WIP figuring out DRC audio component impl 2021-11-02 20:24:36 -07:00
lifning 11e014b9ed refactor stdlib components into submods 2021-11-02 17:49:49 -07:00
lifning c94400f1b6 more doc revisions 2021-11-02 00:32:53 -07:00
lifning 725a5d8f03 more struct docs 2021-11-01 21:14:25 -07:00
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
lifning 9d3e74b7cb make do_sleep pub & add a "stuff the buffer with silence" method useful when you wish to pause an interactive emulator 2021-10-19 00:07:34 -07:00
lifning 1b311837d4 that's not what that word means 2021-10-17 22:13:20 -07:00
lifning 2ff0444854 get rid of "component id" business 2021-10-17 22:08:49 -07:00
lifning f1a9f7dd23 add a non-mut version, component_ref 2021-10-17 21:56:53 -07:00
lifning 268f1b4ff8 add scary-looking-but-safe dynamic downcast for a component_mut accessor 2021-10-17 21:46:12 -07:00