Pengo. Sus últimos secretos

Para hablar de esos juegos de las recreativas que tanto nos gustaban
Avatar de Usuario
Mirloblan
Dragon 32
Dragon 32
Mensajes: 18
Registrado: 02 Ago 2015, 23:21
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Ubicación: Barcelona
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor Mirloblan » 03 Ago 2015, 00:25

Buenísimo post explorer!!! =D> El Pengo siempre fue de mis favoritos, pero nunca he puntuado más de 10 pantallas, es bastante jodidillo de dificultad, pero no por eso de los más divertidos de los clásicos.

Se nota que es tu videojuego favorito ;)

Saludos,

Mirlo

Avatar de Usuario
Mode2
Amiga 2500
Amiga 2500
Mensajes: 2621
Registrado: 08 Oct 2009, 23:53
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Atari 2600
Primera consola: TV Games/Pong Clone
Ubicación: The Grid
Gracias dadas: 1 vez
Gracias recibidas: 8 veces
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor Mode2 » 06 Ago 2015, 14:25

¡¡Como te dije magnífico aporte, Explorer!!, ¿tienes más estudios de este tipo? ;)
BUSCO: VideoPac+, Jaguar, Saturn, Micromanía nº1 1ª época, Amstrad Semanal, MicroHobby, juegos (especialmente Atari, CPC y Vectrex), Newbrain, Aquarius, Sam Copué, 520 ST, manual +3, manual CPC664.

Avatar de Usuario
explorer
MSX Turbo R
MSX Turbo R
Mensajes: 396
Registrado: 11 May 2014, 17:10
Sistema Favorito: Atari ST
primer_sistema: Atari 800XL/600XL
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: Valladolid, España
Gracias dadas: 2 veces
Gracias recibidas: 138 veces
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor explorer » 06 Ago 2015, 17:41

Hacer esto lleva muchísimo tiempo. Todavía no he terminado el del Pengo (ahora mismo estoy rehaciendo el código con el IDA Pro, y es un infierno, pero hay que hacerlo para simplificar futuras compilaciones). Seguramente lo vaya publicando en el Github a medida de que lo vaya pasando a limpio.

En cartera, tengo dos juegos más: Defender, de Williams.
Y leer el código de La Abadía del Crimen que tengo curiosidad de ver cómo funcionan algunas partes del juego.

Y... tengo idea de proponer algo de modding con respecto a este tema, solo para los más frikis de la programación (y muuuucho tiempo libre) :D

Avatar de Usuario
Mode2
Amiga 2500
Amiga 2500
Mensajes: 2621
Registrado: 08 Oct 2009, 23:53
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Atari 2600
Primera consola: TV Games/Pong Clone
Ubicación: The Grid
Gracias dadas: 1 vez
Gracias recibidas: 8 veces
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor Mode2 » 07 Ago 2015, 09:57

Imagino la de horas que te llevaras con eso, Explorer.

Ánimo y gracias. ;)
BUSCO: VideoPac+, Jaguar, Saturn, Micromanía nº1 1ª época, Amstrad Semanal, MicroHobby, juegos (especialmente Atari, CPC y Vectrex), Newbrain, Aquarius, Sam Copué, 520 ST, manual +3, manual CPC664.

Avatar de Usuario
pachu003
MSX Turbo R
MSX Turbo R
Mensajes: 475
Registrado: 02 Abr 2008, 11:22
Gracias dadas: 3 veces
Gracias recibidas: 15 veces

Re: Pengo. Sus últimos secretos

Mensajepor pachu003 » 10 Ene 2016, 23:54

Magnífico trabajo.

Pengo es uno de mis juegos "malditos", soy malo de cojones, y sin embargo, me encanta, este estudio me aclara muchas cosas.

Un saludo.

Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 442
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 26 veces

Re: Pengo. Sus últimos secretos

Mensajepor Uto » 11 Ene 2016, 01:15

:shock:

