Comment programmer un émulateur NES ?
dans Bloc-notesPar Guillaume Roche 1,2 organisé par CourtBouillon, Genymobile et l'AFPy (via Meetup).
Pour ce meetup de rentrée, Guillaume nous parle d’émulation, de simulation, de virtualisation… et d’un peu de C++ !
Ces différents concepts permettent d'exécuter des programmes hors du cadre matériel et logiciel pour lequel ils ont été conçu. Si le cas d'usage le plus populaire aujourd'hui est le rétro-gaming, Il en existe une multitude. Il est d'ailleurs probable que vous utilisiez au quotidien ces technologies.
Passionné par ces aspects, je me suis lancé le défi d'implémenter un émulateur d'une console NES. Pourquoi la NES ? C'est une machine relativement simple, extrêmement bien documentée, et de nombreux émulateurs open-source existants peuvent nous aider.
Je vous propose de découvrir avec moi une architecture possible d'un émulateur, et comment en implémenter un en nous focalisant sur le CPU, la mémoire, et les fameuses ROMs. Nous évoquerons également comment rendre notre émulateur le plus fidèle possible. Enfin, nous verrons quelle stratégie de tests peuvent s’appliquer sur des projets d'émulateurs.
Notes personnelles
- Définitions
- Simulation? Réimplémenter le comportent d'un OS (WINE)
- Émulation? Réimplémenter le hardware
- Virtualisation? Émulation avec accès direct au hardware
- implementation
- NES CPU : MOS 6502
- les registres: un objet
- Initialisation CPU
- types d'instruction
- le code
C++
de cet émulateur :guillaumeroche/Nestor
- Précision de l'émulation
- partit pris on aurait pu vouloir ciler la perf
- ressources
- Nintendo Entertainment System Documentation
- NMOS 6502 Opcodes, by John Pickens, Updated by Bruce Clark and by Ed Spittles
- Nesdev Wiki, the source for all your NES programming needs
- [Vidéo]: NES Architecture Explained
- [NES online code tester] : Easy 6502
- [NES online code tester] : 8 bit workshop