Aventuras en Megadrive: Highlight and Shadow (II)
NO TE FÍES DE LOS EMULADORES
No podemos fiarnos de los emuladores: Hay que probar en HW real.
Hasta ahora, el emulador que yo he recomendado es el GensKmod, al ser muy bueno para depurar y observar como funciona la mega. Pero ni éste emulador ni otros muestran S/H tal y como haría la Megadrive. Lo veremos con éste emulador y con otros como Blast’em o Kfusion, vamos a verlo.
Lo vamos a ver con un ejemplo, para que puedas ver el código. Como siempre en github.
Voy a utilizar el siguiente sprite, un círculo pintado con los colores 14 y 15 de su paleta:
Ahora voy a probar toda clase de combinaciones: SH, colores, prioridades, etc.
En vez de ir paso a paso, con la ROM correspondiente a esta entrada podrás ir cambiando estas combinaciones en tiempo real con A, B, C, X e Y. Si no tienes un mando de 6 botones, ¡hazte con uno! 🙂 si estás probando en emulador, configura la entrada para pad de 6 botones.
Comenzamos con SH desactivado, círculo pintado con el color 14, sin prioridad y utilizando la pal2:
Si activamos SH pulsando -A- veremos el círculo opaco (no estamos utilizando la pal3) y oscuro (no tiene prioridad, así que su color será azul-oscuro al estar afectado por el shadow). Curiosamente KFusion y Blast’em no oscurecen el círculo como deberían, en cambio GensKmod sí lo hace:
Si pulsamos -C– el círculo pasará a tener prioridad y por tanto saldrá con su color normal. En KFusion y Blast’em no notaremos el cambio (en este caso) porque ya sale con su color ‘normal’, en este caso no se comportan como toca.
Pulsa de nuevo -C– y quita la prioridad.
Ahora pulsa -B- y con ello cambiamos de paleta (a la pal3). Como ya sabéis, al estar S&H activado y estar con pal3 + color14, el sprite no se pinta y sus píxels son los del fondo. Al estar el fondo oscuro (no tiene prioridad), dichos pixels aparecen con su color normal.
Prueba a mover el círculo por el fondo y sobre el sprite de Sonic. Veremos otro fallo de los emuladores, observa:
GensKmod deja ver el sprite de Sonic y lo ilumina con Highlight. Muy bonito, pero la Megadrive no hace esto. Lo que ocurriría con HW real es lo que muestran Blast’em o KFusion, el sprite del círculo borra el sprite de Sonic (sólo la parte superpuesta).
En grande se ve mejor (GensKmod vs KFusion):
¿Qué hace la Megadrive real? En este caso, en los píxels donde iría pintado el círculo, se pinta el correspondiente al fondo (o fondos si usamos los dos planos), con el color normal. Por tanto si tenemos uno o varios sprites por detrás… no se pintarán. Ojo, en dichos píxels, el resto sí se pinta (no hay más que ver los pies de Sonic).
Pulsa -Y- y activa la prioridad para el fondo. Mueve el círculo, aparecerá brillante y transparente (Highlight) pero una vez más Sonic no debería verse:
A diferencia del modo shadow, ahora el fondo tiene prioridad (y los sprites no si lo quitaste antes como te pedí). Tanto Sonic como el círculo saldrán por detrás de la vegetación.
Ahora pulsa -X- para cambiar el color del círculo y alternar entre shadow y highlight.
GITHUB
El código de esta lección, y de todas las demás, lo podrás encontrar en mi github: