Hardcore Retrogaming

Démarré par upsilandre, Novembre 09, 2013, 04:00:23 PM

« précédent - suivant »

pippoletsu

Tu rigoles, ma première console de salon c'était une Master System 1986, toute première édition européenne sans jeu installé avec Hang On sur carte.

Hobes

Je disais que tu avais une NES, pas que tu n'avais pas eu de Master System :nerd:

pippoletsu

La nes, je l'ai eu longtemps après, ma pratique 8bits, c'est sur SMS que ça s'est passé :sol:
Pourquoi tu crois que Wonder Boy > * ?

upsilandre

#93
pas mal de bon souvenirs aussi, les Wonderboys, Golvelius, Shinobi, R-type, Alex kid, Phantasy star, The Ninja, Black belt, Choplifter, Space harrier, Out run, Power strike, Rastan, Fantasy zone, zillon, Alien syndrome...

mais je suis passé a coté de pas mal de jeu nintendo d'autant que j'ai pas eu de SNES non plus, j'ai joué sur Megadrive et PCengine en import puis quand la SNES est arrivé en france c'etait une periode ou je ne jouais plus (tout comme je pense que la NES et son demarrage tres lent etait devenu incontournable en france au moment ou moi j'etais deja sur Megadrive/PCengine en import).
Sur 10 consoles nintendo j'en ai eu que 2 (la Gamecube et la N64)


Pour revenir au hardware je trouve la NES vraiment sexy. Remis dans le contexte c'est vraiment du bon boulot et dès le debut Nintendo a fait du sur-mesure. Par exemple le CPU etait custom et integrait des features specifiques alors que sur les consoles sega c'etait toujours des CPU standard, la customisation se faisait sur le GPU comme chez les autres aussi (atari, coleco, neogeo...).
Sauf la PC engine qui etait aussi une machine vraiment custom facon NES (en plus les chips graphiques on vraiment ete designé par Hudson Soft si je ne me trompe pas, je crois que c'est justement le devellopement en interne de ces chips qu'ils n'ont pas reussit a revendre a des constructeurs comme nintendo qui les a pousser a faire leur propre console avec NEC, une belle machine)


J'ai jeté un oeil rapide sur la doc Master system. La master system a un fonctionnement asser proche de la NES, 2 pools de 256 tiles de 8x8, 64 sprites par ecran, 8 par scanline, 2 palettes de 16 couleurs affichable (une pour les sprites et une pour le background) donc ca ressemble a la NES mais avec plus de flexibilité sur pas mal de point comme la possibilité de piocher dans les tiles des sprites pour le background ou de piocher dans la palette des sprites pour les tiles du background ou la possibilité de flipper les tiles du background...
Mais le truc qui a mon avis etait le plus gros atout par raport a la NES c'etait d'avoir une palette de 15 couleurs (selectionner parmis les 64) utilisable intégralement par les sprites alors que sur NES t'avais une palette de 12 couleurs pour les sprites mais divisé en 4 palettes de 3 et chaque sprite devait choisir l'une de ces 4 palettes de 3 couleurs et 3 couleurs pour dessiner un sprite c'est vraiment difficile, c'est le plus gros handicape de la NES car tout le reste tiens tres bien la route surtout avec les customisations dans les cartouches.

Mais la Master system avec ses atout avait des graphismes qui pesait plus lourd en taille, tout prenait 2x plus de place (les pattern des tiles, le "frame buffer"...) donc ca pouvait aussi etre un handicape. Les graphismes NES etait tres economique sur ce point (une tile NES c'est 16 octets contre 32 sur master system)
Et notement au niveau du framebuffer en VRAM (on parle plutot de "name table" ici car c'est pas un buffer de pixels mais de tiles) la Master System n'avait la place que pour un seul ecran 256x224 la ou la NES stockait 2 ecrans 256x240 (dans une configuration 512x240 ou 256x480, a l'ecran l'affichage etait 256x224 en NTSC) ce qui offrait certaine commodité.

Pour faire un scrolling on a pas forcement besoin d'un double ecran mais a cause de la gestion par tile il faut au moins avoir une tile de plus (soit 8 pixels) sur le coté et en dessous. Du coup la Master system n'affiche que 192 lignes sur les 224 pour avoir une reserve pour gerer le scrolling vertical et quand tu veux faire un scrolling horizontal alors le GPU cache aussi une bande de une tile de large (8 pixels) sur le coté gauche.
Si vous voulez un bon exemple lancez Alex kid, ca demarre sur un scrolling vertical ou l'on descend puis on tombe dans l'eau et ca passe en scrolling horizontal, le moment ou ca passe en scrolling horizontal vous verrez une bande noir de 8 pixels apparaitre et caché le bord gauche de l'image car la MS va alors utiliser cette espace pour gerer le scrolling a defaut d'avoir un espace memoire plus large. Faite le test c'est marrant de le savoir
Sur NES le trick de cacher une bande de 8 pixels sur la gauche existe aussi (c'est activable) mais est bien plus dispensable vu l'espace framebuffer plus large qu'on peut utiliser en configuration horizontal.

Mais ces sprites MS plein de couleurs avec ce signal RGB pure ca avait quand meme de la gueule comparé a la NES
Niveau audio la NES a l'aire meilleur que la MS (mais la Mark III au japon avait un meilleur chip audio que la MS)


upsilandre

j'ai trouvé quelques details sur la palette du PPU NES version special Arcade et c'est exactement comme je le pensais.
Avec le passage en RGB ils ne pouvaient pas se contenter d'un codage 6bit de la palette comme sur une NES standard ou sur MS car sinon ils auraient eu justement la meme palette RGB que sur Master System et ca n'aurait pas ete vraiment compatible avec les jeux NES existant, il leur fallait passer par un intermediaire.

Donc ce PPU RGB a finalement un codage 9bit de la palette et donc peut générer potentiellement 512 couleurs differentes (comme sur Megadrive ou s'est aussi un codage RGB 9bit) et ainsi il leur est possible de piocher la dedans pour retrouver des teintes proches de celle de la NES standard et reconstituer une table intermediaire de 52 couleurs qui elle sera indexé en 6bit comme pour une NES standard (donc la vrai palette reste limité comme avant).

Mais du coup il se sont fait plaisir et ont constitué 5 palettes differentes de 52 couleurs (voir 64 qui est le vrai potentiel d'un codage 6bit) c'est a dire la palette standard et 4 autres palettes plus vives qui peuvent alors etre selectionner pour remplacer la palette standard au cas par cas.

upsilandre

Si jamais je dois creusé plus loin le hardware NES ca passera forcement par programmer un truc et je me dirigerais probablement vers un portage (partiel) d'un jeu Master system sur NES genre Alex kidd ou The Ninja.

Mais bordel la limite de 3 couleurs pour les sprites NES c'est vraiment une grosse contrainte. J'ai tenté sur le sprite de Alex Kidd qui utilise 7 couleurs et impossible d'en faire une version 3 couleurs. a 5 ca passe bien, a 4 on peut obtenir un truc ressemblant mais 3 couleurs c'est impossible (si vous voulez essayer)

C'est clairement le plus gros handicape de la NES alors que tout le reste est tres bon.
Sans aller jusqu'au 4bpp (4bit par pixel soit 15 couleurs) de la Master system qui est un peu too much au vu de la palette tres limité (dailleurs la Megadrive est resté sur du 4bpp comme la MS, c'etait bien suffisant) mais juste du 3bpp (7 couleurs) pour les sprites ca aurait deja tout changé.
7 couleurs tu peux tout faire, 3 couleurs tu peux rien faire, y a un gouffre entre les 2. C'est domage parce que en 3bpp au lieu de 2bpp la NES aurait ete une tuerie et n'aurais rien eu a envier a la MS mais remis dans le contexte c'etait difficile.

upsilandre

Passer de 7 a 4 couleurs ca passe tres bien, on garde l'identité du personnage (notement la tenu rouge indissociable du personnage)
Mais passer de 4 a 3 c'est un carnage.



Hobes

#97
Mais comment se fait-il qu'il y ait des titres comme Adventure Island IV qui aient un héros avec 4/5 couleurs ?


upsilandre

#98
Parce que en faite c'est 3 couleurs par sprite mais ce qu'on appel ici un sprite c'est pas vraiment le personnage mais un tile de 8x8 et les personnages sont composés de plusieurs tiles/sprites

Par exemple Mario petit c'est 4 sprites (2x2) et Mario grand c'est deja 8 sprites (2x4). Alex est entre les 2 (2x3)
Donc tu peux mixer plusieurs palettes de sprites sur un meme personnage mais c'est tres compliqué dabord parce que faut construire ton sprite de facon a ce que les changements de couleur se face entre les tiles et puis ensuite ca t'oblige a utiliser alors 2 palettes sprites differente pour ton personnage et ca veut dire qu'il t'en reste plus que 2 autres pour les ennemies/projectiles (y a que 4 palettes de 3 couleurs pour les sprites) a moins de les reutiliser pour les ennemies aussi. et ca va etre 2 palettes asser redondante (par exemple dans ton exemple le personnage a 4 couleurs, il utilise 2 palettes avec une seul couleur qui change entre les 2 palettes. il reutilise deja la palette du haut de son corp pour les os qu'il lance et l'ennemi? dans l'arbre)

Donc tu peux bidouiller mais c'est galere
Par exemple Alex ca donne ca



Sa tete est aussi grosse que son corp soit 1.5 sprite de haut chacun et du coup les 2 sprites du milieu couvre aussi bien son visage, ses yeux, que son corp. on pourait bricoler un truc en utilisant 8 sprites au lieu de 6 avec des espaces au dessus et au dessous pour separer le visage du reste du corp mais ca donnerait pas un resultat beaucoup mieux et sa gacherait une palette et 2 sprites. J'ai pas trop envie de faire du bricolage.

Apres l'autre astuce possible c'est j'imagine d'utiliser la couleur de transparence (un sprite c'est 3 couleurs + la couleur transparente qui permet a ton sprite de pas etre juste un tile carré) comme une couleur qui sera alors celle du background si ton personnage est toujours sur un meme fond unis.
Par exemple Samus dans Metroid est toujours sur un fond noir unis et utilise alors cette couleur noir dans son sprite par transparence. En faite on en arrive tout le temps a la conclusion qu'il faut minimum 4 couleurs pour faire des sprites correct, d'ou la contrainte de la NES qui se trouve vraiment ici et les mappers des cartouches ne peuvent rien changer a priori a cette contrainte.


On comprend mieux aussi pourquoi 64 sprites géré par la NES et la Master system ca peut paraitre beaucoup mais ca part vite car c'est des petits sprite de 8x8, 64 sprites ca fait seulement 8 personnage comme le grand Mario.

Et quand on dit que c'est 8 sprites maximum affichable par scanline (par ligne horizontal) faut donc tenir compte qu'en général un personnage/ennemie fera 2 sprites de large donc ca veut dire pas plus de 4 sur la meme ligne.
Par exemple si tu lance Mario vers le debut y a un moment ou tu peux avoir 4 gooma autour de toi (2 a gauche et 2 a droite) et ca suffira a faire clignoter les sprites car avec Mario ca fait alors 5x2=10 sprites sur la meme scanline.

upsilandre

#99
j'ai quand meme fais des tests en combinant 2 palettes differentes (une pour la tete et une pour le corp) et ca donne quelque chose d'asser interressant.

l'original a gauche, ma version NES a droite




En gros ca me coute chaque fois 2 sprites supplémentaires (en plus d'une seconde palette mais c'est 2 palettes asser differentes donc peut se recycler pour des objets noir/rouge ou noir/bleu ou noir/blanc ou noir/beige)
Mais par contre comme je dissocie la tete du corps ca me permet de recycler les meme tiles de tete pour les 3 derniers sprites par exemple (en plus du gros poing qui lui doit aussi etre dissocié et recyclé sur MS) et du coup en nombre de tiles total different dans la table de pattern ca me donne le meme resultat sur ce petit echantillon.

Bon par contre je suis un peu obligé de lui mettre des genres de gants rouges qui disparaissent quand il fait le gros poing mais je pense que ca choque pas trop, l'essentiel est que le code couleur global soit la.
Ca me plait pas mal finallement.

upsilandre

#100
Certain emulateurs permettent d'afficher ce qu'il y a dans les differentes memoires graphiques de la NES. On peut voir ce qu'il se passe en temps réel pendant qu'on joue, si vous voulez voir l'envers du décors ca peut toujours etre interressant d'utiliser ce genre d'emulateur.
Par exemple l'emulateur FCEUX vous affiche cela


upsilandre

Avec la palette NES ca donne plutot ca (meme si y a aucun consensus sur l'interprétation RGB de la palette NES donc ca dépend de l'emulateur)






par contre je me rend compte qu'avec cette solution ca me donne jusqu'a 6 sprites sur la meme scanline soit 75% de la capacité d'affichage de sprite. ca laisse peu de marge avant de se retrouver avec des clignotements.
C'est pour ca que c'est toujours interressant de se mettre dans la position du programmeur meme partiellement car y a que comme ca que tu te rend compte de toutes les contraintes. Quand on joue a ces jeux simplistes on se rend pas compte


upsilandre

#102
Un truc tout simple mais qui est compliqué a faire sur NES aparement c'est d'avoir une bande "HUD" ou "Score" en haut ou en bas de l'ecran alors meme que t'es dans un jeu a scrolling car cette bande fera partie du background mais faut pas qu'elle scroll avec le reste du jeu et la NES est pas prevu pour faire cette distinction donc faut bidouiller.
Aparement certain mapper de cartouche integre des features pour aider a faire ca. de ce coté je crois que la Master system est mieux lotie et integre dans son GPU la possibilité de pour pouvoir diviser l'ecran en 2 (une partie qui scroll et une partie fixe) sans passer par des bidouilles (mais dans Alex y a pas de HUD donc c'est reglé).



Mais quand meme le scrolling cablé c'est une sacré invention. ca fait partie des rares etapes/revolutions technique du jeu video avec l'arrivée des polygones 3D (et bientot la VR). Ca a ouvert une fenetre vers des mondes a explorer, ca a quand meme tout changé.

Dailleurs si j'ai eu une Atari 2600 tres tot et que j'ai bien aimé joué avec, la passion du jeu video elle a commencé seulement avec les consoles 8bits (et l'arcade) quand le scrolling a ouvert cette porte vers un nouveau monde. Alors que je voyais dans l'atari juste un jouet tres amusant, la master system c'etait plonger dans le monde des reves et c'est principalement grace au scrolling je pense.

le scrolling cablé en hard c'est finalement pas grand chose techniquement, c'est juste une gestion un peu plus complexe de l'incrementation de l'adressage de la VRAM pendant l'affichage pour pouvoir faire boucler une portion de memoire selon certaines regles et valeurs plutot que de lire la VRAM betement de facon séquenciel de l'adresse 0 a l'adresse XX.

Mais combiné a la gestion de l'affichage par tile c'est sacrement economique et efficace. Un scrolling horizontal sur NES a une vitesse classic de 1 pixel par frame idealement ca ne necessite d'ecrire en VRAM que 4 octets par frame!
Alors forcement meme avec un CPU tres faible comme dans la NES et un temps tres court (modifier la VRAM ca se fait pendant le Vblank entre 2 frames soit a peine plus de 1 milliseconde) t'arrive a t'en sortir pour faire ton scrolling, charger la table de sprite et 2 ou 3 autres truc.

Shin

J'ai appris beaucoup, merci :jap:
C'est extrêmement intéressant.

upsilandre

je répons moi meme a des questions que je me posais y a 30 ans. C'est asser amusant a faire.
C'est tres amusant aussi de rejouer a ces vieux jeux tout en comprenant ce qu'il se passe a l'image, tu decripte beaucoup de chose, tous les petits glitch, les choix techniques, ca devient un jeu dans le jeu et une motivation supplémentaire a relancer des vieux jeux en émulation.