ZX Spectrum emulator [rustzx]


#1

Hello there! :smile:
Currently I am working on ZX Spectrum emulator in Rust. It is nice opportunity for me to learn low-level computer architecture and Rust (because all my previous experiments were not too big, just little utilities, tests and).
At this moment CPU (Z80) emulation part is almost ready (all instructions implemented), except interrupts and some other little things.
I’ll post some news about project in this forum thread. You can always explore, fork, and use source code of project on GitHub


#2

Hello again! I have some news.
I implemented ZX Spectrum screen (partially at the moment, without border and blinking). I used glium crate for rendering with OpenGL. I plan to implement some features in shaders - screen border, blink attribute, configuring palette and special fx. Also fixed a very small bug in Z80 emulator (but i still not written any tests for instructions, so maybe I’ll find more). So… I loaded 48K ROM and it displays screen with copyright. Maybe It works absolutely, maybe… but I still not written Keyboard Module, so I can’t check this :joy: But work is going realy slow because of university - I lack of time. Maybe on next week I’ll push new commit on github when I’ll implement all timings, logic of emulator loop, fix all ugly code, keyboard and some other small things. But anyway, project is alive add I’ll finish it, I swear :wink:!

Test of *.scr file rendering

48K ROM Initial screen

Diagnostic ROM menu!


#3

It was a quite long time from the last commit and last message. But I have some good news again! I fixed some bugs, partially implemented video sub-system of emulator, implemented keyboard emulation and fixed shaders. I still have a very little time for my project, so it goes really slow. But anyway, it you interested, check video with demonstration of working testing ROM.
First video
And you can also check second video, where I TRIED SO HARD to write something in ZX Spectrum Basic on 48K Rom, but I really bad at it :smile:
Second video

As always, you can explore my code at GitHub (But code is still very ugly, so I will rewrite a big part of it in next month, I think so)


#4

Hello there! :slight_smile:
I working on tape loading. It is almost works, but I still need to find and fix some strange bugs, because most games still not loading. And yes, I still not implemented border fx so it just changes its background. Anyway, there is a video. And of course, as allways, GitHub link.