Duda SGDK, prueba de concepto

Hola, grandes del código.

Resulta que estoy haciendo una prueba de concepto en C usando la libreria SGDK, y la cosa va bien.
Gracias a Stephane por dejarme cumplir mi sueño, hacer un videojuego para la megadrive.

La duda es. La prueba de concepto tiene pantalla de título, pantalla de selección de personaje, créditos y nivel 1.
En la MisterFPG, analogue Pocket y mednafen se ejecuta sin problemas y puedes terminar el juego.

Pero en una megadrive japonesa con un everdrive de aliexpress v3. : pantalla de título ok, seleccion personajes ok, creditos ok, y nivel 1 al segundo o 2 segundos de estar jugando se queda la consola colgada, imagen congelada sonido en piiiiii el reset no fucniona hay que hacerle un power off.

Logicamente juegos oficinaes en el everdrive y megadrive funcionan bien y juegos hechos con sgdk de otras personas funcionan bien, así que la culpa está en mi código.

¿Le ha pasado algo parecido a alguien, hay alguna recomendación o buenas practicas?

Un saludo a todos.
Que versión de sgdk usas? me suena un tema de que el driver xgm se cuelga en algunas Megas japonesas VA0
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
2 respuestas