oldmanrukus.com /overview AVAILABLE FOR WORK

Billy McLaughlin

Software & Systems Engineer
Philadelphia, PA · remote or on-site · freelance & contract
AVAILABLE FOR WORK

I build software at the level most people never see, and I keep the infrastructure under it running. On one side that means shipped consumer products — streaming apps on iOS and Android, a live competition platform, a marketplace handling real payments. On the other it means rescuing classic video games from hardware that is dying, by rebuilding them to run natively on modern computers. Underneath both sits twenty years of systems and network engineering, starting in the U.S. Army.

Software engineering
Consumer apps across web, iOS, Android, TV and embedded devices. Low-level systems work in C, C# and Python. Performance engineering on hardware with no room to spare.
Systems & cloud
AWS and Azure, Windows and Linux estates, VMware and Hyper-V, enterprise storage and SAN, backup and disaster recovery.
Networking
Switching, routing and firewalls at enterprise scale. Site-to-site VPN and SD-WAN linking offices and data centers across the country.
How I work
I measure instead of guessing, document so the next person isn't stuck, and tell you plainly when something won't work. Every project below says honestly what does and doesn't function.
U.S. Army veteran · 2005–2013 2× Iraq AWS Certified 20+ years in IT Available now Freelance / contract Philadelphia, PA

I take games off dying hardware and make them run anywhere.

Old games are trapped. Discs rot, cartridges fail, and the machines that read them are thirty years old and getting rarer. I rebuild those games so they run as ordinary programs on a modern computer — not through an emulator, but as the real thing, translated and rebuilt piece by piece. Seven titles so far, across six different kinds of processor.

7
Games rebuilt
6
Processor types
9
Platforms targeted
6
Products shipped
20+
Years in IT
01 // game preservation

Rebuilding classic games so they survive.

When a game is written for a console, it's written in that console's own language, for chips that exist nowhere else. Once the hardware disappears, so does the game. Recompilation is a way to save it. You take the original program, translate it into something a modern computer understands, and then rebuild everything the game expected the console to do — the graphics chip, the sound chip, the disc drive — in software. The result isn't an emulator. It's the actual game, turned into a normal application. And because it's now ordinary software, it can finally do things it never could: widescreen, higher framerates, online play. Every project below is described honestly, including the parts that don't work yet.

01

Tekken Tag Tournament

1999 arcade machineWindows PC
PLAYABLE
Tekken Tag Tournament running as a native Windows program — a match between Eddy and Paul with full HUD
A real match running as an ordinary Windows program — smooth 60 frames per second
Tekken Tag Tournament title screen
Title screen
Tekken Tag Tournament character select
Character select
Tekken Tag Tournament versus screen
Versus screen

This one never ran on a home console — it ran on a custom arcade cabinet built by Namco. That machine had no operating system, no disc drive, and a whole separate computer inside it dedicated purely to sound. To make the game run on a PC, I had to rebuild that entire arcade board in software first, then translate the game itself. The hardest part isn't writing it; it's proving it's correct. So I ran a modified copy of MAME alongside my version and compared the two, step by step, until they matched exactly.

Originally
Namco arcade cabinet, 1999
Now runs on
Windows PC, as a single program — keyboard or game controller
Built with
RecompOne by BlackLabelHQ, for translating the game's code
Verified against
MAME, modified to report what the original hardware does at every step
// highlights
  • Five different crashes turned out to be one bug. They all traced back to a single table the game uses to decide what a fighter does next. Rather than assume I'd found the right table, I checked it against six cases that were already known to be correct before trusting it.
  • The performance readouts were lying to me. Three separate speed counters all cheerfully reported a healthy 60 frames per second while the game was really running at 12 — because each one was measuring something my own code controlled. Finding the one honest measurement revealed the real problem, which was also quietly starving the computer-controlled opponents.
  • The arcade board had a copy-protection chip designed to stop exactly this. Missing one small value from it made the fighters visibly explode on screen. I worked the correct value out mathematically rather than guessing at it.
  • The sound hardware was rebuilt from nothing — an entire second processor and a 32-voice sound chip, running over a billion instructions without hitting a single thing I hadn't implemented.
79%
Of the game translated automatically, no custom work
60 fps
Steady, on ordinary hardware
2,305
Individual routines translated
84 / 84
Data transfers matching the original exactly
Honest status Boots, takes a coin, and plays a real match with sound and full-speed graphics. It still crashes during extended play, and the character-select music loops incorrectly.
Credits Original game © Namco Ltd. · Translation by RecompOne (BlackLabelHQ) · Verified against the MAME project · Disc image is my own dump
02

Wu-Tang: Shaolin Style

PlayStationWindows PC
PLAYABLE
Wu-Tang Shaolin Style rebuilt — a match between RZA and Inspectah Deck
RZA vs Inspectah Deck, in widescreen
Wu-Tang Shaolin Style character select
Character select
Wu-Tang Shaolin Style title screen
Title screen
Wu-Tang Shaolin Style demo fight
Demo fight

The original PlayStation had very little memory, so this game constantly swaps pieces of itself in and out — and all thirteen playable characters occupy the same slot, loaded on demand. An earlier attempt at this port had to be abandoned entirely because it couldn't handle that swapping, which the game cannot run without.

Originally
Sony PlayStation, 1999
Now runs on
Windows PC — gamepad, original soundtrack, widescreen
Built with
RecompOne by BlackLabelHQ
Technique credit
Widescreen approach adapted from the DuckStation project
// highlights
  • The game froze whenever you performed a finishing move. The cause was a message from the disc drive that never got delivered — the game was waiting for a signal I hadn't wired up, checking roughly 40 million times a second, forever.
  • Every negative number in the game was wrong. A single flaw in the translation meant small negative values came out as huge positive ones. One search that was supposed to stop at a marker simply never stopped.
  • All thirteen characters were quietly loading each other's data, because they share one memory slot. The fix was teaching the loader to tell them apart.
  • The save system was rebuilt from scratch after the original path proved broken — I traced where the game keeps its progress in memory and saved that directly instead.
2,074
Routines recovered, up from 1,211
5,313 → 0
Display timeouts eliminated
45,000 → 0
Disc read retries eliminated
Honest status Practice and Versus matches play from start to finish with music, sound and widescreen; finishing moves and story mode work. The pause screen renders far too large, in-game videos don't play, and loading a saved game isn't finished — saving works.
Credits Original game © Activision · Translation by RecompOne (BlackLabelHQ) · Widescreen technique from DuckStation · Disc image is my own dump
03

Virtua Racing Deluxe

Sega 32XWindows PC + Sega Dreamcast
PLAYABLE
Virtua Racing Deluxe rebuilt, racing at Big Forest
Racing — no emulator involved
Virtua Racing Deluxe at speed on the bridge
At speed
Virtua Racing Deluxe course select
Course select
Virtua Racing Deluxe on the Dreamcast build
Also running on Dreamcast

The Sega 32X was an unusual machine: three processors running at once, passing messages between each other. All three had to be translated and kept in step. I wrote the translation tools for this one myself — about 1,600 lines that read the original cartridge and produce equivalent modern code. Nothing in the game was redrawn or re-authored; every piece of artwork and data is read from the original cartridge.

Originally
Sega 32X, 1994 — © SEGA
Now runs on
Windows PC and Sega Dreamcast
Built with
Translation tools I wrote from scratch, plus KallistiOS for the Dreamcast version
Verified against
PicoDrive, modified to report the original hardware's behaviour
Reference
Independent disassembly by matiaszanolli used to corroborate findings
// highlights
  • The game refused to boot because of a single line. One incorrect write to a memory-control register was corrupting the routine that unpacks the game's graphics and wiping 64 KB of working memory. One line changed, and the first real frame appeared.
  • What looked like a hang turned out to be impatience. Comparing against a reference emulator proved my version was behaving identically to real hardware — I had simply been giving up at frame 320, and the game doesn't start drawing until frame 428.
  • I rewrote the graphics system from the ground up so it could be shared unchanged between the PC and Dreamcast versions. A 26-frame side-by-side comparison came back pixel-for-pixel identical.
  • I built a 60 fps mode, measured it, and shipped it turned off. It worked — but side by side it looked worse than the original 20 fps, so it isn't the default.
