Skip to content

Commit 029c3b0

Browse files
committed
N20: Reverse-Engineering NES Tetris to add Hard Drop
1 parent 9fd7e4a commit 029c3b0

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

content/posts/newsletter-020/index.md

+29
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,35 @@ If needed, a section can be split into subsections with a "------" delimiter.
6868

6969
## Learning Material Updates
7070

71+
### [Reverse-Engineering NES Tetris to add Hard Drop][tetris-hard-drop]
72+
73+
![NES Tetris with Hard Drop and Ghost Piece](tetris-hard-drop.gif)
74+
_NES Tetris with Hard Drop and Ghost Piece_
75+
76+
A [blog post][tetris-hard-drop] describing the process of reverse-engineering
77+
the rendering and input-handling logic in the NES version of Tetris, and using
78+
a [rust embedded domain-specific language][tetris-hard-drop-dsl-example] to
79+
make a [patching tool][tetris-hard-drop-patch-tool] that
80+
generates code (6502 machine code) to add hard drop (instantly dropping the
81+
current piece) and to render a ghost piece (the dotted outline showing where
82+
the current piece will land).
83+
84+
The patching tool uses the crate [mos6502_assembler][tetris-hard-drop-assembler] to specify 6502 assembly
85+
in rust and generate machine code. Many of the reverse-engineering experiments were done using
86+
[this rust NES emulator][tetris-hard-drop-nes-emulator].
87+
The result is available as an [IPS Patch][tetris-hard-drop-ips-patch].
88+
89+
_Discussions:
90+
[Hacker News](https://news.ycombinator.com/item?id=26530604),
91+
[/r/rust](https://reddit.com/r/rust/comments/ma6jqz/using_a_rust_dsl_to_add_hard_drop_to_nes_tetris/)_
92+
93+
[tetris-hard-drop]: https://www.gridbugs.org/reverse-engineering-nes-tetris-to-add-hard-drop/
94+
[tetris-hard-drop-nes-emulator]: https://github.com/stevebob/mos6502/tree/master/nes-emulator
95+
[tetris-hard-drop-assembler]: https://github.com/stevebob/mos6502/tree/master/assembler
96+
[tetris-hard-drop-ips-patch]: https://github.com/stevebob/mos6502/raw/master/tetris-hard-drop-patcher/tetris-hard-drop.ips
97+
[tetris-hard-drop-patch-tool]: https://github.com/stevebob/mos6502/tree/master/tetris-hard-drop-patcher
98+
[tetris-hard-drop-dsl-example]: https://github.com/stevebob/mos6502/blob/master/tetris-hard-drop-patcher/src/main.rs#L23
99+
71100
## Library & Tooling Updates
72101

73102
## Popular Workgroup Issues in Github
Loading

0 commit comments

Comments
 (0)