chiptune galore

Over the years I’ve ported a number of existing 3rd party chiptune emulators to JavaScript/WebAudio. The original programs were typically written in C or C++ and designed as regular PC applications. Respective programs had to be migrated to JavaScript and more importantly the Web’s asynchronous execution model. Emscripten here does most of the heavy lifting and migration doesn’t take much time once you get the hang of it.

I am using my generic  WebAudio ScriptProcessorNode player to which respective emulator-backends can be added as plugins.

update: The below (original) list has kept growing and a list of the currently available emulators/players can be found here: https://www.wothke.ch/tinyrsid/index.php/webaudio-players

https://www.wothke.ch/webuade/

UADE was one of the more challenging migrations due to the Amiga emulator’s unpredictable on-demand file loading.

update: As compared to the original post I have meanwhile updated UADE’s implementation – adding to its “score” (i.e. its 68k assembly Amiga exec.library, dos.library and audio.device implementation – to support multi-tasking and dynamic library loading, etc) as well as adding support for additional compressed formats and built-in converters for more exotic formats (see https://www.wothke.ch/webuade++/).

https://www.wothke.ch/webXMP/

Quite popular for MOD file playback XMP is a very well behaved citizen and could be migrated easily.

https://www.wothke.ch/webAdPlug/

Again nothing tricky about the adlib player.

https://www.wothke.ch/spectreZX/

Spectrum fans had been asking for this one. Unfortunately the original emulator code makes invalid memory alignment assumptions which required a bit of cleanup to make it work in JavaScript.

https://www.wothke.ch/webASAP/

There isn’t much to be said in favour of 8-bit Ataris but the simple code made this migration a freebee.

https://www.wothke.ch/webVGM/

Arcade machine music 🙂

https://www.wothke.ch/webPSX/ 

Sony’s Playstation.

https://www.wothke.ch/webSNES/

Here the emulator was already in JavaScript and I just used it as an example for how to make it a plugin for my generic player.

One thought on “chiptune galore

Leave a Reply