99.7%
Of the original code translated successfully
3
Processors running in step
12×
Faster sound processing after optimisation
Honest status The PC version plays from the title screen through car and course selection into a full race, with sound and controller support. Deeper modes like championship progression are untested. The Dreamcast version starts up but has no sound yet and hasn't been measured on real hardware.
Credits Original game © SEGA 1994 · Reference disassembly by matiaszanolli (sega-vr-disasm) · Verified against PicoDrive · Dreamcast version built on KallistiOS · Tested in Flycast · Cartridge is my own dump
04

Tecmo Super Bowl 2026

Nintendo NESWindows + Dreamcast + Game Boy Advance
SHIPPING
Tecmo Super Bowl 2026 widescreen field, play in progress
Widescreen — considerably more of the field than the NES could ever show
Tecmo Super Bowl play call screen with first down line
Play call, with a broadcast-style first-down line
Tecmo Super Bowl 2026 title
Title
Helmet comparison, 1991 versus 2026
1991 and 2026 team sets
All 256 player faces
All 256 player faces

The most complete of these projects, and a genuine community effort. It starts from bruddog's painstaking reverse-engineering of the 1991 original and sblueman's 2026 roster mod, and rebuilds them to run natively on three modern platforms. Everything the NES used to do — graphics, sound, the cartridge's memory switching, battery saves — is rewritten from scratch. On top of that sit features the 1991 game never had: two-point conversions, a widescreen field, a TV-broadcast presentation layer, real weather drawn from thirty years of records, roster and team editors, and online play.

Originally
Tecmo Super Bowl, Nintendo NES, 1991 — © Tecmo
Now runs on
Windows PC, Sega Dreamcast, and Game Boy Advance
Built on
bruddog's disassembly of the 1991 game and sblueman's 2026 mod
Also using
KallistiOS (Dreamcast), devkitPro (Game Boy Advance), SDL2 (PC)
// highlights
  • Correctness was proven, not assumed. 200 million steps were run side by side against an independent reference with zero differences, plus an 8,200-frame scripted playthrough — kickoff to touchdown — reproducing identical frames every time.
  • The Game Boy Advance version went from 27 to 43 frames per second over four rounds of optimisation on hardware from 2001 with a fraction of a modern phone's power.
  • The NES's notorious flicker is gone. The original console could only draw eight players per row, so linemen visibly vanished. Players disappearing during a down went from 1,875 occurrences to zero.
  • It plays the Super Nintendo version's actual music — a second sound system was built inside an NES game to run the real sequence data.
  • The broadcast graphics were measured, not eyeballed: the first-down line lands within two pixels on 98.6% of checks, and 25,373 down-and-distance comparisons found zero disagreements.
  • The 1991 rosters were verified against an original cartridge — 8,232 individual fields, no differences.
200 M
Verification steps, zero differences
43 fps
Game Boy Advance, up from 27
60 fps
Dreamcast, with a third of the power to spare
8,232
Roster fields verified against cartridge
Honest status The Windows version is actively shipped and updated near-daily — it plays, saves, and supports online matches. The Game Boy Advance version runs at 43 fps rather than 60, and the Dreamcast version has only been tested in an emulator, not on a real console.
Credits Original game © Tecmo, 1991 · Built on the disassembly by bruddog (@BruddogTecmo) and the 2026 mod by sblueman (@SBluemanTecmo) · Two of the three in-game option hacks originate from the tecmobowl.org community · Testing and defect reports by Chris Allen (@RealChrisAllen1) · Built with KallistiOS, devkitPro and SDL2
05

NFL Blitz 2026

Nintendo 64Linux PC
RUNNING, NOT YET DRAWING

This starts from the NFL Blitz 2026 Signature Edition, a community mod of the Nintendo 64 original, and it was the hardest of these to even begin. Most projects like this have a map of the program — a list of where everything lives. This cartridge has none. There is just raw machine code with no labels at all, so the first job was writing a tool to work out where each routine starts and what it does. It now starts up, manages its own tasks and produces drawing instructions — but those instructions are currently counted and thrown away, so nothing appears on screen yet.

