@@ -68,6 +68,41 @@ 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 ) _ NES Tetris
74
+ 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 generates code (6502
80
+ machine code) to add hard drop (instantly dropping the current piece) and to
81
+ render a ghost piece (the dotted outline showing where the current piece will
82
+ land).
83
+
84
+ The patching tool uses the crate
85
+ [ mos6502_assembler] [ tetris-hard-drop-assembler ] to specify 6502 assembly in
86
+ rust and generate machine code. Many of the reverse-engineering experiments
87
+ were done using [ this rust NES emulator] [ tetris-hard-drop-nes-emulator ] . The
88
+ result is available as an [ IPS Patch] [ tetris-hard-drop-ips-patch ] .
89
+
90
+ _ Discussions: [ 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] :
94
+ https://www.gridbugs.org/reverse-engineering-nes-tetris-to-add-hard-drop/
95
+ [ tetris-hard-drop-nes-emulator] :
96
+ https://github.com/stevebob/mos6502/tree/master/nes-emulator
97
+ [ tetris-hard-drop-assembler] :
98
+ https://github.com/stevebob/mos6502/tree/master/assembler
99
+ [ tetris-hard-drop-ips-patch] :
100
+ https://github.com/stevebob/mos6502/raw/master/tetris-hard-drop-patcher/tetris-hard-drop.ips
101
+ [ tetris-hard-drop-patch-tool] :
102
+ https://github.com/stevebob/mos6502/tree/master/tetris-hard-drop-patcher
103
+ [ tetris-hard-drop-dsl-example] :
104
+ https://github.com/stevebob/mos6502/blob/master/tetris-hard-drop-patcher/src/main.rs#L23
105
+
71
106
## Library & Tooling Updates
72
107
73
108
## Popular Workgroup Issues in Github
0 commit comments