[Leer antes de postear] Programación de DS

1, 2, 3, 4
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
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
Muchas gracias [oki]

Esa función me viene al pelo :)
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.
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.
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).
Hum, este hilo está mas orientado a la programación de otro estilo pero a ver si pueden responderte ;)
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....
Una duda que me ha surgido ahora en el curro xD

Estaba pensando ahora, como se podría hacer un juego isométrico con PAlibs??? Porque el TiledLayer solo acepta tiles cuadrados por lo que descartado. Luego un Background Drawable (o como se diga) no es factible porque se hucpa muchísima RAM.
Existe alguna manera asi que no consuma muchos recursos?? En J2ME es bastante fácil porque solo se "pinta", no existe ni backgrounds ni na, solo pintar :D

Supongo que para GBA habría el mismo problema, como lo harían? a pelo a la vieja usanza??. Me da que va a ver que tirar de libnds....

Que opinais??
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 :$
He estado mirando por todos los links y el problema es que algunos ya no funcionan. Particularmente he buscado manuales en castellano y en pdf, pero muchos de los enlaces a estos manuales ya han caducado.

En concreto el de Geardome me funciona, pero descarga un archivo corrupto (ya lo he bajado varias veces).

¿Alguien tiene dicho tutorial y puede enviarmelo? O alguno similar...
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.
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
Wenas, estoy dandole vueltas a mi proyecto y no consigo avanzar, yo creo que es que me está costando más de lo que creía no pensar en orientación a objetos, así que me estoy planteando empezarlo de nuevo en C++ a ver si así veo la solución

¿alguien tiene algún código fuente de algún proyecto que use las PAlibs y c++? es para ver si hay que hacer alguna virguería para q t lo reconozca o algo así, porque he probado a crear la primera clase:

#ifndef __PJ_H
#define __PJ_H

#include

class PJ{
private:
char* nombre; // Nombre del personaje
.
.
.

public:

PJ();
~PJ();

};

#endif


y he recibido un flamante error: expected '=', ',', ';', 'asm' or '__attribute__' before 'PJ'


--------------------------------------------------------------------------------
OFFTOPIC ON:

xD, salimos de Malaga y nos metemos en Malagón xD

La programación de DS no me quiere :_( [mamaaaaa]

enga gracias, a ver si algún día consigo hacer algo más que un hola mundo xD, la verdad es que me estoy desanimando bastante porque apenas tengo tiempo y no consigo nada, cuando c y c++ lo tendría que tener dominao (c++ el año pasado y este año c para linux, ya sabéis, llamadas al sistema y esas cosillas..)

el caso es que este año estoy con java y con lo fáciles q se hacen las cosas ahi.. xD

además Eclipse me hace él solito medio código xD

pues eso, a ver si alguien me echa una mano ;) Saludos

OFFTOPIC OFF
Darksilvano, no existen hilos en la NDS (bueno si, porque tenemos 2 micros, pero el caso no es ese...), por lo que no puedes ejecutar dos instrucciones simultaneas, todo es secuancial.

Pero eso no implica que puedas hacer muchas cosas a la vez. Lo que preguntas es una pregunta de estructuración de código, y hay mil respuestas. Por ejemplo, yo suelo programar que mi bucle principal no tiene nada, simplemente una llamada al GraphicEngine (Clase o Metodo mio) que actualiza los gráficos, y otro al Process() del GameEngine que se encarga de los calculos del "mundo".

Por lo que ya dentro de tu GraphicEngine, tienes que tratar que gráficos han cambiado y cambiarlos si es necesario, actualizar posiciones etc.... Pero las posiciones y que cambiar no lo debe adivinar el GraphicEngine, sino el GameEngine que con llamadas a el indica que cambia, o que tiene que hacer nuevo (cambiando su estado ....).
Es un poco máquina de estados.

Ya te aseguro yo que ningun juego de NDS tiene hilos (salvo que tiene dos micros, por lo que son dos hilos, y cada uno hace sus cosas), pero tecnicamente lo gordo lo hace uno, que es como se ha programado siempre xD.

No se, la idea es estructurar mucho el codigo, no hacer metodos muy grandes, muy pequeños siempre, de menor a mayor abstracción, usando objetos, estructuras o lo que se necesite en cada caso... y ya verás como te queda un código limpio, bonito y muy legible :-)
hola me gustaria hacer programas para la ds.
pero no tengo ni idea de programacion. que podria hacer?
jeje es dificil? necesito estudiar al gun grado superior o algo? jejeje

gracias saludos
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
prizzio prueba a actualizar tu versión de las PAlibs por si acaso, que siempre andan arreglando bugs..

P.D: Oks Yaw
Morpheo17 escribió:Bueno que me enrollo, el motivo del post es para preguntar si alguien ha hecho ya un sudoku para la NDS??



Yo quería hacer uno, pero quería hacerlo bien (generación de puzzles, selección de dificultad, etc...). Pero el tema matemático del sudoku me superaba XD. Pasaba de hacer uno con puzzles prehechos o con puzzles aleatorios sin más.

Si te manejas con el tema matemático del sudoku, hacer uno no tiene que ser muy complejo (graficamente es sencillo, y con saber manejar la táctil y poco más ya lo tienes hecho). Si es el caso, anímate que mucha gente te lo agradecerá.


