IconProjects

A collection of personal projects I have built in my spare time over the years, including this website, an emulator, and various games, apps, frameworks, and boilerplates.

Personal projects

The projects below are personal side projects, built in my free time and separate from any professional or enterprise work.

Bakery Shop

Full-stack bakery shop web application.

Bulk Email Automation

Automated bulk email sender built in Unreal Engine.

casasRVA

House renting app built with React Native.

Desk AI Backend

Django backend for an AI-powered desk assistant.

Faster Rider

Ride-hailing Android application.

Football App

Football statistics web application built with Flask.

Gravestellene Backend

TypeScript backend API for the Gravestellene platform.

Gravestellene Frontend

Vite + TypeScript frontend for the Gravestellene platform.

Knowlee AI

AI assistant application built with TypeScript.

Roku Auth Demo

Roku channel authentication demo in BrightScript.

Snake Multi Game

Multiplayer web-based Snake game with a backend.

True Distance SaaS

TypeScript SaaS application with frontend and backend.

Virtual Appointments

Virtual appointments using the Twilio Video API.

White Label JS Obfuscation

White-label JavaScript code obfuscation tool.

WuaBox

Admin dashboard template built with React and Tailwind.

Keyboard Accordion

Play the accordion online!

TakeNote

Open source notes app

Chip8

Retro game emulator

Sokoban

Web-based Sokoban

New Moon

Your new favorite theme

Laconia

An MVC framework from scratch

Primitive

A front-end design toolkit

Snek

A terminal-based Snake

Chat App

Socket.io chat app

React Advanced Form

A schema-based form system

Software

All the software on my site is freeware. Select a category to download what you are looking for.

Games

3D Bomber screenshot

Bomberman played from a first-person perspective.

Bomberman screenshot

An absolutely tiny Windows version of the classic game for 2 to 4 players.

Cosmo Chicken screenshot

Guide your chicken safely to the landing pad, avoiding dogs, space mines, and rockets launched by homicidal worms.

Cosmo Dragon screenshot

Cosmo the dragon is rushing through space to rescue his kidnapped son.

Crillion screenshot

A remake of the C64 arcade puzzle game.

Elementary Torture screenshot

Use your control of the four elements to mess around with the poor little fellow stuck on the island.

Escape from DIMANSION screenshot

Try to escape the horror that is the Dimansion.

Intern's First Day screenshot

Just a normal day at the Lab Lab, the new intern is mistaken for Dr. D.N. Turn.

It's Flot screenshot

