Skip to content

Commit

Permalink
Update README.md for v2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
neilhewitt authored Aug 16, 2024
1 parent 1d0d51c commit 613937f
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

A simple emulation of the Z80 CPU written in C# and running on .NET 7.

## Version 2.0 coming in 2024
## Version 2.0 now available

I've been working on a significant re-design of the emulator core for about a year now, and I'm close to releasing a 2.0 of Zem80. The remaining goal is to make it compile under NativeAOT to have predictable execution timing.
Zem80 v2.0 includes a completely redesigned emulator core with improved performance. There are some minor breaking API and event changes, but from the point of view of consuming code, little has changed. Most of the work here was to improve the architecture of the system and tidy up the timing mechanisms.

The emulator is now compiled and built using .NET 8.0, so you will need to have this installed to use it, and your consuming projects must be compiled with .NET 8.0 as well. Since .NET 8.0 is both LTS and about to be superceded by .NET 9.0, I don't feel particularly guilty about this. I am considering a .NET Standard version of the library but this may involve too many compromises. A NativeAOT implementation is still a goal for a potential v3.0.

If you are using the emulator (hi, David!) I strongly suggest you upgrade to v2.0.

## Project goals

Expand All @@ -27,9 +31,9 @@ Where I think this project can be useful is in perhaps explaining how to do CPU
I built this thing just to prove to myself that I could. I have a fully-functioning emulator built in a platform that's not generally thought of as one you could build something so low-level in, and I'm very glad I did it.

## Project status
28/11/2022 - 1.2.1 release. I did a bunch of refactoring and I fixed a couple of fairly obscure bugs. I also improved the timing mechanism so that pseudo-real-time mode gets as close as possible to real time, and added a time-slice timing mode (described above). I also replaced the Spectrum audio implementation and this plus the timing work finally fixed the audio.
16/08/2024 - 2.0 release. Mostly a refactoring and redesign release, 2.0 doesn't add any major new features. Many bugs were fixed and timing improved, but timing is still the emulator's achilles heel. If you don't care about absolutely precise timing, you will be fine. The Spectrum sample was updated to work with this version and slightly refactored itself, but is otherwise untouched and remains a fairly poor implementation intended for demo purposes only.

I moved the whole project to .NET 7, so this is the lowest version you can run the Zem80 library on with this build. I am looking at multi-targeting for the next release since there's no reason in principle why I can't ship a .NET Standard 2.0 version alongside a .NET 7 build.
The project moves to .NET 8.0 in this release.

### Known issues ###

Expand All @@ -42,12 +46,6 @@ The other main component is the ZX Spectrum VM, which has several known issues:
* Audio in is not supported, so you cannot use the LOAD command. The SAVE command will operate but not successfully (data will be corrupt even if recorded)
* It's frankly just not very good and is certainly not usable as a real emulator for playing games etc. Download FUSE for that!

### Next steps ###

* Add new tests to cover the public API other than those Z80 instructions tested by Zexall
* Add some documentation / HOWTO etc
* Consider adding XML comments (but probably not)

## Acknowledgements ##

This project contains materials derived from **ZEXALL** which is copyright **Frank Cringle**, with amendments copyright **J.G. Harston**, and which are distributed under the terms of the ZEXALL license.
Expand Down

0 comments on commit 613937f

Please sign in to comment.