[Programación en NDS][Recopilación de tutoriales Palib y Voc

1, 2, 3, 4, 5, 6
Kratos Studio escribió:ok [oki] , sabeis alguno como conectarse con wifi a internet en PAlib?


Hay me has pillado...... [carcajad]

No :-(
Es que estoy creando un mini OS y quiero poner la opcion de conectarse a internet pero necesito como base saber conectarse wifi.
Bueno, ya siento que espereis por el tuto (en realidad no xD) pero ahora ando liado con wii. De todas formas intentare tener el siguiente pronto.

salu2
no pasa nada Plata, por cierto sabes como adivinar las coordenadas x e y? quiero decir que como consigo dar con el punto exacto que yo quiero? probando a ojo?
Ya te he respondido por mp (es algo que he contestado mucho...) xD
En el primer post del hilo falta poner la URL del tutorial 9 ._.
alexpowerup escribió:En el primer post del hilo falta poner la URL del tutorial 9 ._.


Yo también lo ví, pero me daba cosa decirlo... xD

Ya que posteo aprovecho y digo tambien que el TITULO del hilo le faltan letras (... "voc" -> ... vocABULARIO)
Yo estoy creando un juego (o al menos lo intento) para la DS con conexión Wifi a internet (en concreto a un servidor con PHP). Así que me he pegado con la madre del cordero y su abuela por la cantidad de cosas raras que me han pasado.

Os dejo el código básico para conectarse a la Wifi, que por cierto vienen en los ejemplos de PaLib (esa misteriosa carpeta que se llama "PAlibExamples"). La forma más sencilla y básicota, que puede dar algunos fallos (a mí me funciona bien) es:

PA_InitWifi(); //Inicio las librerias Wifi
char *response = (char *) malloc(1000); //aquí guardo la respuesta

if (PA_ConnectWifiWFC()) {  //Arranco el Wifi, aquí la DS empieza a parpadear
       char url[256];      
      sprintf(url, "http://www.miserver.php?variable=valor");
      PA_GetHTTP(response,url);   
}

Wifi_DisconnectAP(); //cuando he terminado desconecto del servidor al que me he enchufado (www.miserver.php)
Wifi_DisableWifi(); //y apago el Wifi

PA_OutputText(0,1,1,response); //imprimo la respuesta del servidor


Eso es lo básico. Luego hay unas funciones que en teoría hacen los GET mucho mejor y sin tantos problemas, pero como a mí no me daba problema alguno el getHTTP pues lo he usado. Estas las he modificado algo yo, pero se basan en el ejemplo Leaderboard de Palib también. Dichas funciones son las siguientes:

int sendMsg(char *buffer, char *url) {
   int sock;
   char server[256];
   char buffer3[256];         
   int pos = httpServer(server,url);
   
   PA_InitSocket(&sock,server,80,PA_NONBLOCKING_TCP);   
   char buffer2[256];
   sprintf(buffer2, "GET %s HTTP/1.0\r\nhost: %s\r\nAccept: */*\r\n\r\n",url+pos,server);
   send(sock,buffer2,256,0);
   strcpy(buffer,"");

   while(buscarPalabra(buffer3,"\r\n\r\n",0) == -1) {
      if (Pad.Newpress.Start) break;
      memset(buffer3,0,sizeof(buffer3));
      recv(sock,buffer3,256,0);
   }
   int poshtml = buscarPalabra(buffer3,"\r\n\r\n",0)+4;
   strcat(buffer,buffer3+poshtml);
   while(1) {
      if (Pad.Newpress.Start) break;
      memset(buffer3,0,sizeof(buffer3));
      if(recv(sock,buffer3,256,0)<1) break;
      strcat(buffer,buffer3);
   }
   if(sock) closesocket(sock);
   return 1;
}

int httpServer(char *buffer, char *buffer2) {
    int i,depart=0;
    if(buscarPalabra(buffer2,"http://",0)!=-1)
       depart+=7;
    for(i = depart; buffer2[i] != '\0' && buffer2[i] != '/' && buffer2[i] != '\\'; i++) {
          buffer[i-depart]=buffer2[i];
    }
    buffer[i-depart]='\0';
return i;
}

int buscarPalabra(char *mot1, char *mot2, int depart) {
   unsigned int i,j,erreur=1;
   for(i=depart;i<strlen(mot1);i++) {   
      if(mot1[i]==mot2[0]) {
         erreur=0;               
         for(j=0;j<strlen(mot2);j++) {
            if(mot2[j]!=mot1[i+j])
               erreur=1;
         }               
         if(erreur==0)   return i;
      }
   }
   return -1;
}


Estas en teoría son mejores por varias cosas. Eliminan las cabeceras de la respuesta del servidor (cabeceras HTML), que por lo general no te vuelven con el GetHTTP tampoco pero a veces se puede colar alguna cosa por ahí (nunca me ha pasado). Y además te permite cortar de cuajo el intento de conexión pulsando el botón Start. Pero bueno, que esto según necesidades.

Yo tras pegarme durante semanas con todo, encontré muchas cosas que me fallaban y las pude solventar prácticamente todas y al final me funcionaba igual de bien con el GetHTTP que con estas funciones, así que por no meter tanto código uso el getHTTP. Ahora el único problema que tengo es que la DS se cuelga aleatoriamente al conectar a la Wifi, pero a otros no les pasa por lo que creo que es cosa de la configuración de mi router. Si puedo lo miraré.

Intentaré leerme este hilo a menudo (y el foro de homebrew) para resolver dudas, que ya que me he tirado de los pelos resolviendo chorradas (chorradas que no se encuentran fácilmente) pues que al menos sirva para que al resto no le pase lo mismo.


PD: si alguien recibe caracteres vacíos (al imprimir la respuesta del servidor aparecen caracteres vacíos por ahí) ya descubrí lo que es, tras muuucho tiempo. Es un carácter de control, el número ASCII 1. Por lo tanto hay que borrarlos. Para ver el ASCII de un caracter -> (int)c. Ese ASCII debe ser >31 para que se corresponda con un caracter del teclado (los anteriores son caracteres de control).

PD2: también he hehco un programilla de DS que se conecta a un ordenador que tiene corriendo un servidor en Java, puedo poner un tutorial de esto también (tanto del servidor Java como del de DS).

PD3: cuando tenga mi juego terminado y pase a fase de pruebas lo pondré en el foro para que lo podáis probar y ponerme a parir por ser cutre xDDD (os mato :P). Espero que no me surjan problemas insalvables y pueda terminarlo. Por cierto, se llama Anime Quest.
plata ,a ver si pones nuestra recopilacion de nuestros homebrews , que tienen el source para aprender [sonrisa] [sonrisa] [sonrisa]
[oki] Genial ...

Muy grandico tutorial y esta explicado a [TODO BIEN]

Gracias...
Hola, lo primero de todo dar las gracias a Plata por el genial trabajo k está haciendo. Kiero intentar programar algo con la DS (por segunda vez), pero estoy teniendo problemas con el Devkitpro. He intentado seguir los pasos de Plata, pero desde k se hizo el tutorial han cambiado alguna cosilla. Por ejemplo, ahora las Palib no tienen autoinstalador en su última versión, es un archivo comprimido con varias carpetas, las cuales meto en el directorio C:/devkitpro.

El problema es k cuando intento compilar cualkier ejemplo, me da el típico error:

"make" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

He reinstalado como unas 10 veces el devkitpro (el cual por cierto me suele dar varios errores de conexión al utilizar el updater, pero al final termina instalándolo) y siempre pasa lo mismo :/

Alguna idea?

Un saludo y gracias
Ese error suele dar por dos razones.

- Asegurate de que has creado las variables de entorno (PAPATH y añadir el PATH.. lee el readme de instalación creo que ahí venía).
- El directorio donde lo instales no tiene que tener espacios (es un bug del chisme o algo así). Es decir, que esto no vale "C:\Nintendo DS\devkitpro\". Debe ser "C:\NintendoDS\devkitpro".

Si no es eso, pues no sé. Ah, en windows Vista no funciona muy bien que digamos, da mucho problema.
No tenía ni idea de lo del entorno, pero he estado mirando en el wiki de palib, y en efecto ahí aparece. Pero he puesto todo como dicen, y me sigue dando el mismo error :/ El directorio de instalación es el k aparece por defecto, osea, C:\Devkitpro. Así k no hay posibilidad de error en cuanto a espacios y demás. Estoy desesperado :(

Un saludo y gracias.
aki no falta el tuto 9 ?
Rigle escribió:aki no falta el tuto 9 ?


AQUI [oki]
Para cuando mas tutos??
parece que se dejo de actualizar en mayo... vaya una pena porque estaban muy bien (lo poco que se Palib lo se de aqui y de la wiki de PAlib)

Saludos
(mensaje borrado)
naruto1994 está baneado por "Spam"
(mensaje borrado)
naruto666 está baneado por "spam"
Plata te amooooooooooooooo [amor] [amor] [amor]

xDDDDD

No, en serio, es que hace ya mucho tiempo intenté empezar a programar en DS, pero entonces tutoriales había los justos y en inglés, y el devKitPro no me tiraba hiciera lo que hiciera. Pero siguiendo tus tutoriales (que me los he zampado hasta el 8 en 2 días xD) ya he creado mis primeros programitas cutres (algo tan simple como poner un puntero y que al tocar con la táctil, éste siga al stylus me producía una felicidad que quien me viera pensaría que estoy loco xD).

Lo malo es que tengo la selectividad dentro de 3 días y me he viciado terriblemente tus tutos y no quiero joderla en selectividad jajaj (aunque tengo un 9 de media en bach y ya me sale la nota para informática, pero por no bajar la media...).

Pero bueno, este no es el caso. El caso es que con lo poquito que sabía de C y tus tutoriales de PAlib, por fin sé hacer algo y espero que sigas con estos tutoriales, que valen muchísimo para los principiantes como yo.

A ver si este verano tengo tiempo y me pongo con algo chulo jejeje.

Lo que quería decir es: GRACIAS! y que por favor, no dejes de hacerlos.

Saludos!
No los voy a dejar, solo que tengo muchas cosas que hacer y mas importantes.
En verano seguire.

Salu2
Plata escribió:No los voy a dejar, solo que tengo muchas cosas que hacer y mas importantes.
En verano seguire.

Salu2


lo esperaremos con ansias ;-)
No lo tengo claro, yo puedo hacer un farme para la M3 DS Real con eso [comor?]
Jesús94 escribió:No lo tengo claro, yo puedo hacer un farme para la M3 DS Real con eso [comor?]


No se muy bien pero creo que se dice frame; y hasta yo tengo sabido (que es muy muy poco) un frame es una parte de una secuencia o algo parecido, podrias hacer una animación con un sprite y que se te quede muy chulo [ginyo] y para cualquier flashcard (mientras sepas programar en PAlib)

Saludos
Vas a hacer el tutorial 11 de 2D?¿

Saludos
Sergio619 escribió:Vas a hacer el tutorial 11 de 2D?¿

Saludos


Plata escribió:No los voy a dejar, solo que tengo muchas cosas que hacer y mas importantes.
En verano seguire.

Salu2


Un poco de paciencia, hombre ^^
tendremos paciencia pero lo esperamos igualmente
(mensaje borrado)
Buenas gente, necesito ayuda, ya que estoy en el tutorial 4, la primera parte, y necesito que miréis cual es mi error:
Simplemente cuando ya he creado mi carpeta para guardar el ejercicio, inicio el palib y todo y lo hago bien, solo que cuando le doy a project-->Target-->Build, me da error, y no se que hacer, mirar este es el error que me da:

make[1]: *** /c/devkitPro/Programas: Invalid request code. Stop.
make: *** [build] Error 2

Y esto es lo que he escrito en el PAlib:
// Includes
#include <PA9.h> // Include de las PA_Lib


// Funcion: main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL

// Iniciamos el texto
PA_InitText(0, 1);

//cambiamos el color
PA_SetTextTileCol(0,//Pantalla
1//Color (del 1 al 7)
);
//Escribimos
PA_OutputSimpleText(0, 1, 1, "Que");

PA_SetTextTileCol(0, 2);
PA_OutputSimpleText(0, 2, 2, "pasa");

PA_SetTextTileCol(0, 3);
PA_OutputSimpleText(0, 3, 3, "tío!");


while (1)
{
PA_WaitForVBL();
}

return 0;
} //Fin de main()



¿Porqué me sale ese error?
Mirar esta es la carpeta donde guarde las cosas:
Imagen

Haber, la carpeta, "source", solo tiene un documento, llamado main, (archivo C). Y luego la carpeta build esta vacía, si se hubiese compilado bien, estaría llena y donde tengo los documentos, tendría un archivo, .nds, .sc.nds y otro ds.gba, pero como no, no están..

Ayuda! ¿Qué puedo hacer?
dw!
chitapedre escribió:Buenas gente, necesito ayuda, ya que estoy en el tutorial 4, la primera parte, y necesito que miréis cual es mi error:
Simplemente cuando ya he creado mi carpeta para guardar el ejercicio, inicio el palib y todo y lo hago bien, solo que cuando le doy a project-->Target-->Build, me da error, y no se que hacer, mirar este es el error que me da:

make[1]: *** /c/devkitPro/Programas: Invalid request code. Stop.
make: *** [build] Error 2

Y esto es lo que he escrito en el PAlib:
// Includes
#include <PA9.h> // Include de las PA_Lib


// Funcion: main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL

// Iniciamos el texto
PA_InitText(0, 1);

//cambiamos el color
PA_SetTextTileCol(0,//Pantalla
1//Color (del 1 al 7)
);
//Escribimos
PA_OutputSimpleText(0, 1, 1, "Que");

PA_SetTextTileCol(0, 2);
PA_OutputSimpleText(0, 2, 2, "pasa");

PA_SetTextTileCol(0, 3);
PA_OutputSimpleText(0, 3, 3, "tío!");


while (1)
{
PA_WaitForVBL();
}

return 0;
} //Fin de main()



