Eben Upton's Elite and DOOM join jsbeeb's discs, and save states keep sideways RAM
18 minutes ago
jsbeeb 2.11 came out on October 24th. It adds four of Eben Upton's discs to the GitHub disc list, Solid Elite and a wireframe DOOM among them, and save states and rewind now keep what's in sideways RAM. There are also two fixes for interlaced screens, and the bitmap modes now draw through WebAssembly SIMD.
Ask about this presentation
Chapters
Show transcriptHide transcript
jsbeeb 2.11 came out on October 24th. It adds four of Eben Upton's discs to the GitHub disc list, Solid Elite and a wireframe DOOM among them, and save states and rewind now keep what's in sideways RAM. There are also two fixes for interlaced screens, and the bitmap modes now draw through WebAssembly SIMD.
This is Solid Elite, Eben Upton's port of Ian Bell and David Braben's Elite to the Master, built on Mark Moxon's documented source. Three more of his discs come with it: a BBC Micro version of 2048, a port of Braben's Lander demo from the Archimedes, and DOOM's first level, E1M1, drawn as a wireframe. All four are now in jsbeeb's GitHub disc list, ready to load.
Until this release, a snapshot held main memory and left sideways RAM out. So restoring a save state, or rewinding, put main memory back while the sideways banks kept whatever they held at that moment. Now every bank a model has as sideways RAM goes into the snapshot: banks zero to seven on a B, and four to seven on a Master. A stock B and the Atom have none to save.
Your existing save states keep working. A file from an earlier version carries 128 kilobytes of main RAM, and jsbeeb now reads just the first 64, the only part that was ever mapped. It has no sideways RAM, so restoring it leaves the banks with their current contents. A new file carries 64 kilobytes of RAM, the sideways banks, and a mask saying which banks they are. The format version stays the same.
Interlaced screens get two drawing fixes. When an interlaced mode gets stuck drawing just one field, jsbeeb doubles each line to avoid a ghost half frame. The character cell was doubled, but the cursor inverted only one of its two rows. Now the cursor doubles with its cell. And a teletext cell on the line just above an odd field now draws only the part that spills onto the top row.
The bitmap modes now take a new drawing path. As the beam passes each cell, jsbeeb records the byte and where it goes, then draws the whole batch when the framebuffer is needed, using a WebAssembly SIMD function it assembles at load. Where WebAssembly is switched off, as in Safari's Lockdown Mode, or blocked by a content security policy, a plain JavaScript version draws the same pixels, and the console says it fell back.
Upgrading to 2.11 needs no migration. There is one limit. A save state made before this release holds no sideways RAM, so restoring it can't bring those banks back. The full notes are on the release page. Eben Upton's Elite and DOOM join jsbeeb's discs, and save states keep sideways RAM.






