Registrarse

Aiuda! con los codigos :'(

Estado
Cerrado para nuevas respuestas.
Quiero crear una intro personalizada para el pokemon fire red asi como la de Shiny Quagsire que viene el quagsire caminando y luego se queda quieto al lado del nombre, bueno aqui el codigo con las imagenes de pichu



Como pueden ver el pichu no tiene movimiento primero solo estaba probando cargar la sprite animada y esto es lo que consegui.


Codigo:

#include "headers/important.h"
#include "resourcers/Fondo.h"
#include "resourcers/Pichu.h"

const struct Frame pichu_run[] = {
{0 * FRAME_32x32, 10},
{1 * FRAME_32x32, 10},
{2 * FRAME_32x32, 10},
{3 * FRAME_32x32, 10},
{4 * FRAME_32x32, 10},

{FRAME_LOOP, 0}
};
const struct Frame pichu_feliz[] = {
{5 * FRAME_32x32, 10},
{6 * FRAME_32x32, 10},
{7 * FRAME_32x32, 10},
{FRAME_LOOP, 0}
};
const struct Frame pichu_fin[] = {
{8 * FRAME_32x32, 10},
{FRAME_END, 0}
};


const struct Frame* pichu_anim_table[] = {
pichu_run,
pichu_feliz,
pichu_fin,
};
const struct OamData pichu_oam = {
.x = 96,
.y = 96,
.affine_mode = 0,
.priority = 2,
.h_flip = 0,
.v_flip = 0,
.size = SIZE_32x32,
};


#define PICHU_ID 0


bool intro_main()
{

if (get_time() == 0) {
load_bg_pal(0, &fondo_pal, false);
load_bg_data(3, &fondo_img, &fondo_raw);
load_sprite(&pichu_oam, &pichu_img, PICHU_ID, 1, 10, pichu_anim_table);
}


if (key_down(KEY_A | KEY_B | KEY_START) || get_time() == 50 * SECOND)
{
return true;
}

inc_timer();
return false;
}
 
Última edición:

Kaiser de Emperana

Called in hand
Por esto es que te decía que pongas todo xD
Tu código está perfecto, no hay ningun problema con eso. (Más allá del hecho de que te olvidaste de copiar la parte del "load_sprite_pal(&pichu_pal, 1, true);"). La animación se ve mal porque acomodaste mal los frames del pichu.
La gba, carga las imágenes de a tiles de 8x8 y luego copia los tiles que les indiques, por eso es que al insertar esa imagen piensa que el primer frame son los 12 tiles de la primera fila y los 4 primeros de la segunda (en vez de los 16 de la esquina).
Si acomodás los frames de esta forma, va a funcionar:
 
Respuesta: Re: Aiuda! con los codigos :'(

Por esto es que te decía que pongas todo xD
Tu código está perfecto, no hay ningun problema con eso. (Más allá del hecho de que te olvidaste de copiar la parte del "load_sprite_pal(&pichu_pal, 1, true);"). La animación se ve mal porque acomodaste mal los frames del pichu.
La gba, carga las imágenes de a tiles de 8x8 y luego copia los tiles que les indiques, por eso es que al insertar esa imagen piensa que el primer frame son los 12 tiles de la primera fila y los 4 primeros de la segunda (en vez de los 16 de la esquina).
Si acomodás los frames de esta forma, va a funcionar:
Ayuda! tengo otro problema ahora no carga la sprite :'(

Este es el codigo:
#include "headers/important.h"
#include "resourcers/Fondo.h"
#include "resourcers/Pichu.h"

const struct Frame Pichu_run[] = {
{0 * FRAME_32x32, 10},
{1 * FRAME_32x32, 10},
{2 * FRAME_32x32, 10},
{3 * FRAME_32x32, 10},
{4 * FRAME_32x32, 10},

{FRAME_LOOP, 0}
};
const struct Frame Pichu_feliz[] = {
{5 * FRAME_32x32, 10},
{6 * FRAME_32x32, 10},
{7 * FRAME_32x32, 10},
{FRAME_LOOP, 0}
};
const struct Frame Pichu_fin[] = {
{8 * FRAME_32x32, 10},
{FRAME_END, 0}
};


const struct Frame* Pichu_anim_table[] = {
Pichu_run,
Pichu_feliz,
Pichu_fin,
};
const struct OamData Pichu_oam = {
.x = 96,
.y = 96,
.affine_mode = 0,
.priority = 2,
.h_flip = 0,
.v_flip = 0,
.size = SIZE_32x32,
};


#define PICHU_ID 0


bool intro_main()
{

if (get_time() == 0) {
load_bg_pal(0, &fondo_pal, false);
load_bg_data(3, &fondo_img, &fondo_raw);
load_sprite_pal(&Pichu_pal, 1, true);
load_sprite(&Pichu_oam, &Pichu_img, PICHU_ID, 1, 10, Pichu_anim_table);
}


if (key_down(KEY_A | KEY_B | KEY_START) || get_time() == 50 * SECOND)
{
return true;
}

inc_timer();
return false;
}
 