¿Porqué me sale ese error?
Mirar esta es la carpeta donde guarde las cosas:
Imagen

Haber, la carpeta, "source", solo tiene un documento, llamado main, (archivo C). Y luego la carpeta build esta vacía, si se hubiese compilado bien, estaría llena y donde tengo los documentos, tendría un archivo, .nds, .sc.nds y otro ds.gba, pero como no, no están..

Ayuda! ¿Qué puedo hacer?
dw!


El error te lo da por la carpeta "Programas Pruebas", ya que son dos palabras y el compilador no lo acepta. Prueba a cambiar el nombre de la carpeta por "ProgramasPruebas" o algo similar que sea una sola palabra y nos cuentas si era eso o no.
Buaaaa!! Como se me ha podido pasar un error tan grande?! Como se nota que todavía soy un novato!! xD!
Bueno muchas gracias tío, la verdad es que ya estaba desesperado, ya que no lo conseguía ni de coña!!
Bueno gracias de nuevo y dw!! :)

EDITO: Tengo una duda, en el tutorial 4, voy por esta parte: 2. Color aplicado a todo el texto, y tengo una duda, porque en:
//cambiamos el color
PA_SetTextCol(0,//pantalla
15, //Rojo
15, //Verde
30 //Azul <------ ¿Porqué no lleva , me refiero, porque no es igual a los otros: 30, //Azul. Es que por esa , no me dejaba compilar, hasta que me di cuenta... :p
--------
Por cierto plata, es una tontería y de muy bajo nivel [+risas] pero bueno, para ti! xD!:
Imagen
Una duda. Esoty en el capitulo de los sonidos, y siempre me da el mismo fallo, pero es que me bajo el de muestra, y me lo sigue dando...

el codigoes este:
// Includes
#include <PA9.h>       // Include for PA_Lib
#inlcude "aslong.h" //Incluyo el sonido, hay que poner el nombre del .raw
// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   PA_InitSound(); //iniciamos el sonido
   PA_PlaySimpleSound(0, // canal (hay 15, osea, 15 sonidos simultaneos puedes meter)
   aslong); //nombre del archivo raw
      
   // Infinite loop to keep the program running
   while (1)
   {
   PA_WaitForVBL();
   }
   return 0;
} // End of main()


