Skip to content

Commit 3c5a629

Browse files
authored
N20: Reverse-Engineering NES Tetris to add Hard Drop (#537)
1 parent c4d1df6 commit 3c5a629

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

content/posts/newsletter-020/index.md

+35
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,41 @@ New Updates:
124124

125125
## Learning Material Updates
126126

127+
### [Reverse-Engineering NES Tetris to add Hard Drop][tetris-hard-drop]
128+
129+
![NES Tetris with Hard Drop and Ghost Piece](tetris-hard-drop.gif) _NES Tetris
130+
with Hard Drop and Ghost Piece_
131+
132+
A [blog post][tetris-hard-drop] describing the process of reverse-engineering
133+
the rendering and input-handling logic in the NES version of Tetris, and using
134+
a [rust embedded domain-specific language][tetris-hard-drop-dsl-example] to
135+
make a [patching tool][tetris-hard-drop-patch-tool] that generates code (6502
136+
machine code) to add hard drop (instantly dropping the current piece) and to
137+
render a ghost piece (the dotted outline showing where the current piece will
138+
land).
139+
140+
The patching tool uses the crate
141+
[mos6502_assembler][tetris-hard-drop-assembler] to specify 6502 assembly in
142+
rust and generate machine code. Many of the reverse-engineering experiments
143+
were done using [this rust NES emulator][tetris-hard-drop-nes-emulator]. The
144+
result is available as an [IPS Patch][tetris-hard-drop-ips-patch].
145+
146+
_Discussions: [Hacker News](https://news.ycombinator.com/item?id=26530604),
147+
[/r/rust](https://reddit.com/r/rust/comments/ma6jqz/using_a_rust_dsl_to_add_hard_drop_to_nes_tetris/)_
148+
149+
[tetris-hard-drop]:
150+
https://www.gridbugs.org/reverse-engineering-nes-tetris-to-add-hard-drop/
151+
[tetris-hard-drop-nes-emulator]:
152+
https://github.com/stevebob/mos6502/tree/master/nes-emulator
153+
[tetris-hard-drop-assembler]:
154+
https://github.com/stevebob/mos6502/tree/master/assembler
155+
[tetris-hard-drop-ips-patch]:
156+
https://github.com/stevebob/mos6502/raw/master/tetris-hard-drop-patcher/tetris-hard-drop.ips
157+
[tetris-hard-drop-patch-tool]:
158+
https://github.com/stevebob/mos6502/tree/master/tetris-hard-drop-patcher
159+
[tetris-hard-drop-dsl-example]:
160+
https://github.com/stevebob/mos6502/blob/master/tetris-hard-drop-patcher/src/main.rs#L23
161+
127162
## Library & Tooling Updates
128163

129164
### [wgpu]
Loading

0 commit comments

Comments
 (0)