Frak!
In the dim and distant past that is the 1980s, I would spend many hours hunched over the keyboard of my BBC Micro. Most of the time I was working: either writing code or writing text. Occasionally, I would play games. Many people may laugh today at the limited capabilities of the humble BBC Micro: it was powered by a 2 MHz 8-bit CPU (the MOS 6502); the graphics were either the Mullard SAA5050 generating teletext or the Motorola 6845 generating bitmap graphics; the sound came out of a 1" speaker and was driven by a TI SN76489 sound generator. Beep boop. And all in 16K or 32K of RAM.
These constraints at the time felt more like a challenge. What could you do? How far could the envelope be pushed?
One of those games was Frak!, by Aardvark Software. It was silly and fun and I loved it. For those unfamiliar with the game, it is typical of the era: a low-resolution platform game with awful sound, simple but addictive play.
Somebody has made a JavaScript Port of Frak!. You read that correctly, you can play it in your browser, and it’s just like the original (except it doesn’t have the flickering screen1).
The normal way is to run the game in a BBC Micro emulator. There are a few: BeebEm and B-em being the usual ones that everybody seems to use.
The slightly interesting part is how, in this case, it has been pulled off, and a simplified but accurate-enough-to-gist flow goes something like this:
-
Take a game.
-
Disassemble it. LLMs are now at a stage where they are really good at this.
-
Annotate the assembler code (mainly to ensure any embedded data is data not a stream of garbage assembler).
-
Compile the annotated 6502 assembler code and make a bootable image.
-
Bundle the bootable image with a (BBC Micro emulator) runtime.
-
Run in browser. Play the game. Enjoy!
The fun part is that somebody built the tooling to do this: BBC 6502 Web Assembler. The somebody behind all this is tobybuk and they explain how they do it in this Reddit thread AcornSoft games source code. This is what happens when somebody loses the source to the games they wrote and wants to recover them.
Also available: Defender, Zalaga, RocketRaid and Snapper.
-
This was a common problem at the time when the CPU was not fast enough to keep up with the screen, and screen glitching and flickering was the result. Frak! pushed the hardware past its limits; there is a finite amount of things that you can update during flyback. ↩︎
Share this page https://www.omz13.com/words/frak