About Me

Cat lover, Code Writer, Rom Hacker

I program in C, C++, Python, Java, and more, but what I am especially passionate about is reverse engineering classic games. I am fascinated by the problems and solutions faced by developers in the 80s and 90s and what we can learn from them. I am proficient at reading and writing Assembly and love to optimize down to the machine cycle, but I am also happy to work in higher level languages like C++ and python

More Info

I learned to program writing Assembly in notepad, and I am just as happy searching through byte code in a hex editor as I am writing C++ in an IDE. I am largely self taught, and always welcome the challenge of learning new tools, languages, and systems. As a rom hacker, I am used to learning whatever tools and systems I need to to get the job done. I simply have a passion for programming, and in particular the intersection of game design and hardware capability.

I also find the differences in writing high and low level code to be an interesting subject (for example, see this post), in particular with regard to porting games from older architectures to modern systems. This is something I work on as a Developer for ScummVM.

Skills
  • Disassembly and reverse engineering
  • Working with a large code base and Git
  • Adapting to new systems and tools
  • Reading and untangling convoluted low level code
Preferred Languages
  • C / C++
  • Python
  • Assembly (Most familiar with 6502/65816 architecture)

Open Source

I strongly believe in the benefits of open source technology, and building communities around creating and improving tools and code. As such, most of my projects are open source. As well, I contribute to ScummVM and I completed Google Summer of Code 2022.

Projects

Color Efficient

Platform: Windows, MacOS, Linux
Language: C++
Year: 2023 – Present
Link: https://github.com/Quote58/color-efficient

Color Efficient is an ongoing project that aims to provide a solution to the problem of colour deficient people having trouble creating their own palettes for anything from websites to signs and logos. It generates a palette of colours that look good together, including around user input. This means that a user can input a colour they know they want in the palette, and the program will generate a palette around that colour that works with it using colour theory to determine relationships between components.


Preview

Platform: Windows, MacOS, Linux
Language: C++
Year: 2023 – Present
Link: https://github.com/Quote58/Preview

Preview is a program for viewing and editing several types of files that traditionally do not have a simple way to open without multiple bespoke programs. Preview is able to view and edit text and code with syntax highlighting, palettes, graphics, images, executables, and even patch files. Each file type has it’s own editing environment, for example executables open as a hex editor, while graphics open with a graphics editor, and code opens with a Scintilla based code editor.


Project Base Randomizer

Platform: Windows, MacOS, Linux
Language: C++
Year: 2023 – Present
Link: https://github.com/Quote58/ProjectBaseRandomizer

This randomizer was built using a new algorithm I designed for placing items that works similar to forward fill but with a very different system for choosing items. This solves many problems with forward fill, without losing the speed that is useful about it. It also allows for lots of customization and options for logic, graphics, palettes, and gameplay settings.


The Hacker’s Notebook

Platform: Windows, MacOS, Linux
Language: C++
Year: 2022 – Present
Link: https://github.com/Quote58/Hackers-Notebook

The Hackers Notebook is a general reverse-engineering tool designed primarily to facilitate the exploration and documentation of a rom in a user intuitive and fun way. To achieve this, the program has the ability to create documentation entries and patches (which can be turned on/off at will), with the help of a rom viewer/editor.


The Immortal

Platform: ScummVM
Language: C++
Year: 2022 – Present
Link: https://github.com/scummvm/scummvm/tree/master/engines/immortal

The focus of this project was to port the game The Immortal for the Apple IIGS from it’s original 65c816 Assembly to modern C++ in the ScummVM framework. I worked on this for Google Summer of Code 2022, and have continued to work on it since. I kept a development blog along the way where I shared many of the problems and solutions that came up along the way: https://blogs.scummvm.org/quote58/


Super Metroid: Project Base

Platform: Super Nintendo
Language: Assembly
Year: 2020
Link: https://github.com/Quote58/ACID-engine

Project Base (and the ACID engine derived from it) is a large scale rom hack of Super Metroid, which rewrites many of the game’s subsystems to be expandable and feature rich. This includes a modular HUD which doesn’t sacrifice performance, a message box system that employs string substitution and dynamic functions, and an entirely new subscreen tool kit allowing for vast customization and extendability. It also changes many parts of the gameplay to create a more fast, fluid, and enjoyable experience for the player. Learn more at https://begrimed.com/pb/ and https://good-quotations.com/2022/08/11/project-base-0-8/


The Final Frontier

Platform: Pygame
Language: Python
Year: 2015
Link:
https://github.com/Quote58/The_final_frontier

The Final Frontier is a small game written in Python with the PyGame library that I made for an assignment in the span of a few days. I also drew the artwork for the game. You control the ship with your mouse cursor and fire the current weapon with left click. The astroids are of a random size and follow a few patterns at random positions. They drop items and lives when destroyed, which can change your weapon type if you pick them up. It is a pretty simple game, but is surprisingly fun.


Future Projects

  • 2D game randomizer
    • The idea is to essentially generalize randomization in video games. Creating a system that combines node and location list traversal into a single system that preprocesses a map into overlapping and intersecting location lists for extremely fast processing of dynamic maps
    • Takes as input an image of the entire game map in a standardized format, the rom, and a list of rom locations for each item, and returns the rom with randomized item locations
    • Can randomize any 2D game that can be reduced to a map, item locations, and requirements per map tile
  • Port of Demon Tower from Night in the Woods to Super Nintendo and/or PC
    • Demon Tower is the fantastic mini game inside of NitW, which aims to emulate classic PC dungeon crawler games
    • I believe it would be perfect for the Super Nintendo or the Sega Genesis, but since I am more familiar with SNES, that is what I plan to port it to, but also potentially SGL or another lightweight graphics toolkit
  • Metroid II remake in the Super Metroid engine on Super Nintendo
    • I believe that there has yet to be a remake of Metroid II that does the game justice. I have plans to remedy this in what I believe to be the best engine for a Metroid game to date, Super Metroid