Y el fallo que me da es este:
main.c
c:/devkitPro/Programas/ej11/source/main.c:3:2: error: invalid preprocessing directive #inlcude
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

Que hago mal?
Hyuga Neji escribió:Una duda. Esoty en el capitulo de los sonidos, y siempre me da el mismo fallo, pero es que me bajo el de muestra, y me lo sigue dando...

el codigoes este:
// Includes
#include <PA9.h>       // Include for PA_Lib
#inlcude "aslong.h" //Incluyo el sonido, hay que poner el nombre del .raw
// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   PA_InitSound(); //iniciamos el sonido
   PA_PlaySimpleSound(0, // canal (hay 15, osea, 15 sonidos simultaneos puedes meter)
   aslong); //nombre del archivo raw
      
   // Infinite loop to keep the program running
   while (1)
   {
   PA_WaitForVBL();
   }
   return 0;
} // End of main()


Y el fallo que me da es este:
main.c
c:/devkitPro/Programas/ej11/source/main.c:3:2: error: invalid preprocessing directive #inlcude
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

Que hago mal?


Donde está colocado el .raw ? Casi seguro que es eso
leed el mensaje de error anda --> invalid preprocessing directive #inlcude

tu has puesto #inlcude en vez de #include, y como esa palabrota no la entiende el compilador da error. Cámbialo y mira a ver.
keda escribió:leed el mensaje de error anda --> invalid preprocessing directive #inlcude

