-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
77 lines (47 loc) · 2.38 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Clones - An NES Emulator
## Links
[repo]: https://git.sr.ht/~kingcons/clones
[site]: https://clones.kingcons.io
[builds]: https://builds.sr.ht/~kingcons/clones
- [CI Builds][builds]
Here are links to the current [website][site] and [git repo][repo].
## Overview
[goals]: https://blog.kingcons.io/posts/Research-Goals.html
[tgj]: https://twitter.com/leastfixedpoint/status/1026567416229314561
Clones is an early-stage NES emulator written in Common Lisp.
It is inspired by long standing beliefs about the power of computers
for experiential learning. See: [Research Goals][goals].
### Why another emulator?
Reading things teaches people how to write. Analogous, if we are
to place programming at the same fundamental level, using a
program should teach how it works. But we don't see this.
- Tony Garnock-Jones, [@leastfixedpoint][tgj]
Many NES emulators already exist on the web, the desktop, and elsewhere.
My goal is to create a readable, tested, and compact code base sufficient
for mostly accurate emulation of many but not all popular Nintendo titles.
However, my goal is not to be able to relive childhood nostalgia since
that need is thoroughly solved. Clones exists to support curious programmers
learning about how the system and its titles worked rather than being a
vehicle for reliving the past. Running the games is just a prerequisite.
The codebase strives to be accessible for learning about emulation,
sacrificing total accuracy and performance for clarity and ease of modification.
Once some key games (Super Mario Bros, Mega Man 2) are playable, focus will
shift towards building out debugging and reverse engineering tools.
In addition to the usual tools to disassemble memory or view VRAM,
we hope to support building a directed graph of blocks and jumps as
games are played. Afterwards, we'll provide tools for users to annotate
the graph with notes about the code. This will move us towards our
overall goal of making the high-level structure of programs "discoverable"
through using them, calling back to the Tony Garnock-Jones quote above.
## Roadmap
Work has just begun so nothing is playable yet. Hang in there.
- ROM Support: ❌
- NROM Mapper: ❌
- CPU Opcodes: ❌
- Rendering - Backgrounds: ❌
- Rendering - Sprites: ❌
- Input Handling: ❌
- MMC1 Mapper: ❌
- Audio Support: ❌
* * *
###### \[generated by [MGL-PAX](https://github.com/melisgl/mgl-pax)\]