Question

À l'avance, je m'excuse pour la mise en temps ouverte et la dissidence générale de cette question, car d'être honnête ma connaissance du sujet est très inégalée et je trouve qu'il est difficile de décrire même mon problème.Je ne voulais vraiment pas poster, mais je suis complètement et complètement coincé.

J'ai commencé un émulateur NES.Il est interprété (donc pas de recoms dynamique).

guichet automatique Il peut charger et mapper des roms (mapper 0 ROM) et exécuter le code init jusqu'à où je dois faire face aux interruptions et au PPU.C'est là que je suis coincé.

Voici un exemple de sortie de mon guichet automatique EMU.L'exécution commence à 8000 et j'ai frappé une boucle infinie à 800a où je ne sais pas comment progresser de là.

8002: LDA #$10    ; read immediate value to set PPU control registers 
8004: STA $2000   ; store value 
8007: LDX #$FF    ; load immediate value into X register 
8009: TXS         ; store X register into stack 
800a: LDA $2002   ; read PPU flags into accumulator (set N flag based on bit 7) 
800d: BPL         ; test N flag, branch to 800a if not positive, (N is set) 
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
etc, etc etc (inf loop)

Donc, ma question est que quelqu'un puisse s'il vous plaît expliquer les bases de 1 itération à travers un rendu de PPU pour moi, y compris des objets tels que le nombre de cycles, les interruptions, etc. (c.-à-d. Dessinez un écran de numérisation entier 240 et déplacez-vous surle suivant).

Était-ce utile?

La solution

Il y a des émulateurs là-bas, avez-vous regardé leurs sources pour la réponse?Habituellement, ceux-ci sont écrits pour la performance et pas très lisibles, mais vous pourriez trouver une tirée pour vous faire aller.Le code attend-il une interruption doit être exécuté et avez-vous exécuté cette interruption?Il se peut que l'interruption modifie l'adresse de retour et permet au programme de continuer?La boucle infinie est-elle un peu dans un registre?ou est-ce une branche inconditionnelle à soi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top