Hardcore Retrogaming

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

« précédent - suivant »

Coca_Impact

Intéressant  :vice: Je pense être passé à côté de beaucoup de choses mais l'essentiel est compris ^^

pippoletsu

J'ai adoré. Il y avait outrun aussi, c'était facile.

upsilandre

Un autre truc qu'on peut voir sur cette image c'est que les elements du decors comme les palmiers ne sont pas des elements de background (preuve en est ils n'apparaissent pas sur la tilemap de droite) ce qui signifie que ce sont des sprites et on comprend bien pourquoi. Si ces palmiers etaient integrés a la tilemap ils seraient déformé en meme temps que la route du coup c'est difficile de charger le décors car faut utiliser uniquement des sprites et on est vite limité (la ferrari du joueur fait deja 5 sprites de large sur 8 max)




upsilandre

#243
Y a un mystere dans cette image de Ys NES que je suis certainement le seul a voir  :vice:



A gauche y une bordure noir de 8 pixels, classic... sauf qu'il y en a une aussi a droite bordel wtf!!!


En effet depuis l'intellivision jusqu'a au moins la Megadrive, les GPU 2D ont en général une fonction (qu'on active ou pas, c'est au choix) qui permet de cacher le bord gauche de l'ecran (et en général uniquement le gauche comme c'est le cas sur NES et SMS) sur 8 pixels soit la largeur d'une tile. Sa fonction est de cacher des glitch. Principalement 2 types de glitch:
- Celui que peut produire un scrolling horizontal quand il utilise une tilemap qui fait tout juste la largeur de l'ecran, dans ce cas si tu met a jour la tilemap pour faire apparaitre le decors que révele le scrolling ca va se voir sur le bord de l'ecran gauche ou droit selon ton choix. En cachant le bord gauche le GPU reduit de 8 pixels la taille d'affichage de ton ecran (typiquement ca te donne une définition de 248 au lieu de 256) mais ta tilemap reste en 256 donc cette fois tu as un peu de marge pour la mettre a jour "hors champ" sans que ca n'apparaisse a l'ecran et donc sans glitch
- Celui que peut produire un sprite qui sort ou qui entre de l'ecran par le bord gauche car le point référent d'un sprite qui défini sa position c'est son coin haut a gauche. Donc quand un sprite sort de l'ecran par la droite, il sort progressivement avant son point référent qui sera le dernier a sortir. a l'inverse quand le sprite sort de l'ecran par la gauche c'est son point référent qui sort en premier des limites de l'ecran et qui fait disparaitre le sprite d'un seul coup ce qui donne un glitch. en cachant le bord gauche on peut faire sortir l'integralité du sprite (8 pixels) avant que son point référent ne soit réelement sortie des limites des coordonnées de l'ecran. Donc pour ce glitch c'est le bord gauche qu'il faut cacher et c'est donc ca qui imposera aussi l'utilisation du bord gauche pour le glitch de scrolling.


Alors pourquoi cacher le bord droit sur Ys?
Sur NES c'est un peu particulier car si les tiles font bien 8x8 pixels comme sur SMS, la gestion de la palette des tiles du background se fait par bloc de 16x16 pixels (une palette pour 4 tiles) donc cacher 8 pixels n'est pas suffisant pour cacher les glitch de scrolling lors de la mise a jour de la tilemap. Ca ne sera pas un glitch de tile erroné (ca sera le bon tile qui sera affiché) mais un glitch de couleur (pas les bonnes couleurs). Alors en général c'est pas grave car sur NES t'as une tilemap qui peut faire 512 de large (contre 256 sur SMS) donc bien plus que la largeur de l'ecran, t'as donc 256 pixels hors champ (bien plus que les 16 pixels nécessaire pour cacher le glitch) sauf que tu peux pas toujours utiliser cette configuration de tilemap.
Notamment ici sur Ys au lieu d'utiliser une tilemap double largeur, ils la coupent en 2 pour avoir 2 tilemap distinct, une pour le jeu (qui va donc scroller) et une pour le HUD (qui ne scroll pas). Du coup la tilemap du jeu est finallement limité a 256 pixels de large et donc pour cacher completement le glitch du scrolling il faudrait cacher 16 pixels ce qui est fait ici en cachant 8 pixels a gauche et 8 pixel a droite.


Mais ca nous dit toujours pas comment c'est possible? car d'un point de vue hardware on ne peut cacher que les 8 pixels de gauche sur NES (ou SMS).
Sur le coup je me suis dit qu'il y avait un truc que j'avais du loupé pourtant je pensais avoir fait le tour du hardware NES et le connaitre en detail donc c'etait embetant comme constat, comme un cailloux dans la chaussure. Apres verification dans les docs le constat reste le meme, au niveau hardware on peut pas mettre sur off le bord droit, seulement le bord gauche donc c'est pas quelque chose que j'avais raté, et pour moi le mapper ne peut pas pallier et faire cela.

Rapidement j'en suis arrivé a la conclusion que le seul moyen de produire ce qu'on voit a l'ecran serait d'aligner une colonne de 22 sprites noirs pour cacher tout le bord droit de l'ecran, aussi absurde que ca paraisse comme methode je ne voyais pas d'autre solution et l'avantage c'est que c'etait facile a verifier dans le debugger. Donc si vraiment j'avais compris le hardware de la NES, en désactivant les sprites je devrais voir la bande noir de droite disparaitre. Que de suspens au moement du test (j'adore ca :D)

et vlan, effectivement en désactivant les sprites j'ai fais apparaitre le bord droit de l'ecran avec le glitch qui etait caché derriere.




Donc les gars se sont bien amusé a cacher tout le bord droit de l'ecran avec des sprites et ainsi avoir un scrolling 4-way glitchless avec une tilemap juste de la taille de l'ecran.
22 sprites noirs (suffisant pour cacher 176 pixels) que l'on peut d'ailleurs voir aussi dans le tileset, une serie de tiles noires qu'on aurait pu assimiler a une absence de tile mais non.
22 sprites c'est 34% de la liste de sprite, 12.5% du budget sprite par scanline et 8.5% du budget sprite du tileset.
Donc c'est un peu couillu comme choix mais probablement un choix a posteriori, c'est a dire qu'ils ont du dabord constater que le jeu utilisait peu de sprite (les sprites sont tout petit) et qu'ils pouvait donc se permettre d'en gacher pour avoir un scrolling propre.

Le seul endroit ou ils ont besoin de beaucoup de sprites c'est pour faire l'effet de halo lumineux dans les grottes mais justement dans les grottes seul le centre de l'ecran est visible donc plus besoin du trick des 22 sprites qui peuvent etre récuperé.
D'ailleurs je cherche toujours un moyen d'accéder rapidement a une grotte (une savestate?) car cette effet m'intéresse beaucoup, je veux voir comment ca tourne sur NES. C'est bisare le jeu est sortie en meme temps sur NES et SMS mais la map est vraiment differente, sur SMS en 2mn de jeu je trouve une grotte, lequel a respecté l'orginal?


pippoletsu

Les deux ! Il y a une grotte très vite accessible après le premier village mais qui en fait doit se faire tard dans le jeu.
J'ai jamais fait la version NES mais je ne me souviens d'aucune différence entre les version SMS, PC Engine ou Chronicles...

upsilandre

pourtant je fais les 2 en meme temps et la map est tres differente, sur SMS t'as une grotte au nord juste a la sortie du village, sur NES au nord y a plein d'acces qui semblent bloqué. j'ai vu des grottes mais inaccessible. y a des arbres qui disparraissent ou qu'on coupe?

pippoletsu

Nan, tout est accessible quasi de base à part le dernier donjon.

upsilandre

#247
bon j'ai essayé  a nouveau sur les 2 et rien a faire les 2 map sont tres different J'imagine que les lieux sont les memes et se suivent dans le meme ordre mais rien que la map de la plaine du debut elle est bien plus riche et complexe sur NES. Et les 2 grottes au nord me sont toujours inaccessible  :cry2:
J'ai trouvé des teleporteurs sur la version NES dans la plaine du debut mais ca m'emmene pas ou je voudrais.

pippoletsu

Des téléporteurs ? Euh... Ya pas de téléporteurs dans Ys :nerd:

upsilandre

Sur la version NES y a des statuts qui te teleporte dans divers endroit, au debut du jeu j'ai trouvé un endroit avec 4 statuts qui me teleporte sur des iles.
J'ai regardé un peu sur youtube et effectivement toutes les autres versions sont exactement les meme sauf la version NES qui a l'aire un peu freestyle. Tu devrais peut etre l'essayer un jour si t'as l'occasion (et ce jour la tu me passera tes savestate  :vice: )

upsilandre

voila ce que j'ai trouvé sur wiki

CitationThe most distinctive of the early ports was the Famicom edition, which was published by Victor Musical Industries. This version was a vast departure from the original, featuring entirely new layouts for the towns, field, and dungeons, replacement of a number of the original musical tracks, and a new final battle sequence.

pippoletsu

Ah ouais mais non, on ne touche pas à la musique Putain.

upsilandre

le theme principale est toujours la en tout cas, c'est le meme que ce que j'ai entendu sur les autres versions



voila les statuts teleporteur que l'on trouve au debut du jeu
http://youtu.be/9k3SD-DqEpA?t=7m52s

et la il ouvre un passage secret en deplacant un arbre (avec un objet j'imagine, j'avais deja tenté sur cette arbre a main nu je vais réessayer), apparement sur NES c'est comme ca qu'il accede au grotte que j'arrive pas a atteindre, c'est bien ce qu'il me semblait.
http://youtu.be/9k3SD-DqEpA?t=12m52s

Perso au premier abord la version NES a l'aire plus sympa, plus riche, apres j'imagine que pour les puristes ca sera different :D



upsilandre

Bon ca y est j'ai reussi a trouver la grotte  :cool:

version SMS
- tu sort du village
- tu vas tout droit
- tu tombe sur une grotte
- tu entres

version NES
- tu sort du village
- tu prend plein de chemin tordu en passant par des ponts et des iles pour contourner des forets
- tu tombes sur un endroit un peu caché ou se trouve 4 statuts/téléporteur
- tu prend une serie de teleporteur successif pour arriver sur une ile isolé
- tu explore l'ile pour trouver un lac
- tu te place a un endroit particulier pour faire apparaitre la déesse de l'eau
- elle te dis que pour retrouver ses pouvoirs tu dois lui ramener un objet
- tu retourne dans le village du debut
- tu trouves l'objet qui etait caché dans l'un des puits du village (mais on te le donne pas si t'as pas ete voir la déesse avant)
- tu retournes voir la déesse en refaisant tous le trajet et elle te donne alors une flute magique
- tu vas vers le nord et grace a la flute tu ouvres un passage secret en déplacant un arbre
- la une voix te dis que comme tu connais la déesse il va t'aider
- tu ressort et tu va en peu plus au nord face a un lac
- quand t'approche du lac celui si s'evapore (le pouvoir de la déesse qui controle l'eau?) et te libere un passage
- et la tu arrive face a deux grotte
- tu entres dans celle ou on t'autorise a entrer
- et merci les savetates qui m'ont permis de faire tout ca sans perdre de temps a m'armer car l'acces au statut sans cela est trop chaud


Conclusion c'est vraiment pas les meme versions  :cltendax:

upsilandre

#254
du coup voila a quoi ca ressemble dans les grottes sur NES.




pour obtenir ca y a dabord la construction d'un background limité a une zone autour du joueur et qu'il faut donc mettre a jour selon les deplacements du joueur, le reste etant juste composé de tiles noires.




ensuite ils utilisent 46 sprites noirs pour composer un pochoir qui va recouvrir le background et le cacher pour ne laisser apparaitre qu'une forme arrondie





Alors 46 sprites de gaché sur 64 affichables ca peut paraitre beaucoup mais y a pas grand chose d'autre a afficher. Y a pas les 22 sprites pour cacher le scrolling glitch inutile ici. Le perso fait seulement 4 sprites, un ennemi c'est 4 sprites aussi, reste un sprite qu'on voit en bas a droite qui avec un test de collision sert au programme a identifier le moment ou faut afficher l'ecran du HUD (une methode un peu archaique des premieres années avant l'arrivée de mappers comme le MMC3 qui integre un compteur IRQ plus pratique et precis, notamment ici on voit un glitch sur la premiere ligne du HUD a cause de la syncro approximative de cette methode)


Sur SMS la methode utilisé est completement differente et bien plus complexe et couteuse en CPU c'est pour ca que je voulais comparer. Sur SMS ils utilisent une technique de construction software en temps réel d'un pochoir sur mesure selon la position du joueur dans le background ce qui leur permet d'optimiser le nombre de sprites a utiliser pour le pochoir, seulement 22 sprites au lieu de 46 sur NES. par contre au niveau du tileset la methode SMS consome aussi 22 tiles alors que sur NES seulement 4.

A priori la solution utilisé sur NES est plus simple et moins couteuse mais on peut expliquer ce choix du coté SMS par les differences hardwares. Deja sur SMS ils utilisent une bonne dizaine de sprites pour bidouiller leur HUD (j'y reviendrais une autre fois mais a ce niveau la NES est mieux loti) du coup si ils utilisaient la methode de la version NES pour le pochoir il ne resterait vraiment plus beaucoup de sprite pour le reste. En plus de cela la SMS n'a pas de flipping de sprite et c'est ca qui permet a la NES de faire ces économies sur le tileset (avec seulement 4 tiles differentes pour tout le pochoir), sur SMS en l'absence de flipping il aurait fallu en utiliser 16 et du coup les economies sur ce point n'aurait pas ete pertinente. A l'inverse la NES ne peut pas utiliser la methode de la SMS car ca implique de mettre a jour 22 tiles pendant le blanking sans bankswitching et c'est pas possible sur NES (le blanking est trop court).
Au final ces 2 methodes tres differentes sont coherente avec les differences hardware qui sont quand meme bien la.