Hardcore Retrogaming

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

« précédent - suivant »

glen

Nan mais ça me rappelle les journées passées sur offroad sur nes :leuv:

upsilandre

Je me suis tapé cette video pour chercher des perles que j'aurais raté. 750 jeux en 15mn  :vice:




j'ai testé tout les jeux type micromachine mais aucun ne propose un mode 2 joueurs splitté. Je suis surpris que personne n'ai tenté car ca me parait techniquement possible (contrairement a la SMS) meme si pas facile. ca m'intrigue, peut etre plutot un probleme de quantité de ram cpu.


Mais surtout je me pose toujours la question de l'affichage full screen 240 lignes. Je comprend pas vraiment pourquoi s'etre imposé cette contrainte alors meme que la console ne peut pas acceder a la VRAM en dehors du Vblank, ralonger le Vblank en reduisant le nombre de ligne affiché aurait ete vraiment utile (d'autant que ces lignes sont en général perdu dans l'overscan).
Sans forcement descendre jusqu'au 192 lignes de la SMS mais un classic 224 comme on trouve sur toutes les consoles 16bit ou meme 32bit (voir +, le full screen a longtemps ete rare dans les jeux, c'est surtout venu avec la Xbox voir la DC je crois) aurait deja permis de presque doubler la durée du Vblank et donc le nombre d'operation possible pour actualiser la VRAM entre 2 frames, vraiment pas negligeable donc je comprend toujours pas ce choix (peut etre lié a la memoire interne du PPU pour la liste de sprite, je sais qu'elle perd ses données rapidement quand l'affichage est sur off car sa DRAM interne n'est plus raffraichit donc peut etre une volonté d'avoir un Vblank tres court a cause de ca?)


upsilandre

Rad Racer 2 sur NES, une sorte de Outrun sans le charme d'un Outrun mais techniquement plutot reussit
Faut plutot le voir ingame qu'en video car ce qui le distingue d'un Outrun c'est avant tout sa fluidité sensiblement supérieur, surtout les transitions de relief qui sur Outrun SMS sont extrement saccadé avec juste quelques positions prédéfinie (on sent qu'ils ont galéré pour le faire) alors que sur Rad Racer 2 la gestion du relief de la route est parfaitement fluide et plutot bien foutu. L'arriere plan aussi est plus impressionnant, plus complexe et massif et avec du scrolling parallaxe.

Par contre on a pas les musiques de Outrun et le superbe sprite de la ferrari tres reussit sur SMS. En plus la cartouche est tres petite pour l'epoque, 128Ko (la moitié de celle de Outrun SMS sortie 3 ans plus tot) donc l'ambition est plutot modeste mais le défi technique est parfaitement relevé. Et assez agreable a jouer en plus (ce qui est rarement le cas de ce genre de jeu sur 8bit)

Hobes

#273
J'ai pendant un instant été troublé par le nom du jeu vu que Sega a eu toute une gamme de titres "Rad" (Rad Mobile, Rad Rally...) créés par Yu Suzuki. Ça m'a surpris et je ne voyais pas le rapport avec la Nes. Surtout que toi tu faisais un parallèle avec Outrun... un autre jeu de Yu Suzuki.

upsilandre

En meme temps on trouve bien After burner et Space harrier sur NES mais effectivement pas de Outrun ou de Rad mobile :)

upsilandre

#275
J'ai testé Gauntlet sur SMS et NES. Pas facile de porter un jeu comme ca qui n'est pas du tout adapté aux consoles 8bit de par le nombre d'ennemis a animer. Forcement la solution choisie est prévisible, les ennemis sont des tiles de background que l'on déplace donc avec des mouvements saccadés (8 pixels) mais au moins ca contourne le probleme des sprites hardwares (c'est pas pour autant du sprite software facon golden axe, pas de traitement complexe ici car y a pas besoin d'integration des ennemis dans le background qui est reduit au strict minimum, heureusement).

