benjamin wall

Hello! Welcome to my portfolio. I'm a programmer with interest in embedded systems, compilers, game development, and more.

You can see a couple of my projects below. You can sort the projects based on topic using the tags along the top of each one, or follow the links along the bottom to learn more.

Filter projects by tag:

c c++ collaborative compilers dsp embedded gamedev godot graphics rust wasm web
Arachno Drome godot gamedev collaborative

Arachno Drome is a game I made alongside a decent sized team for GMTK Jam 2025.

I was co-programmer on this project alongside Justin.

PonieScript rust compilers gamedev

PonieScript is a custom game scripting language I am working on. It is statically typed and AOT compiled, using C as a backend. The type system and semantics are currently something like Java crossed with Rust. It is garbage collected (using a concurrent garbage collector) and supports type-safe optionals (e.g. ClassName?) and value types (e.g. (int, int)).

The compiler, language server, and garbage collector are all written in Rust.

ben's beams rust wasm gamedev graphics

ben's beams is a short puzzle game made for the JamFest game jam at GMU.

I used it as a prototype for the Rust game development technologies I am working on. The game involves a WebGPU renderer that supports 3D meshes with PBR lighting (and IBL).

BeagleBone Black Vocoder c embedded dsp

This is a vocoder (with built-in synthesizer) I built for my class SWE 660 (Software Engineering for Real-time Embedded Systems). It runs in real time on a BeagleBone Black, performing DSP on top of embedded Linux (with PREEMPT_RT) while processing data using the on-board PRU (bare metal).

The DSP itself is implemented with fixed-point math in order to meet the realtime requirements.

The audio input is through the on-board ADC, while the output is through I2S. It also supports a 24-button keyboard for playing the synthesizer and some analog knobs for changing the synthesizer's voice.

ben's bales c wasm gamedev graphics

ben's bales is a short platformer game made for the Virginia Collegiate Game Jam.

The goal with this game was to implement 3D skinned armature animation in a C game engine, targetting WebGL 1. The idea was that WebGL 1 should make a good target for certain games as it is very widely available.

FaVOR ISA c c++ compilers embedded

FaVOR is a custom instruction set architecture I designed for my Advanced Computer Architecture term project.

I designed the ISA, its binary encoding, and its calling convention. I implemented it in GNU binutils, which included parsing assembly language, handling assembly fixups, and implementing custom relocations.

Later, as a personal project, I implemented part of the ISA as an LLVM backend.

There, Again godot gamedev

There, Again is a platformer game I made for Ludum Dare 48. It is a "kaizo" platforming game inspired by my time with Mario Maker, which I played a lot at the time.

It goes through a series of screens, where you play each screen twice with small modifications, but the second time through you have a double jump.

poni-cc rust compilers c

poni-cc is my custom C compiler, following Nora Sandler's "Writing a C Compiler" as well as my own whims.

The main goal of the project is to write a C compiler that is about as fast (or ideally faster) than tcc / TinyCC. To this end, it has a single-pass frontend (no AST), as well as an internal assembler (intermediate assembly is not necessary).

In the screenshot, you can see it compiling directly to a .o file without an intermediate files.

a rat's gallery of unloved levels godot gamedev

This is a short platformer game exploring a couple of niche and bizarre level designs, inspired by my time playing Mario Maker. It is meant to explore certain "flavors" of bad levels, including tedium, extreme precision, terribly unfair design, and so on.

glassbox rust dsp graphics

Glassbox is a little music player that supports one unique feature: Rendering the waveform and spectrogram of your music overlaid on top of your screen.

The overlay does not block mouse events, and it will hide itself if you mouse over it, allowing you to still see your entire screen if necessary.

It also supports Discord Rich Presence.

It does exactly what I want and I usually use it when listening to music.

Cardwork Cycle godot gamedev

Cardwork Cycle is a deck-building farming game created for Ludum Dare 52. It is pretty derivative of Slay the Spire mechanically (energy system + card rewards), but it ended up being decently enjoyed by the Ludum Dare crowd and by some other folks who I watched play it.

This game scored 25th overall and 9th for fun in the Jam (72hour team) category in Ludum Dare despite being a solo project.

Far. c gamedev

"Far." is a somewhat bizarre incremental game I made for Ludum Dare 51. It was largely a "for fun" project, specifically a kind of project I hadn't done for a while: Writing a game in a bespoke engine in C.

Far used a custom build system that included some C code generation, to support an engine architecture vaguely along the lines of Godot.

The engine was built on top of SDL2 and OpenGL, as was my style for a long time.

Ultimately Far was in a lot of ways a return to my roots in writing engine code for games, something that I'm doing more often and better today. But the technologies I am working on right now (specifically PonieScript) trace back in some ways to this game.

Impish Descent godot gamedev

Impish Descent is a roguelite game where you build a formation of imps, similar to a deck-builder. Each imp has certain combat or support abilities, and you navigate your formation throughout a few levels, defeating ghosts along the way.

I originally created this game for Ludum Dare 56. I later built an updated version to present at GAMEmason.

bens.games rust web

bens.games is this very website!

It is built using a custom static site generator written in Rust, and deployed through GitHub using GitHub Actions. The frontend is manually written HTML and CSS, using reasonably modern features to keep things straightforward.

Haley Heartbeat godot gamedev

Haley Heartbeat is a (sort of) "bullet hell" game, designed along the lines of a sort of puzzle game. In particular, each encounter with enemies can be "defused" by fighting them in a certain order.

The game is also a rhythm game: tapping the fire button in a heartbeat pattern gives you successively more powerful shots. The music is designed around this rhythm and so has a sort of jaunty vibe.