How We Solved the Worst Minigame in Zelda's History
Linkus73 HN recommenders · recommended in 3 months, 2020–2024
explainer · intermediate · evergreen · 2020–2024 on HN
Linkus7 explains how a community reverse-engineered The Wind Waker to predict its random number generator and beat the Sploosh Kaboom battleship minigame consistently. It includes d3 animations by Peter Schmidt-Nielsen.
HN recommends it as a rigorous, fun example of reverse engineering a game to predict and conquer its RNG.
Up next
5 mo on HNstring theory lied to us and now science communication is hard
Angela Collier
8 HN recommender · 2023–2026
12 mo on HNSM64 - Watch for Rolling Rocks - 0.5x A Presses (Commentated) [OUTDATED]
pannenkoek2012
13 HN recommender · 2016–2024
12 mo on HNReverse emulating the NES to give it SUPER POWERS!
suckerpinch
12 HN recommender · 2018–2025
10 mo on HNMarI/O - Machine Learning for Video Games
SethBling
10 HN recommender · 2015–2026
9 mo on HNSNES Code Injection -- Flappy Bird in SMW
SethBling
9 HN recommender · 2016–2025
7 mo on HNFIXING the ENTIRE SM64 Source Code (INSANE N64 performance)
Kaze Emanuar
7 HN recommender · 2022–2025
4 mo on HNMyHouse.WAD - Inside Doom's Most Terrifying Mod
Power Pak
4 HN recommender · 2023–2026
5 mo on HNHow lucky is too lucky?: The Minecraft Speedrunning Dream Controversy Explained
Stand-up Maths
5 HN recommender · 2021–2025
4 mo on HN[TAS] Pokémon Yellow - Arbitrary Code Execution
MrWint
4 HN recommender · 2020–2025
3 mo on HNTasBlock at AGDQ 2017: TASBot
TASVideosChannel
3 HN recommender · 2019–2025
3 mo on HNDid Nintendo really forget to Optimize Super Mario 64 ? | MVG
Modern Vintage Gamer
3 HN recommender · 2020–2022
3 mo on HNWalls, Floors, & Ceilings
UncommentatedPannen
3 HN recommender · 2017–2018
5 comments from Hacker News
If you're developing a game, there's a fairly big issue in that many things may be requesting values from, and thus incrementing, the PRNG, and many of them could be indirectly controlled by the user (where they are, where they're looking, etc. ▶ this video is a fun video about reverse-engineering Zelda to predict the randomness in a minigame) As far as the approach, I agree in that I don't understand why 'no code changes' is that important, especially in the context of Python which has a general attitude of consent towards monkeypatching code. Maybe one of the randomness sources was hashing all the source files? :P
The sheer depth of knowledge and analytical ability pannenkoek has is honestly quite amazing. I've become quite spoiled watching their SM64 videos, it's been incredibly hard to find something of similar rigor and production value for other games. The closest I've found so far has been a video on how a group of speed runners were able to conquer RNG for a puzzle in Wind waker[0]. [0]: ▶ this video
Excellent video. I'm impressed the author went to recreate the run frame by frame, and then used those findings to analyze what was happening. Never expected this video to turn into a full on reverse engineering explanation. As a side note, this kind of speed run has become more popular in the recent years for a combination of reasons: - First, it's difficult to improve on the regular world records since they're so optimized (just have a look at Quake Done Quick and its sequels). - Second, the emulators available to the speed running community have evolved. They now include better ways to track what's happening in memory. - Third, the games themselves are understood better (as recently exemplified by the Super Mario 64 full reverse engineering). So it's creating a whole new genre of runs that simply isn't about execution anymore. If you're interested in the topic, you might like the Super Mario World speed run that uses a similar technique ( link ), or the recent work on removing randomness from Wind Waker runs ( ▶ this video ).
That's true. I did think about mentioning this possibility, but decided not to. Another good example of predicting RNG, after a large amount of gameplay, for a non-turn-based game: ▶ this video I think in certain Pokemon games, people figured out how to predict and manipulate random encounters based on an animation in the load screen.
Good point. That approach was in fact used for "Sploosh Kaboom", a RNG minigame in the Windwaker: ▶ this video