bsnes/higan a d'autres problèmes que l'emulation au cycle prêt (perso c'est interface qui est dur a digérer); et les émulateurs (S)NES qui veulent supporter les jeux sans hacks sont tous au cycles prêt. (et oui il y a un émulateur au transistor pour la NES, mais la pour le coup l'intérêt hors s'amuser est tres limité par rapport au emu qui font au cycle

)
Et si snes9x et meme zsnes, chacune des parties sont cadencé par rapport aux autres, meme si par manque de documentation a l'époque, certaines parties ne sont pas émulé parfaitement.
En oubliant le son qui est suffisamment indépendant du CPU/GPU (pour la SNES), le GPU est synchronisé avec le CPU parce qu'ils partagent la meme horloge, et si tu ne fait pas suffisamment précis au cycle, tu va avoir une large partie de la videdteque qui ne marchera pas correctement sans appliquer des patches grossiers, et ce que ce faisait pas mal d'émulateurs dans le temps.
Exemple pour avec la NES, Battletoad est un parfait exemple de ce qui se passe quand les choses ne sont pas faites correctement:
et pourquoi devoir faire au cycle prêt? simple, parce que sur ce genre de machines, les jeux sont fait en comptant le nombre de cycles, et ca compte aussi pour la Jag de par l'interaction entre lTom et Jerry et le 68k plus le fait que pour les deux DSP, le code est fait au cycle prêt pour les boucles critiques.
La N64, PS1 & co, les emulateurs ne font pas du cycle parce que ces systèmes, était suffisamment co,plexe pour que les dev ne faisant plus (ou du moins plus autant) des choses comme le comptage de cycle etc, et comme il y avait des libs fournies par Sony/Nintendo, qui était dans la majorité des cas utilisée telle que le HLE suffit parfaitement pour meuler les dit jeux.
Et dans le cas de "l'emulateur" jag dont il est question, je suis a peu prêt sur qu'il utilise du HLE et recompilations statique du code d'origine, ce qui en fait pas vraiment un émulateur.
Mon émulateur NES qui est tres loin d'être parfait, (et ce n'est pas la bonne façon de faire) je fait tourner le CPU X cycles correspondant a un scanline, puis je fait le rendu de la dite scanline, etc...
la bonne façon de faire c'est d'avoir une boucle qui va tourner a un multiple de l'horloge principale, au mieux a la vitesse de celle ci, au pire, tous les 2, 3 ou 4 cycles, puis on execute le CPU, GPU PPU etc pour le nombre de cycles de la boucle en cours.
Certains émulateurs font des boucle pour que ca corresponde a un cycle du CPU (sachant que le PPU tourne plus vite que le CPU) donc on va demander au CPU de faire 1 cycle, le PPU X cycles (j'ai oublié le rapport entre les deux).