~/talk

Emulating a Nintendo DS in Go

Talkat GoLab 2018 · 2018-10-22..10-23· [go]
slides:none on file

A Nintendo DS emulator implemented in Go that actually runs Zelda, Mario Kart and Metal Slug by emulating two ARM CPUs (66/33 MHz), GPUs and 4 MB RAM, using per-scanline interleaving instead of per-frame. Memory is a declarative memory map indexed by a radix tree; instruction handlers are produced by a generator that emits 30,000 lines generated. A hand‑written JIT via goji works but JIT crashes with GC because Go has no stack‑map API, and a bound‑check patch yields an 8% speedup in Go 1.11.

AI-written summary · about

  1. 0:00Introduction to emulation
  2. 1:53Hardware architecture
  3. 7:31Emulator design and sync
  4. 14:17CPU emulation techniques
  5. 19:15Implementing a JIT compiler
  6. 22:18Memory map implementation
  7. 27:27Optimizing memory lookup
  8. 30:07Graphics and performance
  9. 34:28Conclusions and demo
~/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.