tu has puesto #inlcude en vez de #include, y como esa palabrota no la entiende el compilador da error. Cámbialo y mira a ver.


JAJAJAJAJJAJAJA, joder, es ciertoooo xDDDDDDDDDDDDD

Y todo por leer a toda pastilla.... lo que hay que ver.... [jaja]

Oye keda, como va con el homebrew ese? El de la bolita naranja esa que andaba y sonaba la musiquilla xD
judelco escribió:
keda escribió:leed el mensaje de error anda --> invalid preprocessing directive #inlcude

tu has puesto #inlcude en vez de #include, y como esa palabrota no la entiende el compilador da error. Cámbialo y mira a ver.


JAJAJAJAJJAJAJA, joder, es ciertoooo xDDDDDDDDDDDDD

Y todo por leer a toda pastilla.... lo que hay que ver.... [jaja]

Oye keda, como va con el homebrew ese? El de la bolita naranja esa que andaba y sonaba la musiquilla xD


la bola era verde... [+risas]

Pues hice una segunda versión en la que se controla a la bola con el Stylus más o menos como en el zelda, es decir, que dependiendo de si pones el stylus cerca o lejos el muñeco va más lento o más rápoido y ese tipo de cosas, y también lo puse en un mapa más grande para probar el scrollx, pero a parte de eso no he hecho nada más con él...
keda escribió:
judelco escribió:
keda escribió:leed el mensaje de error anda --> invalid preprocessing directive #inlcude

