Projects

  1. 2024
    1. ClownMDSDK
    2. clownnemesis
  2. 2023
    1. Sonic 1 & 2 & Knuckles
    2. Sonic the Hedgehog & Miles “Tails” Prower the Fox in Knuckles the Echidna in Sonic the Hedgehog 2
    3. p2bin
    4. ClownMapEd
    5. Virtual 68 Katy
  3. 2022
    1. Sonic Mania Wii U Port
    2. ClownAssembler
    3. Knuckles in Sonic 2 Disassembly
    4. clownresampler
  4. 2021
    1. ClownMDEmu
    2. Sonic CD Wii U Port
  5. 2020
    1. clowndoom
    2. clownmd5
    3. clownlibretro
    4. Sonic 3’s Sonic Sprites in Sonic 1
    5. Elemental Shields in Sonic 1
    6. sor2-comp
  6. 2019
    1. Cave Story Engine 2
    2. segs-tools
  7. 2018
    1. smps2asm2bin
    2. clownlzss
    3. Accurate Kosinski Compressor
    4. Sonic CD with the Original Jump Sound
    5. Sonic 2 Except the Music Goes as Fast as You Do
  8. 2017
    1. Sonic 2 C Port
    2. Sonic Fine2uned
    3. clownaudio
    4. Sega Classics SRAM Fix
    5. Cave Story Mod Loader
  9. 2016
    1. FW-KENSC Shell Extension
    2. RKA-decompressor
    3. Sonic 1 – No Jump Challenge
    4. Super Sonic & Hyper Sonic in Sonic 1
    5. Captain PlaneEd
  10. 2015
    1. Sonic Classics with Sonic 1 REV01
    2. If Tails Could Turn Super in Sonic 2
    3. KENS Frontend
    4. S1-friendly improved Sonic 2 sound driver
    5. Sonic 2 REV00 and REV02 Disassemblies
  11. 2014
    1. Sonic the Plague
    2. Sonic 1 with Sonic CD’s SMPS-PCM Sound Driver
    3. Sonic 1 Beta DAC Driver Recreation
    4. Project Sonic 1: Two-Eight – Git Continuation
    5. Sonic 2 Clone Driver v2
  12. 2009
    1. Resident Evil: TOFU’s Assignment

2024

ClownMDSDK

A toolchain for creating Sega Mega Drive homebrew in modern C++.

Notably, this was used to port my Sonic 2 C port back to the Mega Drive.

GitHubBlogSonic Retro

clownnemesis

A compressor and decompressor for the ‘Nemesis’ compression format, as described here.

Like my Accurate Kosinski Compressor, this is able to compress data identically to Sega’s original compressor, which is useful for producing disassemblies, as it allows assets to be stored uncompressed in order to ease viewing and editing without causing the built ROM to become inaccurate due to differences in compression.

GitHubBlogSonic RetroSSRG

2023

Sonic 1 & 2 & Knuckles

A combination of Sonic 1, Sonic 2, and Knuckles in Sonic 2, intended to serve as the base for a personal ‘definitive edition’ of Sonic 1 and Sonic 2.

DownloadRun in Web BrowserSonic RetroSSRG

Sonic the Hedgehog & Miles “Tails” Prower the Fox in Knuckles the Echidna in Sonic the Hedgehog 2

A showcase of what is possible with my Knuckles in Sonic 2 disassembly, restoring Sonic and Tails as playable characters.

This ROM-hack was an entrant in the 2023 Sonic Hacking Contest Expo.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRGMDDC

p2bin

A tool that converts a Macro Assembler AS code file to a flat binary file. Intended for Sonic disassemblies, it handles the compression of Z80 sound driver code and data.

This tool was created to unify six previous p2bin forks into a single configurable tool that covered all of their use-cases, eliminating fragmentation.

GitHubBlog

ClownMapEd

