N
jsnesAI
Suivi des versions et de l'avancement
← Émulateur

Avancement de jsnesAI

Version 1.2.5r — fork JavaScript de jsnes orienté compatibilité des mappers. Dernière mise à jour : 20 octobre 2026.

VERSION
1.2.5r
package.json
TESTS
346
verts (1 ignoré sans BIOS)
MAPPERS
49
numéros reconnus
BUILD
OK
dist/jsnes.min.js

État des chantiers

ChantierÉtatDétail
Mapper 19 (Namco 163) TERMINÉ Le numéro 19 s'appelait « Namcot 106 », mais cette puce n'a jamais été trouvée sur une carte : les cartes portent une Namco 163. La carte avait été implémentée avec une carte de registres entièrement fausse (les registres à $F000-$F007 au lieu de $E000, $E800, $F000 et $F800), si bien que Namco Classic II partait dans un JMP $FFFF dès le reset. Maintenant : trois fenêtres PRG de 8 Ko et le dernier banc fixe à $E000, huit fenêtres CHR de 1 Ko, la RAM de la puce affichable dans les tables de motifs, le choix de la page de nametable pour chacune des quatre zones d'écran, la RAM externe de $6000-$7FFF avec sa protection d'écriture, l'IRQ en cycles CPU et le son de la puce (trois canaux, table d'onde de 4 bits dans les 128 octets de la puce). 11 tests dédiés ; les douze jeux mapper 19 de la collection démarrent, dont Namco Classic II qui va jusqu'à son écran de titres.
Mappers 21 et 22 (Konami VRC4 / VRC2) TERMINÉ Le VRC4 (numéro 21, câblages VRC4a et VRC4c) et le VRC2a (numéro 22) partagent le même plan de registres ; ce qui change, c'est le câblage des lignes d'adresse qui choisissent le registre et la présence d'une IRQ. Le décodeur répond aux deux câblages du VRC4 (A1/A2 pour le VRC4a, A6/A7 pour le VRC4c), qui ne se recouvrent pas. Deux fenêtres PRG de 8 Ko avec les deux derniers bancs fixes, huit fenêtres CHR de 1 Ko (numéro de banque divisé par deux sur le VRC2a), miroir complet, IRQ 16 bits en cycles CPU sur le VRC4 seul, verrou microwire d'un bit à $6000 sur le VRC2. 19 tests dédiés ; validé sur Ganbare Goemon Gaiden 2 (VRC4c), Wai Wai World 2 (VRC4a) et TwinBee 3 (VRC2a).
Mappers 153 et 159 (Bandai FCG) PARTIEL Le numéro 153 ajoute au FCG 8 Ko de WRAM à pile, du CHR-RAM, un mirroring sur batterie et l'IRQ LZ93D50 : le code est en place et testé, mais Famicom Jump II ne démarre pas encore. Le numéro 159 remplace l'EEPROM 24C02 par une X24C01 de 128 octets en little-endian ; Magical Taruruuto-kun 1 et 2 démarrent et affichent leur générique. Ces deux jeux sont annoncés mapper 16 dans leur en-tête iNES, il faut les re-marquer pour les tester.
Asterix : couleurs et PAL automatique TERMINÉ La table de couleurs héritée de vNES est rangée en BGR alors que la PPU la lit en RGB : le tampon d'image sortait avec le rouge et le bleu inversés. La page échangeait ensuite ce tampon à l'envers en l'écrivant dans le canvas, si bien que les deux erreurs s'annulaient et que le jeu avait l'air correct — mais tous les outils qui lisent le tampon directement (captures, tests) voyaient les mauvaises couleurs. La palette est convertie à la source, la page écrit maintenant le tampon en 0xAABBGGRR, et les trois bits d'emphase du PPU sont enfin appliqués aux deux bonnes canaux. Asterix (E) est aussi une cartouche PAL : son en-tête NES 2.0 — ou le CRC du PRG pour les vieux dumps iNES — le déclare, et la frame passe à 312 lignes sans que le joueur ait à activer quoi que ce soit ; la boucle d'affichage cadence alors 50 images par seconde.
Mapper 16 (Bandai FCG / LZ93D50) TERMINÉ Deux ASIC sous un même numéro iNES. PRG de 16 Ko à $8000 avec le dernier banc fixe à $C000, huit fenêtres CHR de 1 Ko, miroir complet. Registres dans $6000-$7FFF (FCG-1/2, compteur d'IRQ direct) ou $8000-$FFFF (LZ93D50, compteur à verrou), IRQ 16 bits en cycles CPU maintenue jusqu'à l'acquittement par $A. EEPROM série 24C02 de 256 octets (pages de 8) modélisée au niveau I2C sur $800D : SCL bit 5, SDA bit 6, sortie sur le bit 4 des lectures $6000-$7FFF, avec sauvegarde batterie. 12 tests dédiés.
Mapper 20 (Famicom Disk System) PARTIEL Le FDS n'est pas un circuit de banques mais un lecteur : 32 Ko de RAM à $6000-$DFFF, BIOS 8 Ko à $E000, registres $4020-$4033, IRQ timer, et un lecteur qui reconstruit les blocs, les marques et les CRC d'une face. Les images .fds (avec ou sans en-tête) se chargent, se lisent, s'écrivent et s'exportent ; la BIOS, protégée, est fournie par l'utilisateur. 19 tests dédiés, dont un démarrage réel de la BIOS quand un dump est présent. Audio d'expansion $4040-$4098 encore absent, comme pour le MMC5.
Mapper 37 (PAL-ZZ, triple cart Nintendo) TERMINÉ Trois jeux MMC3 sur une seule cartouche, isolés par un registre externe $6000-$7FFF : Q2 = PRG/CHR A17, Q0·Q1 forcent A16 haut. Implémenté comme une traduction par-dessus le MMC3 (ses tables et ses fenêtres câblées restent intactes), avec le verrou piloté par $A001 bit 1. 13 tests dédiés.
Mapper 47 (NES-QJ, V'Ball + World Cup) TERMINÉ Même montage que le 37 en plus simple : un bit de sélection de bloc dans $6000-$7FFF, qui devient PRG/CHR A17 sans forcer A16 (des blocs de 128 Ko, donc). Même verrou $A001 bit 1. 10 tests dédiés.
Mapper 205 (JC-016-2, multicarts 15-in-1 / 3-in-1) TERMINÉ MMC3 plus un registre de bloc de 2 bits dans $6000-$7FFF : quatre blocs, dont deux de 256 Ko (où l'A17 du MMC3 sert encore) et deux de 128 Ko. Transcription directe de la table AND/OR des notes NESdev, recoupée avec le RTL MiSTer. 13 tests dédiés.
VRC6 (mappers 24 / 26) TERMINÉ Réécrit selon la doc NESdev : banking PRG/CHR, miroir, IRQ compteur $F000, décodage $F003, swap A0/A1 du mapper 26. Akumajou Densetsu (J) démarre et s'affiche correctement.
Audio d'expansion VRC6 TERMINÉ Deux canaux impulsion + dent de scie, conformes au matériel (horloges 16/14, accumulateur). Écritures $9000-$B002 vérifiées sur cartouche réelle.
MMC5 (mapper 5) — fluidité TERMINÉ Cause : la carte garde deux jeux de registres CHR (sprites $5120-$5127, fond $5128-$512B) et l'ancien code redécodait 8 Ko de CHR à chaque bascule, soit 462×/frame et 1 863 re-rendus partiels par frame. Chaque jeu est maintenant décodé une fois dans sa propre vue et la bascule n'est plus qu'un échange de pointeur. CV3 (U) : 285-325 fps, Gemfire : ~317 fps (contre 43-55 avant).
MMC5 — son d'expansion À FAIRE Les canaux $5000-$5015 ne sont branchés sur rien. Vérifié : Castlevania III (U/E) ne les utilise pas (1 écriture d'init), mais d'autres jeux Koei oui. Le son standard du mapper 5 arrive bien au mélangeur : 718 805 échantillons sur 900 frames, 99,8 % non nuls.
MMC5 — attributs étendus À FAIRE Le mode ExRAM 1 (une couleur par tuile) n'est pas modélisé. Nécessaire pour Gemfire et les titres Koei.
Astérix (E) — affichage NON CORRIGÉ Voir la section bugs ci-dessous.
Punch-Out — public/ring TERMINÉ Verrou CHR du MMC2 rappelé par le PPU à chaque accès de motif, avec l'adresse exacte, et cache de tuiles invalidé par ligne de balayage. Comparé à FCEUmm : public et tapis identiques. Détails ci-dessous.
Ports manettes ($4016/$4017) TERMINÉ Protocole du 4021 aligné sur le matériel : le strobe maintenu haut recharge le registre (chaque lecture renvoie l'état de A sans avancer), et après le 8e bit une manette officielle renvoie 1 indéfiniment (open bus $40 compris, donc $41) au lieu de 0 puis d'un bouclage à 24 lectures. D3/D4 du port 2 ne sont plus pilotés quand aucun Zapper n'est branché. Le Port Test Controller NES-INP-01 (jig d'usine du cartouche « Port Test ») est émulé en option. 10 tests dédiés.
Rangement du dépôt TERMINÉ 48 scripts de diagnostic déplacés à la racine vers tools/, chemins relatifs réécrits, index dans tools/README.md.

Bugs d'affichage connus

Astérix (E) — non corrigé (blocage préexistant)

Punch-Out — corrigé

Punch-Out — ancien état (pour mémoire)

Mappers reconnus

Chaque mapper vit dans son propre fichier et n'est chargé qu'au moment où une ROM le déclare. Un numéro inconnu retombe sur NROM plutôt que de refuser de démarrer.

→ Voir les 256 numéros de mappers NES, un par un (désignation, exemples de jeux, état de l'émulation dans jsnesAI).

0 NROM · 1 MMC1 · 2 UxROM · 3 CNROM · 4 MMC3 · 5 MMC5 · 6 FFE F4xxx · 7 AxROM · 8 MROM · 9 MMC2 · 10 MMC4 · 11 Color Dreams · 12 MMC6 · 13 CPROM · 14 SL-1632 · 15 Multicart · 16 Bandai FCG / LZ93D50 · 19 Namco 163 · 20 Famicom Disk System · 21 VRC4a / VRC4c · 22 VRC2a · 24/26 VRC6 · 25 VRC4 · 34 BNROM · 37 PAL-ZZ (multicart) · 38 PCI556 · 47 NES-QJ (multicart) · 65 Irem H-3001 · 66 GxROM · 69 Sunsoft FME-7 · 71 Codemasters · 79 NINA-03/06 · 85 VRC7 · 90 J.Y. Company · 91 Shenzhen JY · 94 UN1ROM · 118 TxSROM · 119 TQROM · 140/141 Jaleco JF-14 · 153 Bandai FCG + WRAM · 159 Bandai FCG + X24C01 · 180 UNROM · 193 → 11 · 205 JC-016-2 (multicart) · 228 Action 52 · 240 Jing Ke · 241 BxROM

Non couverts, rencontrés dans la collection : 18, 23, 32, 33, 40, 41, 60, 64, 67.

Historique