El misterioso caso de los sprites peta-memorias

Buenas a todos:

Tras, de momento, haber dejado en punto muerto mi guerra con FAT, EFS, PAFS y demás (ver hilo "PAlib fat, EFS, Windows, emuladores y su p... madre" para más datos) me vuelvo a encontrar otro misterio para cuya solución os pido vuestros conocimientos y ayuda.

Cuando empecé el proyecto que tengo entre manos, los sprites los creé en main() por aquello de que estaba probando y ya los pondría en su sitio definitivo cuando fuera necesario. Os digo que en esa pantalla "principal" son 16 sprites de 64x32 (64x64 en realidad, pero uso 2 animaciones).

Conforme se complica el desarrollo y ya tengo la función hecha para el "menú principal" me decido a mover los sprites (creación y animación) a dicha función y mi sorpresa Oooh Oooh surge cuando al ejecutarlo en el emulador me sale el error de que me he pasado de la memoria y que utilice el clonesprite el createspritefromgfx o algún primo lejano de ellos.

Lo cierto es que si los devuelvo a main() el programa se ejecuta sin problemas, pero claro, la estructura se me complica porque en ese caso mis funciones ya no funcionan como "cajas negras" y me obliga a crear otro bucle que... bueno es largo de contar. En definitiva ¿Tanto ocupan como para que la memoria pete?¿Por qué funcionan en main() y no en una función llamada por esta?¿A alguien le ha pasado algo parecido?¿Mejor que me dedique al parchís?

Agradeceré enormemente vuestras respuestas y, ciertamente, espero conseguir algo decente para mostrarlo y cederlo al mundo mundial aunque, aviso, no se trata de un juego. [bye] [bye]
Quizá tu función tenga una función de bucle, por lo que cada frame hace un sprite, por 60 fps que tiene la NDS, en un segundo tienes 6 sprites hechos en la misma posición. Quizá sea por eso.
tiene pinta de ser eso [360º]
para que te pueda ayudar cuelga el source (codigo fuente) para que le de una mirada ! jejejeje ! y ya te comentamos !
jejeje
xD
SALUDOS !
alexpowerup escribió:Quizá tu función tenga una función de bucle, por lo que cada frame hace un sprite, por 60 fps que tiene la NDS, en un segundo tienes 6 sprites hechos en la misma posición. Quizá sea por eso.


Vaya, pues va a ser que sí aunque, la verdad, me rompe todos mis esquemas en cuanto a bucles Oooh puesto que está construido de forma que sólo hay que pasar una vez por él cuando se generan los sprites y, antes de la siguiente ejecución, ya los ha borrado la función que se llama dentro de él. En fin, seguiré informando de como lo resuelvo finalmente, porque es evidente que tengo que volver a diseñar la estructura de main(). ¡Echo de menos los entornos que permitían ejecutar paso a paso y ver los valores de las variables y los parámetros, y... todo eso! (¿habrá algún día algo por el estilo para la programación de la DS?)

Gracias por vuestro interés y colaboración [beer] .

[bye] [bye]
Pues esto mismo me pasaba a mi cuando quería generar la barra de HP del pj...

Pregunta:¿entonces como la poneis vosotros y la actualizais (la barra)?

salu2!
LoLoPoWeR escribió:Pues esto mismo me pasaba a mi cuando quería generar la barra de HP del pj...

Pregunta:¿entonces como la poneis vosotros y la actualizais (la barra)?

salu2!

Hombre, a mi se me ocurre usar un sprite que tenga varios frames dependiendo del porcentaje de vida que queda, y los vas cargando según los necesitas. Puedes usar cada frame PA_SetSpriteAnimFrame (o como sea) sin que pase nada, ya que solo carga algo si es necesario.


PD: Las ventajas del 3D son que con cambiar una coordenada antes de dibujar me ahorro todo esto. [+risas] Bendito hardware 3D. XD De hecho, estoy con un juego que no usa para nada, absolutamente nada, el hardware 2D, todo es con dual screen 3D (con mi Nitro Engine, jejeje) y las adecuadas proyecciones para dibujar en 3D o 2D.
ANTONIOND escribió:Hombre, a mi se me ocurre usar un sprite que tenga varios frames dependiendo del porcentaje de vida que queda, y los vas cargando según los necesitas. Puedes usar cada frame PA_SetSpriteAnimFrame (o como sea) sin que pase nada, ya que solo carga algo si es necesario.


Muchas gracias. Cuando tenga tiempo le echaré un vistazo ^^

ANTONIOND escribió:PD: Las ventajas del 3D son que con cambiar una coordenada antes de dibujar me ahorro todo esto. [+risas] Bendito hardware 3D. XD De hecho, estoy con un juego que no usa para nada, absolutamente nada, el hardware 2D, todo es con dual screen 3D (con mi Nitro Engine, jejeje) y las adecuadas proyecciones para dibujar en 3D o 2D.



hmmm, suena interesante.. porque no nos pones alguna screen? ;)

salu2!
LoLoPoWeR escribió:
ANTONIOND escribió:PD: Las ventajas del 3D son que con cambiar una coordenada antes de dibujar me ahorro todo esto. [+risas] Bendito hardware 3D. XD De hecho, estoy con un juego que no usa para nada, absolutamente nada, el hardware 2D, todo es con dual screen 3D (con mi Nitro Engine, jejeje) y las adecuadas proyecciones para dibujar en 3D o 2D.



hmmm, suena interesante.. porque no nos pones alguna screen? ;)

salu2!


Imagen

No hagáis caso al texto, eso es parte del tutorial. Bueno, y he creado un montón de enemigos más para que la captura quede mejor. [+risas] Además, en la pantalla de abajo hay cosas que en el emulador salen un poco desajustadas, pero en la DS todo va perfecto.

Todavía me queda para acabarlo, pero en menos de un mes estará listo ;) . Ahora mas que nada tengo que hacer enemigos y niveles, y eso me llevará algún tiempo. Luego tendré que permitir guardar datos y una vez que eso esté, saco el juego a la luz. No vengáis pidiendo betas que no os voy a dar. [carcajad]
jue, pos está de PM ^^

me suena al "X-Wing Vs. Tie Fighter" xDD

salu2! y gracias por las screen ^^
ANTONIO, eso está hecho sólo con PAlib?
Sepho escribió:ANTONIO, eso está hecho sólo con PAlib?

Al contrario, no uso PAlib para nada.
ANTONIOND escribió:
Sepho escribió:ANTONIO, eso está hecho sólo con PAlib?

Al contrario, no uso PAlib para nada.


En ese caso... ¿Qué librerias? [boing]
Sepho escribió:
ANTONIOND escribió:
Sepho escribió:ANTONIO, eso está hecho sólo con PAlib?

Al contrario, no uso PAlib para nada.


En ese caso... ¿Qué librerias? [boing]

libnds y http://www.elotrolado.net/hilo_motor-3d ... -0_1078371.
Gracias ;)

P.D: Imposible ser más rápido contestando jaja
14 respuestas