Remix.run Logo
Show HN: Sfotty Pie – A browser-based Atari 8-bit emulator in TypeScript(a8.aygun.me)
2 points by cyco130 8 hours ago | 2 comments

Hi HN! This is my little tribute to the machine that started it all for me. I first shared it publicly some five years ago when it was only able to run Atari BASIC. Today it's in a much more usable state where most games work with highly accurate video and audio, even on a phone.

Highlights:

* Almost every component is cycle-exact. The CPU passes the SingleStepTests/65x02 suite with a perfect score and the emulator scores 53/57 on Altirra's Acid800 suite. The biggest gap is serial I/O, which is currently emulated by trapping calls to the OS. Other than that, the emulation is pretty "literal", favoring code clarity over performance.

* It ships with open-source replacement ROMs from the Altirra and Atari++ projects, so it boots to a working machine without copyrighted Atari firmware. You can drop your own ROMs and disk images into the library. They stay entirely in your browser (IndexedDB), nothing is uploaded anywhere. It's a completely static site.

* It emulates the entire Atari 8-bit family (400/800, XL/XE, XEGS, but not 5200) with configurable RAM size. All the components (ANTIC, GTIA, POKEY, PIA) are emulated and cycle-exact. You can select between NTSC and PAL with customizable palettes for each. False colors (artifacting) are not emulated yet.

* Emulates the keyboard (BEWARE, it steals a lot of browser shortcuts), joysticks (via keyboard, gamepad, or an on-screen touch joystick for mobile), most types of cartridges, and non-copy-protected disk images (.atr, only disk 1 for now). It can also directly boot executables (.xex) by generating a boot disk on the fly.

* The UI is still rough and largely vibe-coded. It includes a command palette, custom shortcuts, and a "couch picker" to launch games from your library with a gamepad without leaving the couch.

It's MIT-licensed with all source available on GitHub.

Getting started: https://a8.aygun.me/a8/docs GitHub: https://github.com/cyco130/sfotty-pie

vunderba 5 hours ago | parent [-]

As someone working on something in an adjacent space, this is super cool.

Have you ever heard of MartyPC? I think you’d find it pretty interesting as well. It’s an IBM PC XT emulator that supports a bunch of essentially 8088-based systems, and it runs fully online.

They did a lot of benchmark testing with some really iconic demoscene productions, and the results are fascinating. Definitely give it a try if you haven’t already, the WebAssembly version is particularly impressive.

https://github.com/dbalsom/martypc

cyco130 5 hours ago | parent [-]

I've heard of it, of course! And of course they're years ahead of my little hobby project.

But there's an important difference: They run on the browser via WebAssembly, the project is in Rust. Sfotty Pie is pure TypeScript, so, hopefully, easier to hack for a greater number of people. Also harder to make performant but why do we have all this CPU power if not to emulate 1.79 MHz machines using high-level languages :)