JadeNES 0.7 Alpha (version du 23/01/2023)
**************************************************************

I. Introduction

JadeNES est un projet d'émulateur NES rédigé en Visual Basic .NET 2022. Il est le fruit d'une quinzaine d'années d'accumulation de connaissances sur l'émulation, la programmation, ainsi que sur le parsing, et autres règles de programmation.
Il est programmé par un unique programmeur (MrOlaf44), mais est largement inspiré de codes sources d'émulateurs existants, et basé sur des documentations officielles. Même si je n'ai jamais copié une seule ligne, le moteur de rendu actuel est identique à celui de Mercury Project par Mandrix, et à ce titre, il sera probablement recodé plus tard, afin de se démarquer des conventions actuelles.
Ce projet est purement un challenge personnel, ainsi qu'un rêve d'enfant. En effet, étant très fasciné par le fonctionnement des appareils, et la programmation informatique, j'avais pour but de créer le mien à force de connaissances, et surtout à force de maîtriser des outils de programmation. Plein de tentatives ont été effectuées avant que j'ai pu obtenir ce résultat, qui commence à se hisser à la hauteur de mes espérances.

Bien que je sois diplômé technicien supérieur en systèmes et réseaux, le développement n'est pas ma spécialité professionnelle. Je suis plutôt autodidacte en la matière.

II. Prises en charge