=D> =D> =D> =D> =D> =D>
http://www.ngpaws.com
Twitter: @uto_dev

Avatar de Usuario
Lex Sparrow
Amiga 2500
Amiga 2500
Mensajes: 2770
Registrado: 28 Dic 2005, 12:26
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Nintendo NES/Clónica
Primera consola: TV Games/Pong Clone
Gracias dadas: 187 veces
Gracias recibidas: 28 veces
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor Lex Sparrow » 11 Ene 2016, 12:18

Enhorabuena por el curro pero sobre todo por documentarlo y compartilo =D>

explorer escribió:
El proceso de creación también ha sido especial, ya que me he asegurado en cada paso que el código ensamblador generaba una copia exacta del programa grabado en ROM, y eso quizás merecería un mensaje nuevo, no sé si en este hilo, en este foro, o mejor en el de programación. Puede servir para animar a otros en esta labor. O de conocer maneras más cómodas.


¿Y a qué esperas? Estamos ansiosos
Alejandro - Lex Sparrow | Mercadillo | Press Play Then Any Key | VaMoS 2018

Avatar de Usuario
Wintermute
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 157
Registrado: 07 Dic 2015, 12:05
Sistema Favorito: MSX
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Vectrex
Gracias dadas: 7 veces

Re: Pengo. Sus últimos secretos

Mensajepor Wintermute » 11 Ene 2016, 13:05

Que genialidad de trabajo =D>

Me sorprende mucho lo de la generación de los laberintos, es una de las características que más me atraen de los roguelike. Quien diría que el Pengo tiene esta "rareza" también.
The President has been kidnapped by ninjas

Avatar de Usuario
Tron
ZX Spectrum 16
ZX Spectrum 16
Mensajes: 7
Registrado: 30 Sep 2017, 09:36
Sistema Favorito: (Otro)
primer_sistema: (Otro)
consola_favorita: (Otro)
Primera consola: (Otro)
Gracias dadas: 7 veces
Gracias recibidas: 2 veces

Re: Pengo. Sus últimos secretos

Mensajepor Tron » 30 Sep 2017, 10:22

explorer escribió:Imagen

Este hilo es para contar los secretos que he descubierto al desensamblar el código del Pengo (Sega, 1982).


Gracias por publicar esta información en Pengo.

Tengo algunas preguntas para usted con respecto al comportamiento del código. Esto es para la ROM de Pengo.

1. ¿Cuál es la diferencia exacta entre EASY y MEDIUM?
2. ¿Qué hará el programa cuando la última abeja se escape y se ejecute en el centro del diamante en esta configuración. X son los diamantes.

    X
X <<< ABEJA
    X

3. Explique de nuevo por qué los actos 5, 9 y 13 son los más peligrosos.

4. ¿Puede una abeja ser aturdida en la ubicación de un bloque de hielo o diamante que no está roto?

5. ¿Puede una abeja moverse a través de un bloque sin romper el bloque?

6. ¿Cuántos laberintos hay en Pengo? ¿Cuál es el número exacto?

7. Después de la Act 16, ¿el juego juega más duro? Por ejemplo, ¿es la Act 17 más difícil que la Act 1? ¿Es la Act 33 más difícil que la Act 1? ¿Es diferente el programa bahviour en estos niveles superiores?

8. ¿Hay una pantalla de matar para Pengo? Por ejemplo, si usted juega Act 256 o Act 257, el juego seguirá jugando como normal?

9. Hay laberintos que a menudo aparecen, y algunos laberintos que rara vez aparecen. ¿Por qué pasó esto?

10. ¿Están disponibles todos los laberintos de la ROM de Pengo y se pueden usar en el juego?

:fantasma:

Avatar de Usuario
explorer
MSX Turbo R
MSX Turbo R
Mensajes: 396
Registrado: 11 May 2014, 17:10
Sistema Favorito: Atari ST
primer_sistema: Atari 800XL/600XL
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: Valladolid, España
Gracias dadas: 2 veces
Gracias recibidas: 138 veces
Contactar:

