Skip to content

Latest commit

 

History

History
49 lines (29 loc) · 1.84 KB

README.md

File metadata and controls

49 lines (29 loc) · 1.84 KB

opl3-rs

A small library to provide bindings for the Nuked-OPL3 library.

Crates.io version Changelog Documentation

Usage

Nuked-OPL3 is not a turn-key implementation of the OPL3 chip - functions such as the status register, timers and interrupts are left as implementation details.

You can access the Nuked-OPL3 API via the Opl3Chip struct, if needed, but with the caveat that directly writing registers to Nuked-OPL3 will prevent you from reading the OPL registers correctly.

If you intend to utilize opl3-rs in an emulator, you will probably want to use the Opl3Device wrapper which provides a full, device-oriented OPL3 implementation including the status, address and data registers, plus the OPL3 timers.

Docs

Documentation can be found on docs.rs

Examples

An example of music playback is provided in the play_tune directory under /examples. This example uses the rodio library for audio playback and crossbeam channels for inter-thread communication.

opl3-rs was primarily built for use with the MartyPC PC emulator. It is used to implement an AdLib Music Card device.

2024-07-06.09-49-12.mp4

Credits

Nuked-OPL3 is (C) 2013-2020 Nuke.YKT and licensed under LGPL 2.1

play_tune example based off code by Maarten Janssen and Peter De Wachter.