Log In  

Cart #zxspectrum-0 | 2023-10-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

How?

  • It's recommended to run it in Pico-8 with "-displays_x 2 -displays_y 2".
  • If you don't (say, if you run it in the BBS), you'd have to move the mouse around to see the whole window
  • In particular, move the mouse to the bottom-left corner to see the Spectrum prompt

  • You can use the keyboard to type stuff
  • The symbol key is Tab.
  • ZX Spectrum keyboard layout: http://slady.net/Sinclair-ZX-Spectrum-keyboard/layout/
  • ZX Spectrum user manual: https://worldofspectrum.org/ZXBasicManual/
  • Non-spectrum keys like punctuation/backspace automatically press the right shift/symbol combination

  • To load a tape:
  • First type 'j' for load.
  • Then type double-quotes (") twice. On the BBS or on non-standard keyboard layouts, you're better off pressing Tab+P to get double-quotes. (On BBS, '~' might also work - looks like an emscripten bug).
  • Now, press enter.
  • Only after that, drag a tape (in .tap or .tzx format) to Pico-8.
  • Reset Pico-8 if you want to drag another tape.

  • By default, the arrow keys move the cursor. You can instead have them use the Kempston joystick or the Sinclair joysticks in the pause menu.

What?

  • It's a ZX Spectrum emulator
  • It's quite slow. 2-5 times slower than the real thing.
  • I don't know if sound is broken or just too slow to be ok.
  • Tapes with copy protection won't work.

  • By default, tapes load super-quick if using the loading routines in the ROM. (Can be disabled in pause menu)
  • By default, the CPU is underclocked to maintain responsiveness (since pico-8 can't keep up). (Can be disabled in pause menu)

  • The included Spectrum ROM is copyrighted by Amstrad, who have allowed its use by emulators.

Wherefore?

  • The source code won't bite you if you read it. (But it won't lick you, either)

  • Some highlights from the source:
  • Using the pico-8 memory for the z80 registers, to get the "16 bit reg = two 8 bit regs" behaviour for free(-ish).
  • Using fillp + rectfill to draw each 4x4 block on the screen
  • Only drawing modified (or blinking) areas of the vram.
  • Pre-calculating the flag results of every single addition and add-with-carry (subtraction is easily derived from that)
P#135835 2023-10-13 11:49 ( Edited 2023-10-13 12:58)


[Please log in to post a comment]