Developed with modern C++ and the Qt Framework, this is a free/libre and open source (FLOSS) recreation of the SonMapEd sprite editor.

ClownMapEd was made to address various limitations of the original SonMapEd, such as its lack of high-DPI support and its poor compression efficiency, while also enabling it to run natively on macOS and Linux.

Run in Web BrowserGitHubSonic RetroSSRG

Virtual 68 Katy

An emulator for the 68 Katy hand-built single-board computer. It is capable of running Linux, enabling it to in turn run such software as nano, vim, and Colossal Cave Adventure. A bare-metal BASIC environment can also be ran.

GitHubBlog

2022

Sonic Mania Wii U Port

An unofficial port of Sonic Mania to the Nintendo Wii U.

The original codebase contained a number of bugs that rendered it incompatible with the Wii U’s big-endian CPU architecture, requiring that I debug and fix these issues to make the port possible.

GitHub (Engine, Game) – BlogSSRG

ClownAssembler

My university honours project. ClownAssembler is a FLOSS recreation of S.N. Systems’ Motorola 68000 assembler – S.N. 68k (also known as “asm68k”).

The goal of ClownAssembler is to act as a drop-in replacement for S.N. 68k, using the same command line interface as well as the same macro syntax. ClownAssembler has successfully been used to build several codebases that were previously only able to be assembled with S.N. 68k, freeing them from their dependency on a buggy, closed-source, Windows-only assembler from the 1990s.

GitHubBlogSonic RetroSSRG

Knuckles in Sonic 2 Disassembly

A disassembly of Knuckles the Echidna in Sonic the Hedgehog 2. It was created to further the understanding of what differences KiS2 contains compared to the original Sonic the Hedgehog 2. A number of then-unknown bugfixes were discovered as a result of this disassembly.

GitHubBlogSonic RetroSSRG

clownresampler

A single-header library that implements an audio resampler. In particular, it implements a windowed-sinc filter using a Lanczos window. Notably, resampling is handled entirely with integer-only logic.

GitHub

2021

ClownMDEmu

An emulator for the Sega Mega Drive/Sega Genesis, with the first working tech demo created in just a week.

ClownMDEmu features a suite of debugging tools to assist in the development of homebrew and ROM-hacks.

Run In Web BrowserGitHubBlogSonic RetroSSRG

Sonic CD Wii U Port

An unofficial port of Sonic the Hedgehog CD (2011) to the Nintendo Wii U.

Much like the Sonic Mania port, the codebase of Sonic CD was rife with big-endian incompatibilities that I corrected in order to make this port.

GitHubBlog

2020

clowndoom

A purist “source port” of Doom (1993).

The focus of this project is to ‘repair’ the source code of Doom’s official Linux port, by restoring functionality that was lost during the transition from DOS to Linux (such as music), fixing bugs that crept into the engine when the source code was being cleaned-up for release (such as the broken intermission screen animations), and modernising the codebase while also making it more portable (such as not using the obsolete OSS audio system nor raw X11, and adding support for Windows).

This project also features optional enhancements to the engine, such as high-resolution and high-colour video output.

GitHubBlog

clownmd5

An MD5 hasher that is available in two implementations: ANSI C and Lua.

Both implementations are available as single-file libraries, made available under permissive licences.

GitHub

clownlibretro

A frontend for libretro cores, fulfilling the same role as RetroArch.

clownlibretro is built upon SDL2, allowing it to run on Windows, Linux, and presumably Mac.

Minimalist by design, it features a scanline filter, pixel-perfect image scaling, and a controller-centric interface.

GitHubBlog

Sonic 3’s Sonic Sprites in Sonic 1

A ROM-hack of Sonic the Hedgehog (1991) that replaces Sonic’s sprites with those of Sonic the Hedgehog 3.

This was made to teach people how to import sprites from one game to another.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRG

Elemental Shields in Sonic 1

A ROM-hack of Sonic 1 that adds the Elemental Shields from Sonic 3.