tu has puesto #inlcude en vez de #include, y como esa palabrota no la entiende el compilador da error. Cámbialo y mira a ver.


JAJAJAJAJJAJAJA, joder, es ciertoooo xDDDDDDDDDDDDD

Y todo por leer a toda pastilla.... lo que hay que ver.... [jaja]

Oye keda, como va con el homebrew ese? El de la bolita naranja esa que andaba y sonaba la musiquilla xD


la bola era verde... [+risas]

Pues hice una segunda versión en la que se controla a la bola con el Stylus más o menos como en el zelda, es decir, que dependiendo de si pones el stylus cerca o lejos el muñeco va más lento o más rápoido y ese tipo de cosas, y también lo puse en un mapa más grande para probar el scrollx, pero a parte de eso no he hecho nada más con él...


Bueno, pues verdecito el marcianito.... pasame el link al post para verlo (en el caso de que lo postearas...)

PD: Yo el zelda lo retomo en septiembre, ahora estoy en summer holidays
me di cuenta ayer por la noche^^U. Vaya caga, aunque gracias.
elchuchu escribió:main.c
c:/prueba/source/main.c:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
make[1]: *** [main.o] Error 1
make: *** [build] Error 2


Un usuario tuvo este error y le mandasteis reinstalar.
Yo tengo el mismo (creo)

main.c
c:/Users/hp/Desktop/source/main.c:2:33: error: #include expects "FILENAME" or <FILENAME>
make[1]: *** [main.o] Error 1
make: *** [build] Error 2