Originally
Nintendo 64 — © Midway Games, licensed by Nintendo
Based on
NFL Blitz 2026 Signature Edition, a community mod
Now runs on
Linux PC — running, but with no picture yet
Built with
N64Recomp and N64ModernRuntime, plus a symbol-recovery tool I wrote
Verified against
mupen64plus and PCSX-ReARMed, modified for logging
// highlights
  • The entire game froze, and one unnamed routine was responsible. Every task was waiting for a message. The culprit was a data transfer that never completed, with everything else queued behind it.
  • I found a bug in the underlying runtime itself where a list of tasks could point at itself — four million bogus entries before a guard fixed it.
  • 61 system routines identified purely by reading raw code, with no labels to work from — covering graphics, sound, controllers and task management.
  • Two fixes worth sending back upstream to the tools this is built on.
  • Confirmed the 30 fps cap is a design decision, not a limitation — doubling the underlying rate still produced exactly 30.
1,258
Routines translated
474
Names recovered from an unlabelled program
70 s
Continuous running without crashing
Honest status It starts up, runs its internal scheduling, loads its data, drives audio and produces drawing instructions at the correct rate for 70 seconds without crashing — but it is still headless. There is no picture yet, so there is nothing to screenshot.
Credits Original game © Midway Games Inc., licensed by Nintendo · NFL Players Inc. · NFL Blitz 2026 Signature Edition modded by ScallyCap, AverySemp, UltraMagnus and DJSteveO627, with special thanks to Zoinkity and Jaker3 — as credited in the ROM itself · Built with N64Recomp and N64ModernRuntime · Verified against mupen64plus
06

Mega Man Legends

PlayStationLinux PC
STARTS UP, STALLS BEFORE GAMEPLAY

The newest of these, and a clear illustration that "it runs" and "it plays" are two different milestones. It starts up, loads the real game over its own launcher, and reaches the main game loop running steadily at the correct speed without crashing — and then waits forever on a single job that nothing ever picks up.

Originally
Sony PlayStation — © Capcom
Now runs on
Linux PC — starts up, no gameplay yet
Built with
RecompOne by BlackLabelHQ
Verified against
PCSX-ReARMed, modified for detailed logging
// highlights
  • The port was deadlocking against itself. My version only advanced its internal clock when the game asked it to — and this particular game waits for the clock without ever asking. Fixed by driving the clock independently.
  • One function did nothing at all. The routine responsible for switching between tasks was an empty placeholder, so no task the game created had ever actually run — and this game runs its entire main loop inside one.
  • A tiny misalignment made every instruction wrong. The translator was reading the file's header as if it were program code. Every result looked plausible and every one was incorrect.
  • I built three custom debugging tools to find the remaining fault, and they proved the stalled component is never being reached at all — a precisely located problem rather than a vague one.
11,746
Routines translated
Exactly 60 Hz
Sustained over two minutes
9
Distinct bugs found and fixed
Honest status Starts up and reaches the real main game loop at the correct speed with no crash, but stalls before gameplay. Nothing is rendered yet.
Credits Original game © Capcom · Translation by RecompOne (BlackLabelHQ) · Verified against PCSX-ReARMed · Disc image is my own dump
02 // ports & homebrew

The rest of the workbench.

A seventh rebuild still in progress, an experiment in running arcade games on a Dreamcast, and one small fighting game rewritten and pushed onto seven different consoles.

07

Eternal Champions: Challenge from the Dark Side

Sega CDWindows + Linux
REACHES THE VERSUS SCREEN
Eternal Champions title screen and menu, rebuilt
Title and menu
Eternal Champions player select
Player select
Twelve frames from the Eternal Champions intro showing real animation
Twelve frames of the intro, proving real motion rather than a frozen picture

A Sega CD game is two processors working together — the Genesis underneath and the CD add-on on top — sharing memory and constantly negotiating over who gets to use it. The interesting result here is an engineering one: adding support for the second processor cost almost nothing, because the same translator serves both. That's the entire argument for building it this way.

