Portfolio

This page lists all my non-ROMhacking programming work over the years.
This page mostly consists of all the tools and other such utility programs I have made for use in my ROMhacking work.

Disclosure:
I often use AI tools to write smaller single purpose tools and/or the basic scaffolding for them, and I then take that and clean it up and make it actually work.
Much of my work on these tools usually goes into figuring out the data formats and/or tying them all together if they are to be used as script components.

  • [PC] FastFX

    A Blender plugin for importing/exporting and editing shapes (models) for use in Star Fox 1 and 2.

    This tool was intended to act as my own replacement for Euclidium98's Model to FX, which I felt was very clunky and had room for improvement. I ended up with something that saves quite a bit of time in the modelling process, and it is now being actively used in Star Fox CD and Star Fox EX.
    It's still not completely independent, as for most uses it still depends on Argonaut Software's own SHAPED model editor/converter tool to prepare the exported data for use in game.

    I spent several weeks reverse engineering the various formats it now supports:

    • ASM BSP - text format used in Star Fox 1/2 to define shapes, FastFX can export to this format, though it does not support animation export or generating BSP trees for face sorting.
    • ASM GZS - similar to above, but face sorting is much worse and BSP trees are not used. Animation export for this format is not supported.
    • Fundoshi-Kun - Slightly modified version of the Videoscape 3DG1 (GEO) format.
    • Animated Fundoshi-Kun (3DAN/3DGI) - Similar to regular Fundoshi-Kun, but animated - works, but the user may need to reorder the BSP frame jump table after converting with SHAPED
    Work I did for this tool:
    • Reverse engineering - staring at data long enough until I figured most of it out
    • Programming - ChatGPT wrote the basic outline, I took that and modified it to make it actually work, I also made Euclidium's Super FX material work as Python code

  • [PC] Argonaut 65816/Super FX Language Support for VS Code

    A Visual Studio Code extension that adds 65816 and Super FX assembly (Argonaut Syntax) support, with additional support for the directives used in Argonaut Software's SASM and ArgSfx assembler family.
    It also adds tooltips for Super FX instructions that describe the instruction and provides detailed information on usage and flags affected/cycles, based on a BRIEF editor macro Argonaut originally used during the development of Star Fox 1/2.

    Work I did for this tool:

    • Programming - writing TMLanguage files for syntax highlighting
    • Documentation - filling in missing Super FX instruction information

  • [PC] bgconv/Star Fox Background Maker 9000

    A set of scripts that calls on a combination of other tools to convert 512x512 PNGs into Star Fox compatible CGX/SCR/COL data for use in game.

    Work I did for this tool:
    • Scripting - Writing the batch to tie everything together
  • [PC] bgoptimize/Star Fox Background Optimizer 9000

    A set of scripts that calls on a combination of other tools to convert a 512x512 PNG with its .PAL format palette into an optimized CGX tileset and SCR tilemap.
    Originally made for use with the original Star Fox graphics assets and otherwise handmade graphics assets to optimize them so they crunch (compress) to a smaller size to save space.

    Work I did for this tool:
    • Scripting - Writing the batch to tie everything together
  • [PC] mapdec/argonautmapdecoder

    A program that can read .MAP linker address files generated by the ArgAsm-Super FX (ArgSfx) assembler by Argonaut Software and output a file containing all of the symbols in a human-readable format.
    Originally written after migrating UltraStarFox/Star Fox EX from SASM to ArgSfx so we could take advantage of the more detailed symbol output for debugging.

    Work I did for this tool:
    • Reverse engineering - figuring out the symbol data format
  • [PC] extend/ROM Extender

    A program that extends a Super NES ROM image to a certain size in megabits, and fills the empty space with a specified padding byte.

    Work I did for this tool:
    • Programming
  • [PC] palconv

    A program that can convert SNES palette files between .PAL (raw CGRAM) and Nintendo's .COL and .SCL formats.

    Work I did for this tool:
    • Reverse engineering - figuring out the data format