Help a flat-earther teen build a rocket to prove to his teacher that the Earth really is (or isn't) flat.

Jeffrey Jetsam screenshot

Short and funny point-and-click adventure inspired by the Screen Antics: Johnny Castaway screen saver.

Pacman screenshot

My version of the classic arcade game.

a Royal Midnight Snack screenshot

A princess wakes up in the middle of the night feeling peckish. Will she be able to get a bite to eat?

Spy Quest 1 - Mission: SPECTRUM screenshot

Infiltrate Spectrum Enterprises as Agent N in this Sierra AGI style adventure.

Spy Quest 2 - Operation: BOGROLL screenshot

Solve the toilet paper shortage as the world is suffering through the NOVID-20 pandemic.

Tank screenshot

A two-player shoot-em-up.

The Telescopium Incident screenshot

Help a cute little droid save his ship and escape the gravitational pull of a black hole.

Tetris screenshot

My version of the classic puzzle game.

Patches for old DOS games

I like to play around with old DOS games, especially through DOSBox, and sometimes that means fixing bugs in the games themselves.

Bill and Ted's Excellent Adventure screenshot

Fixes a crash at the barfight in 1878.

Congo Bongo screenshot

Infinite lives trainer, with versions for the PC booter and the raw disk image.

Delta V - CD version screenshot

Disables the part of the copy protection routine that misfires on NT-based systems.

Ghostbusters 2 screenshot

Fixes a freeze in the intro when digitised sound is enabled.

Omnicron Conspiracy screenshot

A wrapper program that fixes the DOSBox INT16 keystroke freeze at the intro screen.

PC Paint 3.1 screenshot

A patch that lets PC Paint run properly in DOSBox.

Tools

Sometimes there is no tool that fits my needs, so I create my own. These are the small utilities I have built and released.

Polls the battery status of your laptop and warns you when it reaches a critical level.

Shows how long your system has been running since the last reboot.

Generates or applies binary patch files, and can even produce self-executing versions.

A tiny note and reminder tool that sits in your taskbar.

Strips trailing spaces from text you copy to the clipboard.

Reroutes file open requests in DOS/DOSBox, for example to switch configuration files.

A 16-bit Windows utility to run an application and power down Windows when it quits.

Changes the default MIDI output device on Windows Vista and later, for use with an external synth.

PC Paint 3.1

After patching version 3.1 of PC Paint to run inside DOSBox, I was allowed to distribute the original program for free.

PC Paint 3.1 screenshot

The original bitmap editor, free to download.

DOS code

Yeah, I know. DOS programming is dead. I used to do a lot of that, though, and many people still do. It'd be a shame to let all my old content go to waste if there's still some people who may find it useful.

Graphics code

Source code demonstrating how to access graphics APIs, make special effects, handle graphics file formats, draw primitives and apply techniques often used in game programming.

APIs
APIs
Effects
Effects
Effects
Effects
Effects
File formats
File formats
File formats
File formats
Image drawing
Image drawing
Image drawing
Techniques
Techniques
Techniques
Techniques

Sound code

Source code for the Sound Blaster and other sound cards, from DSP commands and autodetection to DMA mixing, MIDI, FM music and .WAV playback.

List of DSP commands for the Sound Blaster

Many people have requested a list of the commands for the DSP chip on the Sound Blaster, so here it is.

Autodetecting the Sound Blaster settings

Source code to detect the base port, DMA channel and IRQ setting of the Sound Blaster family.

Note: This has been expanded to detect the 16bit DMA channel on SB16 and above.

Mixing sound samples through Sound Blaster DMA

Source code to mix wave files using the Sound Blaster's auto-init DMA facility. Four wave files are included.

Note: This won't work on the original Sound Blaster version 1.0 as it doesn't support auto-init DMA at all.

Playing Audio CDs through a CD-ROM player

Source code to play an audio CD using MSCDEX.

Playing MIDI music in the background

Source code to play MIDI music using either an FM sound card such as the AdLib and SoundBlaster cards or a General MIDI (GM) device, such as the Roland cards or the Gravis UltraSound using MegaEM.

Note: The routines have been updated to include a volume control.

Playing music through an FM sound card

Source code to play music using an FM sound card such as the AdLib and SoundBlaster cards.

Note: If you use MicroSoft C, please read the section "Delay routine" above.

Playing a sampled sound through Sound Blaster DMA

Source code that plays a wave file through the Sound Blaster. If you don't need to mix multiple samples, this is the simpler option.

Playing .WAV files through DMA

Pascal source code to load and play a .WAV sound file. This will play any standard 8/16 bit uncompressed .WAV files.

Note: This has been expanded to support other IRQ and DMA settings. A small error in the header definition prevented some waves from playing. Thanks to Ed Roberts for telling me.

Playing .WAV files through DMA

Source code to load and play a .WAV sound file. This will play standard 8 bit mono uncompressed .WAV files of any length and sample rate.

Recording .WAV files through DMA

Source code to record a .WAV sound file. This will record standard 11025Hz, mono, 8bit, uncompressed .WAV files.

Note: A small bug that caused problems when recording more than one wave file after another has been fixed. Thanks to Ed Roberts for telling me.

Miscellaneous code

Source code covering timers, interrupts, serial communication, XMS memory and other useful DOS programming subjects.

A drop-in Turbo Pascal CRT unit without the Pentium II 'Divide by zero' bug.

MilliDelay and MicroDelay routines for C and Pascal.

A unit that enables direct use of XMS (extended) memory in DOS.

Traps cursor key presses and releases for continuous player movement.

Shows how to read information from the mouse.

Sends and receives data through a serial (COM) port.

Intercepts and speeds up the system timer.

Pixel Art

I'm hoping to practice and improve my pixel art skills. To that end, I'm aiming to do at least one of the Pixel Dailies a week, assuming there is a theme that inspires me. I'm not a true artist by any stretch of the imagination, and quality may vary wildly. Consider these experiments and exercises.

Pixel Art

My pixel art experiments and exercises.