Originally
Sega CD, 1995 — © SEGA
Now runs on
Windows and Linux, at around 58 frames per second
Built with
A translator I wrote for this processor family
Verified against
Genesis Plus GX
// highlights
  • Getting memory sharing right was the gate to the first picture. Before it, the screen was black; after it, the game was writing sixty thousand bytes of graphics data.
  • One mistake was hiding in every instruction of a certain type. A whole class of operations was updating memory addresses twice and writing to the wrong place. Fixing it in eight places took an internal failure count from 17 to zero and unblocked character select.
  • The intro looped forever because two different chunks of the game load into the same place and were being confused for each other.
Honest status Starts cold, plays the intro, and walks through title, menu, player select and versus with no errors on either processor. There is no sound at all, and it stops before the match itself — roughly four more pieces of the game away from an actual fight.
Credits Original game © SEGA · Verified against Genesis Plus GX · Disc image is my own dump
R&D

Arcade games on a stock Dreamcast

Sony ZN / Namco System 11Sega Dreamcast
RESEARCH — NOT PLAYABLE
Graphics memory dump showing decoded arcade stage textures and character art
Graphics memory — artwork decoding correctly
Second graphics memory dump showing a frame in progress
A frame in progress

The opposite problem from the projects above. Here the game's code isn't known in advance, so it has to be translated while the game is running, on a console from 1999 with a fraction of a modern PC's power. The inspiration is Bleemcast! — Randy Linden's remarkable 2000 proof that this is possible at all. This is the project I learned the most from and the one furthest from finished.

Goal
Run Sony ZN / Namco System 11 arcade games on unmodified Dreamcast hardware
Approach
Translate the game's code on the fly, and hand the graphics to the Dreamcast's own 3D hardware
Reference
MAME for hardware behaviour, Lightrec by Paul Cercueil as the study model for on-the-fly translation, ZiNc for shortcuts
Inspiration
Bleemcast! by Randy Linden, 2000
// highlights
  • Taken through seven rounds of optimisation and proven to produce byte-identical results to a slow-but-correct reference, on real Dreamcast hardware.
  • The main loop went from 32 instructions to 11 — a five-fold speedup — and the number of expensive round-trips dropped by a factor of 667.
  • Rendering revealed a genuine hardware quirk that documentation had wrong.
  • Reverse-engineered the arcade board's sound processor from documentation and reference code, and got the original sound driver running.
Honest status Everything runs in a test harness rather than as a finished program. Tekken boots its real code and the graphics path is confirmed working on Dreamcast — but it is not integrated for live play, it is far too slow for real time, and sound is incomplete. Nothing is playable. The pictures above are memory dumps, not a running game.
Credits Hardware behaviour referenced from the MAME project and ZiNc · On-the-fly translation modelled on Lightrec by Paul Cercueil · Concept proven first by Randy Linden's Bleemcast! · Hardware documentation from psx-spx · Original games © Namco / Capcom / Sony
P-01

FOOTSIES — one fighting game, seven consoles

PC originalGBA · Dreamcast · Neo Geo · PS1 · N64 · NES · SNES
GBA COMPLETE · OTHERS VARY
Verification sheet showing the FOOTSIES port with its collision-box debug view active
Verification sheet — the debug view that proved the game's timing matches the original exactly
FOOTSIES on Game Boy Advance — title, fight and pause menu
Game Boy Advance
FOOTSIES NES version
NES (in progress)
FOOTSIES running on Neo Geo
Neo Geo

FOOTSIES is hifight's free fighting game, made for practising spacing and timing. This isn't a translation like the projects above — it's a complete rewrite of the game's engine, with every timing value pulled directly out of the original so the feel is identical. Then taken to seven consoles, several of which predate the original by decades. Original game by hifight; ports by me.

Game Boy Advance
The finished one — runs on real hardware and flash cartridges
Dreamcast
Two versions, one with online play
Neo Geo
Boots to title and fight
PlayStation
Bootable discs, three revisions
Nintendo 64
Five cartridge builds
NES
In progress — matches play through to a knockout
SNES
Test build only — least complete
// beyond the original
  • A pixel-exact debug view reproducing the original's collision display — which is also how the timing was verified rather than assumed.
  • A best-of-five ladder, guard meter, one-hit-kill specials and a practice mode.
  • Original additions not in hifight's version: a projectile, a glide and a parry.
