Skip to content

Instantly share code, notes, and snippets.

@leereilly
Last active April 18, 2022 22:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leereilly/7b35b2eaf2fe7e649401befe2b89342d to your computer and use it in GitHub Desktop.
Save leereilly/7b35b2eaf2fe7e649401befe2b89342d to your computer and use it in GitHub Desktop.
Speccy Projects

Y2Mate is - ZX Spectrum Gameplay  Cosmito en Imperio Cobra - AsteroideZX - Spectrum 48k  128K-uVgl9FpGABQ-1080p-1650228326879 2022-04-17 14_00_45

Well color me old! The ZX Spectrum was released 40 years ago today!

The Spectrum lives on in open source, public domain, and the hearts and minds of....

Here's my take on the top ten ZX Spectrum projects on GitHub today. You won't believe number 9!

Editors note: we've warned Lee before about these clickbaity comments, but it's that, or a terrible pun.

A ZX Spectrum emulator written in Rust

@Pacmancoder's aptly-named Rustzx is a cross-platform ZX Spectrum emulator written in Rust supporting tap (tape), sna (snapshot), scr (screenshot), and rom files. Yes, that's right - you can play your Spectrum games on macOS, Linux, and Windows... or even type out some old programs from your archives.

The Internet Archive has a healthy supply of ZX Spectrum games, and magazines like Sinclair User and Crash.

1. Play ZX Spectrum games in your browser

JSSpeccy 3 is a rewrite JSSpeccy 2 to make use of newer web technologies and APIs. The emulation runs in a Web Worker, freeing up the UI thread to handle screen and audio updates, with the emulator core running in WebAssembly, compiled from AssemblyScript (with a custom preprocessor) 🤯

2. A Spectrum emulator written in Rust

https://github.com/mrcook/jetpac-disassembly

3. Fluidcore

2022-04-16 19-52-08 2022-04-16 19_52_24

[ Embed YT video: https://www.youtube.com/watch?v=1eW39C1hQgU ]

Fluidcore is a 4 channel PCM wavetable player for the ZX Spectrum beeper, using looped 256 byte waveforms. It offers a total of 17 volume levels, and can handle up to ~860% overdrive when the maximum volume level is exceeded.

4. Old-school cool tools for disassembling Spectrum games

SkoolKit is a collection of utilities that can be used to disassemble a Spectrum game (or indeed any piece of Spectrum software written in machine code) into a format known as a skool file. Then, from this skool file, you can use SkoolKit to create a browsable disassembly in HTML format, or a re-assemblable disassembly in assembly language. So the skool file is - from start to finish as you develop it by organising and annotating the code - the common 'source' for both the reader-friendly HTML version of the disassembly, and the developer- and assembler-friendly version of the disassembly.

What is disassembling? This is the process of taking an executable and breaking it down into a representation in some form of assembler language so that it is readable by a human.

SkoolKit

Example: https://dpt.github.io/The-Great-Escape/

5. The Great Escape rewritten in C

https://github.com/dpt/The-Great-Escape-in-C

6. Tools 🔧

https://github.com/shred/tzxtools

7. Testing

A framework for test-driving assembly code for the Sinclair ZX Spectrum 48k.

include src/zx-spec.asm

spec_init
    
    describe 'ld a,n'
        it 'sets A register to value'
            ld a,5
            assert_a_equal 5

spec_end

8. Tape

Younger readers will have no idea what this device is.

https://github.com/raydac/zxtap-to-wav

9. Image

https://github.com/jarikomppa/img2spec

10. Crosslib

https://github.com/Fabrizio-Caruso/CROSS-LIB

11. Text adventures

image

https://github.com/stefanbylund/zxnext_level9/tree/master/compilation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment