[DS] Inició en el desarrollo para NDS

1, 2, 3, 4
Buenas, suponiendo que la ruta del devkitpro es la de por defecto
( C:\DevkitPro ), que tienes copiadas las Palib en ese directorio( de forma que te quede C:\Devkitpro\PALib ). La única ruta que debes crear tú, es en variables de sistema PAPATH = /c/devkitPro/PALib . Luego ejecutas el install.bat dentro del directorio C:\DevkitPro\PALib. Y te debería funcionar, por lo menos hasta la versión 0.77a.
Buenas, gracias por responder, voy a probarlo ahora mismo :)

Un saludo.

EDITO: Ya me funciona, muchas gracias [tadoramo]
¿Alguien me puede comentar lo de los sprites que he dicho?

YaW escribió:Estoy empezando con las PAlibs ahora que estoy dando C en clase...

El máximo tamaño de un sprite es de 64x64 no? Y si quiero poner un caballo que ocupa por ejemplo 128x64?
Buenas Yaw, te comento una solución temporal. Puede hacer lo siguiente si tú sprites es de 128 x 64, conviertelo en uno de 64x128, y luego puedes tratarlo como si fueran 2 sprites de 64x64, mira por ejemplo como coloco un boton yo que esta formado por 5 sprites.

Imagen

Como ves el boton original es de 160x32 , pero esta puesto en 32x160 y puedo tratarlo bien. Si necesitas un poco más de información de como tratar multiples sprites de un misma imágen me avisas.

En cuanto haga la entrega del proyecto, os pasare una versión del juego que he hecho.
Como muy bien ha dicho Psyk0Killer, la idea es esa, crear pequeñas imágenes para construir unas mas grandes.
Ésta técnica para escenearios se llama Tile, Tiles, o TiledLayer o cosas asi xD, no se como es el nombre de la tecnica, me sale solo el del Tile....
Hay muchísima información sobre tiles por internet.

Psyk0Killer, de que va el juego que estas haciendo?? (si se puede saber :D)

Edito: He probado sleep(ms), Sleep(ms), PA_sleep(ms) (esta me sono que existía) y ninguna funciona. Así que solo tenemos para controlar tiempo la de PA_WaitForVBL().
Aunque bien pensado, para que quiero esperar menos tiempo si no se va a pintar?? Los cálculos del "mundo" se hace sobre 16ms (mas o menos lo que tarda una interrupción de esas), y tirando.
Aunque ya podía exisitir el sleep xDDD Me hare uno que sea multiplo de 16 y tirando.
Buenas, el programa que estoy haciendo me esta volviendo un poco loco porque hace cosas mu raras :Ð . El caso es que en la pantalla de abajo quiero hacer una especie de seguimiento, que me muestre el valor de la variables en todo momento.

Se que existe la funcion :
PA_OutputSimpleText(0, 19, 23, "World, Hello!");

Que escribe World, Hello, pero me gustaria saber si hay alguna instruccion que sirva para escribir el contenido de int, bool..
me iria la mar de bien.

Un saludo.
Para escribir un int lo único que debes hacer es:

PA_OutputSimpleText(0, 19, 23, "%i", variableint);

Donde variableint sea la variable que quieres imprimir. Para bool no estoy seguro pero creo que se usa %b, string %s, char %c... Mirate un tutorial básico de C y lo entenderás mejor :-P

PD: Por cierto, varias dudas que tengo:
- El tamaño final del juego/programa no puede ser mayor de 4MB ¿no? ¿Porqué?
- En el caso de que sólo se puedan 4MB, ¿se podría hacer un "juego" dividido en dos partes de 8MB por ejemplo y que se llamen entre ellas cuando necesites una parte u otra del juego? (algo así como los CDs en los PCs)
- ¿Se pueden hacer saves en ficheros? ¿Cómo?
- ¿Me podríais explicar un poco más a fondo como va eso de tratar varios sprites como un solo objeto? (lo de dividir un sprite grande en varios de 64x64 por ejemplo).
- Hum... tenía más preguntas, pero se me han olvidado xD, si me acuerdo edito de nuevo.
Buenas, respecto a lo que ha dicho Yaw del texto, creo que ese no el metodo apropiado, para mostrar valores de variables deberías usar PA_OutputText; (la llamada es la misma). Respecto a lo del tamaño final, supongo que lo de los 4MB se referíra a tenerlo cargado en memoria, pero si usas un sistema de fichero como por ejemplo GBFS, no tienes esa limitación (corregirme si me equivoco). Para hacer Saves, todavia no me he mirado el tema, pero si que te adelanto que se pueden hacer Loads.

