Skip to content
Compare
Choose a tag to compare
@kilograham kilograham released this 29 May 19:09
· 1 commit to pico since this release

This is a release of the "pico" fork of unrealspeccyp, because people keep asking for it!

See this project's README.md for more information.

Features

  • Spectrum 48K and 128K emulator based on unrealspeccyp.
  • VGA output.
  • Beeper output pin for 48K spectrum (i.e. just wiggling the pin like the real Spectrum!).
  • AY sound output for 128K spectrum.
  • .TAP, .SNA, .Z80 support (embedded in binary).
  • This port was development during pre-silicon RP2040 development. Therefore, it had to run at 48Mhz, and indeed.
    both 48K and 128K emulators still run by default at a 48Mhz system clock.
  • Read/Write on RP2040 GPIO pins - because why not? (see bitbang app).

Some caveats

  • The sole reason for this project's existence was as a system test/bit of fun during early development of the RP2040, it is
    not intended to be the best, full-featured emulator. I have open sourced it as people keep asking!
  • 'Khan' is the codename I used to keep what I was doing secret :-)
  • No doubt these terse instructions will prove frustrating for some; feel free to submit PRs!
  • You cannot currently use beeper/tape noise and AY sound at the same time (as they use different mechanisms) -
    actually I think there is support for using one PWM channel for each, but IDK if it still works.
  • I did some recent cleanup in preparation for open-source:
    • Untangled the horrible mess of symlinks that had this building within another makefile project prior to the Pico
      SDK.
    • Added USB keyboard support (this seems fine - though I had to hunt for more RAM, so it is possible this may
      break something - you can run with or without).
    • Hopefully got a license on everything important.
    • Added some I2S support - this is only for AY sound as the beeper just wiggles a pin. Sadly my I2S decoder
      doesn't like 22050Hz, so I had to up it to 24000Hz. I don't necessarily recommend using this if you can use PWM
      (the default).