fcatrin escribió:La historia se remota al PONG!!
Primera vez que escucho eso... Igual me hace sentido, excepto que por las características de los P/M, tendría que ser un pong con las paletas arriba y abajo en la pantalla (a lo Arkanoid).
Me explico en forma simple (los detalles se pueden
gugliar,
binguiar,
yajuar,
wikipediar,
etc):
El Background está compuesto por los pixeles de colores en modos gráficos o de texto, o por nada como en los bordes. Son zonas fijas en la pantalla (aunque manipulables por el DL) y sólo puedes modificar la data para generar animaciones o fondos estáticos. Nótese que una secuencia de bytes modifican una línea de gráfico o texto horizontalmente.
Los Players son otro nivel de gráficos que se sobreponen al Background, y consisten simplemente en unas barras verticales de 8 bits de ancho de un único color, y por lo tanto, una secuencia de bytes modifican el gráfico desplegado verticalmente, de arriba hasta abajo como en los sets de caracteres, pero cruzando la pantalla. Son 5 players en total y la ubicación horizontal en la pantalla se define modificando su respectivo registro en memoria. Para poner un cuadrado en un Player, hay que llenar de ceros la data y poner algunos 255 ($FF) en secuencia en algunos de los bytes asignados, y para lograr moverlo verticalmente, hay que hacer scroll de la data, lo que puede afectar el desempeño de un juego si no se optimiza el código (por eso digo que es más simple mover una paleta de pong hacia los lados, ya que no hay que mover data).
Los 4 Missiles se obtienen partiendo el 5to player en pares de bits, y a cada par se le puede asignar una posición horizontal distinta (la vertical sigue siendo mediante data, y es algo más complejo porque hay que hacer operaciones lógicas para combinar los distintos Missiles. Por lo tanto, se pueden tener hasta 4 Ps y 4 Ms o bien 5 Ps sin Ms.
Existen otros registros en memoria que permiten detectar si hay colisiones entre los bits encendidos de cada player contra otro tipo de bits encendidos, que pueden ser otros Players o parte del Background, lo que permite en forma simple detectar si mataste un marciano sin tener que calcular a mano las posiciones de cada objeto de tu juego.
Como cada P/M puede tener sólo un color, se pueden combinar varios Players como en el Montezuma, e incluso lograr más colores al sobreponer los bits de ellos y mezclar sus respectivos colores. También se puede usar DLI para cambiarle el color a un Player mientras se pinta la pantalla como en el Bruce Lee o el PitFall, y lograr colorear la cabeza, polera y pantalones para definir al personaje.
También es posible definir más de un objeto en una barra de Player, siempre y cuando se encuentren en distintas posiciones verticales. Al igual que los colores, es posible modificar la ubicación horizontal de un Player. El resultado es que puedes lograr un ejército de varias filas de 4 soldados, y lograr animaciones interesantísimas como en el Demon Attack (aunque pienso que el port de este juego en particular podría estar animado manipulando DL de texto en modo ANTIC 4).
Otras características que pueden ser alteradas en un P/M son el ancho y el alto que ocupa cada bit en la pantalla.
En resumen, el concepto de P/M es bastante más complejo que los Sprites del Commodore 64, pero el resultado puede ser similar o más poderoso aún si se manejan correctamente.
No resultó tan corto como esperaba, pero espero que siga siendo simple como para entenderlo.
++Vitoco
PD: El Pong tradicional se puede implementar usando sólo 3 Missiles.