Thysbelon.Logo of a Hummingbird moth.

Programs

This is where I put any games or applications I've programmed. They are listed with the oldest at the top and the newest at the bottom.

Rhythm Heaven Web Port Demo

I think I'm the kind of person who feels more motivated to learn when I know the use of the thing I'm learning. That's why I decided to learn Javascript by attempting to port Rhythm Heaven Fever (specifically the "Hole in One" mini game) to the web.

All art and sound effects are pulled from Rhythm Heaven Fever.

There is a gameplay demo and a small Canvas Animation Demo. I planned to incorporate this animation system into the main demo, but I abandoned the project before that happened. Unlike the main demo, which uses a hand-made css spritesheet of the characters' poses, and has placeholder bad animation timing; the animation demo uses animation and sprite data from Rhythm Heaven Fever, extracted using Bread.

Convert-2-Vib-Format Script

A collection of batch and bash shell scripts that use VLC to convert every audio file in the current directory to a specific type, then generates cue (text) files for each song, then uses chdman to convert each audio and cue file pair to CHD, a disc compression format usually used for preserving old video games (or simply zips the audio cue pair). The goal of this is to make it easy to play modern songs in the classic game Vib-Ribbon. If you wish to read more, please see my blog post on playing songs in Vib-Ribbon.

WebP-2-Common Script

An ImageMagick batch/bash script that detects if a webp is animated or static and converts it to gif or png.

Rhythm Offset Test Fork

A slight modification of a program made by UncertainProd. I added sounds to their program using the Web Audio API.

Online Universal Pokemon Randomizer

Dabomstew's Universal Pokemon Randomizer ported to Javascript via CheerpJ.

GBA-Conv-Web

The simple command-line c program gbaconv, compiled to run on the web via Emscripten. I added support for 4gz files and SRAM type save files and made the front-end webpage. The SRAM support I added was merged into the original gbaconv.c.

NSF-Player-WASM

A program that consists of the library game-music-emu compiled with Emscripten, some c helper code I wrote compiled with Emscripten, and a JavaScript function that uses the functions defined in the c helper code and wraps it all up in a single 'nsfplay()' function for ease of use.

This program allows front-end web developers to easily play NES and Famicom chiptune music in the browser with NSFe files. These files only contain music playing code, which makes them much smaller than a 'streamed' music file like a WAV or MP3.

I have since made a successor named Web-GME-Player.

Cutpoint Group Frequency Distribution Table Diagram Generator

Manually counting data points to create a diagram for a statistics class assignment is monotonous and mindless work. I couldn't find an online generator for the assignments that asked for a frequency distribution table with cutpoint grouping, so I made my own.

Wave Extractor

Extract WAVE files from an archive (that is neither encrypted nor compressed). Useful for extracting music from a PC game's archive (which is a file that contains all the files used in the game). This webapp makes use of ReadableStreams to process archives of any size.

Web-GME-Player

A successor to NSF-Player-WASM. All of the file formats supported by game-music-emu have been enabled. Many improvements and bug fixes have been made, and new features have been added.