Al final me he tenido que ir a casa de mi madre donde tengo la habitación de la droga (narcosala) y llevarme el portatil para depurar el código con la megadrive.
Por una extraña razón me fallaba esto solo en la mega:
//Colour Ship
u16 defaultColour = RGB24_TO_VDPCOLOR(0xb4daff);
const u16 yellow = RGB24_TO_VDPCOLOR(0xffffb4);
u8 colourFlashingCounter = 0;
static void flashingPlayerEngine() {
if (colourFlashingCounter > 10) {
colourFlashingCounter = 0;
u16 colourEngines = PAL_getColor(30);
if (yellow == colourEngines) {
PAL_setColor(30, defaultColour);
} else {
PAL_setColor(30, yellow);
}
}
colourFlashingCounter++;
}
El juego es un shoot'em up y a la nave le parpadean los motores y al mismo tiempo quería hacer un efecto de color, conclusión que parpadea el fogonoazo y cambia de color de azul a amarillo claro.
Parece ser que el color que devuelve RGB24_TO_VDPCOLOR no cabe en un u16, ya que el color son 24bit por si acaso lo guardé en u32 y listo
u32 defaultColour = 0xb4daff;
static void flashingPlayerEngine() {
if (colourFlashingCounter > 16) {
colourFlashingCounter = 0;
if (defaultColour == 0xffffb4) {
PAL_setColor(30, RGB24_TO_VDPCOLOR(0xb4daff));
defaultColour = 0xb4daff;
} else {
PAL_setColor(30, RGB24_TO_VDPCOLOR(0xffffb4));
defaultColour = 0xffffb4;
}
}
colourFlashingCounter++;
}
Y ya va en el hardware original.
Moraleja ni Mister FPGA ni leches el Hardware Original Win