Skip to content

Commit 88ddc01

Browse files
authored
Merge pull request #82 from EremusOne/develop
ESPectrum 1.41
2 parents a501be7 + 7e4c743 commit 88ddc01

File tree

217 files changed

+18902
-96185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

217 files changed

+18902
-96185
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
!.keep
2+
*.bak
23
.pio
34
.VSCodeCounter
45
.VSCodeCounter/**

ESPecpart2 1.2.csv

Lines changed: 0 additions & 9 deletions
This file was deleted.

ESPecpart2.csv

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
# Name, Type, SubType, Offset, Size, Flags
2-
nvs, data, nvs, 0x9000, 0x35000,
1+
# Name, Type, SubType, Offset, Size, Flags
2+
nvs, data, nvs, 0x9000, 0x35000,
33
otadata, data, ota, 0x3e000, 0x2000,
4-
esp0, app, ota_0, 0x40000, 0x140000,
5-
esp1, app, ota_1, 0x180000, 0x140000,
6-
esp2, app, ota_2, 0x2C0000, 0x140000,
7-
# nvs, data, nvs, 0x3E0000, 0x20000,
8-
# spiffs, data, spiffs, 0x3D0000,0x30000,
4+
esp0, app, ota_0, 0x40000, 0x1E0000,
5+
esp1, app, ota_1, 0x220000, 0x1E0000,

README.md

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
This is an emulator of the Sinclair ZX Spectrum computer running on Espressif ESP32 SoC powered boards.
44

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.
66

77
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.
88

99
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.
1010

1111
## Features
1212

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).
1414
- Microdigital TK90X and TK95 models (w/Microdigital ULA at 50 and 60hz) emulation.
1515
- State of the art Z80 emulation (Authored by [José Luis Sánchez](https://github.com/jsanchezv/z80cpp))
1616
- 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
3030
- Beeper & Mic emulation (Cobra’s Arc).
3131
- Dual PS/2 keyboard support: you can connect two devices using PS/2 protocol at the same time.
3232
- 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.
3435
- Emulation of Betadisk interface with reset to tr-dos option, four drives and TRD (read and write) and SCL (read only) support.
3536
- Realtime (with OSD) TZX and TAP file loading.
3637
- Flashload of TAP files.
3738
- Rodolfo Guerra's ROMs fast load routines support with on the fly standard speed blocks translation.
3839
- Virtual tape system with support for SAVE command and block renaming, deleting and moving.
3940
- 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.
4244
- Complete OSD menu in three languages: English, Spanish and Portuguese.
4345
- BMP screen capture to SD Card (thanks David Crespo 😉).
4446

45-
## Work in progress
46-
47-
- +2A/+3 models.
48-
- DSK support.
49-
5047
## Installing
5148

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
5352

5453
## Compiling and installing
5554

@@ -84,25 +83,30 @@ There's also no need to sort files using external utilities: the emulator create
8483
## PS/2 Keyboard functions
8584

8685
- 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
9392
- F8 CPU / Tape load stats ( [CPU] microsecs per CPU cycle, [IDL] idle microsecs, [FPS] Frames per second, [FND] FPS w/no delay applied )
9493
- F9 Volume down
9594
- F10 Volume up
9695
- F11 Hard reset
9796
- F12 Reset ESP32
9897
- CTRL + F1 Show current machine keyboard layout
9998
- 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)
101102
- CTRL + F9 Input poke
102103
- CTRL + F10 NMI
103104
- CTRL + F11 Reset to TR-DOS
104105
- 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
106110
- Pause Pause
107111
- ScrollLock Switch "Cursor keys as joy" setting
108112
- 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
112116
Press CAPS SHIFT + SYMBOL SHIFT and:
113117

114118
- 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
121125
- 8 CPU / Tape load stats ( [CPU] microsecs per CPU cycle, [IDL] idle microsecs, [FPS] Frames per second, [FND] FPS w/no delay applied )
122126
- 9 Volume down
123127
- 0 Volume up
124128
- Q Hard reset
125129
- W Reset ESP32
126130
- E Eject tape
127131
- 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
129133
- I Hardware info
130134
- O Input poke
131135
- 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)
132139
- K Show current machine keyboard layout
140+
- L Real audio-in toggle
133141
- Z,X,C,V Screen centering in CRT 15K mode
134142
- B BMP screen capture (Folder /.c at SDCard)
135143
- N NMI
@@ -165,7 +173,6 @@ Pin assignment in `hardpins.h` is set to match the boards we've tested emulator
165173
## Supported hardware
166174

167175
- [Lilygo FabGL VGA32](https://www.lilygo.cc/products/fabgl-vga32?_pos=1&_sid=b28e8cac0&_ss=r)
168-
- [Antonio Villena's ESPectrum board](https://antoniovillena.es/store/product/espectrum/) and [ESPjoy add-on](https://antoniovillena.es/store/product/espjoy-for-espectrum/)
169176
- [ESP32-SBC-FabGL board from Olimex](https://www.olimex.com/Products/Retro-Computers/ESP32-SBC-FabGL/open-source-hardware)
170177

171178
## Thanks to
@@ -179,15 +186,14 @@ Pin assignment in `hardpins.h` is set to match the boards we've tested emulator
179186
- PS2 Driver from Fabrizio di Vittorio for his [FabGL library](https://github.com/fdivitto/FabGL).
180187
- [Paul Farrow](http://www.fruitcake.plus.com/index.html) for his kind permission to include his amazing ZX81+ IF2 ROM.
181188
- 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.
183190
- ZjoyKiLer for his testing, code and ideas.
184191
- [Ackerman](https://github.com/rpsubc8/ESP32TinyZXSpectrum) for his code and ideas.
185192
- [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.
186193
- 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.
187194
- [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.
188195
- [Juanjo Ponteprino](https://github.com/SplinterGU) for his help and contributions to ESPectrum
189196
- 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.
191197
- Tsvetan Usunov from [Olimex Ltd](https://www.olimex.com).
192198
- [Amstrad PLC](http://www.amstrad.com) for the ZX-Spectrum ROM binaries [liberated for emulation purposes](http://www.worldofspectrum.org/permits/amstrad-roms.txt).
193199
- [Jean Thomas](https://github.com/jeanthom/ESP32-APLL-cal) for his ESP32 APLL calculator.

components/fabgl/CMakeLists.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
11
idf_component_register(SRC_DIRS src
22
src/comdrivers
33
src/devdrivers
4-
src/dispdrivers
5-
src/emudevs
6-
src/network
74
INCLUDE_DIRS src
8-
src/fonts
9-
src/images
105
src/comdrivers
116
src/devdrivers
12-
src/dispdrivers
13-
src/emudevs
14-
src/network
157
REQUIRES fatfs
168
spiffs
179
esp_adc_cal

components/fabgl/component.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
COMPONENT_ADD_INCLUDEDIRS := src src/comdrivers src/devdrivers src/dispdrivers src/emudevs src/network src/fonts src/images
3-
COMPONENT_SRCDIRS := src src/comdrivers src/devdrivers src/dispdrivers src/emudevs src/network src/fonts src/images
2+
COMPONENT_ADD_INCLUDEDIRS := src src/comdrivers src/devdrivers
3+
COMPONENT_SRCDIRS := src src/comdrivers src/devdrivers
44
CXXFLAGS += -O2
55

0 commit comments

Comments
 (0)