¿Es el mismo no?
Si lo es, ya he reinstalado desde limpio, es decir 1 borrar 2 reiniciar 3 instalar 4 reiniciar
y sigue sin funcionar... [+risas]

EDIT: Jeje...no me había dado cuenta... [+risas] [+risas]
¿Funciona en vista? [+risas] [+risas]
Por lo visto mis fallos no acaban nunca...
Ahora le he pusto un fondo mas ancho (de 512x192 para ser exactos) para hacer un scroll, pero cuando tiene que mostrarlo me sale esto:
Imagen

Alguien me puede decir cual es el fallo?
Hyuga Neji escribió:Por lo visto mis fallos no acaban nunca...
Ahora le he pusto un fondo mas ancho (de 512x192 para ser exactos) para hacer un scroll, pero cuando tiene que mostrarlo me sale esto:
Imagen

Alguien me puede decir cual es el fallo?


Una imagen muy gorda xD

EDIT: Para más detalles, eso significa que sobrepasaste la ram de la DS.... que lástima.. xD
Insisto en mi pregunta:
¿Funciona en Windows Vista?

No me deja compilar, me da error main y error build, por lo que ni PI.
Eso quiere decir que no puedo poner scroll en mi proyecto?
Porque la hago mas pequeña (sin llegar a hacerla de 256) y me sigue fallando...

Perdon si lo que pregunto es algo estupido, pero he empezado hace nada.
lamateporunyogur escribió:Insisto en mi pregunta:
¿Funciona en Windows Vista?

No me deja compilar, me da error main y error build, por lo que ni PI.


Creo haber visto casos de gente con Vista que SI funcionaba. Así que no pierdas la esperanza. Yo te recomendaría hecharle un vistazo al tutorial 1 de Plata (el link está en el primer post de este hilo creo) y allí hay gente como tu con el vista que intentó instalarlo y tubo sus problemas y soluciones. Ánimo y suerte

Hyuga Neji escribió:Eso quiere decir que no puedo poner scroll en mi proyecto?
Porque la hago mas pequeña (sin llegar a hacerla de 256) y me sigue fallando...

Perdon si lo que pregunto es algo estupido, pero he empezado hace nada.


Claro que si deberias poner scroll... solo que la imagen debe de pesar demasiado o puede haber un error en tu código. Prueba a mirarte los ejemplos en palib, que hay algunos de scroll de imagenes en 2D. Suerte ;)
Gracias, era el peso de la imagen.
Hyuga Neji escribió:Gracias, era el peso de la imagen.


Lo que suponía
Hello, I have a problem.

main.c
c:/devkitPro/ej01/source/main.c:2:33: error: #include expects "FILENAME" or <FILENAME>
make[1]: *** [main.o] Error 1
make: *** [build] Error 2


Me sale al compilar tanto el código del ej01 hecho por mi, tanto como el de Plata (eliminando posibilidad de fallo ortográfico)
He instalado como dice el tuto, y la prueba de compilar el HelloWorld que trae el palibexamples SI me funciona correctamente.
¿Alguien sabe que puede ser? [mad] [mad]
Eso puede ser porque al principio del codigo no este <PA9.h> por lo menos eso me pasaba jeje.Pero con el codigo de plata no se si me pasaba...

Espro haberte sido de yuda .

Saludos
javi_ls escribió:Eso puede ser porque al principio del codigo no este <PA9.h> por lo menos eso me pasaba jeje.Pero con el codigo de plata no se si me pasaba...

Espro haberte sido de yuda .

Saludos


¡SÍ! Gracias! [plas]
Pero...¿eso hay que ponerlo siempre?
Lo que hice fue poner #include<PA9.h> en vez de #include solo.
¿Por que hay que ponerlo?¿Hay que ponerlo siempre?¿O solo para este caso en concreto?

Gracias de nuevo javi_ls!
<PA9.h> tiene que estar en alguno de los documentos que formen tu homebrew, porque lo que hace es incluir las palib, esa libreria, sin ener que meter comandos mas avanzados...(no se si me e explicadoXDD)

detodas formas me alegrode que te halla servido

Saludos [bye]
283 respuestas
1, 2, 3, 4, 5, 6