Kaiser de Emperana

Called in hand
¿No muestra nada? Porque no veo ningún problema.
Más allá de que tu sprite tiene 9 frames y vos pusiste 10. Cambialo, pero no debería de afectar en nada.

¿Estás seguro de que compilaste ese código?

¿Probaste convertir los recursos de nuevo?

Si en el vba abrís la ventana de tools, palette viewer. ¿Carga la paleta del sprite?
Lo mismo en la ventana de tools, oam viewer. ¿Carga el sprite?
 
Respuesta: Re: Aiuda! con los codigos :'(

¿No muestra nada? Porque no veo ningún problema.
Más allá de que tu sprite tiene 9 frames y vos pusiste 10. Cambialo, pero no debería de afectar en nada.

¿Estás seguro de que compilaste ese código?

¿Probaste convertir los recursos de nuevo?

Si en el vba abrís la ventana de tools, palette viewer. ¿Carga la paleta del sprite?
Lo mismo en la ventana de tools, oam viewer. ¿Carga el sprite?
El vba no carga la paleta ni la oam tambien borre los .h y los volvi hacer cambie el 10 por 9 y si esta ese codigo, que pasa :( tratare de volver a empezar gracias por la ayuda
 

Omega

For endless fight
Miembro del equipo
Moderador/a
Respuesta: Re: Aiuda! con los codigos :'(

El vba no carga la paleta ni la oam tambien borre los .h y los volvi hacer cambie el 10 por 9 y si esta ese codigo, que pasa :( tratare de volver a empezar gracias por la ayuda
A mi solo se me ocurre que la imagen esta mal insertada, por que en el gif de tu primer comentario debería mostrar al menos el primer sprite correctamente :boogie:
 

Kaiser de Emperana

Called in hand
Re: Respuesta: Re: Aiuda! con los codigos :'(

El vba no carga la paleta ni la oam tambien borre los .h y los volvi hacer cambie el 10 por 9 y si esta ese codigo, que pasa :( tratare de volver a empezar gracias por la ayuda
Tiene que ser problema de las imágenes porque acabo de probar tu código y funciona perfecto (ignorar el fondo, que puse cualquier cosa).


Probá lo siguiente. Desde cygwin, luego de hacer "cd" a la carpeta de la plantilla. Ejecutá lo siguiente:
Código:
grep offsets.txt -e pichu_img
Te va a imprimir un offset, en mi caso 08804E04. Abrí el rom de la carpeta build con NLZ Advance y dirigite a ese offset (sin el 08 del comienzo, o sea, en mi caso 804E04).
Allí deberías de ver la imagen del pichu. ¿Está?
 
Respuesta: Re: Respuesta: Re: Aiuda! con los codigos :'(

Tiene que ser problema de las imágenes porque acabo de probar tu código y funciona perfecto (ignorar el fondo, que puse cualquier cosa).


Probá lo siguiente. Desde cygwin, luego de hacer "cd" a la carpeta de la plantilla. Ejecutá lo siguiente:
Código:
grep offsets.txt -e pichu_img
Te va a imprimir un offset, en mi caso 08804E04. Abrí el rom de la carpeta build con NLZ Advance y dirigite a ese offset (sin el 08 del comienzo, o sea, en mi caso 804E04).
Allí deberías de ver la imagen del pichu. ¿Está?
Si esta mira.... pero sigue sin cargar ademas en mi room esta así:
 

Kaiser de Emperana

Called in hand
Re: Respuesta: Re: Respuesta: Re: Aiuda! con los codigos :'(

Si esta mira.... pero sigue sin cargar ademas en mi room esta así:
¿Usaste sphere para armar un tileset y raw con los gráficos?
Para los sprites no tenés que hacerlo, simplemente importá la imagen indexada. Eso es únicamente para los bg.

Probá si eso lo arregla, aunque lo dudo, en todo caso haría que el sprite se vea mal.

Si con eso no se soluciona, ¿podrías decir detalladamente todo lo que hiciste?
Porque sinceramente no se me ocurre cual puede ser el problema...
 
Respuesta: Re: Respuesta: Re: Respuesta: Re: Aiuda! con los codigos :'(

¿Usaste sphere para armar un tileset y raw con los gráficos?
Para los sprites no tenés que hacerlo, simplemente importá la imagen indexada. Eso es únicamente para los bg.

Probá si eso lo arregla, aunque lo dudo, en todo caso haría que el sprite se vea mal.

Si con eso no se soluciona, ¿podrías decir detalladamente todo lo que hiciste?
Porque sinceramente no se me ocurre cual puede ser el problema...
Si use sphere y acabo de hacerlo de nuevo solo usando la imagen indexada pero sigue sin cargar la sprite :'(

Lo que hice fue hacer todo lo del tutorial para el fondo y luego use el codigo de la sprite ese que dijiste ya con la imagen indexada convertida a .h... en el nlz si se ve pero en el emulador no carga la paleta ni la oam no cargar la sprite ¿tienes idea de porque? sera que mi room no esta limpio o algo así? porque lo descarge de un video que decia pokemon firered v1.0 :(
 

Kaiser de Emperana

Called in hand
Re: Respuesta: Re: Respuesta: Re: Respuesta: Re: Aiuda! con los codigos :'(

Si use sphere y acabo de hacerlo de nuevo solo usando la imagen indexada pero sigue sin cargar la sprite :'(

Lo que hice fue hacer todo lo del tutorial para el fondo y luego use el codigo de la sprite ese que dijiste ya con la imagen indexada convertida a .h... en el nlz si se ve pero en el emulador no carga la paleta ni la oam no cargar la sprite ¿tienes idea de porque? sera que mi room no esta limpio o algo así? porque lo descarge de un video que decia pokemon firered v1.0 :(
No, no, eso no tiene nada que ver.
¿Me podrías pasar un rar con tu carpeta src? Porque la verdad es que ya no se que decirte...
 

Kaiser de Emperana

Called in hand
Respuesta: Re: Respuesta: Re: Respuesta: Re: Respuesta: Re: Respuesta: Re: Aiuda! con los codigos :'(

El problema es que tu paleta no está comprimida, pero cuando llamás a la función de cargar la paleta le decís que si.

Cambiá "load_bg_pal(0, &fondo_pal, true);" por "load_bg_pal(0, &fondo_pal, false);"
Wow es increible como una variable cambia tanto ya cargo la sprite muchas gracias y mi ultima duda es como hago que la sprite haga esto:

 

Kaiser de Emperana

Called in hand
Ahora deberías de ponerte a probar las diferentes funciones por tu cuenta.
Citando mi tuto:

move_sprite
(sprite_num, x, y)
Cambia la posición de un sprite.
sprite_num: número del sprite.
x: movimiento horizontal.
y: movimiento vertical.
Si los valores ingresados son 0, el sprite no se moverá horizontalmente/verticalmente. Si los valores son negativos, se moverá hacia la izquierda/arriba. Y si son positivos, hacia la derecha/abajo. Respectivamente para x e y.
Si querés que el pichu se mueva a la izquierda por 5 segundos deberías de hacer algo como esto:
Código:
if (get_time() == 0) {
    load_bg_pal(0, &fondo_pal, false);
    load_bg_data(3, &fondo_img, &fondo_raw);
    load_sprite(&pichu_oam, &pichu_img, PICHU_ID, 1, 9, pichu_anim_table);
} else if (get_time() < 5 * SECOND) {
    move_sprite(PICHU_ID, [COLOR="DarkOrange"]-1[/COLOR], 0);
}
Si querés que vaya más rápido simplemente disminuí el número menos uno.
Si qurés que vaya más lento, tendrías que hacer algo como esto:
Código:
if (get_time() == 0) {
    load_bg_pal(0, &fondo_pal, false);
    load_bg_data(3, &fondo_img, &fondo_raw);
    load_sprite(&pichu_oam, &pichu_img, PICHU_ID, 1, 9, pichu_anim_table);
} else if (get_time() < 5 * SECOND) {
    if (get_time() % [COLOR="DarkOrange"]2[/COLOR] == 0) {
        move_sprite(PICHU_ID, -1, 0);
    }
}
Si querés que vaya todavía más lento aumentá el número dos.
 
Respuesta: Re: Aiuda! con los codigos :'(

Ahora deberías de ponerte a probar las diferentes funciones por tu cuenta.
Citando mi tuto:

Si querés que el pichu se mueva a la izquierda por 5 segundos deberías de hacer algo como esto:
Código:
if (get_time() == 0) {
    load_bg_pal(0, &fondo_pal, false);
    load_bg_data(3, &fondo_img, &fondo_raw);
    load_sprite(&pichu_oam, &pichu_img, PICHU_ID, 1, 9, pichu_anim_table);
} else if (get_time() < 5 * SECOND) {
    move_sprite(PICHU_ID, [COLOR="DarkOrange"]-1[/COLOR], 0);
}
Si querés que vaya más rápido simplemente disminuí el número menos uno.
Si qurés que vaya más lento, tendrías que hacer algo como esto:
Código:
if (get_time() == 0) {
    load_bg_pal(0, &fondo_pal, false);
    load_bg_data(3, &fondo_img, &fondo_raw);
    load_sprite(&pichu_oam, &pichu_img, PICHU_ID, 1, 9, pichu_anim_table);
} else if (get_time() < 5 * SECOND) {
    if (get_time() % [COLOR="DarkOrange"]2[/COLOR] == 0) {
        move_sprite(PICHU_ID, -1, 0);
    }
}
Si querés que vaya todavía más lento aumentá el número dos.
Me da este error :(
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba