@@ -68,6 +68,35 @@ If needed, a section can be split into subsections with a "------" delimiter.
68
68
69
69
## Learning Material Updates
70
70
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
+
71
100
## Library & Tooling Updates
72
101
73
102
## Popular Workgroup Issues in Github
0 commit comments