I guess this is just an increment for
Bond's post on how to EntralinkRNG on an Emulator , but since I understood next to nothing there (and I'm pretty sure I'm not the only one) I decided to sit down and figure it out properly, and here is what I came up with, I hope it will help someone.
First I used RNGreporter to search for a 31all seed, it returned the same seed Bond used - 7e2345bb - but on delay 4441 and frame 28.
Then I got my RAM watch to show the following address:
023ffc3c - for the current delay in HEX
I figured out that for me, desmu advances 307 delays from pressing A on the "warped to Entralink" to the reseed.
Using the computer's calculator on programmer mode, I converted 4441 to HEX so I knew which delay I wound see on the emulator's RAM watch: 1159.
I stared the game, went to the "warped to the Entranlink" screen and let the delays roll, untill 1000ish then I carefully paused and un-paused untill I reached delay 1159. This is easier done by using the mouse to pause and the keyboard to unpause or vice-versa.
With the game paused on 1159, I changed the computer's time to about 10 seconds before one of the times given out by RNGreporter's "Seed to Time". For example:
chosen RNGrep.'s output time: 2012/02/29 17:54:14
changed computer time to 2012/02/29 17:54:
04
Then I waited out until it was 17:54:14 and, as fast as I could, unpaused the game and pressed A. After the warping scene was over, I captured a pokemon and did an IV search on the "seed to time" window for the chosen date with the following parameters:
Delays: -0, +999 (overkill, but it's ok)
Seconds: -0, +30 (also overkill)
Frame: 21min, 50max
Of course the seconds were off, but I wasn't interested in them, I was interested in the delay: 4748.
4748 - 4441 = 307
Doing this a couple more times got me consistent results. So the warping takes 307 frames - or at least it does for me, REGARDLESS of how many seconds the warping took to happen (weird, might me an emulator thing), I don't know if it might change based on the hardware/software.
Ok, so warping takes 307 delays. 4441 - 307 = 4134 and this number in HEX is 1026.
So once more: start the game go to the "warped to Entralink" screen and pause the game on delay 1026. Unpause and press A as fast as possible and let the delay run until 1159 and pause it again. If you save state here and pause-unpause just enough for one delay to go by, the initial seed (on address 0225354) should change when the delay turns to 115A.
With the warping scene about to be over and the game paused on delay 1159, all that is left to do is change the date to - in this example - 2012/02/29 17:54:
04 and unpause the game on the 14th second (2012/02/29 17:54:14) and the reseed should happen as wanted.
All that is left to do is save state, catch a pokemon and confirm the successful reseed with an IV search, load save state and advance the frames as needed.