WIP Chip-8 emulator focused on performance and configurability
Go to file
John Breaux dc61bd0087 I/O: KISS the bus, attach a screen, plug in a controller
Chip-8 has no ROM, nor memory management.
- It's much easier to just use contiguous memory.
- Then we can return references to slices of that memory
- ~3x speed increase
Screen exists now, uses 24-bit framebuffer
- We have a 1-bit framebuffer
- I chose colors that look good to me
Controller exists as well, has 16 buttons
- Mapped "0 123 456 789 ab cdef" to (QWERTY) "X 123 QWE ASD zC 4RFV"
- Other chip-8 interpreters may use a different layout
  - This is good enough for now.
- F1-F9 map to control functions
  - F1, F2: Dump CPU registers/screen contents
  - F3, F4: Toggle disassembly/pause
  - F5:     Single-step the CPU, pausing after
  - F6, F7: Set/Unset breakpoint
  - F8, F9: Soft/Hard Reset CPU
2023-03-22 15:03:53 -05:00
src I/O: KISS the bus, attach a screen, plug in a controller 2023-03-22 15:03:53 -05:00
.gitignore Initial commit: 2023-03-08 06:07:33 -06:00
Cargo.lock I/O: KISS the bus, attach a screen, plug in a controller 2023-03-22 15:03:53 -05:00
Cargo.toml I/O: KISS the bus, attach a screen, plug in a controller 2023-03-22 15:03:53 -05:00
readme.md readme.md: Add readme.md 2023-03-10 15:33:02 -06:00

Chumpulator

How does an emulator work? I don't know!

So I wrote this, to see if i can find out.

TODO:

  • Timing (insns should run at about 500Hz)
  • Screen (Memory is present, drawing sprites is not)
  • Sound (Beep boop, how to make noise?)
  • Which abstractions are useful?