Code Monkey home page Code Monkey logo

zxspectrum's Introduction

ZXSpectrum emulator written in C#

In this repo

In this repo, you will find:

  • ZX Spectrum emulator written in C#.
  • Blazor implementation of the emulator

Sponsors

Thanks you to much to my sponsors!

Telerik UI for Blazor – Increase productivity and cut cost in half! Use the Telerik truly native Blazor UI components and high-performing grid to cover any app scenario. Give it a try for free.

Background

When I was 7 years old I got my first computer, a ZX Spectrum.
I remember that I sat down, booted it up, and wrote:

10 PRINT "Jimmy"
20 GOTO 10

This was MY code!, I made the computer do things. That was the moment I decided I wanted to become a developer. You can find it here on Github (Firstapp.z80).

After becoming a developer I wanted to see if I could make an emulator written in C#. This has become my test project, the thing I try out all new technologies with. If you ever see me present, chances are that I will mention the ZX Spectrum.

The naming of the project might seem strange, I originally developed the emulator for Xbox so ZXBox made sense at the time.
I have chosen to keep the name think of is as a ZX(Spectrum) in an other box =).

I did a talk about Blazor at Microsoft Ignite 2019 where I demoed my ZX Spectrum emulator running on Blazor WebAssembly. After doing a talk on Blazor and Blutooth at Live Coders Conf, I got a lot of comments on my ZX Spectrum so I decided to publish it =)
You can find the Blazor implementation here http://zxbox.com .
I got a lot of amazing feedback and many wanted to see the code so I decided to share that as well.

There are still things left to do for example implementing sound (for Blazor) and support for more file formats.

It supports SNA and Z80-formats and you can connect an XBox gamepad to emulate Kempston Joystick.

Thanks to

Jessica Engström - For loving me and letting me have a storage room filled with old computers =D
Mikael Engström - For teaching me how to program
Mats Sjöblom - For explaining some of the internals in the ZX Spectrum
Rodnay Zaks - For writing the book I used to implement all the Z80 Assembler instructions.

Projects https://github.com/jsakamoto/Toolbelt.Blazor.Gamepad

zxspectrum's People

Contributors

engstromjimmy avatar jfversluis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

zxspectrum's Issues

Audio is delayed on MacBook audio driver

When running the Blazor implementation on a MacBook Pro from 2021, the audio gets progressively more delayed, about 5 seconds more per minute. My guess is there's a discrepancy between 44100 Hz and 48000 Hz audio drivers.

After a while, like 3-4 minutes, the audio somehow "catches up", though.

problem on https://engstromjimmy.github.io/ZXSpectrum/

Check out the included video for the sequence of clicks to get what looks like both the 48k and 128k versions of the emulator running in the same browser window at the same time. Warning: video contains flashing lights!

48k.and.128k.at.the.same.time.mp4

error when clicking on "Start Tape" before selecting a .tap file

If you click on the "Start Tape" button before you've selected a .tap file with the "Chose file" button, then an exception happens and the Blazor error bar appears at the bottom of the page, and the devtools console fills up with lots of "ThreadPool Callback threw an unhandled exception of type System.ArgumentOutOfRangeException" errors

Sentinel not working

I tried to load a copy of The Sentinel that I got from World Of Spectrum, but it looks like it is failing, while that same TAP file works on the ZEsarUX emulator.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.