I like taking things apart to see how they actually work, then putting them back together a little better than I found them. some days that's shipping something small and clean. other days it's three hours deep in a bug that turns out to be one byte in the wrong order. both count, honestly.
half the code I write is for future me, who somehow always ends up more annoyed at past me than the other way around. so I try to leave things in a state I won't hate opening again later.
| 🧠 | rather understand why something works than just copy-paste a fix |
| 🚀 | small and shipped beats big and unfinished, every time |
| 📖 | I do read the docs first. mostly. |
| 🌱 | still learning plenty, not gonna pretend otherwise |
stuff I reach for
a from-scratch C++17 trainer & debug toolkit for XBDM — the protocol Xbox 360 consoles expose when running a softmodded dashboard. no third-party SDK, no bundled GUI: just the wire protocol implemented directly, with the workflow the RGH/JTAG community actually uses built on top of it.
| ⚡ | typed, endian-correct memory access — i8 through f64, handled explicitly for Xenon's big-endian PowerPC (the #1 source of silent bugs when a little-endian PC talks to it) |
| 🔗 | pointer chains — base,off1,off2 resolves live, so an address survives game restarts instead of rotting on reboot |
| 🔍 | progressive value scanning — narrow an unknown health/ammo address down by playing between scans, Cheat Engine style |
| ❄️ | a real freeze engine — background thread, named entries, saved as small JSON cheat tables you can hand to someone else |
| 🩹 | revertible code patches + a tiny PPC assembler — nop/blr/b/bl/li assembled in-tool, originals captured before writing so every patch reverts exactly |
| 📡 | LAN console discovery — sweeps a subnet for anything answering on the XBDM port, so you never go hunting for the IP |
| 🧩 | AOB pattern scanning with wildcards, over a range or every mapped region |
| 📜 | batch scripting + raw passthrough — a whole trainer setup in one command, and correct framing for any XBDM command |
toastylink> discover 192.168.1
1 console(s) found: 192.168.1.50 (201- connected)
toastylink> vscan new i32 0x82000000 0x200000 exact 100
414 candidate(s). Play/change the value, then run 'vscan next ...'.
toastylink> vscan next changed
6 candidate(s) remaining.
toastylink> vscan next decreased
1 candidate(s) remaining. → 0x82045a10 = 73
toastylink> freeze add health i32 0x82045a10 100
toastylink> freeze start
freeze engine started (interval 200ms)no game-specific offsets are baked in anywhere — offsets go stale the moment a title updates, so it ships the primitives instead of a pile of addresses that would rot on day one.
thanks for scrolling this far ♡ poke around, star something if you feel like it, or open an issue if you find something broken — you probably will, I move fast