Bonjour à tous,
Je me lance dans la programmation d'un émulateur de console NES en ASM avec NASM. J'avais déja fait un émulateur NES en VB il y a quelques années mais je n'avais pas eu le temps de le finir.
Après avoir fait des .COM en 16 bits, je me lance maintenant dans les .EXE avec les fichiers .OBJ. Je rencontre malheureusement pas mal de problemes et je me pose aussi pas mal de questions :
1 - Je n'arrive plus à accéder au segment BSS, à part si je fais pointer DS sur ce segment ! faut-il toujours faire pointer DS vers un segment pour accéder aux données qu'il contient ?
2 - J'ouvre la ROM (le fichier NES) et je parcours les opcodes comme le ferait le proc 6502. Le problème c'est que pour executer une instruction du 6502, je stocke d'abord l'opcode dans AL et j'effectue 256 fois CMP pour tester la valeur de AL. J'ai alors pensé à une sorte de table de vecteurs, par ex: opcode 56 = 56 * 100 = 5600 = adresse de la fonction qui émule l'instruction numéro 56. Mais je ne sais pas du tout si c'est possible ?
3 - J'ai crée une sorte de mémoire de 64k qui est une réplique de la mémoire de la NES, le problème c'est que je conserve les même adresse que sur la machine originale, j'ai entendu parler d'une instruction sur NASM pour redéfinir l'adresse d'un segment ?
4 - Et pour finir, j'ai trouvé les sources ASM d'un émulateur de MAC qui tourne avec un 65c02 sur le web et ca ma déja bien aidé mais connaissez vous des sources d'émulateurs NES programmé en ASM ?
Merci d'avoir pris le temps de lire ce post. @+
In tartiflette we trust !