Honest scope The Game Boy Advance version is the finished one and the only fully documented port. The Dreamcast, PlayStation and Nintendo 64 versions exist and run, but how complete they are isn't independently verified. NES is in progress and SNES is a test build.
Credits Original game by hifight, released under GPL-3.0 — this port reuses the original's artwork and timing data under that licence · Game Boy Advance version built with devkitPro and libtonc · Dreamcast version on KallistiOS · PlayStation version with psn00bSDK · Neo Geo version using OpenBIOS
03 // products

Things I've shipped that people actually use.

The same instinct as the preservation work, pointed at problems that pay: build it end to end, own the infrastructure underneath, and ship it to whatever screen the audience is actually holding.

RukFlix media centre — recommended row with poster art and a title detail panel
The living-room interface, running against a personal library

Your own library, your own server, on every screen you own. RukFlix is a personal cloud media player — think of it as running your own streaming service for the films and shows you already have. A server at home holds everything and streams it securely, and you sign in from whatever screen is nearest. It ships as a native iOS and iPadOS app and on Android, then keeps going onto hardware that has no business playing modern video.

iOS / iPadOS
Native app, distributed through TestFlight
Android
Shared codebase, native playback
Roku
Channel for the TV, refined across ten builds
Sega Dreamcast
A 1999 console that boots, connects to the network, signs in and streams video
Raspberry Pi
A £15 computer as a controller-driven set-top box

Continue Watching and genre rows, live search, series and episode lists, playlists that auto-advance, and your position synced across devices so you can stop on your phone and finish on the TV. On iOS that includes subtitles, audio-track selection, picture-in-picture and AirPlay.

React NativeExpo TypeScriptVideo streaming KallistiOSBrightScript mpv
GB
Green Buddy homepage — Help around the home, without the runaround
greenbuddyai.com

A marketplace for on-demand home services, running as a Burks Foundation pilot across lawn care and handyman work. A customer posts a job, local providers quote for it, and accepting one automatically declines the rest. Payment runs through Stripe, with 85% of every job going to the provider.

I built the whole thing — the service behind it, the database, sign-in, payments, email, maps and the admin console — plus two native Android apps, one for customers and one for providers. The entire cloud setup is defined in code, so it can be rebuilt from scratch on demand.

ASP.NET CoreKotlin PostgreSQLStripe AWSInfrastructure as code
THE
GUNNA
SHOW

The Gunna Show

gunnashow.com ↗
The Gunna Show live battle page — stream player alongside synchronised chat replay
A live battle with synchronised chat — real audience, real broadcast archive

Philadelphia's song battle league, and the platform that runs it — on the web and as native iOS and Android apps. Not a brochure site but a working competition: live streamed battles, audience voting in real time, weight-class divisions with champions, an artist roster and judging panel, and leaderboards for both artists and the fans backing them.

Around the competition sits everything else a community needs — a social feed with clips and live rooms, a wallet with in-app currency and a membership tier, and promo packages sold directly through the site.

Live streamingReal-time voting iOS & AndroidMemberships Payments
BS

Bash Sports Online Bowling

on Steam

A multiplayer bowling game on Steam. The game itself is built in Unity — physics, pin behaviour, animation — and behind it sits the online side: matchmaking, player sessions, keeping the game in sync between competitors, and saving profiles and progress. Running a live multiplayer game is where the software work and the systems background end up in the same product.

UnitySteam MatchmakingGame servers
FL

Built alongside comedian Faizon Love — part streaming platform, part virtual comedy club. Video is processed into multiple quality levels and delivered worldwide, while the site itself recreates the room: the lineup, shared spaces, and an audience gathered around a performance rather than watching it alone.

Live streamingAdaptive quality Virtual venue
A

Arcade hardware

lead software engineer

Lead software engineer on a line of dedicated arcade machines for the home. Not emulator front-ends on a PC, but purpose-built consumer devices where the software has to boot quickly, feel instant in the hand, and keep working in living rooms that will never receive an update. The work covered the whole stack of a shipped device: the on-device system and interface, input handling where split-second response is the entire product, and the release process that turns it into something you can put in a box.

Embedded systemsFirmware Low-latency inputRelease engineering
04 // systems & network engineering

Twenty years of keeping things running.

