~/talk

How I built a ZX Spectrum emulator from scratch using C# and Blazor

Talkat NDC London 2025 · 2025-01-27..01-31· [webassembly, web-platform]
links:none on file
slides:none on file

A ZX Spectrum emulator written in C# and Blazor WebAssembly that runs at 3.5 MHz and 50 FPS, implements ~1,000 prefixed instructions on top of 256 base opcodes and executes roughly 10,000 instructions per 20 ms. Memory, ZX screen layout and 8×8 attribute color clashes are faithfully reproduced, audio uses 20 ms buffering to JavaScript audio context, gamepad and keyboard map to Kempston, heavy unit tests cover every CPU operation, and Skia compiled to WebAssembly yields near‑native rendering performance.

AI-written summary · about

  1. 0:00Introduction
  2. 7:24From emulation to web
  3. 10:43Z80 assembly basics
  4. 18:12Z80 instructions & registers
  5. 21:06Memory & screen rendering
  6. 26:57Input, keyboard & sound
  7. 29:05Hardware to software
  8. 30:30Early emulator versions
  9. 33:46MVP journey
  10. 37:29Podcasts, Twitch and YouTube expansion
  11. 39:13MVP & Unity emulator
  12. 40:14Blazor web emulator
  13. 41:18Audio & gamepad
  14. 43:05Screen rendering with Skia
  15. 46:38Live demo
  16. 48:36Future plans
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.