No description
Find a file
2025-09-28 20:14:21 -04:00
debug preliminary savegame support 2025-09-28 01:36:11 -04:00
platform preliminary savegame support 2025-09-28 01:36:11 -04:00
shims preliminary savegame support 2025-09-28 01:36:11 -04:00
util optimize memory snapshots, use shared table refs by default 2025-09-28 20:14:21 -04:00
vendor preliminary savegame support 2025-09-28 01:36:11 -04:00
vm optimize memory snapshots, use shared table refs by default 2025-09-28 20:14:21 -04:00
.gitignore initial commit 2025-08-17 14:12:44 -04:00
.luacheckrc fix luacheck, enhance disassembly 2025-09-02 22:01:14 -04:00
bitops.lua cleanup snapshot / restore - not quite working right 2025-09-10 22:02:42 -04:00
conf.lua preliminary savegame support 2025-09-28 01:36:11 -04:00
fs.lua preliminary savegame support 2025-09-28 01:36:11 -04:00
gamevm.lua preliminary savegame support 2025-09-28 01:36:11 -04:00
main.lua got some more graphics showing up! 2025-09-14 20:29:37 -04:00
notes.txt rework shim system to be modular, put all setup into initial snapshot 2025-08-23 21:51:18 -04:00
README.md decompile if / else / then, preliminary overlay shimming support 2025-09-13 17:58:44 -04:00
run.lua decompile if / else / then, preliminary overlay shimming support 2025-09-13 17:58:44 -04:00

starflightvm

tl;dr, I got nerdsniped by JP LeBreton: https://mastodon.social/@jplebreton/115039937564048561

Starflight is an early open-world space exploration RPG that was originally developed for MS-DOS in Forth. The cumbersome savegame system JP mentions involves the game literally overwriting its own executable files as it runs, such that if you fail to properly save your game, it will corrupt itself. I've never actually played it, but I know a few folks who think it's important, and over the past few years I have developed some experience building my own Forth systems for DOS games.

So I thought to myself: how hard could it be to reverse-engineer someone else's Forth system? Sounds like a fun little side project!

I decided to build it entirely in Lua and Love2D, the idea being that all aspects of the game could trivially be exposed to user-written plugins for inspection or modification. The ideal goal is to build a system that can be used both as a tool to investigate the inner workings of the game, and to provide a better user experience for those who just want to play it.

Of course right now it crashes after the title screens, but, you know, that's the goal.

Resources

https://github.com/s-macke/starflight-reverse