Nouvelle version pour ce début d'année de ce très bon émulateur NES. Voici les nouveautés :
- Ajustement du comportement d'écriture du registre $2004 lors du rendu.
Mise à jour APU :
- Les valeurs du compteur de longueur correspondent maintenant au silicium, ajustées par 1 dans le code.
- NoiseFreq, PCMFreq, et FrameCycles correspondent maintenant au silicium, en comptant les cycles APU.
- Square0, Square1, Noise, DPCM, et Frame respectent maintenant la phase d'horloge de l'APU.
- Les événements DPCM Addr+Ctr Reload/Increment sont maintenant retardés correctement.
- La phase de l'horloge de l'APU est maintenant incrémentée après les E/S du CPU, et non avant.
Mise à jour CPU :
- Déplacement de la logique DMA dans sa propre fonction
- Renommage de MemGet -> MemGetCPU, création de "MemGetDMA" pour éliminer la récursion dans la logique DMA.
- Correction du timing du DMA pour émuler correctement le DMA PCM interrompant le DMA Sprite.
- Ajoutr des macros "MemGetData" et "MemGetMiss" qui pointent vers MemGetCPU.
- Implémentation des instructions SYA/SHY et SXA/SHX.
Mise à jour PPU :
- Retarde d'un pixel la mise en place du sprite 0 dans le registre $2002 pour satisfaire aux tests de timing.
Mise à jour du format des sauvegardes d'états :
- Version 1004
- Les cycles pour Square0/Square1/Noise/DPCM/Frame sont maintenant en cycles APU.
- Le DPCM suit maintenant les flags de réinitialisation et d'incrémentation.
- Le compteur de trames suit maintenant les drapeaux Quarter/Half/IRQ/Zero.
- L'APU stocke maintenant les 8 bits inférieurs de son horloge interne pour la phase de suivi.
Les ROMs de test suivantes passent maintenant :
- instr_test_v5 / 07-abs_xy
- pal_apu_tests / 06-len-timing-mode1
- ppu_sprite_hit / 09-timing
- ppu_sprite_hit / 10-timing_order
- sprdma_et_dmc_dma + sprdma_et_dmc_dma_512