You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+35-29Lines changed: 35 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
3
3
This is an emulator of the Sinclair ZX Spectrum computer running on Espressif ESP32 SoC powered boards.
4
4
5
-
Currently, it can be used with Lilygo's TTGo VGA32 board, Antonio Villena's ESPectrum board and ESP32-SBC-FabGL board from Olimex.
5
+
Currently, it can be used with many different boards being Lilygo's TTGo VGA32 board one of the best starting choices for his wonderful cost-features ratio. There are also some more boards out there that can run ESPectrum out-of-the-box like the ESP32-SBC-FabGL board from Olimex.
6
6
7
7
Just connect a VGA monitor or CRT TV (with special VGA-RGB cable needed), a PS/2 keyboard, prepare a SD Card as needed and power via microUSB.
8
8
9
9
This project is based on David Crespo excellent work on [ZX-ESPectrum-Wiimote](https://github.com/dcrespo3d/ZX-ESPectrum-Wiimote) which is a fork of the [ZX-ESPectrum](https://github.com/rampa069/ZX-ESPectrum) project by Rampa and Queru which was inspired by Pete's Todd [PaseVGA](https://github.com/retrogubbins/paseVGA) project.
10
10
11
11
## Features
12
12
13
-
- ZX Spectrum 48K, 128K and Pentagon 128K 100% cycle accurate emulation (no PSRAM needed).
13
+
- ZX Spectrum 48K, 128K, +2A and Pentagon 128K 100% cycle accurate emulation (no PSRAM needed).
14
14
- Microdigital TK90X and TK95 models (w/Microdigital ULA at 50 and 60hz) emulation.
15
15
- State of the art Z80 emulation (Authored by [José Luis Sánchez](https://github.com/jsanchezv/z80cpp))
16
16
- Selectable Sinclair 48K, Sinclair 128K and Amstrad +2 english and spanish ROMs.
@@ -30,26 +30,25 @@ This project is based on David Crespo excellent work on [ZX-ESPectrum-Wiimote](h
30
30
- Beeper & Mic emulation (Cobra’s Arc).
31
31
- Dual PS/2 keyboard support: you can connect two devices using PS/2 protocol at the same time.
32
32
- PS/2 Joystick emulation (Cursor, Sinclair, Kempston and Fuller).
33
-
- Two real joysticks support (Up to 8 button joysticks) using [ESPjoy adapter](https://antoniovillena.es/store/product/espjoy-for-espectrum/) or DIY DB9 to PS/2 converter.
33
+
- Two real joysticks support (Up to 8 button joysticks) using DB9 to PS/2 converter.
34
+
- Kempston mouse emulation through PS/2 mouse.
34
35
- Emulation of Betadisk interface with reset to tr-dos option, four drives and TRD (read and write) and SCL (read only) support.
35
36
- Realtime (with OSD) TZX and TAP file loading.
36
37
- Flashload of TAP files.
37
38
- Rodolfo Guerra's ROMs fast load routines support with on the fly standard speed blocks translation.
38
39
- Virtual tape system with support for SAVE command and block renaming, deleting and moving.
39
40
- SNA, Z80 and SP snapshot loading.
40
-
- Snapshot saving and loading.
41
-
- Complete file navigation system with autoindexing, folder support and search functions.
41
+
- Real audio loading support through different GPIOs or specific board connectors.
42
+
- Complete own snapshot system for saving and loading your games with quick save and autonumbering.
43
+
- Complete file navigation system with autoindexing, folder support, search functions and file and directoty management functions.
42
44
- Complete OSD menu in three languages: English, Spanish and Portuguese.
43
45
- BMP screen capture to SD Card (thanks David Crespo 😉).
44
46
45
-
## Work in progress
46
-
47
-
- +2A/+3 models.
48
-
- DSK support.
49
-
50
47
## Installing
51
48
52
-
You can flash the binaries directly to the board if do not want to mess with code and compilers. Check the [releases section](https://github.com/EremusOne/ZX-ESPectrum-IDF/releases)
49
+
The easiest method is using our [online web flasher](https://zxespectrum.speccy.org/flash/)
50
+
51
+
You can flash also the binaries directly to the board. Check the [releases section](https://github.com/EremusOne/ESPectrum/releases) for bin files and detailed instructions
53
52
54
53
## Compiling and installing
55
54
@@ -84,25 +83,30 @@ There's also no need to sort files using external utilities: the emulator create
84
83
## PS/2 Keyboard functions
85
84
86
85
- F1 Main menu
87
-
- F2 Load (SNA,Z80, SP, P)
88
-
- F3 Load custom snapshot
89
-
- F4 Save customn snapshot
90
-
- F5 Select TAP file
91
-
- F6 Play/Stop tape
92
-
- F7 Tape Browser
86
+
- F2 Snapshot file browser (SNA,Z80, SP, P)
87
+
- F3 Disk file browser (TRD,SCL)
88
+
- F4 Tape file browser (TAP, TZX)
89
+
- F5 Play/Stop tape
90
+
- F6 ESP (own snapshot format) file browser
91
+
- F7 ESP Quick save
93
92
- F8 CPU / Tape load stats ( [CPU] microsecs per CPU cycle, [IDL] idle microsecs, [FPS] Frames per second, [FND] FPS w/no delay applied )
94
93
- F9 Volume down
95
94
- F10 Volume up
96
95
- F11 Hard reset
97
96
- F12 Reset ESP32
98
97
- CTRL + F1 Show current machine keyboard layout
99
98
- CTRL + F2 Cycle turbo modes -> 100% speed (blue OSD), 125% speed (red OSD), 150% speed (magenta OSD) and MAX speed (black speed and no sound)
100
-
- CTRL + F5..F8 Screen centering in CRT 15K/50hz mode
99
+
- CTRL + F3 Second PS/2 port (if present) device selection
100
+
- CTRL + F4 Select mouse DPI
101
+
- CTRL + F5..F8 Screen centering in CRT 15K/50hz mode (select and restart ESP32 for changes to be applied)
101
102
- CTRL + F9 Input poke
102
103
- CTRL + F10 NMI
103
104
- CTRL + F11 Reset to TR-DOS
104
105
- SHIFT + F1 Hardware info
105
-
- SHIFT + F6 Eject tape
106
+
- SHIFT + F2 Real audio-in toggle
107
+
- SHIFT + F3 Eject disk
108
+
- SHIFT + F4 Tape blocks browser
109
+
- SHIFT + F5 Eject tape
106
110
- Pause Pause
107
111
- ScrollLock Switch "Cursor keys as joy" setting
108
112
- PrntScr BMP screen capture (Folder /.c at SDCard)
@@ -112,24 +116,28 @@ There's also no need to sort files using external utilities: the emulator create
112
116
Press CAPS SHIFT + SYMBOL SHIFT and:
113
117
114
118
- 1 Main menu
115
-
- 2 Load (SNA,Z80, SP, P)
116
-
- 3 Load custom snapshot
117
-
- 4 Save custom snapshot
118
-
- 5 Select TAP file
119
-
- 6 Play/Stop tape
120
-
- 7 Tape browser
119
+
- 2 Snapshot file browser (SNA,Z80, SP, P)
120
+
- 3 Disk file browser (TRD,SCL)
121
+
- 4 Tape file browser (TAP, TZX)
122
+
- 5 Play/Stop tape
123
+
- 6 ESP (own snapshot format) file browser
124
+
- 7 ESP Quick save
121
125
- 8 CPU / Tape load stats ( [CPU] microsecs per CPU cycle, [IDL] idle microsecs, [FPS] Frames per second, [FND] FPS w/no delay applied )
122
126
- 9 Volume down
123
127
- 0 Volume up
124
128
- Q Hard reset
125
129
- W Reset ESP32
126
130
- E Eject tape
127
131
- R Reset to TR-DOS
128
-
- T Cycle turbo modes -> 100% speed (blue OSD), 125% speed (red OSD), 150% speed (magenta OSD) and MAX speed (black speed and no sound)
132
+
- T Tape blocks browser
129
133
- I Hardware info
130
134
- O Input poke
131
135
- P Pause
136
+
- S Second PS/2 port (if present) device selection
137
+
- D Select mouse DPI
138
+
- F Cycle turbo modes -> 100% speed (blue OSD), 125% speed (red OSD), 150% speed (magenta OSD) and MAX speed (black speed and no sound)
132
139
- K Show current machine keyboard layout
140
+
- L Real audio-in toggle
133
141
- Z,X,C,V Screen centering in CRT 15K mode
134
142
- B BMP screen capture (Folder /.c at SDCard)
135
143
- N NMI
@@ -165,7 +173,6 @@ Pin assignment in `hardpins.h` is set to match the boards we've tested emulator
-[Antonio Villena's ESPectrum board](https://antoniovillena.es/store/product/espectrum/) and [ESPjoy add-on](https://antoniovillena.es/store/product/espjoy-for-espectrum/)
169
176
-[ESP32-SBC-FabGL board from Olimex](https://www.olimex.com/Products/Retro-Computers/ESP32-SBC-FabGL/open-source-hardware)
170
177
171
178
## Thanks to
@@ -179,15 +186,14 @@ Pin assignment in `hardpins.h` is set to match the boards we've tested emulator
179
186
- PS2 Driver from Fabrizio di Vittorio for his [FabGL library](https://github.com/fdivitto/FabGL).
180
187
-[Paul Farrow](http://www.fruitcake.plus.com/index.html) for his kind permission to include his amazing ZX81+ IF2 ROM.
181
188
- Azesmbog for testing and providing very valuable info to make the emu more precise.
182
-
- David Carrión for hardware and ZX keyboard code.
189
+
- David Carrión for hardware and ZX keyboard code and creating the [DB9_2_Keyboard](https://github.com/dacarsoft/DB9_2_Keyboard) firmware.
183
190
- ZjoyKiLer for his testing, code and ideas.
184
191
-[Ackerman](https://github.com/rpsubc8/ESP32TinyZXSpectrum) for his code and ideas.
185
192
-[Mark Woodmass](https://specemu.zxe.io) and [Juan Carlos González Amestoy](https://www.retrovirtualmachine.org) for his excellent emulators and his help with wd1793 emulation and many other things.
186
193
- Magnus Krook for [SoftSpectrum 48](https://softspectrum48.weebly.com), an excellent emulator which together with his complete and well documented website was of great help and inspiration.
187
194
-[Rodolfo Guerra](https://sites.google.com/view/rodolfoguerra) for his wonderful enhanced ROMs and his help for adding tape load turbo mode support to the emulator.
188
195
-[Juanjo Ponteprino](https://github.com/SplinterGU) for his help and contributions to ESPectrum
189
196
- Weiv and [MartianGirl](https://github.com/MartianGirl) for his detailed analysis of Snow effect.
190
-
-[Antonio Villena](https://antoniovillena.es/store) for creating the ESPectrum board.
191
197
- Tsvetan Usunov from [Olimex Ltd](https://www.olimex.com).
192
198
-[Amstrad PLC](http://www.amstrad.com) for the ZX-Spectrum ROM binaries [liberated for emulation purposes](http://www.worldofspectrum.org/permits/amstrad-roms.txt).
193
199
-[Jean Thomas](https://github.com/jeanthom/ESP32-APLL-cal) for his ESP32 APLL calculator.
0 commit comments