Bien entendu, le projet reste à un stade relativement peu avancé, comparé à ce que d'autres émulateurs peuvent proposer. Le CPU est fonctionnel, mais il subsiste encore de curieux dysfonctionnements. Le PPU est quasiment entièrement implémenté, ainsi que la prise en charge de la manette #1 (I/O).
Pour l'instant, le projet ne prend en charge que le mapper #0, ainsi que le VROM, mais aucun son n'est émulé ni émis (pAPU & APU). Cela ne saurait tarder, lorsque l'affichage sera entièrement pris en charge. Pareil pour les MMC dont je prévois l'implémentation (mappers #1, #2, #3, #4 au minimum).
Du coup, il ne peut pour l'instant qu'émuler des démonstrations de ROMs, ou encore afficher des écrans titres de certains jeux commerciaux (comme celui de Pacman).

III. Fonctionnement

JadeNES fait usage d'un buffer Bitmap pour dessiner les graphismes à l'écran. Ce qui signifie qu'il n'y a aucune librairie extérieure nécessaire, hormis le .NET Framework 6.0. L'émulateur n'est donc compatible qu'à partir du système d'exploitation Windows 7. Je vais probablement backporter l'émulateur pour qu'il fonctionne avec d'autres versions comme Windows XP. Le logiciel étant sous licence freeware, vous êtes donc le seul responsable en cas de dysfonctionnement du logiciel, et des conséquences logicielles ou matérielles sur votre machine. Moi et les distributeurs de ce logiciel déclinons toute responsabilité. JadeNES est pour l'instant sous licence freeware, le code source n'est pas encore disponible.

IV. Options

Quelques options sont disponibles avec cet émulateur, comme un débugger, un compteur FPS, prendre une capture d'écran, changer la taille du rendu, gestionnaire de palette, plein-écran, etc. Peut-être d'autres options seront-elles disponibles dans les futures builds, ainsi qu'un meilleur agencement de ces dernières.

V. Remerciements

Je remercie l'équipe de NESDev, pour avoir prodigué leurs précieux conseils, mon ami Ronan, mon grand-frère, et tous ceux qui m'ont soutenu pendant son développement.

VI. Suggestions & Contacts

Même si cet émulateur ne semble pas faire tourner nativement Fortnite, et j'en suis fort désolé, veuillez ne pas m'envoyer de message d'insulte, ou autres remarques sur l'aspect lacunaire de certains aspects de mon projet.
Je suis l'unique programmeur, je fais du mieux que je peux, donc proférer des mauvaises remarques à mon égard ou à l'égard de mon projet ne serait de votre part qu'une démonstration de manque de tact. Cependant, si vous avez des questions ou des suggestions, vous pouvez m'envoyer un mail à: avgardisme@gmail.com

VII. Evolutions par rapport à la v0.6a
- Correction d'un énorme bug dans le canal DMA, les sprites étaient mal affichées à l'écran ;
- Meilleure disposition des sprites durant l'émulation ;
- Palette de la NES optimisée, moins sombre, et plus proche de l'originale, tout en gardant l'esprit du projet ;
- Implémentation de la priorité des sprites (désactivé par défaut, en raison de soucis posés à l'émulation) ;
- Ajout d'une liste des ROMs récemment ouvertes, un peu à l'image de Pretendo. Possibilité de la réinitialiser ;
- Ajout d'un gestionnaire de palettes, afin de pouvoir modifier les couleurs de l'émulation. Il y a un lot de palettes hardcodées dans l'émulateur, correspondant à ces palettes d'émulateurs existants, de créateurs méconnus, ou des palettes purement artistiques ;
- Possibilité d'importer une palette. À noter que quand vous chargez un jeu, la palette en cours d'utilisation est exportée d'emblée sous le nom "j_palette.pal" dans le dossier de l'émulateur ;
- Taille écran x8 (pour écrans 4K sans mise à l'échelle) et x16 (pour écrans 8K) ajoutés ;
- Débugger palette PPU mieux garni (on peut afficher la palette NES entière) ;
- Certaines options de débug ont été retirées cependant ;
- Enregistrement des paramètres dans le fichier j_recent.ini et dans le registre Windows ;
- Ajout d'une boîte de dialogue pour remapper les touches de la NES ;
- Boîte de dialogue "À propos" complètement retravaillée ;
- Meilleure gestion des FPS ;
- Mises à jour diverses de l'interface graphique.

VIII. Palettes intégrées à JadeNES

Afin de pouvoir utiliser l'étalonnage des couleurs qui correspond le mieux à votre configuration, il a été ajouté un gestionnaire de palettes (un peu comme Prétendo également). Il y a une liste de palettes intégrées, mais on peut aussi en charger manuellement dans la mémoire (format PAL requis). JadeNES inclut sa propre palette, ainsi que celles d'autres émulateurs, des palettes expérimentales, ou encore des palettes dites "excentriques" uniquement pour faire joli. Une description pour chaque palette ci-dessous :

- Legacy Jade: Il s'agit de l'ancienne palette de JadeNES, laissée pour des raisons esthétiques. Quelques imprécisions subsistent dans cette version.
- New Jade: Nouvelle palette de l'émulateur, plus claire, et plus proche des vraies couleurs de la NES. Utilisée par défaut.
- FCE Ultra: C'est la palette utilisée par l'émulateur éponyme, couleurs plus pétillantes que ses concurrents.
- Mercury Project: Palette utilisée par l'émulateur Mercury Project v0.02 par Mandrix. Une palette somme toute assez académique.
- Accurate: Palette créée par FirebrandX, issue d'une capture directe par interface vidéo composite. Selon lui elle serait très précise.
- k0rn: Palette créée par l'auteur de NESten, probablement très fidèle à la NES.
- Monovektor: Palette créée par un programmeur indépendant sous le pseudonyme de Monovektor. J'ai trouvé un fichier PNG que j'ai reconverti en palette.
- Wavebeam: Une palette apparemment très proche de celle de la NES, selon les dires.
- Pastel*: Palette excentrique faite par moi, à partir d'une palette existante. Uniquement des couleurs très vives, similaires à de la pastel.
- Posterized*: Palette basée sur Accurate, mais postérisée. Attention les yeux.
- Oceanic*: Palette basée sur New Jade, mais avec des nuances de bleu pour faire penser à un monde aquatique.
- Winter Twilight*: Comme son nom l'indique, les couleurs évoquent un crépuscule hivernal éclairé par des lueurs de réverbères. C'est poétique.
- Fever Dream*: À l'origine, je voulais faire une palette un peu troll, mais finalement ça donne des couleurs style Vaporwave. À voir.
- Cocktail Party*: Couleurs basées sur New Jade, mais avec la chrominance un peu décalée. Les couleurs vont un peu dans tous les sens.
- Super Marion Sisters 2023*: Jeu de mot avec Super Mario Bros... Bref. Dédicace à Marion, en fait les couleurs rappellent celles d'une palette de maquillage. Seules les couleurs vertes sont inchangées.
- Enseñada de Mexico*: Jeu de couleurs évoquant une plage Mexicaine. Dédicace aux Mexicains cette fois-ci. :-)
- Greyscale: Basée sur Accurate, mais modifiée pour afficher un dégradé de gris.
- Monochrome: Palette de 2 couleurs, en noir et blanc. Un procédé de dithering intégré à l'émulateur est appliqué pour rendre les graphismes plus lisibles.

N.B. : Les palettes suivies d'une astérisque (*) sont considérées comme excentriques par l'auteur. Enfin, un peu originales, loufoques, etc.
N.B. 2 : Il me semble que je n'en ai oublié aucune... :-P
N.B. 3 : En tout cas j'espère... Bref, ça commence à faire beaucoup de nota bene.

**************************************************************
Merci de suivre ce projet ! :-)

