You'd need to influence the vblank to occur at a different time while the game code is executing. Emulators don't all behave the same way (timing/efficiency). Different inputs on prior frames may cause extra/less code to be executed, altering the timing in which the vblank interrupt occurs relative to the PIDIV loop code.
Think of it as two parallel processes; vblank and game-loop. vblank executes X frames per second, and the game loop gets paused whenever vblank is triggered, and a rand call happens.
There is no reliable advice besides input spam on prior frames, to shift when a vblank happens. Nobody has profiled the game loop to show what player inputs can modify the assembly instructions executed per frame, or estimating when a vblank will occur based on the game loop code.