248 votes

Pourquoi 3333360 est le score maximum dans Pac-Man ?

Selon le Page Wikipedia pour Pac-Man le score le plus élevé possible est de 3333360 points. C'est ce qu'on appelle un jeu parfait et il a déjà été atteint par 3 personnes différentes.

Ce que je veux savoir, c'est : POURQUOI est-ce exactement 3333360 points ? Il doit s'agir d'une limitation technique, mais ce chiffre n'a aucun sens à mon avis.

Je sais que le jeu a 255 niveaux. 255 c'est 11111111 en binaire et le niveau 256 (qui semble exister mystiquement) amène le chiffre 8 bits à un dépassement, ce qui se termine par un crash du jeu.

Mais, 3333360 semble tellement aléatoire.

69 votes

Ce n'est pas un technique limiter autant que possible le score que vous obtenez si vous mangez toutes les boulettes et tous les fruits sur une vie dans chaque niveau.

24 votes

Le problème n'est pas le fait qu'il essaie de charger le niveau 0. Le problème est que le nombre 256 ( 100000000 en binaire) est stockée dans une mémoire qui n'a été allouée que pour contenir 8 bits. Le premier 1 est donc écrit dans la mémoire qui est assignée à quelque chose d'autre, ce qui corrompt essentiellement l'ensemble du jeu.

39 votes

@LeeWhite : Ce n'est pas vraiment le problème. Le problème est que le code qui est censé dessiner les fruits commence par supposer que le nombre de fruits doit correspondre au nombre de niveaux, vérifie s'il est supérieur à 7, et si oui, le met à 7. Ensuite, la logique de rendu des fruits fonctionne en dessinant de manière répétée un fruit, en décrémentant le nombre de fruits à dessiner, et en bouclant jusqu'à ce que la décrémentation donne zéro. Si le nombre de niveaux était égal à zéro, le code tente de dessiner 256 fruits, écrasant la mémoire d'affichage au-delà de la région où les fruits sont censés aller.

364voto

MrLemon Points 17073

El Musée Pacman a un article sur l'obtention de 3 333 360 points. Et voici un vidéo d'un gars qui fait les niveaux 255 et 256 avec des informations importantes concernant le niveau 256.

Niveau 1 à 255

Points d'alimentation : Il y a 240 points réguliers par niveau, valant 10 points chacun, ce qui vous rapporte 2400 points par niveau. De plus, manger les quatre points énergisants, qui valent 50 points chacun, vous donne 200 points supplémentaires.
⇒ 255 × 2600 = 663000

Manger des "fruits" : Il y a un objet comestible par niveau qui n'apparaît que pendant un certain temps, deux fois par niveau. En fonction du type de fruit, qui dépend lui-même du niveau auquel vous jouez, vous obtenez un nombre de points différent. Au total, vous obtenez
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600

Manger des fantômes : Manger un fantôme dans la même période d'énergisation vous donne 200 points, et le double pour chaque fantôme supplémentaire que vous mangez (400, 800 et 1600 pour le 2e à 4e fantôme, respectivement). Vous pouvez faire cela 4 fois par niveau, mais seulement jusqu'au niveau 16, et au niveau 18, puisque les fantômes ne clignotent pas aux niveaux 17 et 19+. ⇒ 4 × 3000 × 17 = 204000

En additionnant ces chiffres, on obtient 3326600 juste 6760 points de moins que la perfection.

Niveau 256

Ce nombre impair peut être obtenu dans le niveau 256 caché.

Screenshot of a normal Pac-Man levelScreenshot of a glitched Pac-Man level

Points visibles : Comme vous pouvez le voir, il manque un peu plus de la moitié de l'écran, ce qui signifie que vous ne pouvez obtenir que 112 points normaux et 2 points énergisants.
⇒ 1220

Fruit unique : En raison de l'écran glitched, vous ne pouvez obtenir la clé (le "fruit") qu'une seule fois.
⇒ 5000

Pointillés glacés : Il y a 9 points normaux dans la région glitchée qui réapparaissent à chaque fois que vous mourrez. Avec 5 vies supplémentaires, vous pouvez les obtenir 6 fois.
⇒ 6 × 90 = 540

Total général

(663000 + 1220 + 540 (points)) + (2459600 + 5000 (fruits)) + (204000 (fantômes)) = 3333360

52 votes

J'ai commencé à taper la réponse, pensant que les chiffres s'additionneraient bien, mais ce n'était pas le cas. J'ai mis du temps à découvrir cette bizarrerie que sont les points du niveau 256.

9 votes

4 votes

@Howdy_McGee Surtout sur un processeur 8 bits...

42voto

keepsmilinyaar Points 229

Le score est limité car un pépin survient au niveau 256 qui écrase la moitié de l'écran avec des déchets. Le jeu ne permet pas au joueur d'avancer d'un plateau à l'autre sans manger 244 points et énergisants, mais le problème écrase beaucoup de points ; le joueur ne pourra donc pas manger 244 points et énergisants, et ne pourra donc pas quitter le niveau. Au cas où vous vous demanderiez pourquoi ce problème se produit, le code machine de Pac-Man pour dessiner les fruits est similaire au code C :

unsigned char temp1, temp2;
unsigned char *ptr;

temp1 = level;
if (temp1 > 15) temp1 = 15;
temp2 = temp1;
if (temp2 > 7) temp2 = 7;
ptr = LOWER_RIGHT_ADDRESS;
do
{
  *ptr++ = shapes[temp1--];
} while(--temp);

Notez que, contrairement à de nombreuses machines, Pac Man utilise une disposition assez curieuse de la mémoire écran qui place des octets consécutifs horizontalement en haut et en bas de l'écran, et verticalement au milieu. Cela a probablement été fait pour que, lors du dessin de la partie principale de l'écran, les adresses mémoire soient incrémentées par une puissance de deux toutes les huit lignes de balayage (notez que le "haut" de l'écran est à droite de l'image). Essentiellement, le circuit convertissait les indices de rangée/colonne en adresses de mémoire avec un mappage similaire à :

//Using column values in the range 30 to 1, wrapping after 63...
address = (column & 32) ? 
          (row << 5) | (column & 31) :
          ((28 | (column & 3)) << 5)  | row);

mais mis en œuvre dans les circuits plutôt que dans le code. Cela permettait de calculer les adresses d'écran en utilisant une paire de compteurs et un circuit pour sélectionner l'une des deux permutations des bits de ces compteurs. Le matériel nécessaire pour que l'adresse mémoire augmente de 36 pour chaque ligne au lieu de 32 aurait été plus compliqué en comparaison.

19 votes

@Kevin : Le score indiqué est le maximum possible dans Pac Man parce que le bug montré ci-dessus (dans le code C qui est fonctionnellement similaire au code Z80 dans le jeu lui-même) écrit des déchets inutiles sur une grande partie de l'écran, écrasant les points que le joueur est censé manger. L'autre réponse indique ce qui se passe visiblement pour limiter le score, mais ce qui précède indique (pour les lecteurs à l'esprit technique) por qué cela se produit (et suggère que la limitation à 256 niveaux n'était probablement pas délibérée mais qu'elle est due à un oubli).

8 votes

Les deux réponses complètent très bien la question.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X