This is another hack that was made to teach others. It is much more complex, to show the process of porting code as well an upgrading the engine to account for its added complexity.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRG

sor2-comp

Two compressors and a decompressor for the Run-Length Encoding compression format used by Streets of Rage 2.

While one compressor leverages clownlzss to produce the smallest files possible, the other produces files that exactly match those found in the original Streets of Rage 2 ROM.

GitHub

2019

Cave Story Engine 2

A decompilation and enhancement of Cave Story (2004).

CSE2 had a focus on accuracy, producing the exact same machine code as what could be found in the original EXE file when compiled with the same compiler that the original developer used (Visual Studio .NET 2003).

A branch of CSE2 existed which enhanced the game with widescreen, support for HD sprites, and additional modding features.

CSE2 was used to create unofficial ports of Cave Story to Mac, Linux, Nintendo Wii, Nintendo Wii U, Nintendo 3DS, Nintendo Switch, and web browsers. CSE2 also serves as the base for several Cave Story mods.

Work on this project ended in late 2020 in response to a DMCA takedown notice.

Run In Web BrowserCSTSF

segs-tools

A compressor and decompressor for the “segs” compression format.

These tools were originally created for modding the PlayStation 3 version of Sonic Unleashed.

GitHub

2018

smps2asm2bin

A tool that assembles SMPS2ASM music files into binary data.

This tool effectively functions like a miniature assembler. Unlike clownassembler, however, this does not leverage Flex nor Bison, and instead parses manually.

The use-case for this tool is to build music data separately from the rest of a game, allowing it to be compressed and then included into the game as the ROM is produced. This tool can be considerably faster than invoking an entire assembler, so use of this tool can reduce build times.

GitHub

clownlzss

A library that provides a minimalist LZSS compression framework. Notably, the framework performs compression, not with a greedy algorithm, but with a graph-based algorithm that results in optimal compression. clownlzss was created as a lightweight C alternative to the C++ mdcomp library, though it has since been migrated to C++ while otherwise maintaining its lightweight design.

GitHubBlog

Accurate Kosinski Compressor

A compressor for the ‘Kosinski’ LZSS variant (later found to be LZEXE) which produces identical compressed data to the Kosinski compressor used by Sega in the 1980s and 1990s.

The output of Sega’s compressor was unique due to a combination of bugs and a peculiar optimisation. With inaccurate compressors, it was not possible for the developers of disassemblies to verify that the assembled ROM was accurate to the original without leaving compressed data in its original compressed form. This compressor is now used by Hivebrain’s disassembly of Sonic 1.

GitHubSonic Retro

Sonic CD with the Original Jump Sound

A ROM-hack of Sonic the Hedgehog CD (1993) that replaces two of its sound effects with their original versions from Sonic 1.

The reason for the sounds being changed was that the sound driver used by Sonic CD is incapable of playing them. To address this, I created a custom sound driver that is based on the one used by Sonic & Knuckles and inserted it into Sonic CD, allowing the original sound effects to be used.

This ROM-hack was an entrant in the 2023 Sonic Hacking Contest Expo.

GitHubSonic RetroSSRG

Sonic 2 Except the Music Goes as Fast as You Do

A ROM-hack of Sonic 2 that makes the music change speed as the player’s character does.

This was achieved through making the game’s sound driver time itself with one of the YM2612’s timers instead of the vertical interrupt. The YM2612’s timer could then be adjusted by the game to change the speed of the music.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRG

2017

Sonic 2 C Port

A partial port of Sonic 2 to PC, Nintendo 3DS, and Nintendo Wii.

This was achieved by manually translating the game’s code from Motorola 68000 assembly to C. Free from the limitations of the Sega Mega Drive, this port boasts widescreen and CD-quality music.

This project was the winner of the 11000101 Community Trophy in 2017’s annual Sonic Hacking Contest.

DownloadSonic RetroSSRG

Sonic Fine2uned

A ROM-hack of Sonic 2 that aims to incorporate as many bugfixes as possible without changing the core gameplay.

This ROM-hack was an entrant in the 2017 Sonic Hacking Contest Expo.

Download – Run in Web Browser (Pure, Impure, Ultra Impure) – Sonic RetroSSRG

clownaudio

An audio engine library intended for use in video games and similar multimedia software.

clownaudio can play multiple audio streams of various formats while altering each one’s volume, panning, and speed.

GitHubBlog

Sega Classics SRAM Fix

A shim DLL for SEGA Mega Drive & Genesis Classics that fixes a bug which prevents ROM-hacks on the Steam Workshop from being able to create save-data.

GitHub

Cave Story Mod Loader

A DLL for Cave Story (2004) that hijacks the EXE, allowing memory patches to be applied. These patches add quality-of-life improvements such as widescreen, vastly-improved controller support, custom title screen backgrounds, 60FPS, and more.

GitHubCSTSF

2016

FW-KENSC Shell Extension

A shell extension for Windows that allows users to conveniently compress and decompress files in various formats, leveraging the mdcomp/FW-KENSC compression library. Made in collaboration with MainMemory.

GitHubSonic RetroSSRG

RKA-decompressor

A decompressor for the compression format used in the game Rocket Knight Adventures.

This was made by reverse-engineering the game’s code and translating its decompressor from Motorola 68000 assembly to C.

GitHub

Sonic 1 – No Jump Challenge

A cheap mini-hack that was intended to satirise the then-current trend of making “challenge” ROM-hacks that merely disabled a vital feature of the game, such as rolling or collecting rings.

Creating this ROM-hack only required the removal of a single line of code.

DownloadRun in Web BrowserSonic Retro

Super Sonic & Hyper Sonic in Sonic 1

A ROM-hack of Sonic 1 that allows the player to play as Super Sonic and Hyper Sonic.

This ROM-hack was an entrant in the 2017 Sonic Hacking Contest Expo.

This is one of my most popular ROM-hacks, with MediaFire reporting over 100,000 downloads.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRG

Captain PlaneEd

A modernised fork of PlaneEd – an editor for Mega Drive plane maps. This fork features a port from SDL 1.2 to SDL 2, some bugfixes, and a menu bar when running on Windows.

The project was released as an April Fools’ joke as PlaneEd has a degree of infamy in the Sonic the Hedgehog ROM-hacking community due to its unintuitive interface and obsolescence. Ironically, Captain PlaneEd is now my go-to plane map editor due to my familiarity with it.

GitHubSonic RetroSSRG

2015

Sonic Classics with Sonic 1 REV01

A ROM-hack of Sonic Classics (A.K.A. Sonic Compilation) that replaces its outdated “REV00” version of Sonic 1 with the later “REV01” version.

This ROM-hack also fixes a small bug that is specific to Sonic Classics/Sonic Compilation: the animated colours in Scrap Brain Zone were broken because of the game’s location in the cartridge’s ROM.

DownloadRun in Web BrowserSonic RetroSSRG

If Tails Could Turn Super in Sonic 2

A ROM-hack of Sonic 2 that allows Tails to go super just like Sonic can.

The goal is to be an authentic recreation of if Sonic Team had added Super Tails to Sonic 2 back in 1992, so Super Tails deliberately lacks his extra abilities from Sonic 3, where Super Tails originally made his debut.

DownloadRun in Web BrowserSteam WorkshopSonic RetroSSRG

KENS Frontend

A command line frontend for the KENS compression library.

This is one of the first C programs that I ever created. Before this, my only programming experience was with Game Maker, a tiny bit of Java, and assembly (68000 and Z80).

GitHub

S1-friendly improved Sonic 2 sound driver

A heavily-modified version of Sonic 2‘s sound driver that is intended to be used in ROM-hacks of Sonic 1.

