the system isn't really "picking" between timer0 values. here's how it works: timer0 is a fast timer that sits at 0x04000100 and it just counts from 0-65535 over and over. based on a control byte next to it(4000102), it runs at 1 of 4 different speeds. If you check the memory, the control byte is C1, which is F/64 for timer speed.(F = 16.78 mHz, the DS clock speed) 16.78mHz/64 == 262187 Hz, so 262.187 kHz meaning that it's doing 262187 cycles of 0-65535 per frame(i think, possibly per second?). anyway, that said, it's a very fast timer and the game is grabbing it at a given point in its advancement and using the value at that point as an encryption variable. it seems that something causes the number grabbed to not always be the same, causes the DS to grab the value a small fraction of a second later. i personally think it's firmware-related, though there isn't enough data to say for sure.