Upsilandre Profile picture
May 31 28 tweets 7 min read
L'histoire de la création de Super Mario Kart SNES et sa "filiation" avec F-Zero est relativement connue. Par contre, la façon dont on raconte cette histoire est au moins partiellement fausse et debunkable sous l'angle de la technique. THREAD ⬇️
#Retrogaming #SNES #MarioKart
Ce qui semble acquis c'est qu'après le succès de F-Zero et son mode 7, l'idée de faire un jeu de course du même acabit (ou une suite?), mais à 2 joueurs, s'est vite imposée. La SNES, console à vocation familiale, manquant cruellement de jeux à 2 joueurs (même Final Fight...).
Sauf qu'il était semble t'il impossible d'avoir un équivalent 2 joueurs à F-Zero sur SNES. Véhicules trop rapides. Console pas assez puissante. D'où un jeu de Kart bien plus lent.
C'est cette seconde partie de l'histoire qui selon moi est erroné et qu'on retrouve systématiquement
Déjà on peut y deviner cette idée commune mais fausse qu'un scrolling rapide demande beaucoup de ressources. La vitesse d'un scrolling ne change pas grand chose, c'est presque un détail. C'est avant tout un choix de game design (un scrolling rapide est rarement pertinent).
C'est souvent une confusion faite avec la fluidité qui elle peut être exigeante en ressource. Mais fluidité et rapidité sont 2 choses parfaitement distinctes.
De plus, un problème de puissance est rarement un mur infranchissable, il y a toujours des solutions pour contourner.
Si c'était juste un problème de puissance, il suffirait de proposer un mode 2 joueurs à 30fps (F-Zero et MK tournent à 60fps) ou ajouter un DSP, ce que fait d'ailleurs MK.
En effet, il est même très probable que MK demande plus de puissance que ne le ferait un F-Zero à 2 joueurs.
La phase de transformation de coordonnée des sprites pour les projeter à l'écran selon le point de vue "3D" du joueur est une étape assez lourde pour un CPU aussi faible que celui de la SNES.
Ca ressemble un peu aux traitements de vertice des polygones dans les jeux 3D.
Et si dans F-Zero il y a rarement plus de 1 ou 2 sprites à l'écran (le sprite du joueur ne compte pas ici). Ce n'est pas le cas de MK dont les concurrents sont bien plus groupés (à cause de la lenteur justement) auxquels s'ajoutent les sprites des items et ceux des obstacles.
Avec les 2 points de vue ça monte facilement à une quinzaine de sprites à projeter à 60fps dans l'espace "3D". Beaucoup plus que dans F-Zero. Le DSP de MK sert en partie à ça.
Donc non, l'impossibilité de faire un F-Zero à 2 joueurs n'est pas un problème de puissance. C'est faux.
Et pourtant cette impossibilité est bien réelle. Il est factuellement impossible de faire un F-Zero à 2 joueurs sur SNES mais pas pour cette raison.
La raison est plus fondamentale. C'est lié à l'implémentation du mode 7. Ce mode vidéo qui donne toute son identité à la SNES.
C'est un mode d'affichage de background dont l'intégration hardware est bien plus complexe que les autres et qui a demandé des sacrifices:
Il n'y a qu'un seul layer et on ne peut choisir ni l'adresse ni la taille de la tilemap ou du tileset. Tout est fixé de façon hardware.
Cette absence totale de flexibilité et de liberté du mode 7 rend impossible la possibilité d'afficher simultanément à l'écran (split-screen) 2 points de vue éloignés sur la map... sauf si la map du circuit entre intégralement en VRAM. Et c'est ce que va faire Mario Kart 🙂.
La taille fixe de la (tile)map en VRAM qu'autorise le mode 7 est exactement 1024x1024 pixels, pas plus ni moins. Et c'est exactement la taille que feront tous les circuits de MK. Là ou F-Zero a des tailles de circuit bien plus grandes et variées. Ça va de 4200x3500 à 7168x3824.
Je vous ai superposé divers circuits de MK par-dessus le dernier circuit de F-Zero, à la même échelle, pour mieux comprendre la différence de taille des circuits.
Cette unique circuit de F-Zero pourrait contenir plus de 26 circuits MK.
C'est donc ça l'unique véritable compromis technique de MK. La taille des circuits, pas la vitesse. Avoir des circuits suffisamment petit pour entrer intégralement dans la VRAM.
Et c'est cette petite taille de circuit qui va indirectement induire une faible vitesse, pas l'inverse
A la lumière de ce constat on peut sans doute reconstruire ce qu'a du être la vraie chronologie du processus créatif de MK:

