All Projects → binaryfields → resid-rs

binaryfields / resid-rs

Licence: GPL-3.0 license
Port of reSID, a MOS6581 SID emulator engine, to Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to resid-rs

fakesid
SID-based chiptune tracker for android
Stars: ✭ 23 (-8%)
Mutual labels:  c64, sid
Pi1541-HAT
A HAT for the Raspberry Pi, that allows to emulate the Commodore C64 floppy disk drive 1541. Switches and IEC-Bus detachable.
Stars: ✭ 26 (+4%)
Mutual labels:  emulation, c64
verilog-sid-mos6581
MOS6581 SID chip emulator in SystemVerilog
Stars: ✭ 22 (-12%)
Mutual labels:  c64, sid
virtualc64web
vc64web - web based Commodore 64 Emulation with CSDb access for thousands of demos at your fingertip
Stars: ✭ 23 (-8%)
Mutual labels:  emulation, c64
SIDKick
SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself
Stars: ✭ 70 (+180%)
Mutual labels:  c64, sid
retro-computing
🤓🕹💾 This hobby project contains software implementations of old microprocessors and complete computer systems. I'm very interested in retrocomputing and this is how I learn about the inner workings of these old, classic and amazing computers and game consoles.
Stars: ✭ 15 (-40%)
Mutual labels:  emulation, c64
Openemu
🕹 Retro video game emulation for macOS
Stars: ✭ 13,369 (+53376%)
Mutual labels:  emulation
Punes
Nintendo Entertaiment System emulator and NSF/NSFe Music Player (Linux, FreeBSD, OpenBSD and Windows)
Stars: ✭ 217 (+768%)
Mutual labels:  emulation
Vaporboy
Gameboy / Gameboy Color Emulator PWA built with Preact. ⚛️ Powered by wasmBoy. 🎮Themed with VaporWave. 🌴🐬
Stars: ✭ 182 (+628%)
Mutual labels:  emulation
2009scape
Open source 2009 Runescape Remake
Stars: ✭ 170 (+580%)
Mutual labels:  emulation
Xlmmacrodeobfuscator
Extract and Deobfuscate XLM macros (a.k.a Excel 4.0 Macros)
Stars: ✭ 243 (+872%)
Mutual labels:  emulation
Vigem
Virtual Gamepad Emulation Framework
Stars: ✭ 225 (+800%)
Mutual labels:  emulation
Emupedia.github.io
The purpose of Emupedia is to serve as a nonprofit meta-resource, hub and community for those interested mainly in video game preservation which aims to digitally collect, archive and preserve games and software to make them available online accessible by a user-friendly UI that simulates several retro operating systems for educational purposes.
Stars: ✭ 206 (+724%)
Mutual labels:  emulation
Segs
💪 SEGS - Super Entity Game Server
Stars: ✭ 190 (+660%)
Mutual labels:  emulation
Emu Docs
Emulator documentation archive
Stars: ✭ 222 (+788%)
Mutual labels:  emulation
Snowflake
❄️ 🎮 Extensible Emulator Frontend written in C# and Javascript
Stars: ✭ 185 (+640%)
Mutual labels:  emulation
Yuzu
Nintendo Switch Emulator
Stars: ✭ 17,405 (+69520%)
Mutual labels:  emulation
Rust64
Commodore 64 emulator written in Rust
Stars: ✭ 176 (+604%)
Mutual labels:  emulation
Bsnes Plus
debug-oriented fork of bsnes
Stars: ✭ 209 (+736%)
Mutual labels:  emulation
Gamestarter
🎮 Retrogaming kodi add-on repository for LibreELEC
Stars: ✭ 222 (+788%)
Mutual labels:  emulation

resid-rs

Build Status Crates.io

Overview

Port of reSID, a MOS6581 SID emulator engine, to Rust.

Story

This project originated from zinc64, a Commodore 64 emulator, around Jan 2017. It evolved to the point where it can be useful to others working on C64 sound/emulation so it is packaged and shipped as a standalone crate.

Usage

Once SID register read/writes are wired up to resid, all that is left to do is to generate audio samples and push them to audio output buffer.

while delta > 0 {
    let (samples, next_delta) = self.resid.sample(delta, &mut buffer[..], 1);
    let mut output = self.sound_buffer.lock().unwrap();
    for i in 0..samples {
        output.write(buffer[i]);
    }
    delta = next_delta;
}

Components

Component Status
Envelope Done
ExternalFilter Done
Filter Done
Sampler Done
Spline Done
Wave Done
Sid Done

Changelog

  • 0.3 - compliance with the original resid
  • 0.4 - full sampler support
  • 0.5 - closed performance gap largely due to resampling
  • 0.6 - SIMD optimization
  • 0.7 - continuous integration and GPLv3
  • 0.8 - documentation and api refinements/internal cleanup
  • 0.9 - migration to Rust 2018
  • 1.0 - no_std support
  • 1.1 - more idiomatic implementation, removes interior mutability and improves support for async rust

Credits

  • Thanks to Dag Lem for his reSID implementation
  • Thanks to Daniel Collin for motivating me to put this out and helping out with code optimization
  • Commodore folks for building an iconic 8-bit machine
  • Rust developers for providing an incredible language to develop in
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].