D'abord pour ceux qui veulent se renseigner sur le GB, j'ai publié
http://www.boogersoft.com/projects/tigb/gbspec.txt (c'est presque le 99% des informations dont je me suis servi pour écrire l'émulateur, mais c'est pas un document énorme, donc lissez-le)
Bon, je pense que ce que vous voulez faire est, pour pas dire imposible, très très très dur à faire. En voilà quelques raisons qui me vienent à l'esprit:
- C'est pas gateau de séparer le code du data
- Le self modifying code va poser des gros problèmes, et dans le GB les jeux s'en servent pour faire du DMA (puisque lorsque l'on fait du DMA seule la HIGH RAM est accèssible, donc ils copient la fonciton qui fait le DMA dans la HIGH RAM puis ils sautent)
- Les jeux n'écrivent jamais sur l'écran (car ceci n'est pas *directement* posible). L'écran du GB travaille en TILES et TILE TABLEs, et celles-ci sont dans des endroits de la RAM totalement différents (lissez la section VIDEO de gbspec.txt).
- Le z80 utilise le régristre A (Acummulateur) presque pour tout faire vu que c'est le seul régristre que l'on peut utiliser pour lire/écrire dans la RAM et pour faire certaines opérations mathematiques, et ce serait difficile de détecter ce genre de trucs et les optimiser.
- Pour emmerder encore les choses: le 68K et le Z80 travaillent différament dans la mémoire (little endian vs big endian), et l'instruction move du 68K détruit les flags (alors que l'instruction ld du Z80 non).
Cela dit, on peut conclure que, même si on y arrivait, les jeux prendraient une place énorme en RAM, et on devrait continuer à faire tous les checks et sauvegarde de flags que fait déjà mon emu. Toutefois, je laisse le débat ouvert au cas où quelqu'un veut me contrdire. Mais lissez gbspec.txt, comme ça on pourra parler des détails.
Je vais faire quelques test, mais je pense que le HLE devrait ammener des gains de vitesse considérables avec peu de travail de traduction. On verra bien ce que ça donne.