While Sonic 2‘s sound driver is derived from Sonic 1‘s sound driver, it removes various features that are required by Sonic 1, breaking compatibility with it. This modified driver restores those missing features.

This project was intended as a late April Fools’ joke, as it conceptually mirrors my earlier project – the Sonic 2 Clone Driver v2 – which makes Sonic 1‘s sound driver compatible with Sonic 2.

DownloadSonic RetroSSRG

Sonic 2 REV00 and REV02 Disassemblies

Disassemblies of the first and third revisions of Sonic 2.

As with the Knuckles in Sonic 2 disassembly, these were made in order to research their differences from the common second revision of Sonic 2 (REV01).

GitHub

2014

Sonic the Plague

A small ROM-hack of Sonic 1 that causes Sonic to bounce enemies away from him, using logic from Sonic 3‘s Elemental Shields.

DownloadRun in Web BrowserSSRG

Sonic 1 with Sonic CD’s SMPS-PCM Sound Driver

A proof-of-concept ROM-hack of Sonic 1 that uses Sonic CD‘s SMPS-PCM sound driver to play music using the Sega Mega CD (A.K.A. Sega CD) PCM sound chip instead of the Mega Drive’s YM2612 synthesiser. This showcases the potential for ‘advanced’ music to be made by avoiding the limitations of the YM2612.

DownloadRun in Web BrowserSSRG

Sonic 1 Beta DAC Driver Recreation

A ROM-hack of Sonic 1 that attempts to recreate the sound of the drums heard in footage of Sonic 1‘s prototypes.

It was long assumed that the prototypes’ drums sounded different because modifications were made to the game’s DAC driver, so those modifications were reverted in order to produce this hack, whose drums sound like those of the prototypes.

Note that this ROM-hack predates the public release of a Sonic 1 prototype in December 2020.

DownloadRun in Web BrowserSteam WorkshopSonic Retro

Project Sonic 1: Two-Eight – Git Continuation

A rebase of Project Sonic 1: Two-Eight to a modern disassembly of Sonic 1.

The original Project Sonic 1: Two-Eight modified the 2005 Hivebrain disassembly of Sonic 1 so that the game used 128×128 level chunks instead of 256×256. This brought Sonic 1 in line with its sequels, which also used 128×128 chunks, making it easier to port levels to and from or make custom levels with tools and methods that were designed for the later games.

Being based on an outdated disassembly, this project rebases Sonic 1 Two-Eight on the current GitHub-hosted disassembly. In addition, some bugs have been fixed.

GitHubSonic Retro

Sonic 2 Clone Driver v2

A heavily-modified version of Sonic 1‘s custom ‘SMPS 68k Type 1b’ sound driver. It is intended for use in ROM-hacks of Sonic 1 and Sonic 2, and is compatible with music and sound effects from Sonic 1, Sonic 2, Sonic 3, Sonic & Knuckles, Sonic 3D Blast, and Chaotix.

This driver was intended as a successor to the original Sonic 2 Clone Driver which was made in 2010 by other members of the ROM-hacking community, hence the name.

The reason for being based on Sonic 1‘s driver is that it runs on the Mega Drive’s Motorola 68000 CPU instead of its Zilog Z80 CPU, unlike the drivers of the other Sonic games. Running on the 68000 makes the driver considerably easier to use, and frees-up the Z80 to perform more-advanced DAC effects, particularly dual channel PCM mixing, allowing two PCM samples to play at once.

GitHubSonic RetroSSRG

2009

Resident Evil: TOFU’s Assignment

Where it all began! A Resident Evil fangame made in Game Maker 7.

Between the loss of MegaUpload, the deletion of the Resident Evil modding forum that I posted about this on, and the failure of several hard drives, almost every trace of this game is now gone; all that is left are these YouTube videos and a few assets that a friend had made.

Design a site like this with WordPress.com
Get started