46 comments

[ 3.0 ms ] story [ 91.3 ms ] thread
There are a few broken images there; could those be fixed?
Maybe someone can reverse engineer the webpage and fix them?
I am an html expert. I can help!
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.
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 :)
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.

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?
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

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

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.
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.
(comment deleted)
I just changed the graphics from webp to gif which should address this problem!
(comment deleted)
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.

It's a challenge, but it's an uninteresting one.
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.
(comment deleted)
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.
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

(comment deleted)
Why release a custom patching tool instead of a standard IPS rom patch?
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.
amazing stuff! This is what hacking is about
You did a great service for Humanity! Game is now much much better to play.
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 =)

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!