Veamos a ver si te puedo explicar lo de los sprites de forma que se me entienda.
Cuando convertimos una imágen que vamos a usar como sprites. Sabemos que obtenemos un fichero en .c que contiene la informacion de cada pixel de la imágen. Vamos en definitiva la imágen se convierte en un vector de char (enteros), que contienen un valor númerico, que se corresponde con el color de la paleta que tiene que dibujar. Vamos a suponer que yo tengo una imágen de 160x32 :
Imagen


Bien esa imágen al convertirla se transformara en un array de char con una longitud de (160x32) 5120. Cuando yo creo un sprite, a partir de una imágen única de por ejemplo 32x32, en la llamada a crear sprite simplemente le paso el nombre del vector y ya esta. Pero aqui viene que el vector es más grande de lo que queremos mostrar. Bueno que sepais que el metodo de crear sprite, va cargando la imágen empezando por el primer pixel de la imágen (Esquina superior Izquierda), luego hacía la derecha, y despues pasa a la "siguiente linea", vamos el sentido de lectura de toda la vida. Entonces si yo le digo que cree un sprite de 32x32, lo que va hacer es cogerme los 1024 (32x32) primero valores y ponermelos en pantalla en forma de matriz (32x32). Que hay que hacer para poder coger más cachos de imágen. Bueno lo primero, es cambiar la forma en que se ve, por que si lo dejo como esta, si intenta coger los primeros 1024 pixels, lo que hara sera cogerme los primeros 32 en la 1 linea, los siguiente 32, en la linea de abajo, así hasta llenar los 1024, pero como el ancho de la imágen no es de 32, la imágen no se va a corresponder con lo que yo quiero (podeís hacer la prueba y así lo entendereís mejor). Bien ya tengo la imágen como debe estar :
Imagen

Pues ahora es muy sencillo de hacer, en mi imágen se puede ver que son 5 "cachos" de 32x32. Yo me puedo crear unos defines para los COMIENZOS de cada imágen de la siguiente forma:
#DEFINE CACHO0 (void*)&miBoton_Bitmap[1024*0]  //32x32x0
#DEFINE CACHO1 (void*)&miBoton_Bitmap[1024*1]
#DEFINE CACHO2 (void*)&miBoton_Bitmap[1024*2]
....
Así hasta tener todos, y con eso ya podemos llamar a crear sprites de 32x32, porque cogera y para el primer cacho tomara valores desde la posición 0 hasta la 1024, y para el siguiente cacho, lo mismo pero ya no tiene que empezar desde 0, porque el trozo que nos interesa empieza a partir de la 1024, y así sucesivamente


PD: Lo he releido y no se sí os quedara claro. Así que podéis preguntar.
Buenas, he probado los dos metodos, el que me dijo YaW y
Psyk0Killer. Pero no consigo que me muestre por pantalla el valor de la variable.

Yo escribo literalmente :

PA_OutputText (0,1,1, "%i" , potencia);

y en lugar de mostrarme el valor que toma potencia, me escribe en pantalla %i

He probado a poner comillas simples, cambio de orden pero nada, solo compila de esta manera.

Si veis en que me puedo estar equivocando me lo decis :).

Un saludo.

PD: Voy a ir poniendo otras cosas que he provado, compilan pero no funcionan.

PA_OutputText (0,1,1, (char*)potencia);
PA_OutputSimpleText(0, 1, 1, (char*)potencia);
de que tipo es la variable, recuerda que segun que tipo es debes usar un codigo ó otro, por ejemplo para enteros %d, para flotantes %f, para strings %s, etc..
Vale merci tio, jejeje, la variable era tipo int, y estaba poniendo %i y es %d. Ahora ya me funciona.

Merci de nuevo. :)

Un saludo. [Ooooo]

PD: Por si alguien mas quisiera escribir enteros (INT), dejo la instruccion:

PA_OutputText (0,x,y, "%d" , variable);

x-> columna
y-> linea
Buenas a todos, escribo este mensaje porque al final he decidido que necesito gente que me ayude para evaluar a la IA de mi proyecto.
El proyecto no brilla por su originalidad, se trata del juego de ajedrez, más adelante ya me planteare hacer otra cosa. La cosa es que necesito hacer que la I.A. piense menos, por que yo por ejemplo no logro ganarla (tampoco es que sepa jugar mucho). Si alguien esta interesada en probarla, se ponga en contacto conmigo a traves de un mensaje privado, gracias.
Hola, si me permitis hacer dos pregurtas:

1- Trabajando con las palib, como puedo definirme una variable de texto para almacenar una cadena?
he provado con:
char texto[200];
texto="hola..."
pero me da errores....

2- Que son los tiles, porque no puedo cargar una imagen de 4 colores, que es uan foto de 800x800 con la funcion largemaps... y si la imagen es muy simple pero con los mismos colores e igual de grande si que me la carga, me han dicho que puede ser por tener muchos tiles, pero no han sabido explicarme mas.
gracias
char texto[200];

strcpy(texto, "Hola");

Creo que era así en C, que me confundo mucho con Java y parecidos. De todas formas, Psyk0Killer te lo confirmará seguro ;)
muchas gracias, si que era asi ;)
bueno devo ser yo el inutil xq la verdad es q algo rtan sencillo como hacer aparecer pixels aleatoriamente hasta llenar la pantalla no me sale.

el codigo es este:

while(1)
{
PA_InitRand();
x=PA_RandMax(255);
y=PA_RandMax(191);
PA_Put8bitPixel(1,x,y,2);
}


y el problema es q de aleatorio nada, porq los pixels me salen de forma que se intuyen 3 linias paralelas (nose como explicarlo, pero creedme q no es aleatorio) y ademas salen muy lentamente.

alguien me echa una mano? :P

