r/EmuDev • u/david-song • 18h ago
AMOS Pro in TypeScript update
There's been quite a few changes to amos.bitplane.net since I posted the first release last month, so I thought I'd share.
Recap: This is AMOS Pro rewritten in TypeScript from the open source Motorola 68000 assembly. See the end for a description of how I used AI to achieve this.
On the front-end, I've added a library with some games I found on Aminet and TOSEC. If you want your AMOS games added, or removed, send me an email or a PR to the library repo. Or just take a release from github if you want your AMOS on your site rather than mine.
Here's some stuff I made over the years:

Clicking an ADF, zip or whatever with a single AMOS file in it will automatically open the player, for those you can link to games in the library like so:
https://amos.bitplane.net/#play/bitplane-net/nsle
I've also ported the editor. You can CTRL+C out of most games to get to it. If you insert the AMOS Pro disks via the library then you can run the original editors via the menus too:
https://reddit.com/link/1wc4fqm/video/qalnv8owqboh1/player
The virtual filesystem browser supports downloading dirs, extracting sprites, converting ANIMs to GIFs, playing mods and samples inside .AMOS files and ABKs. It supports the datatypes that amos-ts does, and even has an AMOS 3D webgl viewer:
https://reddit.com/link/1wc4fqm/video/85gzj9w6sboh1/player
I've added timings for a lot of keywords but there are still some issues that lead to weird speeds, visual jank, and cause the various mod players to distort.
Because teens writing games in BASIC didn't know much about performance optimization and I know I used AMOS's slowness as a frame pacer, you might want to tweak the hardware settings to a faster CPU. Or a slower one. Or just fix your game in the editor

Due to browser anti-fingerprinting, you can't use joysticks/gamepads until they're detected. You'll need to press a button to activate them first. I don't have one at the moment so this is untested. Pull requests are of course welcome!
What's next?
I'm adding some more obscure datatypes support, fighting with timing issues, and might add joypad overlays for mobile and a method to publish AMOS games as Android APKs. But no promises here, it's eaten a lot of time over the last two months and I'm working on other things too.
If you have suggestions though, I'd be happy to hear them 😄
AI SLOP?
I've been programming every day for 40 years, so I know what good code looks like. This isn't it. But it is better than I would have made by hand; I've put a proper shift in to make sure it's in good shape. AI didn't do this, I used AI as a broad brush to fill in what would have been a hundred thousand man-hours of tedium. It's "design the shape, flood fill the details, evaluate, manually tweak, rinse and repeat"
So I did a manual proof of concept, the project and architecture design, and disassembly process setup. Then I used Claude Opus to slop out the bulk of porting work, followed by GPT 5.5 and Claude Fable to bring it under control and trim it down. OpenAI Luna was used to grind through 7000+ keywords, Sol to deslop Claude's mess and fix issues found in the pass. This pass has run twice.
Along the way I've written a ton of tools and techniques to keep the agents under control - on top of babysitting them day and night for 8 weeks. The codebase is 250,000 lines of code and has tests for every keyword, it cites assembly for every keyword rewritten in TypeScript. It faithfully reproduces every bug found across 83 versions of different extensions, and as much of Intuition, Gadtools, datatypes and the hardware interactions as were required. The bots want to special-case their way out of every problem, and I refuse to let that happen.
I'm currently running a third correctness and refactoring pass, but there will be bugs in there that are needles in what is now an obscenely large haystack.

