A ZX spectrum 48K, 128K and Pentagon 128 emulator running on the Espressif ESP32 SoC
New features:
Changes:
How to Flash:
[!NOTE] The current .bin file can be flashed in any of the three supported boards (Lilygo TTGO VGA32, Antonio Villena's ESPectrum board and Olimex ESP32-SBC-FabGL).
Flashing tutorial (in Spanish, auto translation supported)
https://youtu.be/fxzaKa-J6gk?si=uP7kxuqSSeoLM7vR
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p USB SERIAL DEVICE -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.1.bin
(Don't forget to change USB SERIAL DEVICE on -p parameter to reflect the serial port where your system has detected your board)
New features:
Improved SD file system support:
New joystick system through ESPjoy DB9 to PS/2 converter (or DIY converter using ESPectrum joystick special scancodes):
[!IMPORTANT] To be able to use new joystick system with ESPjoy, you have to use new firmware at: https://github.com/dacarsoft/DB9_2_Keyboard/tree/DB9_2_Keyboard_ESPectrum
Support of flashing new firmware through SD card: just put firmware file on SD root dir and select update option.
New interface elements (progress bars and confirmation dialogs).
Overwrite confirmation dialog added to snapshot save and SAVE command.
New screen centering system for CRT 15Khz 50hz modes: use CRTL F5-F8 or CS+SS Z,X,C,V in ZX Keyboard.
New hardware information dialog (CTRL-F1 or CS+SS+I on ZX kbd).
Changes:
Z80 Core: Add accurate emulation of WZ according to the latest discoveries as described in https://spectrumcomputing.co.uk/forums/viewtopic.php?t=10555 Thanks to @redcode !
Optimized video and port management routines (emulator is about 5% average faster than previous release).
PS/2 joystick emulation improved: added Sinclair and Fuller type joystick emulation.
Improved OSD: quicker response and more precise calcs.
16:9 70hz (360x200) modeline adjusted to better comply with IBM 720x400 standard.
Bugfixes:
How to Flash:
[!NOTE] The current .bin file can be flashed in any of the three supported boards (Lilygo TTGO VGA32, Antonio Villena's ESPectrum board and Olimex ESP32-SBC-FabGL).
Flashing tutorial (in Spanish, auto translation supported)
https://youtu.be/fxzaKa-J6gk?si=uP7kxuqSSeoLM7vR
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p USB SERIAL DEVICE -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0rc3.bin
(Don't forget to change USB SERIAL DEVICE on -p parameter to reflect the serial port where your system has detected your board)
New features:
Changes:
Bugfixes:
Known issues:
How to Flash:
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p USB SERIAL DEVICE -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0rc3.bin
(Don't forget to change USB SERIAL DEVICE on -p parameter to reflect the serial port where your system has detected your board)
New features:
Fast TAP file load implemented and selectable through Options/Storage menu.
Ability to flash load or just insert tape from TAP file selector: use ENTER for flashload and SPACE for insert tape (ENTER and 0 in ZX keyboard).
New Tape Browser (F7) which allows to navigate the tape and (re)start loading from any point.
Tape status realtime OSD: if tape is loading OSD (F8) will change to reflect info about loading status.
SAVE command is now trapped: if you use the command, it will save a .tap file in the SD card with the name you put between quotes.
Emulation of "Early" and "Late" ULA timings. Now, with "Late timings" the "128k Spectrum Timing Test" works perfectly. (Thanks to @redcode AKA zJoyKiler for his help)
Spectrum 48K Issue 2 emulation is now selectable (Options/Other/48K Issue 2).
Detection of different supported boards in software. Now, there's only one binary for all supported boards: Lilygo TTGO VGA32, Antonio Villena's ESPectrum and ESP32-SBC FabGL from Olimex. (Thanks to David Carrion @dacarsoft for help with ESPectrum board)
Changes:
Video system and CPU cycle optimizations resulting in ~10.65% of emulation speed boost.
Changes to Z80 core to reflect block instructions behaviour as described in https://github.com/hoglet67/Z80Decoder/ ... nted-Flags (Thanks to José Luis Sánchez @jsanchezv for his help)
Added changes in HALT instruction emulation as described in https://github.com/jsanchezv/JSpeccy/co ... 0d1eb40cfd
Fixed screen bank switch timing. Now Patrik Rak's ptime.tap test works right. (We can also pass perfectly Weiv's ptime128.tap test, but it needs a more precise and slower drawing functions so we decided to leave faster drawing functions because it is a test not supported in most emulators and with no practical use. More info in https://softspectrum48.weebly.com/notes ... -challenge
The SPIFFS file system is no longer used. The SD card is the only storage option at this time and the settings are now stored in the NVS partition.
F7 key is no longer "Stop tape" and F6 key changes from "Play/Pause tape" to "Play/Stop tape".
F11 key is now a shortcut to "Hard reset" (CS + SS + Q in ZX keyboard).
BMP screen capture changes to CS + SS + S in ZX keyboard.
Reduced AY emulation RAM consumption in 6kb.
Improved Kempston joystick emulation for reading also port 0xDF. Joystick works now right in Nonamed and probably other games.
Known issues:
How to Flash:
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p USB SERIAL DEVICE -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0rc2.bin
(Don't forget to change USB SERIAL DEVICE on -p parameter to reflect the serial port where your system has detected your board)
Bugfixes:
How to Flash:
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p /dev/tty.usbserial-0001 -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0rc1.bin
(Don't forget to change -p parameter to reflect the serial port where your system has detected your board)
New features:
Support of real Spectrum 48k keyboard using Antonio Villena's new ESPectrum board. From now on, there will be two binaries: one for Lilygo VGA32 and similar boards and one for Villena's board.
Support for three video modes: VGA Standard (60 and 70hz), VGA 33-40k 50hz and CRT 15k 50hz modes. For VGA 50hz modes you only need a monitor that supports them. CRT 50hz mode is supported in ESPectrum board through Antonio Villena's VGA-Scart adapter (it also works in Lilygo board but a little hack, which we'll detail on ESPectrum website, is needed).
You can switch between modes using the following key combinations during emu boot sequence and check later current video mode on lower bar of Help screen:
- 1 + Q -> VGA Standard 4:3 (60hz)
- 1 + W -> VGA Standard 16:9 (70hz)
- 2 + Q -> VGA 40khz 50hz 4:3
- 2 + W -> VGA 33khz 50hz 16:9
- 3 + Q -> CRT 15khz 50hz 4:3
- 3 + W -> CRT 15khz 50hz 16:9
(On PS/2 keyboards you should alternate between the two keys. On ZX Spectrum keyboard you can keep both keys pressed)
Changes:
Known issues:
How to Flash:
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p /dev/tty.usbserial-0001 -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0rc1.bin
(Don't forget to change -p parameter to reflect the serial port where your system has detected your board)
New features:
Changes:
Bugfixes:
Known issues:
How to Flash:
Windows:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Linux / Mac / Windows:
Use esptool.py from Espressif to flash it into your board:
esptool.py -p /dev/tty.usbserial-0001 -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x0 ESPectrum1.0beta5.3.bin
(Don't forget to change -p parameter to reflect the serial port where your system has detected your board)
Changes:
Bugfixes:
Known issues:
How to Flash:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
Bugfixes:
How to Flash:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!
New features:
Changes:
Bugfixes:
How to Flash:
Use Flash download tools from Espressif to flash it into your board:
Open the ESP32 Flash Download Tool. Select "ESP32" as chipType. Select "Develop" as workMode.
Once started:
Select COM Port (whichever one your board has taken). Select Baud rate (460800 works fine for me).
Finally:
Load .bin file, set 0x0 as address, check it and press START. Wait until status panel shows "FINISH", power off and power on your board and ENJOY!