asiasss
saca el PA_InitRand(), de ese while para empezar. Con que inicializes una vez la semilla de los aleatorios sobra. Luego me comentas que te hace.
Joer, me estaba volviendo loco porque cojones no me funcionaban las cosas que estan igual que en los ejemplos, y el descubierto el porque. Las PA_libs no se llevan bien con C++, si haces objetos y compilas lo hace bien, pero a la hora de ejecuta no hacen lo que deben :( :( :(

Yo que estoy mas que acostumbrado a programar orientado a objetos por Java, ahora meter sin objetos me va a costar mucho, pero mucho mucho :-( :-(

Por si alguno kiere hacerlo en CPP que se olvide, porque no va, solo era para informaros y comunicar mi frustación :(

Edito: Olvidad lo que os he dicho, que ya veo que habeis pasado por lo mismo, esto me pasa por no releer el hilo :$
pues si pongo fuera del while la instruccionm para generar los nums aleatorios, me da el efecto deseado, pero solo con unas linias, como muestra la captura.

seguramente sera una tonteria, pero esq no lo consigo ver...

asiassss

Adjuntos

Buenas, dos cosas: La instrucción PA_Init8bitBg(1,2) debe ir antes que PA_SetBgPalCol(...);

Y dentro del while, debes meterle el PA_WaitForVBL(); con eso te ira bien. Saludos.
jejejeje pues siento ser toston pero sigue sin ir....

el codigo que me keda es este:

PA_Init();
PA_InitVBL();

int x;int y;

PA_InitRand();
PA_Init8bitBg(1,2);
PA_SetBgPalCol(1,2,PA_RGB(0,31,0));


while(1)
{
x=PA_RandMax(255);
y=PA_RandMax(191);
PA_Put8bitPixel(1,x,y,2);
PA_WaitForVBL();
}

return 0;


y lo q me hace es lo correcto solo que siguen saliendo solo esas linias d ela captura. :-(
Buenas, te lo hace bien, pero cuando haces captura de la pantalla te sale así ( te refieres a eso?). Si es así puede que sea por la versión que usas del emulador. Yo tengo puesto el codigo así y la captura me funciona bien:
Imagen
Psyk0Killer necesito un poco de tu sabiduría DS xD.
Estoy con mi proyecto no?, y todo bien, no he tenido problemas hasta que he llegado al punto que necesito pintar la fuente por encima de los Sprites, que no se porque siempre me sale por debajo, por lo que poco me sirve.

Te cuento:
Hago un PA_InitText(0, 0); para poner la fuente en el BG0 no?, y luego los Sprites los creo con el CreateSprite normal y bien y se ven por encima, ahora si hago un PA_SetSpritePrio(0, numSprite, 1); para ponerlo en el BG1, que enteindo que es por detras del BG0, ya no se ven, estan ahi y funciona el SpriteTouch pero no se ven :( :(, y no se porque no se ven, ahora si pongo el texto en el BG1 también si se ven los Sprites.

No logro entender entonces como funciona los BG. ¿Como tengo que hacerlo?¿Qué es lo que hago mal?

Mil Gracias

Salu2
Para poder ayudarte, tendría que hecharle un vistazo a la parte de codigo en donde cargas los sprites e inicalizas el sistema de bg. Si lo prefieres puedes enviarme un privado.

Lo único que puedo decirtes es que te mires estos dos tutoriales (si no los has mirado ya)
http://www.palib.info/wiki/doku.php?id=day4
http://www.palib.info/wiki/doku.php?id=day5
Sip, ya los mire, yo creo que mi problema está en que no inicializo los BG, mas que otra cosa porque no se hacerlo sin pintar nada en el xDDD

Así creo mis sprites:
   //Cargamos la paleta de nuestros sprites
   PA_LoadSpritePal(0,   0, (void*)numbersPal);
   //La paleta de nuestros numeros fijos
   PA_LoadSpritePal(0,   1, (void*)numbersFijosPal);

   //Creamos 81 sprites
   for(j = 0; j < 9; j++)
      for(i  = 0; i < 9; i++)
      {
         PA_CreateSprite(0, // Screen
                     SPRITE_NUMS + j * 9 + i, // Sprite number
                     (void*)spritesNums[sudoku.tablero[j][i]], // Sprite name
                     OBJ_SIZE_16X16, // Sprite size
                     1, // 256 color mode
                     0, // Sprite palette number
                     OFFSETX + i * 16, OFFSETY + j * 16); // X and Y position on the screen
         PA_SetSpritePrio(0, SPRITE_NUMS + j * 9 + i, 0);

         if (sudoku.fijos[j][i] == TRUE)
            PA_SetSpritePal(0, SPRITE_NUMS + j * 9 + i, 1);
      }

   //Sprite cursor
   PA_CreateSprite(0, SPRITE_CURSOR, (void*)cursor_Sprite, OBJ_SIZE_16X16, 1, 0, OFFSETX, OFFSETY);
}


Un sprite por ficha del sudoku xD, y otro para el cursor. Ahi si pongo el 1 en el SetPrior no se ven. Ahora, si se ven si hago un
PA_InitText(0, 1);


Pero claro, el texto otra vez por debajo de los Sprites. Lo que quiero es tener los sprites en un BG y el texto en otro, pero que se vean ambos BG a la vez, que no se si se podrá supongo que sí.

Esos tutoriales sip ya me los había leido, peor no hay initBG como quien dice XDD.

Alguna idea??

Mil Gracias
joder es q estoy flipando, me he bajado el ideas 1.0.0.7 que es la ultuima version y sigue sin ir. lo q m e dices tu q sea cosa de la captura no es es, es q a la hora de generar pixerls aleatoriamente solo me salen en determinadas linias...

nose si es q es cosa de q no tengo las pa_libs bien instaladas, de como compilo o de que coño puede ser....
Vale, ya lo he conseguido, el problema estaba en que NO ponia:
PA_InitBg(0, 1, BG_256X256, 0, 1);

por lo que poco iba a pintar ahi, mil gracias, ya ta solucionao, a seguir :D :D, a ver si lo termino de portar hoy....

Edito: Avanceees!!!! http://www.elotrolado.net/showthread.php?s=&threadid=509632
Hola!!

He instalado el devkiPRO y la PA_lib, y me funciona todo correctamente (por fin) pero mi duda es: una vez compilado un codigo fuente, se generan 2 archivos, uno ***.nds y otro ***.nds.gba. Tengo la supercard sd, y para probarlo, que tengo que hacer?¿ meter el ***.nds directamente en la sd, pasarlo por el programa de la supercard...?¿

Agradeceria que me contestaseis

venga, un saludo!!
Creo que tienes q renombtar el nds.gba a .nds y meterlo como un nds normal. Creo que eso dijeron en mi hilo del PhoneSudoku, sino leetelo que ahi lo pone, en la página 3.

Suerteee ;)
bueno, cojonudo, al final funcionó. no os explico el motivo porq no me ibais a creer asi q paso a la siguiente duda.

en fin, sigamos con los problemas, para variar. despues de 2 horas (no miento) para aprender como se usa el gfx2gba y para que sirve y cuales son sus secretillos, al ejecutar el build.bat me da un error bastante tocapelotas. el error en cuestion es este:

all_gfx.o: (.rodata+0x8): multiple definition of `cara_Sprite'
cara.o: (.rodata+0x0): first defined here
cara.o: (.rodata+0x0): multiple definition of `cara_Sprite'
cara.o: (.rodata+0x0): first defined here
cara.pal.o: (.rodata+0x0): multiple definition of `cara_Pal'
all_gfx.o: (.rodata+0x0): first defined here
main.o: In function `main':
c:/devkitPro/_projects/game/source/main.c:7: multiple definition of `cara_Pal'
all_gfx.o: (.rodata+0x0): first defined here
main.o: In function `main':
c:/devkitPro/_projects/game/source/main.c:7: multiple definition of `cara_Sprite'
cara.o: (.rodata+0x0): first defined here
make[1]: *** [/c/devkitPro/_projects/game/game.elf] Error 1
make: *** [build] Error 2


impresiona eh?

asi resumidito vendria a ser que me dice 'multiple definition' de algo que no sé qué es. los includes estan bien xq lo he mirado con otros ejemplos, y en el codigo pongo el nombre de la paleta donde toca y el nombre del sprite donde toca tb, asi q yo creo q a las 4.31am hoy me doy por vencido.

muchas gracias por la atencion!!!
pon en cada archivo de codigo de imagenes esto:

#ifndef __NOMBREARCHIVO__
#define __NOMBREARCHIVO__

/* aki el codigo de tu archvo */


/* y al final estro: */

#endif


Así te aseguras que solo se incluye una vez cad archivo, aunque pongas varios includes ;)
si eso ya esta, cuando convierto la imagen a codigo, me genera 4 archivos, dos q se llaman all_gfx.c y all_gfx.h y otros dos q se llaman nombre.c y nombre.pal.c

en el archivo .h es donde esta lo del ifndef y demas cosas.
Bueno yo es que paso un poco de lo que me genera, tengo archivos .c distintos para cada cosa donde meto la paleta y la imagen y así no usao ni .h ni el extern ni nada, y lo tengo mas colocadito. Prueba eso, hazte un .c y mete ahi lo que vayas a usar y borra los que te genero el PAGFX.

Ya nos contaras
he encontrado una solucion "intermedia" mientras me entretengo a buscar que es lo que no funciona, y es simplemente pegar el codigo de los archivos de la imagen en el Programmers Notepad y aprovechando una de sus funciones pues hacer que solo se vea la definicion de la funcion.

muchas asiasss!!
Bueno, acabo de iniciarme en esto de la programación para la NDS, el caso es que tengo algo de idea de C++, pero mi duda es de lo más básica, y se refiere al entorno de programación:

Tengo el devkitPro y las PA_Lib instaladas, aparentemente todo funciona, pero el caso es que no sé cómo compilar un nuevo código que estoy haciendo, siguiendo unos tutoriales y la documentación de las PA_Lib.

Bueno en realidad ahora estoy trasteando con textos, para ir soltándome, pero el caso es que abro un archivo nuevo, pongo mi código y... ¿ahora qué? le doy a 'make' (Alt + F1) pero no pasa nada.

¿Dónde se supone que me genera el archivo .nds?

¿Qué es eso del Template? ¿Debo incluir algo en la carpeta donde grabo mi código para que compile o para que funcione?

Y otra pregunta, ha visto por ahí programas de ejemplo en los que la función 'main' es:

int main(int argc, char ** argv)

¿Por qué es esto así? ¿Debo hacerlo en todos mis programas? ¿Qué son esos 2 parámetros de la funcion?

A ver si alguien me puede ayudar, gracias.

EDITO

¿Me basta con cojer uno de los ejemplos que hay dentro de la carpeta Pa_LibExamples, poner mi código fuente en la carpeta Source y darle a build?

¿Cada programa que haga debe contener todos los archivos que vienen en los ejemplos (build, clean, makefile...) para que me genere el archivo nds?

Sé que esto ya lo sabrá todo el mundo, pero es que estoy atascadísimo...
Contesto a tu Edito ya que has dado en el clavo. Y sí, necesitas en cada proyecto los .bat, con los archivos tuyos en las carpetas source, include o donde corresponda, siguiendo la estructura de cualquier ejemplo. Para compilar el build.bat como has dicho y ahí saldrá el .NDS ;)

Bienvenido a la Scene NDS :)
Ok, gracias, entonces probaré esto con los nuevos códigos, mi objetivo a corto plazo es hacer algún juego sencillo en 2D que use exclusivamente el puntero.

Algún juego de buscar errores, o tipo memory, un trivial...uff!

Bueno, voy derecho a hacer pruebas.

Salu2.
Una preguntilla, la DS acepta funciones como getchar o putchar? (vamos, lo que es el manejo de ficheros) para por ejemplo usar un ficherillo en la tarjeta flash (SC DS en mi caso)
y asi poder guardar datos y demas, o usa alguna otra funcion?

Por adelantado gracias :)
Nop, no se puede accededor a los ficheros de la SC y demás (con el método estandar de fopen y demas xD)
Peroo, ahora te doy la buena noticia, y es que si usas las PAlibs en una nueva version han incluido el driver FAT (Chishm's FAT Driver) que soporta M3, SC y MK2/MK3 de forma nativa ;) Así que la respuesta final es sí, puedes utilizar ficheros pero usando dicho driver ^^

Salu2
Pues muchas gracias Morpheo17 :-P (que rapido has contestao [oki] )
Ahora a empollarme ese driver, mirare a ver en la web de las Palib, en fin, a aprender el nuevo metodo.

Un Saludete!! [beer]
Buenas compañeros,

Vengo a postear una duda con la que llevo como una hora comiendo la cabeza :Ð y lo peor de todo es que seguramente sea una estupidez.

Lo que estoy intentando hacer controlar que el jugador toque un sprite, entonces si lo toca debe ir sin levantar el stylus hasta unas coordenadas X e Y que están guardadas en el array del tablero. Si llega hasta X e Y crea un sprite que es una linea que une el primer Sprite (el que hay que tocar) y la coordenada.

He conseguido hacerlo y funciona bien, pero el tema es que tal como lo tengo hecho tienes que ir a la coordenada en concreto (p.e. X=40 Y=32) y es algo complicado con el stylus así que quería hacer un rango de posiciones, para conseguir que te cree el nuevo sprite si tocas por ejemplo desde X-2 hasta X+2 (siendo X la posición donde tienes que llegar).

Bueno, el código que he hecho es este:

while (1)
{
  if(PA_SpriteTouched(8))
  {   
    while(Stylus.Held)
    {
      for(x=((campo[posih][posiv+1].xesquina)-2);((x=campo[posih][posiv+1].xesquina)+2);x++)
      {
       for(y=((campo[posih][posiv+1].yesquina)-2);((y=campo[posih][posiv+1].yesquina)+2);y++)
   {
     if((Stylus.X==x)&&(Stylus.Y==y))
         PA_CreateSprite(0,9,(void*)alante_Sprite,OBJ_SIZE_16X16,1,3,campo[posih][posiv].xesquina-8,campo[posih][posiv].yesquina-8);
   PA_WaitForVBL();
   }
      PA_WaitForVBL();
      }
    }
  }
  PA_WaitForVBL();
}


Los PA_WaitForVBL no estoy muy seguro de porque los he puesto xD, pero bueno, a ver si alguien sabe solucionarlo porque con esto no me detecta ninguna posición final...

Os pongo una imágen del código por si no lo véis claro en el quote:
Imagen
(pinchad en la imagen para ir a la versión en grande y luego pinchar otra vez en la propia imagen para verla a tamaño real).
Buenas, así de pronto sin mirar otra cosa en vez de usar el Stylus.X = x; Stylus.Y = y. Podrías usar mejor la función:
PA_StylusInZone(x1, y1, x2, y2) que hace lo siguiente: ((Stylus.X>=x1)&&(Stylus.Y>=y1)&&(Stylus.X
De formar que puedes poner un area del tamaño que tu quieres sobre la zona.
Muchas gracias [oki]

Esa función me viene al pelo :)
Joer, no sabia q existia esa funciona y me la hice yo xD. Hace exactamente lo mismo que ella (Seguro q el codigo es igual, q es con un if, lo mas simple vamos xD)... Esto me pasa por no leerme la documentacion.....
e oido q ay un programilla casero, q utiliza el wifi para q puedas ver en tu ds lo q pasa en tu ordenador.dond puedo bajarme ste programa?es d fiar o es peligroso?

otra cosilla, como me gusta probar programillas d ste tipo, si ay alguno q me strope el fimware d la consola, teniendola flaseada como es mi caso, como se puede recuperar.

agradeceria vuestras respuestas, toy muy interesado
Duda de programación en PAlibs:

De que tipo son los Sprites? me refiero, a que yo por ejemplo pongo PA_CreateSprite(0,50,(void*) MiSprite_Sprite ,OBJ_SIZE_64X64,1,1,172,13);

vale, pero, si quiero hacer una función a la que le entre un sprite para crearlo dentro de ésta, que tipo debo poner en el parámetro?

Por ahora pongo void* y tira pero me sale un warning diciendo passing argument 1 of 'miFuncion' discards qualifiers from pointer target type

gracias!
Pos no me he fijado, asi sin mirarlo (no estoy en casa) deduzco que sera de tipo int o u8 o algo así, porque como son paletas de 256 con 8 bits las referencias. No te lo aseguro, pero es logico que u8 (un unsigned int vamos xD)
Prueba a pasarlo como void (sin el *), creo que así te funcionará y te quitará el warning :)

Ahora mismo lo que estás haciendo es trabajar con un puntero que apunta al Sprite, en vez de trabajar con el Sprite mismo.
si eso lo se, de hecho quería pasar un puntero al sprite XD, supongo que mi ejemplo no es weno.. nunca se me da bien sin poner el código real XD

si lo que pasa es que me mosquea eso de (void*) MiSprite_Sprite porque es como un cast a void*... conclusion: desconozco el tipo XD



P.D: Habéis probao la versión beta de la nueva palib? pa saber si es mu inestable o si añade cosas wenas...


EDITO:

También tengo problemas con el alpha-blending es q estaba probando a ponerles sombras a los pj, ya sabeis, unos pequeños circulitos negros semitransparentes debajo de los pies, pero por mas que toco los parámetros siempre se me ve con la misma transparencia, y además es MUY transparente asi que no me queda bien...

para más inri no se ve en el DeSMuME y estoy harto de pasar la tarjetita...

El ejemplo de las PAlibs si que tira bien, pero el mío no.. no se si es porque son sprites de 32x32, si es porque pongo varios de ellos con el mismo efecto, o si es porque luego les hago zoom (aunque también he probado a hacerles el zoom primero pero nada) o porque se debería aplicar el efecto varias veces seguidas.. (esto último no lo se, pero como en el ejemplo lo hace dentro del bucle infinito...)

A ver si alguien que ya se haya peleado con esto me puede orientar, que realmente no m apetece tirarme un par de horas sacando y metiendo la tarjetita pa unos circulitos negros...

Muchas gracias
Buenas,

Tengo una duda, en los dos homebrew que he realizado, el juego funciona perfectamente durante un rato, pero pasado un tiempo los sprites no se cargan como es debido, cogen otros dibujos, se ven cortados, etc.. es decir que el juego se vuelve injugable.

Yo elimino los sprites que no uso, y los vuelvo a reutilizar pero no se porque me da estos fallos.

Hay alguna instruccion que se me olvide?, no se si es que como mucha memoria, yo creo que no, tengo un par de pilas creadas, pero las voy liberando cuando no las necesito.

Bueno, si os a pasado algo parecido y lo resolvisteis comentarme la solucion :)

Un saludo.

EDITO: Para pasar los sprites a .c utilizo el PAGfxConverter.exe, ¿es posible que esto sea la causa? Que es mejor, usar el PAGfx o gfx2gba.exe?.

Como dato adicional decir que uso las PAlib.
195 respuestas
1, 2, 3, 4