ZX Spectrum emulator with esp8266 and ili9341 display.
Compiled using https://github.com/uli/Arduino_nowifi
- audio
- joystick
- load .z80 from SD
- load .z80 from EEPROM
- save .z80 to SD
An ESP8266 , a ILI9341 display, a few buttons to build a working ZX Spectrum
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
ZX Spectrum emulator with esp8266 and ili9341 display.
Compiled using https://github.com/uli/Arduino_nowifi
esp8266_zx_emulator_marat_with_demo.ino.bincompiled binary with demo gamesoctet-stream - 304.31 kB - 11/19/2020 at 05:21 |
|
|
esp8266_zx_emulator_marat.ino.bincompiled binary. upload it directly to esp8266octet-stream - 190.20 kB - 11/17/2020 at 14:01 |
|
|
esp8266com.zipesp8266 core used to compilex-zip-compressed - 20.44 MB - 03/13/2020 at 05:25 |
|
|
20200223_210222.jpgJPEG Image - 561.06 kB - 02/23/2020 at 20:15 |
|
|
20200223_210058.jpgJPEG Image - 452.99 kB - 02/23/2020 at 20:15 |
|
|
Create an account to leave a comment. Already have an account? Log In.
update 2021-08
After an update of the regular 8266 core the nowifi core compile failed. Had to change 2 things:
- to compile use extesa compiler 2.5. look in arduino/packages/esp8266/tools/xtesa-lx106-elf-gcc.
if there is a versione > 2.5.0 then rename the newer folders (in example 3.0.0xxx to 0.3.0.0xxxx)
- in case of missing .ld file change the platform.txt file to add the absolute path to the linker script
compiler.c.elf.flags=-g {compiler.warning_flags} -O2 -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.libc.path}/lib" "-TC:/Users/it03281/Documents/Arduino/hardware/esp8266com/Arduino_nowifi-sdknowifi/tools/sdk/ld/{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
there is a clever version done by Denes Nagymathe. i do not have a 3d printer. look in zx spectrum group https://www.facebook.com/groups/164156683632183
Thanks again! I just tried a 2 gb card and it works!
Is there a way I could post a picture to show you my project?
Going to 3d print a case for it. Waiting for keycaps to come from AliExpress.
great work. if you send me the pictures i can add them here. in a "private message" you can add them as attachment.
Thanks again for your help, I shall recompile without the debug option. I have the emulator running fine now. The next problem I am experiencing is that I get the error "SD not available" when I try to load from the SD card. I have checked my wiring and don't think I have made an error.
What produces that error message?
first of all you should check the 3.3 volt at the sd card pin. sometimes between the vcc pin of the pcb and the vcc pin of the sd card there is a 3.3v voltage regulator. in this case you have to bypass the voltage regulator and feed the pcb with 3.3 volt only. moreover the sdcard should be formatted as FAT16 or FAT32. better to avoid too small and too big sd card. 1 or 2gb should be fine. be sure to use the sdfat-master library attached here. there are soo many sd libs and they are all different.
H again,
Once again, thanks so much for this project. It has been a lot of fun to build. I have wired up most of the circuit (but so far only one row and column of the keyboard to test).
One thing I am noticing, is that the emulator is not running at native speed. For example the flashing cursor is very slow.
Does this emulator run at native speed or is there something I might have done wrong?
Any comments/help would be appreciated.
no, there are not cpu cycles left to try to match the original speed. z80 emulation itself is not that far from the target, but it may vary from game to game according to the most used instructions. i've changed a little bit LDDR LDDI to speedup some games. you can use 2 settings in the menu: cpu speed (some games seem too fast) and the timer tick (more or less than 50hz). sometimes the code run veeeeryyy slow. you should try to tune the compiler option. all in all games are playable.
Hi,
Thanks so much for this project. I have purchased the components and wish to build it. I was wondering if you could please explain one thing: the list of parts mentions decoupling capacitors, yet I do not see them on the circuit diagrams, could you please explain where they go?
place them across the supply pins of every IC. it seem that at least 2 persons were able to build the circuit, so don't worry.
great project!
similar to my https://hackaday.io/project/164830-espboy-games-iot-stem-for-education-fun
it also has zx spectrum 48 emulator
Hi,
was also not successful in building from source. Used your custom libs as well as fixed bugs to get the last official libs running but always end in the same linker error as @Dragan Toroman:
.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x3fffe218 of .pio/build/nodemcuv2/firmware.elf section `.bss' is not within region `dram0_0_seg'
.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x3fffe218 of .pio/build/nodemcuv2/firmware.elf section `.bss' is not within region `dram0_0_seg'
@aldolo cannot find the custom nowifi zip you supposedly uploaded
Is there any reason why most files are twice in the repo? (in root and source)
whithout the nowifi lib there is not enough ram. you can not use the usual esp8266 arduino lib. i've uploaded here esp8266com.zip with the nowifi arduino core
It's compiling fine now with the Arduino IDE (for anyone else trying to build on linux: fix naming issues, use custom libs and unzip content of esp8266com.zip in e.g. ~/Arduino/hardware/espressif/esp8266/ before using that board spec in Arduino).
Will now try to port the code that it runs on a bare esp8266 (ESP-12-F) (instead of a NodeMCU dev board with an ESP-12-E). Any hints or thoughts on that? As far as I can see the zx emulator only uses 6 IO pins (beside SPI) so should be no big deal.
just to have a first run try to lower the zxspectrum ram to 16kb. emulator ram size is declared in z80.h #define RAMSIZE 49152. change it to 16384 to use the regular esp8266 arduino core
just tried that but didn't solve the linker error. But I will try the custom arduino lib and see how that turns out. Thanks anyway for helping so far!
source is doubled because i've uploded it manually the second time. more recent version has the z80 save function
Hi,
So many issues trying to build the project.
First, trying to build on Linux - files are case sensitive and errors are reported as you did not follow same case in naming your files and imports.
Second there seems to be an issue about versions of the nowifi platform. Using recent versions shows TFT_eSPI/TFT_eSPI.cpp:4063:84: error: invalid conversion from 'uint32_t {aka unsigned int}' to 'const void*' [-fpermissive]
Going with earlier versions (2.4.1) fixes that, but shows esp8266_zx_emulator_marat:70:31: error: 'ets_update_cpu_frequency' was not declared in this scope. If I comment out this line compilation passes but linker gives an error
.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x400008b0 of esp8266_zx_emulator_marat.ino.elf section `.bss' is not within region `dram0_0_seg'
.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x400008b0 of esp8266_zx_emulator_marat.ino.elf section `.bss' is not within region `dram0_0_seg'
Yes, I am using your copy of libraries for SDFat and TFT_eSPI
Arduino IDE 1,8,9
Board NodeMCU 1.0
Can you please take a look at the repository, fix some of the issues (file name case) and also make sure which versions of everything should be used in order to be able to build the project?
i'm on windows. look for my nowifi zip file added right now
ok, uploaded the nowifi lib also. arduino 1.8.10 with the attached libs compiles right
Hi Aldo, I'm trying to compile from the github's sources the project, but I'm facing few errors (ex. wrongs file name, error while declaring the classes, etc). There's any update or I'm doing something wrong?
It's a great project and I love to be able to play with it !
Same here. So i tried with fresh install of Arduino (1.8.12), boards Arduino_nowifi and with attached libraries SdFat (1.1.0), TFT_eSPI (1.1.1), and with updated ones SdFat(1.1.2), TFT_eSPI (1.4.20) but without any success and I wonder it may be up to specific Arduino version?! Any tip Aldo? Tnx!
teicons i cant reply to you because of a limit of this site. download the full Arduino_nowifi lib, decompress it in the documents/arduino/hardware directory, reload arduino ide. you will see the nowifi boards
Hi, I did successfully all the operation (SdFat, TFT_eSPI and NOWIFI), but I have an error during the compiling:
sketch/Zxdisplay.cpp: In function 'void zxDisplaySetup(unsigned char*)':
Zxdisplay.cpp:428:17: error: use of deleted function 'TFT_eSPI& TFT_eSPI::operator=(TFT_eSPI&&)'
zxDisplayTft = TFT_eSPI();
^
In file included from sketch/Zxdisplay.cpp:2:0:
/home/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:661:7: note: 'TFT_eSPI& TFT_eSPI::operator=(TFT_eSPI&&)' is implicitly deleted because the default definition would be ill-formed:
class TFT_eSPI : public Print {
^
:(
The paradigm of a grammar sensitive keyboard mode was truly genius - never seen anything like this on any other system.
E.g.: hitting the PRINT key twice results in:
PRINT "...
And then you type your text omitting having to spell out commands and use of shift key - very fast and efficient coding.
Hi,I was wondering if the hex non-inverting buffer needs to be tri-state? Would a 4050 work the same?
not for me. the sd card reader did not release spi lines when not selected
Cheers, thanks for that. I'll grab some 4503s then.
What kind of re-legendable keycaps are those? I would like to buy those kind, but can't find them anywhere
Agreed, I like the keycaps. They have a sort of sci-fi vibe to them - either that or a convenience store cash register...
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More
Witam opracowałem PCB cena za 1szt tylko 12$
https://www.piracz.com.pl/download/file.php?id=607&sid=4681971825b8531c35948132eafaf552&mode=view