Il y a maintenant presque 3 ans,
Thomas Williamson alias
tswilliamson bouleversait complètement l'univers vidéoludique de ta
Casio Graph 90+E (plus connue en tant que fx-CG50 au-delà des frontières françaises) et des modèles plus anciens
fx-CG10/20 en te sortant
Prizoop, un émulateur de consoles de jeux
Nintendo Game Boy de 1989 et
Game Boy Color de 1998 !
Aujourd'hui accroche-toi bien à ta chaise car
Thomas est de retour avec
NESizm, cette fois-ci un émulateur pour la console de jeux
Nintendo NES de 1985 !
Ne crois pas que ce retour en arrière de quelques années implique une baisse de la qualité des jeux, bien au contraire, car les
Game Boy étaient des consoles de jeux portables alors que la
NES est une console de jeux de salon :
- A la place des 160×144 pixels, tu auras maintenant droit à des jeux en 256×240 pixels de résolution !
- La Game Boy Color de 1989 pouvait afficher 32768 couleurs différentes. Officiellement toutefois, seules 56 couleurs différentes pouvaient être affichées simultanément à l'écran, et de plus dans un mode spécial impliquant nombre de contraintes techniques pour le développeur. En pratique, les affichages de la plupart des jeux Game Boy Color utilisaient les modes inférieurs en 32 ou même 10 couleurs. Ils étaient ainsi paradoxalement assez pauvres en couleurs différentes, avec des rendus pouvant souvent être comparés à des coloriages enfantins.
La Nintendo NES permet quant à elle d'afficher simultanément jusqu'à 52 couleurs différentes choisies parmi 53 couleurs, mais avec beaucoup moins de contraintes techniques. Cela nous donne en pratique des jeux bien plus colorés !
Des centaines d'excellents jeux débarquent donc dès maintenant sur ta
Graph 90+E !
Découvrons donc dès maintenant l'application
NESizm, et nous la comparerons au passage à celles disponibles sur la concurrence :
- nofrendo pour NumWorks N0110 et N0100
- NESpire pour les TI-Nspire supportant Ndless (à l'exclusion donc des calculatrices mises à jour en version 4.5.1 ou supérieure, ainsi que des TI-Nspire CX II qui viennent obligatoirement en version 5.0 ou supérieure)
L'écran
Graph 90+E fait
396×224 pixels. En réalité il n'y a que
384×216 pixels facilement adressables, le reste constituant une bordure sur 3 côtés dont la couleur est destinée à permettre de vérifier facilement l'état du mode examen.
Les jeux
NES affichant en
256×240 pixels, on pouvait a priori s'attendre à une réduction de cet affichage sur 216 pixels de hauteur.
Il n'est certes pas possible de lancer
NESizm en mode examen, aussi t'avons-nous fait ci-contre un montage allumant la bordure dédiée en vert.
Et grosse surprise, si les menus de
NESizm affichent bien dans la zone normale de
384×216 pixels, lorsqu'un jeu est lancé celui-ci est bien affiché en utilisant totalité des 224 pixels de hauteur de l'écran et déborde ainsi dans la bordure du mode examen !
Cette prouesse technique à ce jour exclusive à
NESizm à notre connaissance permet une réduction de résolution sensiblement plus légère que ce que nous anticipions, les jeux étant finalement affichés en
240×224 pixels, visiblement sans aucun problème de lisibilité.
Saluons également la belle fluidité de l'animation à vitesse quasi réelle, et ce sans aucun besoin d'accélérer sa calculatrice!
En effet,
Thomas dit avoir conçu l'émulateur
NESizm intégralement à partir de zéro, avec comme objectif principal les performances sur
Graph 90+E et
fx-CG50. C'est clairement réussi !
Le menu d'accueil également rappelable depuis un jeu avec la touche
MENU
, te propose de poursuivre ta partie en cours si existante ou de charger une nouvelle
ROM de jeu.
Une entrée
Options te permet également de configurer ton émulateur, avec au choix :
L'entrée
Remap Buttons des
Options te permet de définir ou redéfinir les touches actionnant les manettes
Nintendo, ce que les autres émulateurs
NES ne permettent pas :
On peut toutefois regretter que les touches clavier soient décrites non par leurs noms mais par leurs codes
Casio Basic, aussi voici une petite table pour te repérer :
F1 79 | F2 69 | F3 59 | F4 49 | F5 39 | F6 29 |
SHIFT 78 | OPTN 68 | VARS 58 | MENU 48 | ← 38 | ↑ 28 |
ALPHA 77 | x² 67 | ^ 57 | EXIT 47 | ↓ 37 | → 27 |
X,θ,T 76 | log 66 | ln 56 | sin 46 | cos 36 | tan 26 |
/ 75 | S↔D 65 | ( 55 | ) 45 | , 35 | → 25 |
7 74 | 8 64 | 9 54 | DEL 44 | AC/ON 34 |
4 73 | 5 63 | 6 53 | × 43 | ÷ 33 |
1 72 | 2 62 | 3 52 | + 42 | - 32 |
0 71 | . 61 | ×10^x 51 | (-) 41 | EXE 31 |
NESizm ne définit donc par défaut que les touches contrôlant la 1
ère manette :
- action A :
SHIFT
- action B :
OPTN
- select :
F5
- start :
F6
- et bien sûr les flèches directionnelles
Si tu as besoin de la 2
ème manette, soit pour jouer à deux soit pour déverrouiller des secrets dans certains jeux, il te faudra la configurer.
Mais ce n'est pas tout, autre exclusivité de
NESizm, l'application te définit également des boutons supplémentaires qui n'étaient pas présents sur les manettes d'origine, mais sur certains accessoires optionnels comme les manettes
NES Max et
NES Advantage, comme les boutons
Turbo A et
Turbo B de la 1
ère manette, ici contrôlés avec
ALPHA
et
x²
!
Ces boutons simulaient en fait d'une simple pression des appuis répétés sur les boutons d'action
A ou
B, permettant par exemple de tirer automatiquement en rafale dans certains jeux.
Sur la
NES Advantage l'on pouvait même contrôler à l'aide de deux molettes le rythme de répétition des actions
A et
B associées, afin de mieux s'adapter au délai de latence après chaque action qui pouvait varier d'un jeu à l'autre selon la ou les animations déclenchées. Et bien ça aussi c'est prévu, avec l'option
Turbo Key par défaut à
8 Hz (8 appuis par seconde) que tu pourras passer à
2 Hz,
4 Hz,
15 Hz ou encore
30 Hz.
Notons enfin une dernière touche,
Fast Fwd contrôlée par
^
, qui te permettra d'accélérer temporairement le jeu, pour passer rapidement une animation, un texte défilant ou un long couloir.
Avec un tel soucis méticuleux du détail, on sent vraiment que l'auteur a été un grand fan de la
Nintendo NES et a dû y passer un nombre conséquent d'heures quand il était plus jeune.
NESizm n'est pas un simple émulateur de
Nintendo NES, c'est aussi un émulateur de
NES Advantage. En conséquence des possibilités exclusives qui devraient ravir non seulement les lycéens, mais également aussi bien les nostalgiques que les
gamers les plus exigents !
Passons maintenant à l'entrée
System avec là encore des possibilités inédites sur calculatrice.
Une option
Overclock est présente mais verrouillée sur
Graph 90+E et
fx-CG50; nous y reviendrons plus tard.
L'option
Speed par défaut sur
100% est également réglable sur
75%,
90%,
125% et
Unclamped.
Tentons de comprendre ce que cela implique, avec ci-dessous de gauche à droite le réglage de
Speed sur
Unclamped,
100% et
125% :
Il en découle que
125% c'est certes plus rapide que
100%, mais que
100% c'est également plus rapide que
Unclamped.
100% c'est donc la vitesse originale du jeu, c'est-à-dire :
- 60 Hz soit 60 fps (frames per second pour images par seconde) pour les jeux ciblant des consoles NTSC
- 50 Hz pour les jeux ciblant des consoles PAL
Nous reviendrons sur cette nuance plus tard.
125% augmente donc les fps de 25%, ce que l'on constate par une accélération du jeu. Si la machine n'arrive pas à suivre le rythme, des
frames (images) sont automatiquement sautées comme indiqué par l'autre option
Frame Skip mise sur
Auto.
Et enfin
Unclamped déconnecte totalement l'option
Speed. Plus aucun rythme n'est imposé, et donc ici toutes les
frames sont bien générées et affichées. On peut noter que
Unclamped est un peu plus lent que
100% mais pas tant que ça. Cela indique que, dans la configuration d'origine de la calculatrice, tenir la vitesse de
100% ne nécessite que de sauter la génération d'une minorité de
frames, c'est effectivement remarquable en terme de performances.
Passons maintenant à l'option
Frame skip, par défaut sur
Auto et pouvant également être réglée sur
None,
1,
2,
3 ou
4.
Elle indique donc le nombre de
frames dont le recalcul est à sauter à chaque itération. A noter que cela ne contrôle pas directement la vitesse d'affichage qui reste indiquée par l'option
Speed, juste la charge de travail qui peut ainsi être allégée au prix d'animations un peu plus saccadées.
Ci-dessous, réglons par exemple de gauche à droite l'option
Frame skip sur
None,
Auto et
4, et afin de pouvoir observer le tout en terme de vitesse déconnectons l'option
Speed en la réglant sur
Unclamped :
Un
Frame skip de
4 est très rapide dans le contexte
Unclamped. Nos mesures semblent indiquer que la vitesse est alors comparable à ce que l'on obtient en pressant la touche d'avance rapide
^
, peut-être donc bien que c'est cette configuration qu'elle permet d'appliquer temporairement, le temps qu'elle reste enfoncée.
4) Compatibilité NTSC, PAL et zonage
Go to topPour mieux faire comprendre les compatibilités et incompatibilités, commençons un tout petit peu par expliquer la
NES.
Nintendo a fait le maximum pour segmenter le marché et ainsi pouvoir imposer librement ses prix.
Derrière la dénomination générique de
NES se cachent en fait 2 consoles :
- la Famicom (pour Family Computer) sortie au Japon en 1983
- la NES qui en est la version internationale distribuée à partir de 1985 en Amérique du Nord puis Europe
Ces deux consoles utilisent des cartouches de jeux de forme et même connecteur différents
(72 broches pour la NES, 60 broches pour la Famicom) et ne sont donc physiquement pas compatibles, du moins pas sans utiliser des adaptateurs.
De façon précurseure bien avant l'arrivée du
DVD,
Nintendo avait de plus découpé le monde en différentes zones : Japon, Europe, Amérique du Nord... Les consoles et cartouches de jeu vendues dans chacune de ces régions étaient zonées, et refusaient de fonctionner avec tout appareil de zone différente. Bien que l'on pouvait par exemple brancher sans adaptateur une cartouche américaine sur une console européenne et vice-versa, en pratique ça ne marchait pas...
... du moins pas sans une petite modification. Il suffisait en effet sur la puce
Nintendo 3195A de couper la 4
ème patte en partant d'en bas à gauche pour dézoner ta console, et lui permettre de lancer des jeux provenant du monde entier.
Enfin, même une fois ceci fait les ennuis n'étaient pas terminés. Les cartouches de jeux distribués étaient optimisées pour le standard vidéo utilisé par la console :
- le NTSC en 60 Hz au Japon et en Amérique du Nord
- le PAL en 50 Hz en Europe
Un jeu
PAL inséré dans une console
NTSC était ainsi accéléré de 20%, et inversement un jeu
NTSC inséré dans une console
PAL était ralenti de 20%.
Mais là n'est pas le problème. Nombre de jeux tiennent compte dans leur code de cette synchronisation en 50 ou 60 Hz. Insérer donc dans ta console une cartouche de jeu prévue pour un autre système vidéo pouvait selon son codage conduire à des erreurs d'affichage plus ou moins importantes, et même dans certains cas extrêmes à un plantage de la console.
Et pourquoi vouloir jouer sur sa console à une cartouche de jeu d'un autre continent ? Plusieurs raisons à cela :
- Plusieurs jeux n'ont été distribués que dans certaines zones.
- D'autres jeux bien que commercialisés dans plusieurs zones pouvaient présenter des différences plus ou moins importantes.
Parmi les plus célèbres carnages on peut citer le jeu français Dragon Ball qui pour sa sortie en Amérique du Nord a fait l'objet d'une véritable censure, se voyant renommé en Dragon Power avec même le remplacement des sprites de Son Goku par une sorte d'homme-singe à l'air débile, de celles de Tortue Géniale par une espèce de vieux druide barbu, le renommage de Bulma en Nora, celui de Yamcha en Lancer, ... bref, restons-en là sinon je vais m'énerver.
... et vous osez vous plaindre de Dragon Ball Evolution après ça ?...
Un bon émulateur de
Nintendo NES se doit donc de permettre de jouer à l'ensemble de tous ces jeux tout en nécessitant le moins de manipulations possible de la part de l'utilisateur.
Pas de problème avec les jeux
NTSC américains comme vu plus haut, et les jeux
NTSC japonais marchent également comme tu peux voir ci-contre.
Passons donc maintenant aux jeux
PAL européens. Nous avons le candidat parfait pour tester,
Cobra Triangle, l'un des pires jeux pour la compatibilité
NTSC/PAL. Lorsque la cartouche du jeu
PAL était insérée dans une console
NTSC, elle produisait des erreurs d'affichage majeures démarrant dès l'écran titre et te poursuivant tout le long de ta partie, erreurs qui de plus pouvaient même finir par arriver à planter la console. On pourrait penser a priori que les jeux
PAL ne sont pas gérés, puisque la version
PAL de
Cobra Triangle souffre ici sur calculatrice des mêmes erreurs d'affichage.
C'est certes fidèle au matériel, mais un utilisateur
'normal' s'attendrait dans le cas d'un tel jeu à ce que l'émulateur corrige ces erreurs en basculant en mode
PAL.
En réalité, les jeux
PAL sont bien gérés par
NESizm, mais il n'est pas facile selon l'auteur de coder une détection automatique. En attendant, si tu souhaites jouer à des jeux
PAL sur
NESizm, il te suffira de rajouter une mention
PAL en majuscules quelque part dans le nom de leur fichier, et l'émulateur basculera alors automatiquement en mode
PAL à leur lancement avec un affichage correct.
C'est déjà pas mal, dans le sens où aucune compatibilité
PAL ne semble être disponible sur les émulateurs de la concurrence, félicitations
NESizm !
Sur
NumWorks notamment, la
première version de l'installateur en ligne de l'émulateur proposait certes le choix
PAL/NTSC, un choix qui n'est en passant plus proposé dans le
nouvel installateur en ligne dans le contexte des
firmwares Delta/Omega. Mais même dans la première version quelque chose ne tourne clairement pas rond; car bien qu'ayant précisé que la
ROM Cobra Triangle fournie était une version
PAL nous obtenons quand même les erreurs d'affichage.
Nous n'en avons pas terminé avec la compatibilité. La console
NES ne dispose en fait que d'une fenêtre de
40 Kio pour adresser le contenu des cartouches de jeu.
40 Kio ce n'est pas beaucoup
(sauf pour les programmeurs Python NumWorks ).
Nombre de jeux ont besoin de bien plus que cela, et embarquent à cette fin un circuit électronique dans la cartouche. Cette dernière ne contient alors plus seulement la puce
ROM, mais l'interfacent derrière un
mapper. Le rôle de ce circuit est de présenter à la console à travers cette même fenêtre de
40 Kio des zones différentes de la
ROM lorsque nécessaire.
Les fichiers que tu fournis à l'émulateur contiennent bien évidemment le contenu de la puce
ROM avec un numéro identifiant le
mapper associé, mais absolument pas le détail du fonctionnement interne du
mapper en question. Une difficulté technique de l'émulation
NES est donc que l'émulateur doit reproduire à la fois le fonctionnement interne de la console, mais également le fonctionnement interne du
mapper de chaque cartouche. Et les
mappers ont varié d'un éditeur de jeu à un autre, il existe plein de mappers différents,
plusieurs 100aines...
Tester la bonne compatibilité de l'émulateur nécessiterait de se constituer une banque avec au moins un jeu pour chaque
mapper, ce que nous n'avons pas pu faire pour cette annonce. On peut toutefois avancer quelques exemples :
- Castelvania 3 qui utilise le mapper n°5 (le MMC5 de chez Nintendo) ne marche chez personne
- Saint Seiya qui dans sa version japonaise utilise le mapper n°70 (de chez Bandai) ne fonctionne ni avec NESizm ni sur TI-Nspire alors qu'il marche sur NumWorks
- Dragon Ball et Dragon Power qui utilisent le mapper n°66 (le GxROM de chez Nintendo) ne fonctionne pas avec NESizm alors qu'ils marchent sur TI-Nspire et NumWorks
Il semblerait a priori que la gestion des
mappers de
NESizm soit à ce jour inférieure à celle des calculatrices concurrentes. Mais gardons espoir, il ne s'agit aujourd'hui que de la première version.
En attendant
Thomas te maintient une
liste en ligne qui annonce
90% de jeux supportés, et pour le reste précise le
mapper utilisé et les éventuelles anomalies constatées. N'hésite pas à y contribuer.
10
mappers sont à ce jour supportés par
NESizm :
- NULL
- MMC1
- MMC2
- MMC3
- MMC6
- UNROM
- CNROM
- AOROM
- Camerica
- Colour Dreams
Thomas nous annonce le développement du support prochain de 14 autres
mappers, passant ainsi le nombre de jeux supportés à
97% :
- MMC5
- AVE
- Bandai
- Namcot 106
- FFE F4xxx
- FFE F8xxx
- Nanjing
- Nina-1
- Rambo-1
- Sunsoft 5
- SS8806
- TC0190/TC0350
- VRC2B
- 74161/32
Utilisateur de l'ancien modèle
Casio fx-CG10/20,
Thomas ne t'a pas oublié non plus.
NESizm est non seulement compatible avec ces anciens modèles, mais l'histoire est très loin de s'arrêter là.
NESizm est certes distribué en deux éditions différentes, un fichier
nesizm.g3a et un fichier
nesizm_cg10.g3a, mais ces deux fichiers fonctionneront de façon identique, et ce qu'ils soient installés sur
Graph 90+E /
fx-CG50 ou
fx-CG10/20. La seule est unique différence est que le fichier
nesizm_cg10.g3a inclut une icône d'application sur fond noir, ce qui conviendra mieux au thème sombre utilisé par le système d'exploitation sur
fx-CG10/20.
Si les fichiers sont donc identiques à l'exception de l'icône d'application, nous aurons par contre des différences à l'exécution selon qu'on les fasse tourner sur
fx-CG10/20 ou
Graph 90+E / fx-CG50.
En effet, le processeur de la
fx-CG10/20 est certes compatible mais cadencé d'origine non pas à
116.15 MHz mais à seulement
58.98 MHz. A configuration d'émulation identique, les jeux tournent environ deux fois moins vite sur
fx-CG10/20 :
Les jeux sont donc très loin de tourner à vitesse réelle sur fx-CG10/20. Que peut-on faire ?...
On peut par exemple jouer sur les options système déjà explicitées plus haut et y régler la vitesse sur
Unclamped avec un
Frame skip de
4. Ce n'est pas encore au niveau de la
Graph 90+E, mais cela améliore quand même très nettement la vitesse des jeux :
Un inconvénient toutefois est que ce gain en vitesse a un coût, celui de la fluidité des animations qui sont maintenant saccadées.
Une autre solution est d'accélérer le processeur de la
fx-CG10/20, à l'aide par exemple de l'utilitaire
Ptune3.
La configuration par défaut associée à la touche
F1
te permet de passer son processeur à
117.96 MHz pour quelque chose de très similaire à la
Graph 90+E :
Avec hélas plusieurs inconvénients là encore :
- ce n'est pas automatique, il faudra rerégler cette même configuration après chaque redémarrage de la calculatrice (plantage, changement de piles, entrée/sortie du mode examen...)
- cette configuration consomme davantage les piles, et il faudrait donc en prime la désactiver à chaque fois que tu n'en as plus besoin, en gros à chaque fin de partie
Dans tous les cas, c'est lourd.
Et bien
Thomas a prévu la solution comme nous l'avions déjà noté plus haut.
Lorsque exécutée sur
fx-CG10/20, l'application te déverrouille le paramètre
Overclock dans les options système, paramètre que tu pourras régler à
Off,
150% ou
200%.
Et c'est tout, une fois ceci fait tes réglages sont enregistrés, tu n'auras plus rien à faire, le processeur sera automatiquement accéléré à chaque lancement de jeu puis remis dans sa configuration initiale en fin de partie !
Maintenant que nous avons couvert l'ensemble des aspects techniques, terminons-en en comparant les performances entre les différentes solutions d'émulation
NES pour calculatrices.
Voici déjà ce que ça donne avec les calculatrices dans leur configuration d'origine,
NESizm étant réglé sur
Unclamped avec un
Frame skip à
None :
La
Graph 90+E ne s'en tire pas mal du tout, dépassant la
NumWorks N0100 ou encore les
TI-Nspire CR4+ :
- NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- TI-Nspire (32 bits : ARM9/ARMv5 @120MHz)
- TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5 @132MHz)
- Casio Graph 90+E / fx-CG50 (32 bits : SH4 @117,96MHz)
- NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5 @156MHz)
- Casio fx-CG10/20 (32 bits : SH4 @58,98MHz)
Et voici maintenant ce que ça donne si l'on
overclocke chaque calculatrice au maximum de ses possibilités.
Pour la
Graph 90+E c'est littéralement la configuration maximale supportée par l'outil; par contre pour la
fx-CG10/20 ce sera un peu moins car sinon il y a des problèmes de stabilité.
La
Graph 90+E prend maintenant la tête du classement, dépassant nettement l'ensemble des
NumWorks et
TI-Nspire :
- Casio Graph 90+E / fx-CG50 (32 bits : SH4
@117,96MHz overclocké @270,77MHz via Ptune3) - Casio fx-CG10/20 (32 bits : SH4
@58,98MHz overclocké @250,87MHz via Ptune3) - NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5
@132MHz overclocké @216MHz via Nover) - TI-Nspire (32 bits : ARM9/ARMv5
@120MHz overclocké @150MHz via Nover) - NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5
@156MHz overclocké @216MHz via Nover)
L'installation de
NESizm est extrêmement simple.
Il te suffit te copier le fichier
nesizm.g3a directement à la racine de l'espace de stockage de ta calculatrice
(et pas dans un sous-dossier).
Une simple connexion USB suffit pour accéder directement à cet espace, ta calculatrice se comportant exactement comme une clé
USB.
Les fichiers de tes
ROMs NES sont également à copier à ce même endroit
(et surtout pas dans un sous-dossier, NESizm ne listant pas leur contenu).
Ils doivent de plus obligatoirement utiliser l'extension
.nes, sans quoi ils ne seront pas listés dans
NESizm.
Avec
NESizm,
Thomas nous signe un véritable chef d'œuvre.
Un travail d'orfèvre passionné qui reproduit fidèlement dans ta
Casio Graph 90+E l'univers
Nintendo NES à un point jamais atteint jusqu'à présent sur calculatrices, même jusqu'au support des jeux
PAL européens ainsi que des touches spéciales des manettes optionnelles
NES Max et
NES Advantage pour
gamers !
Le moindre détail semble avoir été pensé et pesé dans l'intérêt de l'utilisateur, comme l'option qui permet d'activer et désactiver automatiquement l'
overclocking sur
fx-CG10/20 !
Un tel niveau de finition est remarquable pour un émulateur annoncé comme conçu à partir de zéro, félicitations !
Du grand art, nous ne serions pas loin de qualifier
NESizm de la meilleure solution d'émulation
NES sur calculatrices tous critères confondus, mais avant cela nous aimerions bien la gestion de quelques
mappers supplémentaires. Ce sera donc pour la prochaine fois.
Suite à l'éradication de
Ndless sur les
TI-Nspire, la
Casio Graph 90+E nous confirme ce soir encore une fois qu'elle est désormais la meilleure plateforme scolaire pour le
gaming !