Taiyou
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
Hola VisstarAlax, yo me acabo de iniciar en esto, te recomiendo usar palib, es lo más simple que he visto. Es C con las librerias palib que te permiten trabajar con la DS.

No sé si sabes programar o no, yo sé y lo encuentro bastante asequible, sino te recomiendo aprender antes a programar en c, encontraras cantidad de tutoriales y muy buenos por internet.
Sip, ya tenía el tema de generacion de Sudokus aleatorios por dificultad y tal, mirar si vas bien (es una estupidez, pero en fin...). Así que me pondré a ello, aunque ya empece un poco a trastear como pintar imagenes. Lo bueno que com no hay "animaciones" no me tengo que preocupar en fps ni na, solo a tirar de tactil....

Salu2
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 ;)
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.
Postea el fichero que te da la doble deficion y le hechamos ub vistazo.
Aunque el problema va a estar en el all_gfx y demas archivos, xq el programa no es para nada perfecto y muchas veces mete mal los nombres de las paletas, imagenes etc...

Yo te recomiendo que segun generas, los metas en un .c tu a mano, sin el extern ni nada los archivos de imagnes y paletas, y asi incluyes ese archivo solo (o le haces un .h) y tirando, que seguro que es eso. A mi me paso con el Sudoku que se volvia loco si tenia un añadido antes de añadir otro, y me cambiaba la paleta (sí, el orden :|) en fin, lo que te interesa son lso arrays, asi que hazte tu gfx.c y ya veras como va bien ;)
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 ;)
Bajate las ultimas PAlibs (sí las beta), e instalalo con el CPPInstall.bat y ya te debería funcionar ;)

Ya nos contarás....
Si, lo he probado en la DS y falla igual que en el emulador.

Y es raro porque funciona perfectamente un buen rato hasta que parece que se carga bastante y peta.

Volvere a mirar la asignacion del numero de sprites pero no creo q sea eso. Yo creo que falla en el tema de la paleta, pero no se como arreglarlo.

Uso el PAfxconverter asi que la paleta que le meto en el include son dos archivos solamente. No se que pasara.

Un saludo.

Pd: Os adjunto un fichero para que probeis si tambien os da el mismo fallo. Al principio debe ir bien pero al cabo de un rato peta.
Solo he creado el nivel 1,2,3,4 y el 25.
Para seleccionar nivel es con la crucreta y para poner flechas tambien.
A mi es que con las anteriores y algunas instrucciones me petaba, (quiza tenia una antigua) pero no me iba casi ninguna instruccion PA, daba error por todos los lados con C++...
NO hace falta que tengas la beta, ve a la carpeta donde tengas las PAlib y ejecuta el CPPInstaler.bat, así deberia ir
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 :)
Morpheo17 escribió:Sip, ya tenía el tema de generacion de Sudokus aleatorios por dificultad y tal, mirar si vas bien (es una estupidez, pero en fin...). Así que me pondré a ello, aunque ya empece un poco a trastear como pintar imagenes. Lo bueno que com no hay "animaciones" no me tengo que preocupar en fps ni na, solo a tirar de tactil....

Salu2


Vaya , esperemos que ta salga bien el sodoku ... se de alguno que le dará buen uso. [angelito]
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...
Buenas,

Morfeo comentas que en tu sudoku te cambiaba las paletas, pues en mi juego creo que me pasa lo mismo, puedo jugar a 12 veces en diferentes niveles sin problemas pero de golpe es como si se confundiera de paleta el programa.

Me puedes explicar como crear ese archivo que tu llamas gfx.c, que le metes dentro?

Un saludo. :)

Te adjunto el fichero que he creado gfx.c pero me sigue dando el mismo fallo el juego.
en nds que lenguaje de programacion se utiliza? [+risas]

gracias [bye]
Como en todas las consolas: C/C++
Hola a todos, tengo un juego (el hundir la flota, no os vayais a pensar) ya practicamente terminado, y quiero poder jugar con wifi.

He mirado las instrucciones en el pa_lib wiki tutorial y no se como hacerlo.
Tengo que crear un socket en cada consola y despues pasarme los datos de las ips de una consola a la otra y además una conexion a internet???
Es que no queda nada claro en el tuto la verda.
Por que por lo visto no tiene implementado conexion Ad-Hoc no?
hola, me estoy leyendo un manual de palib y hay algo que no entiendo, es sobre los sprites, lo que llaman, supongo que la traduccion es "paletas". a que se refiere con paletas? que es una paleta? y porque dicen que hay 16 paletas por pantalla?

gracias!
Buenas, como compilo un archivo .c o .cpp en .nds, con que makefile?

No me hace caso ninguno. Ayuda plis, gracias.

EDITO:

Tengo el devkitPRO 1.3.4, las PAlib y todo lo ke hace falta. Pero me he bajado ejemplos y tal, o del mismo PAlibTemplates, y al darle al build.bat, me genera la carpeta BUILD, pero con pocas cosas dentro, un main.d y un main.o . Nada mas.

EDITO 2: Ya me funciona
189 respuestas
1, 2, 3, 4