Mais dans ce genre de trick comme je l'ai deja expliqué la SMS est plus adapté, l'acces a la VRAM plus libre, la tilemap en bloc de 8x8, les tiles en 16 couleurs qui permettent d'avoir quand meme un motif sur le sol tout en ayant de jolie sprite.
Resultat la version SMS est bien plus proche de l'original .





La ou la version NES en plus d'etre laide est un jeu completement different qui ne suit pas l'original.
Si j'en parle c'est juste parce qu'il a une particularité, c'est quasiment le seul jeu NES a utiliser le mode "four screen" du PPU. En effet par defaut comme je l'ai deja dit la NES a une tilemap qui fait la taille de 2 ecrans (vertical ou horizontal, au choix) ce qui est deja mieux que la SMS mais on peut aussi l'utiliser en mode 4 ecrans (2x2) suffit juste d'ajouter 2Ko de RAM dans la cartouche pour doubler la VRAM dédié a la tilemap.
Gauntlet a donc utilisé cette astuce pour que l'integralité de la zone de jeu soit contenu dans la tilemap ce qui permet de faire un scrolling totalement free sans avoir a mettre a jour la tilemap et donc de reserver tous les acces a la tilemap pour la mise a jour des déplacement des ennemis car la NES ne peut le faire que pendant le Vblank qui est tres court.
Voila a quoi ressemble la tilemap en bas a gauche.




Par contre la zone de jeu sur NES est full screen, c'est du 256x240 alors que sur SMS c'est du 184x192, on a un champ visuel 75% plus grand sur NES. C'est le seul atout.

Autre curiosité, Gauntlet 2 sur NES abandonne cette methode de sprite qui n'est pas adapté a la NES pour retrouner a une utilisation de sprite classic pour les ennemis combiné a un algo d'IA qui empeche les ennemis (+ les joueurs) d'etre plus de 4 sur la meme ligne ce qui donne des comportements un peu etrange et peu d'ennemis mais du coup graphiquement c'est beaucoup plus proche de l'original et je crois que c'est la seul version a etre jouable a 4 joueurs.






Utilisez le background pour simuler des sprites (que ce soit de vrai sprite software comme dans golden axe ou une utilisation plus basique comme Space Harrier ou Gauntlet) n'est donc pas une bonne approche pour la NES... sauf un cas ou la NES est tres bien adapté c'est quand on utilise le background pour simuler un seul gros sprite (un boss) et qu'on peut cette fois animer au pixel pret grace au scrolling (faut juste que le background soit en général un fond noir pour ne pas trahir l'illusion)
C'est quelque chose de souvent utilisé sur NES comme par exemple le dernier boss de Ninja Gaiden 3 http://youtu.be/8--QVBfkY-s?t=40m10s


Et cette fois a l'inverse c'est plus compliqué a faire sur SMS car ca exploite la tilemap plus grande de la NES.

Coca_Impact

Ou dans Journey to Silius ou MegaMan ou beaucoup beaucoup d'autres jeux...je m'étais toujours posé la question, voilà la réponse ^^

upsilandre

