readme.md: Update readme.md with useful information
This commit is contained in:
parent
b74709ad1a
commit
f90f1c49cc
75
readme.md
75
readme.md
@ -1,12 +1,75 @@
|
||||
# Chumpulator
|
||||
# Chirp
|
||||
|
||||
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?
|
||||
## Features:
|
||||
- 32 * 64 1bpp pixel display, scaled 16x
|
||||
- Full coverage of the original Chip-8 insn set
|
||||
- 64-bit floating point internal sound/delay timers
|
||||
- Pause/Resume
|
||||
- Set and unset breakpoints
|
||||
- A fairly nice command-line interface
|
||||
|
||||
## Keybinds:
|
||||
- F1: Dump CPU registers
|
||||
- F2: Dump screen to terminal
|
||||
- F3: Dump screen to file
|
||||
- F4: Enable/Disable live disassembly
|
||||
- F5: Pause/Resume
|
||||
- F6: Single-step instruction
|
||||
- F7: Set breakpoint at current instruction
|
||||
- F8: Unset breakpoint at current instruction
|
||||
- F9: Soft-reset the CPU
|
||||
|
||||
## Keypad mapping:
|
||||
### QWERTY:
|
||||
| | | | |
|
||||
|---|---|---|---|
|
||||
| 1 | 2 | 3 | 4 |
|
||||
| Q | W | E | R |
|
||||
| A | S | D | F |
|
||||
| Z | X | C | V |
|
||||
### Chip-8:
|
||||
| | | | |
|
||||
|---|---|---|---|
|
||||
| 1 | 2 | 3 | C |
|
||||
| 4 | 5 | 6 | D |
|
||||
| 7 | 8 | 9 | E |
|
||||
| A | 0 | B | F |
|
||||
|
||||
## Command Line Interface:
|
||||
```
|
||||
Usage: chirp [OPTIONS]
|
||||
|
||||
Positional arguments:
|
||||
file Load a ROM to run on Chirp.
|
||||
|
||||
Optional arguments:
|
||||
-h, --help Print this help message.
|
||||
-d, --debug Enable debug mode at startup.
|
||||
-p, --pause Enable pause mode at startup.
|
||||
-s, --speed SPEED Set the instructions-per-frame rate.
|
||||
-S, --step STEP Run the emulator as fast as possible for `step` instructions.
|
||||
-z, --vfreset Disable setting vF to 0 after a bitwise operation.
|
||||
-x, --drawsync Disable waiting for vblank after issuing a draw call.
|
||||
-c, --memory Use CHIP-48 style DMA instructions, which don't touch I.
|
||||
-v, --shift Use CHIP-48 style bit-shifts, which don't touch vY.
|
||||
-b, --jumping Use SUPER-CHIP style indexed jump, which is indexed relative to v[adr].
|
||||
-B, --break BP Set breakpoints for the emulator to stop at.
|
||||
-D, --data WORD Load additional word at address 0x1fe
|
||||
-f, --frame-rate FR Set the target framerate. (default: 60)
|
||||
```
|
||||
|
||||
## TODO:
|
||||
|
||||
- [ ] Implement sound
|
||||
- [ ] Finish unit tests for "quirks"
|
||||
- [ ] Make pausing/unpausing the emulator less messy
|
||||
- [ ] Make resetting the emulator possible
|
||||
- [ ] Allow code to be passed in hex on the command line? Hmm
|
||||
- [ ] Assembler for my assembly syntax
|
||||
- [ ] Make a UI for realtime configuration
|
||||
- [ ] Cycle accuracy with original Chip-8 interpreter
|
Loading…
Reference in New Issue
Block a user