Cloud and on-premises servers, enterprise storage, and the networks that tie them together — sized for anything from a two-rack office to a business spread across the country. Below are the kinds of problems I get brought in for, and what came out of them.

01 Finding petabytes of data nobody was using

A large organisation was buying ever more expensive high-speed storage while most of what sat on it hadn't been opened in years. I profiled multi-petabyte file estates spread across several different storage systems to work out what was genuinely still in use, then moved the cold data to far cheaper cloud storage.

The important part was that nothing changed for the people using it — the files appeared in exactly the same place, opened the same way, and nobody needed to be retrained. The result was less expensive storage to buy, backups that finished in a fraction of the time, and a smaller cloud bill.

Storage tieringMulti-petabyteCloud archiveZero user disruption

02 Communications that had to work in hostile conditions

Secure, mission-critical systems for defence work, carried from concept through to deployment. This meant designing communication networks with military-grade encryption and building them to keep running in remote and hostile environments where nobody is coming to fix them.

The infrastructure I deployed roughly halved data transmission times and improved reliability by around 30%, through redundancy and automatic failover — so that a failure somewhere in the chain doesn't become a failure of the whole thing.

Secure networksEncryptionHigh availabilityFailover design

03 Healthcare systems where privacy is the floor, not the goal

Architecture for high-traffic clinical applications, where patient privacy law is the starting requirement rather than the finish line. That meant designing for genuine scale across both AWS and Azure, and hardening throughout — multi-factor authentication, encrypted storage, and protection of data end to end.

Alongside the security work, redesigning how those systems were hosted took around 10% out of the client's running costs.

AWSAzureHIPAACost reduction

04 Moving a global operation to hybrid cloud

An organisation running investigations worldwide needed to move off ageing on-premises systems without stopping work. Migrating to a hybrid cloud setup — some things staying local, some moving out — cut operational costs by roughly 15%, and redesigning how data moved through the system improved performance by about 20%.

Hybrid cloudMigrationData pipelines

05 Connecting sites across the country

A business with offices in different states and a data center somewhere else again needs all of it to behave like one network. I build the encrypted tunnels that link offices, data centers and remote workers, and increasingly I use SD-WAN — currently in production for cross-country connectivity.

SD-WAN treats several separate internet connections as one intelligent link: it sends traffic down whichever path is healthiest at that moment, switches away instantly when one degrades, and applies the same rules everywhere. A branch in one state and a data center on the other side of the country behave as though they're in the same building.

SD-WANSite-to-site VPNMulti-circuit failover

06 The everyday work underneath all of it

Most of what I know came from managed service providers, where you're handed dozens of environments you didn't build — each to a different standard — and expected to be useful inside an hour. Reading somebody else's cabling, somebody else's network design, somebody else's firewall rules, and finding the actual fault rather than the one that's easiest to blame.

Day to day that covers Windows and Linux servers, VMware and Hyper-V virtualisation, enterprise storage from Dell EMC and Pure Storage, switching and routing on Cisco and Aruba, firewalls from SonicWall, Cisco and Fortinet, and cloud-managed networking with Ubiquiti and Meraki for smaller businesses that want enterprise behaviour without enterprise overhead.

It's also where I learned the part that isn't technical: telling an owner honestly what something will cost, what it will fix, and what it won't.

VMwareHyper-VDell EMCPure StorageCiscoFortinetMerakiUbiquiti

07 Where it started

I served in the U.S. Army from 2005 to 2013 as an Information Technology Specialist, including two tours in Iraq — installing and maintaining the networks, servers and communications equipment a unit depends on, in conditions nothing like a climate-controlled server room.

Eight years and two deployments is where the standard got set. In an office, an outage is an inconvenience; downrange, communications are how people stay safe. That's where I learned to fix what's in front of me with what I have, document so the next person isn't guessing, and stay level when everything is failing at once.

U.S. Army veteran2005–20132× IraqAWS Certified
05 // credits & thanks

None of this was built alone.

Preservation work stands on decades of effort by people who documented hardware nobody was paid to document, wrote tools they gave away, and reverse-engineered games purely because they loved them. Everything below made this work possible.

