Según la página de Wikipedia para Pac-Man , la puntuación más alta posible es 3333360 puntos. Se llama un juego perfecto y ya lo lograron 3 personas diferentes.
Lo que quiero saber es: ¿POR QUÉ es exactamente 3333360 puntos? Debe ser una limitación técnica, pero este número no tiene sentido en mi opinión.
Sé que el juego tiene 255 niveles. 255 es 11111111
en binario y nivel 256 (que parece existir místicamente) hace que el dígito de 8 bits se desborde, lo que termina en un bloqueo del juego.
Pero, 3333360 solo parece tan aleatorio.
Comentarios
Respuesta
El Pacman Museum tiene un artículo sobre cómo obtener 3.333.360 Puntos. Y aquí «sa video de un tipo en el nivel 255 y 256 , con información importante sobre el nivel 256.
Nivel 1 al 255
Puntos para comer : hay 240 puntos regulares por nivel, con un valor de 10 puntos cada uno, lo que genera 2400 puntos por nivel . Además, comer los cuatro puntos energizantes, que valen 50 puntos cada uno, te da otros 200 puntos.
⇒ 255 × 2600 = 663000
Comiendo «fruta» : hay un objeto comestible por nivel que solo aparece en un determinado cantidad de tiempo, dos veces por nivel. Según el tipo de fruta, que a su vez depende del nivel en el que estés jugando, obtienes una cantidad diferente de puntos. En total, obtienes
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Comiendo fantasmas : Comer un fantasma en el mismo período de energía te da 200 puntos, y el doble por cada fantasma adicional que coma (400, 800 y 1600 para el segundo al cuarto fantasma, respectivamente).Puedes hacer esto 4 veces por nivel, pero solo hasta el nivel 16, y en el nivel 18, ya que los fantasmas no parpadean en el nivel 17 y 19+ ⇒ 4 × 3000 × 17 = 204000
Añadiendo estos números produce 3326600 , solo 6760 puntos menos que perfectos.
Nivel 256
Este número impar se puede obtener en el nivel 256 con fallas.
Puntos visibles : Como puede ver, falta un poco más de la mitad de la pantalla, lo que significa que solo puede obtener 112 puntos normales y 2 puntos energizadores.
⇒ 1220
Fruta única : vencimiento a la glitc hed, solo puede obtener la clave (la «fruta») una vez
⇒ 5000
Puntos con fallas : Hay 9 puntos normales en la región con fallas que reaparecen cada vez que mueres. Con 5 vidas adicionales, puedes obtenerlas 6 veces
⇒ 6 × 90 = 540
Grand Total
(663000 + 1220 + 540 (puntos)) + (2459600 + 5000 (fruta)) + (204000 (fantasmas)) = 3333360
Comentarios
- Empecé a escribir la respuesta, pensando que los números se sumarían bien y no ‘ t. Me tomó bastante tiempo descubrir la rareza de los puntos en el nivel 256.
- 256 es un número bastante importante.
- @Howdy_McGee Especialmente en un procesador de 8 bits …
- ¿Es la falla del nivel 256 a propósito, o es algo que es una falla real?
- @ RPi_Awesomeness ‘ es un problema técnico real, que tiene que ver con números que se mueven en binario. 256 es 100000000 en binario, pero el número no ‘ t admite más de 8 dígitos binarios, por lo que se corta el 1, lo que lo convierte en 00000000, que es 0. Para algunos problemas no realmente relacionados , esto causa el error, en lugar de ponerlo en el nivel 0 nuevamente.
Respuesta
La puntuación es limitada porque se produce un error en el nivel 256 que sobrescribe la mitad de la pantalla con basura. El juego no permitirá que un jugador avance de un tablero al siguiente sin comerse 244 puntos y energizantes, pero la falla sobrescribe muchos de los puntos; esto dejará al jugador incapaz de comer 244 puntos y energizantes, y por lo tanto no podrá dejar el nivel. En caso de que se esté preguntando por qué ocurre el error, el código de máquina en Pac-Man para dibujar los frutos es similar al código 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);
Tenga en cuenta que, a diferencia de muchas máquinas, Pac Man utiliza un diseño de memoria de pantalla bastante curioso que coloca bytes consecutivos horizontalmente en la parte superior e inferior de la pantalla y verticalmente en el medio. Lo más probable es que esto se hiciera para que al dibujar la parte principal de la pantalla, las direcciones de memoria se incrementaran en una potencia de dos cada ocho líneas de escaneo (tenga en cuenta que la «parte superior» del monitor está en el lado derecho de la fotografía). Esencialmente, los circuitos convertían índices de filas / columnas en direcciones de memoria con un mapeo similar a:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
pero implementados en circuitos en lugar de código. Esto permitió que las direcciones de pantalla se calcularan mediante el uso de un par de contadores y un circuito para seleccionar una de las dos permutaciones de los bits de esos contadores. El hardware requerido para que la dirección de memoria aumentara en 36 para cada fila en lugar de 32 habría sido más complicado por comparación.
Comentarios
- @Kevin: El puntaje indicado es el máximo posible en Pac Man porque el error que se muestra arriba (en código C que es funcionalmente similar al código Z80 en el juego en sí) escribe basura inútil en gran parte de la pantalla, sobreescribiendo los puntos que se supone que el jugador debe comer. La otra respuesta indica qué sucede visiblemente para limitar la puntuación, pero lo anterior indica (para personas con mentalidad técnica lectores) por qué sucede (y sugiere que la limitación de 256 niveles probablemente no fue ‘ t deliberada, sino que ocurre debido a un descuido).
- Ambas respuestas complementan muy bien la pregunta.
100000000
en binario) se almacena en una memoria que solo se ha asignado para contener 8 bits. El primer , por lo tanto, se escribe en la memoria que se asigna a otra cosa, que esencialmente corrompe todo el juego.