Hello, everyone. I am a real-time speedrunner of this game with
the current fastest time on record. It just so happens that the game is completely luck-manipulable in real-time. However, the route through the game I developed expanded upon a prior runner's work and was made through trial-and-error without any real idea of what was optimal.
My efforts to re-route the game for real-time have also been made through trial-and-error without any real idea of how card order in each duel is generated. Here is what I know:
-The RNG state is changed by randomized (read: not scripted) NPC movement.
-The RNG state is changed by winning ante cards.
-The RNG state is changed by destroying monsters in battle.
-Cards are stored in memory by their card numbers, from 1-900.
-The order of the cards in your deck (even sorting and how you sort) matters. Removing one card from the deck moves other cards below it up one slot.
-The RNG pulls cards from specific slots of both players' decks.
-I have found
several locations in memory where card numbers are loaded.
The one thing I cannot find anywhere is how the game determines the order the cards are pulled from the deck. I'm not entirely sure I know exactly what I am looking for in this regard because I have been looking for where the order is loaded into memory and I feel like that's the wrong approach. I have been flying completely blind here and am now out of answers.
What I have been doing, currently, is cross-referencing the cards in the deck with the order of the cards in each duel to determine the deck slots being pulled. This only works if I don't have duplicates in the deck, but having duplicates is necessary to get through the game with minimal deck edits... unless Exodia gets involved, which cannot be used right away because of the way the Deck Cost system works. This makes it very difficult to replicate the proper RNG state from duel to duel.
Any assistance anyone can offer with this game is greatly appreciated.