Re: Pengo. Sus últimos secretos

Mensajepor explorer » 01 Oct 2017, 07:21

Tron escribió:1. ¿Cuál es la diferencia exacta entre EASY y MEDIUM?

La respuesta sería... la misma que hay entre MEDIUM y HARD ;) Y la misma que hay entre HARD y HARDEST :)

El nivel de dificultad se traduce en el juego en un valor entre 0 y 3. Se usa para inicializar un parámetro de "inquina" o "querencia a ir hacia el Pengo". La fórmula que se utiliza es:

inquina = 12 - ( (número de fase - 1) / 4 + dificultad )

De esta forma, cada cuatro fases, y aumentado por el nivel de dificultad, se reduce el tiempo que el Sno-bee vuelve a pensar en ir hacia el Pengo.

Tron escribió:2. ¿Qué hará el programa cuando la última abeja se escape y se ejecute en el centro del diamante en esta configuración. X son los diamantes.

Código: Seleccionar todo

 X
X <<< SNO-BEE
 X
Esta formación se llama sándwich.

Código: Seleccionar todo

 X
XAB
 X

Cuando un Sno-bee entra en modo "huida", elige un sentido al azar (arriba, abajo, izquierda o derecha). Su objetivo es llegar a un muro, donde volverá a escoger una ruta también al azar (arriba/abajo en las paredes verticales, izquierda/derecha en las horizontales).

El problema está si, en ese recorrido, se encuentra con un diamante. Según la lógica del programa, escogerá un nuevo camino al azar e intentará llegar allí. Pero, estando en la posición A, el único camino posible es volver a B. Una vez allí, el Sno-bee vuelve a retomar el sentido elegido al principio, por lo que vuelve a entrar en A, y así lo hará de forma indefinida.
animated.gif
animated.gif (77.15 KiB) Visto 11794 veces

El beneficio que obtenemos es que podremos romper todos los bloques de hielo que queden en la pantalla.
0027.png
0027.png (2.14 KiB) Visto 11794 veces

En este caso, hemos obtenido 1650 puntos (55 bloques × 30 pts/bloque). Es una ganancia solo si llevamos más 29 segundos de juego (premiados con 1000 pts. o menos).

Tron escribió:3. Explique de nuevo por qué los actos 5, 9 y 13 son los más peligrosos.
Se produce un cambio brusco en el comportamiento de los Sno-bees, explicado en el punto 1: cada 4 pantallas, se reduce el tiempo que los Sno-bees vuelven a fijarse en las coordenadas del Pengo.

Tron escribió:4. ¿Puede una abeja ser aturdida en la ubicación de un bloque de hielo o diamante que no está roto?

Sí. Hay varios casos en los que puede ocurrir.

Un primer caso es cuando el Sno-bee ocupa una posición libre de bloques justo después de que la posición se vaya a ocupar con un diamante, y formar un trío. Más detallado:

Código: Seleccionar todo

    S
    V
    V
  XX    <<<XP

El Sno-bee (S) se dirige hacia una posición vacía, justo delante de los diamantes. Mientras, el Pengo (P) ha empujado el tercer diamante (X). Si el diamante llega a esa posición justo antes de que el Sno-bee la ocupe, la unión de los tres diamantes provocará el aturdimiento de los Sno-bees, y en el caso del Sno-bee que se acerca, hará que ocupe la misma posición que el diamante. Aún así, se le podrá aplastar, si Pengo empuja precisamente ese diamante en alguna dirección que permita desplazarlo.
sobre_bloque.gif
sobre_bloque.gif (9.82 KiB) Visto 11681 veces


Otro caso parecido sucede cuando se dispara un bloque de hielo normal delante de un Sno-bee, de la misma forma que en el caso anterior (el bloque de hielo llega antes que el Sno-bee, a la misma posición), y justo después el Pengo une los diamantes o sacude el muro.

Tron escribió:5. ¿Puede una abeja moverse a través de un bloque sin romper el bloque?
Sí. El programa tiene un límite de seis bloques "rompiéndose" al mismo tiempo. En los "actos" más altos, puede suceder que todos los Sno-bees estén rompiendo bloques, y si el Pengo rompe varios en secuencia (Pengo puede romper dos bloques si lo hace muy rápido) eso provoca que el búfer de animaciones de bloques que se están rompiendo se llene, y entonces la animación no aparece, por lo que el bloque de hielo sigue en pantalla, con el Sno-bee andando encima de él. Se trata de un fallo del programa, nada más.

Otra situación ocurre si se da el caso comentado en la pregunta anterior: si se empuja un bloque de hielo en el camino que sigue un Sno-bee, si el bloque llega justo antes que el Sno-bee, y se detiene, el Sno-bee "caminará" por encima de él. No lo romperá porque, sencillamente, no lo ha visto. Mejor dicho: cuando el Sno-bee miraba esa posición, no había ningún bloque.

Tron escribió:6. ¿Cuántos laberintos hay en Pengo? ¿Cuál es el número exacto?

9. Hay laberintos que a menudo aparecen, y algunos laberintos que rara vez aparecen. ¿Por qué pasa esto?

10. ¿Están disponibles todos los laberintos de la ROM de Pengo y se pueden usar en el juego?
Los laberintos se generan de forma aleatoria. No están almacenados en ROM.

El proceso es el siguiente: se colocan los muros, se pintan todos los bloques, se vacía la casilla inferior izquierda, y a partir de ella se "vacían" pasillos de dos bloques de largo elegidos de forma aleatoria. Del punto final de ese pasillo se vuelve a escoger otra ruta aleatoria. Si no hay más rutas posibles, se vuelve a analizar, empezando por la esquina inferior izquierda, aquellos pasillos con rutas posibles. Y así, hasta que se hayan generado todos los pasillos.

El proceso de selección de la ruta (izquierda, derecha, arriba y abajo) se hace sacando un valor al azar.

El generador de números aleatorios es muy simple. La fórmula es (usando registros de 16 bits):

hl := (valor aleatorio anterior)
bc := hl
hl := 3 x hl
a := h + c
h := a
(nuevo valor aleatorio) = hl

Pero no se toma este valor, si no el que tiene 'a' al salir del procedimiento.

El programa siempre empieza con la misma semilla: $365A

No lo he mirado con detalle, pero sería interesante averiguar cuanto tiempo tarda el generador de números aleatorios en repetir la secuencia.

En la mayor parte de los casos, del número aleatorio solo se aprovecha los bits más bajos. Por ejemplo, en el tema de generar los pasillos del laberinto, se miran los dos primeros bits para sacar un valor entre 0 y 3.

Habría que hacer un estudio estadístico para ver qué valores se repiten más, pero podemos ver que los laberintos tienden a tener largos pasillos verticales, de la misma manera que el Sno-bee que huye tiene tendencia a huir hacia la esquina inferior derecha.

Al final, esto produce un reducido número de laberintos diferentes.

Tron escribió:7. Después de la Act 16, ¿el juego juega más duro? Por ejemplo, ¿es la Act 17 más difícil que la Act 1? ¿Es la Act 33 más difícil que la Act 1? ¿Es diferente el comportamiento del programa en estos niveles superiores?

8. ¿Hay una pantalla de matar para Pengo? Por ejemplo, si usted juega Act 256 o Act 257, el juego seguirá jugando como normal
Los actos van del 1 al 16, y luego se repite, de forma indefinida. No hay ninguna pantalla final que provoque la muerte del Pengo.

Lo que sí puede suceder es un fallo del programa en el control del número de Sno-bees en juego, haciendo que se generen Sno-bees de forma ilimitada, e imposibles de matar, ya que aparecen fuera de los límites del juego.
Última edición por explorer el 14 Feb 2018, 13:37, editado 9 veces en total.


Volver a “Videojuegos arcade”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados