3DS Support - Part 3 - Unreliability

Although finding a shiny Poipole went well, sprite matching against a 3D model is not very reliable. The drastic difference between purple and white is easy enough to detect but a more subtle difference, like that of Type: Null, provides more of a challenge. Any small timing difference can result in the model being in a different position and so not matching a reference image reliably so a new approach was needed. Timing differences are unavoidable, as both the control and video are sent over a network connection.

I’d tell a UDP joke… But I’m not sure if anyone would get it.

In order to display the last two encounters, a copy of the last video frame for an encounter is stored. This gives another reference to compare against, but again due to timing differences there might be small differences due to movement, so this doesn’t provide a reliable test for shininess.

The initial process for searching for Type: Null was just using the screen when it was given as a gift, asking for a nickname. Reaching the end of the conversation to check the party screen takes more than an extra 30 seconds so adds a lot of time to each soft reset.

However, if the difference from the previous frame is zero, it can be known for sure that this soft reset did not result in a shiny. This can be used to immediately soft reset and speed up each loop. Then, if there are differences, the A button can be mashed for enough time to get through the conversation and check the party screen to make sure.

Type: Null State Machine

Type: Null State Machine


Last modified on 2026-01-17