Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Reverse-Engineering NES Tetris to Add Hard Drop (gridbugs.org)
213 points by stevebox on March 21, 2021 | hide | past | favorite | 41 comments


Why release a custom patching tool instead of a standard IPS rom patch?


Not as fun :)

Besides, you just need the old and new roms to generate an IPS, eg. https://www.marcrobledo.com/RomPatcher.js/

And someone has already requested this: https://github.com/stevebob/mos6502/issues/1


I honestly did not know that IPS existed until just now! I've added a link to download the patch.


There's a whole community out there around this stuff that you might be interested in reading about. Check out romhacking.net.


Really liked the description of the thought processes behind finding the relevant bits of code through memory inspection in this write-up.


Delightful writeup. Two bits that stood out for me:

- The incremental nature of exploration of this type. Often, the results are shown without the messy bits like "then I made it just teleport the piece to a specific spot to test". That matches how many of us operate, I'm sure.

- The use of a number of varied tools from the toolbox. Falling back to the trusty "sort | uniq" after talking about Rust and emulators with built-in memory peeking functionality? Nice!


I have also added hard drop to NES Tetris. Heh. What are the odds?

This hack strays further away from vanilla NES Tetris though and contains further speed, control and graphics modifications; and lacks that fancy looking ghost piece.

https://www.romhacking.net/hacks/4973/

My approach of hard drop implementation was different, honestly i just looped the piece down routine until it hit the ground. His approach breaks the scoring system though, mine doesn't =p

Anyway, this was a great article! Nice rundown of the NES architecture.


Glad you enjoyed the article! Is there a reference somewhere for how scoring should behave with respect to hard drop? I'm interested in fixing it.


When a piece hits the ground, a point is added for every line you were holding the down button. So, you could probably just take the height difference of the ghost piece and the real piece and add it to the score. Remember to set carry when subtracting =p

I'll bet by directly moving the piece coordinates you bypassed this.

I really like your ghost piece =)


Incredible. Pair this with game genie faster auto shift and I've got myself the ideal Tetris. My only request would be to have the option to disable ghost effect. Thanks so much for making this!

https://igarageband.org/garageband-for-pc-windows-download/


You did a great service for Humanity! Game is now much much better to play.


There are a few broken images there; could those be fixed?


The animations use the WebP image format. They work for me in Google Chrome on Android, but some browsers may struggle to display them.


Particularly in the context of low-resolution pixelated graphics using a limited color palette, WebP seems a strictly inferior choice to the universally-supported GIF.


I mean all the licensing and incompatibility questions aside, one very cool thing about these newer formats is they (intentionally? unintentionally?) reduce our carbon footprint a little bit, by trying to save delivery costs.

It would be pretty neat if my mac could make a thumbnail of a webp on my desktop, though. I mean without installing software, overriding security policies, or turning it into a developer laptop.


As a concrete comparison, I downloaded the first webp figure on the page, "soft-drop-animation. The webp is 63,250 bytes.

I used imagemagick to convert this file into a gif, resulting in a 119,265 byte file. I then ran the result through gifsicle[0] with maximum compression (-O3) to losslessly optimize it, producing a gif that is 29,711 bytes; less than half of the size of the original webp.

As I noted higher on the comment chain, this usage scenario is particularly favorable to the gif format, while webp might come out ahead for photographic sources.

[0] https://www.lcdf.org/gifsicle/man.html


Is there a good data set on energy requirements for transmission versus compression/decompression of data? Is it really that much in favor of compressed data?



If I follow, you are suggesting that web users protest a format that has been in the public domain for 17 years by instead using a format which has existed for less than 3, and in the process render content inaccessible to anyone not using a bleeding-edge browser?


I suggest we burn all gifs. Whether that leads to what you said is for you and others to decide :)


Maybe someone can reverse engineer the webpage and fix them?


I am an html expert. I can help!


I just changed the graphics from webp to gif which should address this problem!


Thank you!


What browser are you using? Most support animated WebP so you must be using something old?


Safari on macOS doesn't support animated WebP [0] except for Big Sur and later, which is pretty recent.

[0] https://caniuse.com/webp


Thanks for sharing this website, it's insane how far behind the curve Safari is on... well, every technology.


I have asked a few times at work if we can drop safari support because it’s blocking so many new features. No luck so far.


Good luck.


According to that page, Safari for Mac OS is at least one step behind every major browser except IE. I think it's fair to ask whether the images are broken or the Safari release process is broken.


amazing stuff! This is what hacking is about


The show piece at the bottom is kinda cheating, right? One of Tetris challenge is to visualize where the piece will land. Nice project never the less.


Depends on what rule book you're using :) Ghost pieces default to `on` in Guideline Tetris.


They also mandate EasySpin/Infinity, which breaks the game, so I basically don’t trust anything the say. >:)


It can break Marathon, but infinity spins are not a great strategy for Ultra, Sprint, or 1:1 multiplayer.


I agree, but I play Marathon, and it sucks. :(

Tetris Effect would have been so much better if EasySpin could be turned off.


I think that today we're just admiring the custom paint job on an old commuter car, and not the design of the car itself.


No doubt about that. As I said, it is a nice project. My comment about "cheating" was directed to the player not to the designer of the project. I had the physical game [1] as a child and I don't remember it having the ghost piece.

1 - https://www.google.com/search?q=tetris+original+console&bih=...


negative. modern tetris has moved way beyond NES' system. there have been many improvements to the game, like a holding piece, hard drop, the ghost piece you mentioned, advanced maneuvers like t-spins, and most interesting of all (to me) is the improved piece selection [1]. you're probably aware of the tall block meme -- when you need it, it never shows up! well that's been more or less solved.

there's also interesting strategies/techniques like 4-wide [2]. there's a whole rabbit hole to follow...

if you want to try out modern tetris, check out jstris [3]. the skill level people have attained is unbelievable [4], and can't be replicated on NES tetris.

[1] https://simon.lc/the-history-of-tetris-randomizers

[2] https://harddrop.com/wiki/Combo_Setups

[3] https://jstris.jezevec10.com/

[4] https://www.youtube.com/watch?v=y3QmU79Vli8


It's a challenge, but it's an uninteresting one.


I have an official Tetris game. \You can toggle on the show/don't show, though i have only managed to do so by accident.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: