Yeah as expected, I never got around to building the true-RNG-fier emulator plugin I got excited about in that thread. It wouldn’t be hard, but I later realized also wouldn’t be particularly interesting or even understandable without building an AI to play a videogame alongside it, and that’s a much larger project.
I heard later that there is a bot scene already exclusively for Pokemon. I gather that to get the game PRNG to work “as intended”, the Pokemon bots themselves use a seed to wait a random amount of time at the beginning of the run, and also deliberately avoid human-infeasible strategies. This is subtly different from my idea of injecting true RNG directly into the game RAM (which would allow bots to compete without artificial restraints, and e.g. would be more amenable to neural net style approaches).
I am very interested in figuring out ways to determine what kind of randomization any given game might be using - particularly in wave race 64, where the minor water undulation is random and no one understands the randomization process
I think for games where the RNG is very well understood, people started from a RAM examination tool and looked for a word that changes very rapidly and chaotically. From there you look at the instructions that cause a write to that address (to determine what events cause the RNG to advance) and read from it (to see how it’s used and e.g. if it’s combined or restricted for game balance/pacing reasons). This is easier on earlier consoles with less RAM and simpler code though, and with emulators that support advanced debugging features like RAM-access breakpoints.
A cool visualization for this kind of thing are these RAM artprints. For example, in this one I suspect the RNG counter is the two messy-looking bytes on the 7th row from the top: