Es recomendable la lectura de los artÃculos anteriores para comprender mejor el actual:
En el artÃculo anterior aprendimos a manipular la paleta de colores de la GameBoy, en esta ocasión vamos a crear un programita que nos muestre todas las posibles combinaciones, la transición es un poco rápida, podemos cambiar el valor del delay para que sea mas lenta o en el propio emulador darle a pausar y fijarnos en la combinación de colores de la paleta para saber que configuración del registro BGP_REG debemos asignar.
El código es el siguiente:
vi 07.c
#include <gb/gb.h>
#include <stdio.h>
#include "CyberPunkTiles.c"
#include "CyberPunkMap.c"
UINT8 i;
void technicolor_rainbow(){
// Default palette: 11 10 01 00 -> E4
// 2^8: 256
for(i=0; i<255; i++){
BGP_REG = i;
delay(100);
}
}
void main(){
// grep TILESET_TILE_COUNT CyberPunkTiles.h
set_bkg_data(0, 106, TILESET);
// grep TILEMAP_ CyberPunkMap.h
set_bkg_tiles(0, 0, 20, 18, TILEMAP);
SHOW_BKG;
DISPLAY_ON;
while(1){
BGP_REG = 0xE4;
waitpad(J_START);
technicolor_rainbow();
delay(100);
}
}
Compilamos:
~/GBDEV/gbdk/bin/lcc 07.c -o 07.gb
Cargamos la ROM en el emulador y cada vez que presionemos Start veremos el efecto: