Projects
Smash Minecraft Skins
A mod for downloading and using your own Minecraft skin to use in-game. Just enter in your username! Includes a custom menu to select a skin, the ability to download a skin from a minecraft username, and on-the-fly file conversion and UI portrait rendering. All written in Rust and running on the Switch itself. This mod released within 24 hours of the release of Steve due to weeks of constant prep work, resulting in over 1.5 Million views on twitter alone.
RustConf 2020 Talk: Macros for a More Productive Rust
The macro system in Rust is still arguably in its infancy. While a lot of the implementation has already been done, plenty of projects don't properly take advantage of macros due to the limited resources on what macro programming should look like. This talk is aimed at introducing those interested in using macros in existing or future projects to macro idioms often needed in order to take projects to the next level.
skyline-rs
A Rust library for modding Nintendo Switch games using Skyline
cargo-skyline
A cargo subcommand for creating, building, and installing (over the network) Skyline plugins, enabling users to mod Switch games in high-level Rust.
rust-std-skyline
A fork of the Rust programming language adding full support for writing Rust code for the Nintendo Switch.
Samsung WB35F Research
Research into the Samsung WB35F Emulator with the end goal of developing an exploit for it. Includes firmware downloader/extractor, research notes, and a rudimentary emulator written in python with unicorn for dynamic analysis of the Zoran COACH firmware kernel.
binread
A Rust crate for helping parse structs from binary data using ✨macro magic✨
binwrite
A Rust crate for helping write structs as binary data using ✨macro magic✨
smash-arc
A Rust library for working with Smash Ultimate's archive format, supporting both its in-game memory representation and its on-disk representation, as well as even supporting parsing it over a network connection. This is one of the core components of many Smash Ultimate tools including, but not limited to: Arcropolis and ArcExplorer.
ArcExplorer
A cross-platform file browser and extractor for Smash Ultimate's data.arc file, even allowing asynchronous loading of the rougly 16 GB file over the network from your Switch in a manner that feels like it's stored locally.
arc-network
A Skyline plugin for providing access to Smash Ultimate's data.arc file over the network
arc-fuse
A FUSE filesystem for mounting Smash Ultimate's data.arc file
ROBChain
Very Stable Proof of Concept Exploit for the MotionScript Virtual Machine in Smash for Wii U allowing for the loading of arbitrary ROP payloads of any size in a consistent and convenient manner.
owo-colors
A zero-allocation no_std-compatible zero-cost way to add color to your Rust terminal, currently garnering roughly a half a million downloads
aarch64-decode
A pure-Rust AArch64 decoder generated from the ARM specification
gc-adapter
A Rust library for working with the Nintendo Gamecube Controller Adapter
gc-gcm
A Rust library and CLI for working with GCM/ISO files (raw bit-for-bit disk images) for the Nintendo GameCube
Smash Disc4d
A client for interfacing with a Wii U gecko server written in C# in order to add Discord Rich Presence to Smash 4, allowing you to show off what mode, stage, and characters you are playing with.
smush-discord
A client for the smush_info Skyline plugin to provide real-time Discord Rich Presence for Smash Ultimate
DefCon CTF 2020 Finals Participation
Played for the RPISEC team on the `pinboooll` challenge (among others), helping to score points
smash-sli
A Rust library for working with soundlabelinfo.sli files from Smash Ultimate.
smash-fnv
A library/CLI for working with sound_volume_fighter_num_table.fnv files in Smash Ultimate
smash-csb
A library/tool for working with Smash Ultimate's commonsoundtable.csb files
smash-svt
Rust library and CLI for working with Smash Ultimate's sound volume table
nutexb
A Rust library for working with Namco's NU engine textures
img2nutexb
A command line tool for converting to Namco/Smash Ultimate texture files
bntx
A Rust library for working with Nintendo textures
img2bntx
A command line tool for converting to Nintendo texture files
discord-forge
A Discord bot for converting Smash Ultimate's, Smash for Wii U's, and various Switch Games' filetypes.
mscdec
MotionScript to C decompiler written in python, with 100% accuracy on all files in Smash for Wii U.
msclang
C compiler for MotionScript written in python capable of recompiling mscdec output with (functionally) 100% accuracy.
pymsc
Assembler, Disassembler, Emulator and Library for working with MotionScript, the bytecode of movesets in Smash for Wii U.
some-error
A library for creating and using anonymous sum types as errors in Rust
cpp-inherit
A macro for inheriting Rust structures from C++ classes. Featured in my RustConf 2020 talk.
rust-dyn-call
Do not use. Do not use. Do not use. (Calls a function dynamically)
include-self
A bad crate for including the file being called.
nso-param-search
A tool for searching for param hashes in Smash Ultimate NSO binaries
stage-table-refs
Find references to Smash Ultimate's stage table in order to perform a relocated and expand patch
Nail Hex Editor
A vim-inspired hex editor for the terminal written in Rust.
Smash Forge
Smash 4 File Editor, with minor support for other games including Melee, Pokken and many other Bandai Namco and Nintendo games. Supports over 20 filetypes to varying degrees allowing the modding of models, animations, bones, materials, collisions and parameter files.
DK Konga Keyboard
Application-as-Driver written in C# for the Donkey Kong Bongo Gamecube Controller to allow for it to be used as a keyboard.
DK Bongo typing in action. pic.twitter.com/0wxlE4Abuw
— jam1garner (@jam1garner) March 13, 2018
bgm-property-generator
A tool for auto-regenerating a bgm_property.bin file on the fly by parsing Smash's archive format, Music format, and Music metadata formats, then generating the file as the base game's was.
libnus3audio
A Rust library for working with Namco NU Sound's audio archive files
nus3audio-rs
A Rust program for working with Namco NU Sound's audio archive files
replace_music
A Skyline plugin for replacing stream files (music, videos) with files of arbitrary size
battery-notification
A hard-to-ignore low battery notification daemon written in Rust
lzarc
A Rust library and CLI for working with Paper Mario Color Splash archives
sarc
A simple to use library and CLI for reading/writing SARC and SZS (yaz0 compressed SARCs) in Rust
nxo-parser
Rust parsers for Nintendo Switch executable formats
Chrome Bangs
Google Chrome Extension for adding DuckDuckGo Bangs to Google/Bing. https://chrome.google.com/webstore/detail/google-bangs/akdgagbbklfcfikcnjhkokgmghnmaikl?hl=en-US
Website
My website/blog utilizes a Rust backend, a Handlebars templating system and uses Markdown for the posts themselves. Styling/Templates are handmade and the site is entirely javascript-less.