1
0
mirror of https://gitlab.com/free_zed/free_zed.gitlab.io.git synced 2024-06-09 11:52:31 +00:00
free_zed.gitlab.io/content/afpy-lyon-2023-09-python-emulateur-nes.md
2023-09-22 18:40:38 +02:00

2.2 KiB
Raw Blame History

Title: Comment programmer un émulateur NES ? Date: 2023-09-20 18:37 Summary: SUMMARY Category: Bloc-notes Tags: afpy, talk, lyon, dev, python, TAG1, TAG2 Status: Draft

Par Guillaumme Roche, organisé par [CourtBouillon][cbouillon], [Genymobile][stella] et l'AFPy. (via [Meetup][meetup]).

Support: sur [``][support]

Comment programmer un émulateur NES ?

Pour ce meetup de rentrée, Guillaume nous parle démulation, de simulation, de virtualisation… et dun 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 sappliquer 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
  • Précision de l'émulation
    • partit pris on aurait pu vouloir ciler la perf
  • Tests

https://gitlab.com/guillaumeroche/Nestor [cbouillon]: https://www.courtbouillon.org/ [meetup]: https://www.meetup.com/python-afpy-lyon/events/295796925/ [genymobile]: https://www.genymobile.com/ [support]: https://