A particular thank you to the reverse-engineering and homebrew communities — the MAME project, the Dreamcast homebrew scene, tecmobowl.org, and everyone who has published hardware documentation over the past thirty years. Every game here is preserved from a disc or cartridge I own, and every original rights holder is credited below.

People & teams

  • bruddog (@BruddogTecmo)Disassembly of Tecmo Super Bowl 1991 — the foundation the entire TSB 2026 rebuild stands on
  • sblueman (@SBluemanTecmo)Author of the Tecmo Super Bowl 2026 mod this project starts from
  • ScallyCap · AverySemp · UltraMagnus · DJSteveO627The NFL Blitz 2026 Signature Edition resurrection team
  • Zoinkity and Jaker3Special thanks, as credited in the NFL Blitz 2026 ROM
  • hifightCreator of FOOTSIES, released open source under GPL-3.0
  • Paul Cercueil (pcercuei)Lightrec and bloom — the study model for on-the-fly code translation
  • Randy LindenBleemcast! (2000) — proved arcade-class emulation on Dreamcast was possible
  • matiaszanolliIndependent Virtua Racing 32X disassembly used to corroborate findings
  • Chris Allen (@RealChrisAllen1)Testing and defect reports on Tecmo Super Bowl 2026
  • tecmobowl.orgCommunity source of two of the three in-game option hacks

Translation tools

  • RecompOne — BlackLabelHQPlayStation code translation: Wu-Tang, Mega Man Legends, Tekken Tag
  • N64Recomp & N64ModernRuntimeNintendo 64 translation and runtime: NFL Blitz 2026
  • ps1-recompEarlier PlayStation runtime, superseded during the Wu-Tang work
  • Lightrec · GNU LightningOn-the-fly translation, studied for the Dreamcast research
  • rabbitizer · minizSupporting libraries in the Blitz build
  • psx-spxThe PlayStation hardware documentation project

Emulators used as reference

  • MAMEThe authority on arcade hardware — Tekken Tag and the Dreamcast research
  • PicoDriveSega 32X reference for Virtua Racing
  • PCSX-ReARMedPlayStation reference for Mega Man Legends and NFL Blitz
  • mupen64plusNintendo 64 reference for NFL Blitz
  • Genesis Plus GXSega CD reference for Eternal Champions
  • Flycast · redreamDreamcast testing throughout
  • DuckStationSource of the widescreen technique used in Wu-Tang
  • ZiNc · RT64Additional reference implementations

SDKs, toolchains & libraries

  • KallistiOS · dcload · mkdcdiscThe Dreamcast homebrew toolchain
  • devkitPro / devkitARM · libtoncGame Boy Advance development
  • psn00bSDK · OpenBIOSPlayStation and Neo Geo homebrew
  • SDL2 · OpenGL · Silk.NETGraphics, input and windowing
  • GCC · Clang / LLVM · mingw-w64Cross-compilers for every target here
  • pl_mpeg · ffmpeg · mpvVideo decoding and playback across RukFlix
  • .NET · React Native · Expo · UnityThe product side

Original rights holders

  • Namco Ltd.Tekken Tag Tournament
  • ActivisionWu-Tang: Shaolin Style
  • SEGAVirtua Racing Deluxe (© 1994) and Eternal Champions
  • TecmoTecmo Super Bowl (1991)
  • Midway Games Inc. · Nintendo · NFL Players Inc.NFL Blitz — the original Midway staff credits remain intact in the ROM
  • CapcomMega Man Legends
  • hifightFOOTSIES
✉ // work with me

Available for freelance and contract work.

Two kinds of engagement

I take work directly, as a senior pair of hands without a headcount. Small business or enterprise, one-off project or ongoing support, remote or on-site.

▸ Systems & network engineering
Server and virtualisation builds, cloud and on-premises migrations, storage work, network design and rebuilds, firewalls, VPN and SD-WAN connectivity — or an extra senior pair of hands when something is broken and needs to be right the first time.
▸ Software, porting & embedded
Getting legacy software onto modern hardware, console and embedded ports, cross-platform apps for web, mobile and TV, build and release engineering, and performance work where there's no room to spare.

Tell me what you're running and what's hurting, and I'll come back with a straight answer and a price — including when I'm not the right person for it. What you need and your timeline is usually enough to start.