oui tout ce qui est gros boss animé c'est toujours un background qu'on fait scroller (sur fond noir pour pas voir que c'est un background qui scroll)
Mais faut-il encore etre capable de scroller ce background (le boss) tout en affichant un sol (background aussi) et un HUD qui ne scroll pas comme ici (c'est donc des scrolling differentiel et le boss est multi-directionnel), c'est la que ca se complique beaucoup pour la SMS et sa toute petite tilemap...

upsilandre

Marrant, a cause des contraintes de palette dans Ducktales NES on a pas Riri, Fifi et Loulou mais Loulou, Riri et Loulou. Une chose qui ne serait pas arrivé sur SMS.


upsilandre

J'avais oublié Punch out sur NES, un jeu quand meme important et pas tres classic qui merite quelques mots
Je vous laisse un peu deviner comment il peut fonctionner pour afficher ca?



upsilandre

#280
J'avoue y avait un piege. On devine que tout ca ne peut pas etre du sprite mais on a envie de dire que l'adversaire c'est le background et Mac le sprite mais en fait c'est l'inverse.
Sur cette image c'est plus flagrant




Pour permettre d'afficher l'adversaire par dessus le décor (et le HUD) ils ont choisie d'en faire un vrai sprite et quand on met tout le budget de sprite (64 sprites) en mode double size (8x16 au lieu de 8x8) tout en se limitant a 8 sprites par ligne ca permet d'afficher un perso d'une taille max de 64x128 pixels et c'est ce que fait Punch out. Donc si vous voulez vous faire une idée precise de la taille maximum de sprite que l'on peut afficher sur NES (a condition de rien afficher d'autre) suffit de regarder les ennemis de Punch out, c'est le meilleur exemple.


Mac le joueur fait donc partie du background (ainsi que Mario l'arbitre), le sprite de l'adversaire est donc prioritaire sur le background pour sa partie superieur quand elle se superpose au décor mais le reste du temps il est pas prioritaire et c'est donc le background (Mac) qui s'affiche par dessus lui, et quand le background est prioritaire sa couleur 0 est aussi transparente comme un sprite d'ou l'illusion que c'est bien un sprite.
Au final la seul difference avec un sprite c'est que tu ne peux pas déplacer Mac pixel par pixel, donc pour les petits mouvement lateraux de Mac c'est un petit effet de scrolling qui est utilisé en utilisant la meme methode de l'aplat de couleur comme pour les boss sur fond noir sauf que la c'est un fond bleu uni qui fait qu'on ne voit pas que ca scroll car seul la partie inferieur de l'ecran scroll, celle qui est composé uniquement d'un fond bleu.


En effet l'ecran est divisé en 2, les 95 premieres lignes (c'est a dire jusqu'au cordage sur les cotés) c'est le décor avec le tableau d'affichage, le public, le cordage. Toute cette partie utilise un tileset dédié, puis a la 96eme ligne l'intégralité du tileset du background switch et est remplacé par le tileset qui contient Mac (et Mario) qui sont les seuls elements de background de cette second partie de l'ecran.
D'ailleurs je reviendrais sur ce point car a chaque jeu je m'intéresse beaucoup aussi au mapper utilisé dans la cartouche et Nintendo a utilisé un mapper special juste pour ce jeu.

A part ca ca bankswitch a mort, quasiment a chaque etape d'animation de Mac ou de l'adversaire on a un switch complet du tileset des sprites ou du background voir les 2, c'est toujours vachement pratique ce bank switching sur NES. On pourrait pas le faire tourner a 60fps sur SMS ce qui de toute facon ne se verrait pas puisque l'ecran est fixe et que les animations sont en 2 frames.

Par contre j'ai vraiment bien aimé le jeu, ca m'a donné envie de le faire en entier.

Coca_Impact

Finir un jeu  :roll2: ça existe ça ?

upsilandre

Je reviens vite fais sur le mapper de ce jeu.
Dans la tres grand majorité des cartouches NES on tombe toujours soit sur le mapper MMC1 de Nintendo, soit sur le MMC3 qui l'a remplacé par la suite. avec ces 2 mappers vous couvrez environ 1500 cartouches du catalogues.
Mais y a un grand mystere. Entre le célèbre MMC1 et le non moins célèbre MMC3 est ce que Nintendo a produit un MMC2? oui mais il a ete utilisé dans une seule cartouche, celle de Punch out!



Souvent dans les jeux les programmeurs sont amenés a avoir besoin d'executer une operation a un moment precis de l'affichage pour par exemple modifier le scrolling au milieu de l'ecran pour simuler un scrolling parallaxe ou pour afficher un HUD (dont on doit bloquer le scrolling pendant son affichage) donc le programmeur a besoin de savoir a quelle moment la console va afficher tel ligne a l'ecran afin de modifier une valeur a ce moment la.

La NES n'a pas de fonction hardware pour faire ca contrairement a la SMS, le mapper MMC3 a palier a cela en intégrant un compteur IRQ qui permet de compter les lignes affichées et d'interrompre le CPU pour lancer un bout de code a la ligne ecran choisie par le programmeur mais avant l'arrivé du MMC3 il fallait se debrouiller autrement.

La solution a l'epoque (comme dans Ys pour enclencher l'affichage du HUD) etait donc d'utiliser le sprite 0, on le placait discretement a l'endroit de l'ecran ou l'on voulait déclencher une action puis ensuite fallait surveiller un flag de collision qui s'activait quand le GPU commencait a tracer ce sprite mais pour surveiller ce flag faut faire une boucle avec le CPU et donc bloquer le CPU pendant ce temps et puis la boucle met un certain temps a s'executer donc la synchro est approximative, ca peut produire des petits glitch comme dans Ys. Et puis c'est pas forcement facile de cacher ce sprite...

Punch out fait partie de ces jeux qui ont besoin de déclancher une action a un certain moment de l'affichage. Comme je l'ai expliqué l'ecran du jeu est divisé en 2, a la 96eme ligne il faut bankswitcher le tileset du background pour passé de l'affichage du décor dans la partie superieur de l'ecran a l'affichage du joueur dans la partie inferieur.
Utiliser un sprite pour ca dans Punch Out c'est embétant car le jeu a pour priorité d'utiliser tout le budget sprite de la machine pour afficher l'adversaire et ici (comme souvent) la principale limite c'est le nombre de sprite par scanline qui limite la largeur du perso a 64 pixels. Si jamais on utilise le sprite 0 comme un trigger pour declancher le bankswitching ca veut dire qu'on s'oblige a reduire encore la largeur du sprite de l'adversaire de 1/8eme pour pas saturer l'affichage par scanline soit 56 pixels au lieu de 64 alors que c'est justement dans la largeur qu'on manque deja d'espace.

Et Punch out sort 1 an avant l'arrivé des mappers MMC3, a cette epoque nintendo utilise le MMC1 qui ne propose pas de solution sur ce point donc nintendo a décidé de crée un nouveau mapper pour pallier au lacune du MMC1.
Le MMC2 integre donc une feature ingenieuse qui lui permet de bankswitcher de faocn autonome sans meme interrompre le CPU comme le fait un MMC3 (mais ne peut faire que du bankswitching alors que le MMC3 génére une interuption CPU qui permet de faire ce qu'on veut ensuite, c'est plus flexible)
L'astuce c'est d'utiliser une tile comme trigger. la tile 254 et 255 servent de trigger, quand le GPU de la NES commence a afficher la tile 254 alors la cartouche bankswitch automatiquement le tileset complet, et quand c'est la 255 la cartouche revient sur la bank précedente.
Le jeu peut comme cela swaper entre 2 tileset automatiquement, suffit au programmeur de placer les tiles 254 et 255 n'importe ou sur l'image a l'endroit ou il veut déclencher le bankswitching


J'ai entouré en rouge dans le tileset background (celui de droite) les 2 tiles 254 et 255 qui servent de trigger. Ce sont 2 tile entierement bleu donc facile a placer et camoufler n'importe ou dans le background principalement bleu d'autant qu'on peut meme tricher et les placer hors champ.




J'ai trouvé l'idée ingénieuse car ca rend le bankswitching vraiment tranparent au niveau du CPU et de la programmation, c'est le GPU lui meme qui va declancher le bankswitching sans le savoir, c'est vraiment presque comme si on doublait la taille physique du tileset.
Mais ca n'a finalement pas ete utilisé par d'autres cartouches, c'est curieux, le MMC2 est orphelin. Le MMC3 debarque ensuite et propose une solution plus classic de compteur IRQ mais plus flexible qui se limite pas juste au bankswitching.

upsilandre


upsilandre

Des francais qui viennent de sortir un nouveau jeu sur NeoGeo et ca parle beaucoup de l'aspect technique de la NeoGeo de facon simple et illustré