Contrainte technique 2 joueurs >> Petit circuit

Petit circuit >> Faible vitesse

Faible vitesse >> Kart

Kart >> L'identité du véhicule devient le pilote
Et la suite vous la connaissez ou devinez. Pour identifier facilement un personnage de dos il faut qu'il soit vraiment très reconnaissable d'où la nécessité d'aller piocher parmi les personnages déjà iconiques de Nintendo 🙂.
Version Google Docs
docs.google.com/document/d/1tt…
Et pour les mêmes raisons. La taille de la map du stage 2 de Contra III (stage top/down en mode 7) fait aussi exactement 1024x1024 pixels comme les circuits de MK. C'est ce qui permet de pouvoir faire ce stage de Contra à 2 joueurs en split-screen 🙂.
Si vous en voulez encore plus 🙂
J'aime bien l'idée (pour l'instant théorique) des 2 viewports dos à dos qui ne se retourne jamais mais ca serait très complexe et coûteux en ressource. Pas sûr que ce soit très viable. En tout cas pas à l'époque 😀.
Et pour les mêmes raisons encore, tous les circuits de Street Racer ont une taille 1024x1024 pixels = jeux de karting 🤓
C'est pas seulement pour copier Mario Kart. C'est qu'ils n'avaient pas trop le choix non plus.
PS: Vous vous êtes peut-être déjà demandé aussi pourquoi quand on joue en solo à MK ça reste en split-screen plutôt que de proposer une expérience fullscreen comme F-Zero?
C'est lié à un choix technique plutôt judicieux pour économiser la ROM de la cartouche.
Il faut savoir que pour produire cet effet 3D de perspective il faut modifier 4 paramètres du mode 7 a chaque scanline (grâce au HDMA). Des paramètres qui sont différents pour chaque ligne et chaque angle de rotation (128 angles) et qui serait trop coûteux à calculer à la volée.
Pour cette raison tous ces paramètres sont précalculés dans une énorme table (96ko) qui dans le cas de F-Zero va occuper presque 1/5ème de la petite cartouche (512ko).
MK va faire un autre choix pour éviter de stocker cette table en ROM et de gâcher le peu de place disponible.
MK va profiter de 2 opportunités, qui sont la présence du DSP dans la cartouche (présent pour d'autres raisons) et celle du mode 2 joueurs, pour calculer le contenu de la table au lancement du jeu, en utilisant le DSP, et stocker la table en RAM (plutôt que dans la cartouche).
La perspective écrasée du mode 2 joueurs split-screen s'étend sur 2 fois moins de scanline qu'en fullscreen et permet donc de produire l'effet de perspective avec une table 2 fois plus petite (réutilisé pour le second joueur). C'est ce qui permet de faire tenir la table en RAM.
Ca ne serait pas vraiment possible ou raisonnable avec une table complète fullscreen comme celle de F-Zero qui remplirait les 3/4 de la RAM.
Et sans la présence d'une table "complète" pas possible de proposer un mode solo fullscreen.
Au final j'en ai fait aussi un billet de blog 🤓
upsilandre.over-blog.com/2022/06/debunk…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Upsilandre

Upsilandre Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @upsilandre

May 25
Quelques constats en vrac sur Metroid après y avoir joué longuement. Ca va parler de problème d'input, de timer chaotique, de nuancier de PV et de duplicité du jump... THREAD ⬇️
#Retrogaming #NES #Metroid #Nintendo
Je commence directement par le truc qui fâche car je suis assez sensible aux problèmes d'input dans les jeux et Metroid n'y échappe pas malheureusement. Il a le droit à son petit bug d'input comme trop de jeux NES. Dommage.
Ça concerne le shot. Chaque fois qu’on presse ou relâche n'importe quel bouton (même les boutons de direction) pendant qu'on presse le bouton de tir alors ça enclenche un autre shot non voulu.
Read 24 tweets
Mar 15
Je vais à nouveau parler d'un shmup NES: Parodius.
J'ai quelques remarques et gifs à balancer mais ce Parodius est surtout un très bon exemple pour comprendre pourquoi certains gros jeux Konami (Gradius 2, Crisis Force...) n'ont jamais quitté le japon. THREAD⬇️
#Retrogaming #NES
Il a exactement la même configuration de cartouche que Gradius 2 et Crisis Force a la différence que Parodius lui est bien sortie en occident (mais uniquement en Europe).
Mais on remarque rapidement l'absence de certaines animations comme certaines du boss final:
Ou cette animation de boss énorme qui tourne la tête quand il se fait toucher, assez couteuse en tuile et qui a disparu de la version Euro (ca aurait été la même chose si il y avait une version US. Ce n'est pas la faute du PAL).
Read 26 tweets
Mar 3
Dragon Spirit sur NES est une bonne adaptation (grâce a Now Production: Splatterhouse Wanpaku, Jackie Chan,Youkai Douchuuki...) qui a même ses atouts par rapport à la version culte PC-Engine.
Ca va notamment parler de hitbox encore une fois. THREAD ⬇️
#Retrogaming #NES #PCengine
En effet le truc agréable de cette version NES c'est d'avoir une hitbox de taille modeste (8x15) qui couvre juste l'abdomen du dragon (les ailes, têtes, cous et queue ne sont pas inclus) et donne donc un encombrement raisonnable de shmup classique. Ce n'est pas frustrant.
A l'inverse de la version PC-Engine qui s'inspire plus de la version arcade avec une hitbox qui couvre en grande partie les ailes en plus d'avoir un sprite plus large. La hitbox est vraiment très encombrante, 4 ou 5 fois plus large, pour un shmup c'est assez frustrant à jouer.
Read 15 tweets
Dec 9, 2021
Un dernier thread sur #TMNT pour évoquer d'autres éléments un peu bancales dans la technique. Autant l'art est plutôt sympathique (pixel art, musique, cutscene...) autant la technique, le code, est un peu en retrait pour du Konami.
#Retrogaming #NES
1/15
Premier constat. C'est un jeu 30 fps (ou 25 fps en PAL). Le standard étant le 60fps sur NES, c'est alors un peu décevant venant de Konami (cf. les Contra ou même Castlevania et son framerate 60fps ultra stable malgré que ce soit un très vieux jeu de 1986).
2/15
Mais parfois il est préférable de caper le jeu a 30 fps plutôt qu'avoir un framerate totalement instable comme le triste Contra Force (à pas confondre avec les Contra) qui n'aurait jamais dû viser les 60 fps.
Malheureusement le 30 fps n'empêche pas TMNT d'avoir des drops...
3/15
Read 16 tweets
Dec 4, 2021
Suite au thread hitbox #TMNT on m'a beaucoup demandé de montrer le célèbre champ d'algues électriques à juste titre mais pour cela il a fallu que j'écrive un script dédié.
Le mystère est donc résolu mais il y a suffisamment à dire pour un nouveau thread😀
#Retrogaming #NES
1/13
Ce ne sont pas des collisions avec des hitbox. Ça exploite simplement la routine de collision du background utilisé pour les murs et le sol. C'est donc une toute autre routine qu'il a fallu comprendre pour visualiser cela mais ça vaut le coup pour une scène aussi culte🙂
2/13 Image
Le premier constat qu'on peut faire c'est la très mauvaise concordance entre la map de collision et le visuel. Ils ont voulu donner un côté plus organique en ajoutant des tuiles aux fonctions uniquement esthétique mais en termes de design c'est très problématique.
3/13
Read 14 tweets
Dec 1, 2021
Un thread sur les hitbox de #TMNT + d'autres informations utiles que j'ai extirpé du jeu.
On va commencer par ce gif (dont je suis fier ^^) de comparaison des 3 attaques (front, up, down) de chaque tortue synchronisée. Un grand mystère enfin dévoilé 🤓
#Retrogaming #NES
1/17
Je vous met même la version hires/lossless 🙂
i.postimg.cc/9Mt1d332/TMNT-…
Un gif qui permet de constater que les attaques sont assez complexes. Ce n'est pas juste une hitbox statique et très brève comme souvent. Ici on a une longue séquence dynamique pour chaque attaque.
2/17
Une complexité qui permet une identité propre à chaque attaque. Le gif permet de comparer la durée, la portée et le déroulé de chaque attaque, parfois l'attaque frontale tape même dans le dos ou au dessus ou revient plusieurs fois devant (en faisant tourner son arme).
3/17
Read 21 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(