PDA

Ver la versión completa : [Tutorial] Cómo configurar el SDK de Caanoo



hardyx
01/11/2010, 02:36
A petición de algunos foreros, y como apuntes de mis experiencias, voy a contar cómo preparar de manera sencilla un entorno para programar para Caanoo en Windows. Usaremos un SDK basado en GCC, por lo cual estamos hablando de C y C++.

Por ahora no hay un instalador que venga con todo ya preparado y configurado, como los compiladores comerciales. Por eso lo explicaré de manera sencilla y montaremos un entorno bastante completo. Con esto será más fácil empezar a programar juegos y aplicaciones para vuestras consolas.


Descargar el entorno Codeblocks

Necesitamos un entorno IDE o "editor" desde el cual podremos crear proyectos, editar y usar todas las herramientas. Este editor va a ser CodeBlocks, que es muy potente y configurable, además de gratuito.

Para ello iremos a la página de Codeblocks y bajaremos la última versión para Windows. Elegimos el instalador que incluye el compilador MINGW. Esta es una versión de las herramientas de compilación GCC para Windows, para poder probar nuestros programas en el PC. La ventaja de GCC es que es compatible POSIX. Lo que quiere decir que podremos usar casi el mismo código para varios sistemas, incluidos Windows y Linux.

Codeblocks-10.05mingw-setup.exe (74 Mb) (http://prdownload.berlios.de/codeblocks/codeblocks-10.05mingw-setup.exe)

Pero todavía no lo instalaremos, porque necesitamos hacer otra cosa antes.


Instalar Codeblocks y las librerías adicionales

Para hacer más fácil la configuración, vamos a bajar un pack muy completo para Codeblocks con el SDK de Gp2x. ¿y por qué usamos este pack de GP2X? Pues porque tiene las librerías SDL para PC y plantillas de proyectos ya configuradas. Sin este pack, la configuración sería más engorrosa. Además, con este pack podremos compilar para las consolas GP2X, Wiz y Caanoo en el mismo entorno. ;)

Pack de Gp2x adaptado a codeblocks (29.4 Mb) (http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?1,0,0,0,14,2295)

Bajamos el archivo y lo colocamos en la misma carpeta que el archivo de Codeblocks 10.05 que hemos bajado antes. Antes de instalarlo hay que renombrar este último archivo a codeblocks-mingw-setup.exe, es decir quitar el número de versión. El instalador necesita este nombre.

Bien, ahora lanzamos el instalador del Pack, y primero nos instalará Codeblocks. Es recomendable elegir una ruta de instalación que no sea muy larga. Así no darán problemas los toolchains, que incluyen muchos subdirectorios. Si lo instalamos en C:\Codeblocks mucho mejor.

En las opciones del instalador, elegiremos sólo el lenguaje C++. Más adelante nos preguntará que si queremos iniciar Codeblocks, pulsamos No para que continúe la segunda parte de la instalación, en la que se configuran las librerías y el toolchain de Gp2x. Tras una barra de progreso terminará la instalación.

En este momento, si no queremos compilar para Gp2x o Wiz, sino sólo para Caanoo, podemos ir a la carpeta de Codeblocks y borrar la carpeta devkitGP2X sin problemas.

Ya sólo nos falta apuntar a las librerías SDL y otras del pack, para que podamos probar nuestros juegos y aplicaciones desde Windows. Estas librerías están en C:\Codeblocks\Mingw\bin.

Para ello, vamos a "Mi PC" > botón derecho > Propiedades > Opciones avanzadas > Variables de Entorno. En "variables de usuario" buscamos en la lista la variable PATH. Si no está, pulsamos Nueva y ponemos nombre PATH y valor C:\Codeblocks\Mingw\bin. Si ya teníamos un Path, pulsamos Modificar, y en el valor añadimos al final punto y coma ";" y el path de las dlls.

Después pulsamos Aceptar en todas las ventanas para aplicar los valores.


Instalar el toolchain de Caanoo para Windows

Necesitamos también el compilador con sus herramientas para generar código para Caanoo, lo que se llama "toolchain". El toolchain en este caso incluye también las librerías necesarias para la consola, como SDL y otras.

Toolchain de Caanoo para windows (50.8 Mb) (http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,15,478)

Este es un archivo comprimido en 7z. Necesitaréis el Winrar o el 7zip para extraerlo. Lo bajamos y los descomprimimos en una carpeta llamada GphCaanoo, dentro de la carpeta de Codeblocks. Da igual el nombre, pero yo me voy a referir por este nombre más adelante.


Configurar Codeblocks

Ahora vamos a configurar el CodeBlocks con un perfil, para poder usar el toolchain y generar ejecutables para nuestra consola. Esta parte es la más manual :rolleyes:, así que vamos a ello.

Abrimos la opción "Settings" del menú > Compiler and debugger". Elegimos en la lista "selected compiler" el GNU ARM GCC compiler, y pulsamos el botón Copy. Damos el nombre Gph Caanoo al nuevo perfil. Vamos a configurarlo sus propiedades, en la misma ventana.

Voy a enumerar los valores a introducir en cada opción. En los paths usaré C:\Codeblocks como el directorio de instalación, si lo tienes en otro tendrás que cambiar los valores.

Compiler settings > Compiler Flags
Marcar "enable all compiler warnings"
Marcar "strip all symbols from binary"

Linker Settings > Other Linker options
Hay que poner lo siguiente para que funcione el compilador (truco!! :D):
--sysroot=C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\sys-root

Search directories > Compiler
C:\CodeBlocks\gphCaanoo\include
C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\include\c++\4.2.4
C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\include\c++\4.2.4\arm-gph-linux-gnueabi
C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\sys-root\usr\include
C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\sys-root\usr\include\SDL

Search directories > Linker
C:\CodeBlocks\gphCaanoo\lib
C:\CodeBlocks\gphCaanoo\lib\gcc\arm-gph-linux-gnueabi\4.2.4

Search directories > Resource compiler
C:\CodeBlocks\gphCaanoo\include

Toolchain executables > Compiler's instalation directory
C:\CodeBlocks\gphCaanoo

Toolchain executables > Program files
arm-gph-linux-gnueabi-gcc.exe
arm-gph-linux-gnueabi-g++.exe
arm-gph-linux-gnueabi-g++.exe
arm-gph-linux-gnueabi-ar.exe
gdb.exe
windres.exe
make.exe

Toolchain executables > Additional paths
C:\CodeBlocks\gphCaanoo\libexec\gcc\arm-gph-linux-gnueabi\4.2.4
C:\CodeBlocks\gphCaanoo\arm-gph-linux-gnueabi\bin


Opciones de entorno CYGWIN

Necesitamos definir esta variable para que funcione el toolchain de Caanoo (truco!! :D). Se usa para soportar las rutas de windows con la barra "\" en vez de "/". Para ello vamos a "Mi PC" > botón derecho > Propiedades > Opciones avanzadas > Variables de Entorno. En variables de usuario pulsamos Nueva y damos el nombre: CYGWIN y valor: nodosfilewarning


Crear una plantilla de proyecto

Vamos a definir una plantilla para los proyectos de Caanoo. Para ello, iniciamos Codeblocks desde el icono del escritorio o desde el menú de Inicio. En el menú, elegimos File > Open, navegamos a la carpeta "Gp2x Template" (dentro de la carpeta de Codeblocks) y abrimos el fichero Gp2x_template.cbp.

Ahora usamos la opción del menú Project > Properties... y veremos una ventana llamada Project/tarjet options. En el cuadro Title pondremos "Caanoo_template". Marcamos la pestaña "Build targets", marcamos la opción DevkitGp2x GPL Release y pulsamos en Duplicate, le daremos el nombre "Gph Caanoo Release". En los cuadros de la derecha cambiaremos Gp2x por Caanoo.

Damos a Aceptar para cerrar la ventana, e iremos al menú de nuevo, esta vez con la opción Project > Build Options... Veremos una ventana similar a la anterior, en la lista marcaremos el elemento "Gph Caanoo Release" y en Selected compiler elegiremos "gphCaanoo", que estará al final.

Pulsar la pestaña "Linker settings", y en el cuadro Linker options quitar las siguientes opciones: -static -lmikmod -lmad -lexpat. Pulsamos el botón OK de la ventana, para aplicar los valores y cerrar.

Ahora usaremos la opción del menú File > Save project as user-template y le daremos el nombre "Caanno_template". Con esto hemos creado una plantilla reutilizable, una base que podemos usar en nuestro proyectos, ahorrando mucho tiempo.


Crear un proyecto de prueba

Ahora vamos a usar la plantilla que hemos creado para ver el compilador en acción. Esta plantilla nos crea un esqueleto de aplicación con SDL con todas las librerías y ajustes necesarios.

Para usarla, abrimos el menú File > New > From user template. En la ventana marcamos "Caanoo template" y pulsamos en Go. Elegimos una carpeta para el proyecto y le damos un nombre, por ejemplo Prueba. Ya tenemos un proyecto creado, si marcamos main.cpp en la ventana de la izquierda, podemos ver que tenemos código de ejemplo de SDL.

Para compilarlo, pulsamos en el icono azul del engranaje, o la opción Build > Build del menú. Nos mostrará en los mensajes "0 errors, 0 warnings". Ahora podemos ejecutarlo con el icono de la flecha azul, o la opción Build > Run. Veremos una ventana gráfica durante un segundo. Lo único que hace el ejemplo, es iniciar el modo gráfico y terminar. Ya es cosa nuestra añadir más cosas a esta plantilla. :D


Compilar el ejemplo para Caanoo

Para compilarlo para Caanoo, tenemos que ir a la lista "Build target", que está arriba, a la derecha de los iconos de compilar y ejecutar. Aquí elegimos "Gph Caanoo Release" y damos de nuevo a Build como antes. Ahora no podemos ejecutar, je, je. Tenemos que coger el archivo .gpe y pasarlo a la tarjeta de la consola. Tenéis que pasar el ejecutable y los ficheros de datos que use, como gráficos o música junto al ejecutable. Tened en cuenta también que la consola tiene Linux y que distingue entre mayúsculas y minúsculas en los archivos. En la consola lo tenéis que lanzar manualmente, a no ser que hagáis un archivo .ini para que salga un icono.

También puede necesitar librerías adicionales, que no suelen venir con la consola, como la libSDL_gfx.so o la libiconv.so. Estas librerías están el directorio gphCaanoo donde hemos instalado el toolchain. Pero eso lo tendréis que descubrir poco a poco.

P.D. Podéis ver información más detallada sobre la configuración de Codeblocks y las opciones a usar en los proyectos, en la guía del GPH SDK v10.08 (http://sbock.net/upload/GPH_SDK-10.08_en.pdf).

Y con esto, ya sólo queda programar.
Suerte. :brindis:

GameMaster
01/11/2010, 03:37
Funciona ya bien el OpenGLES ? O sigue capado en Windows 7/Vista ?

hardyx
01/11/2010, 10:02
Con las librerías DLL correctas tiene que funcionar GameMaster. Están en el SDK oficial de Wiz, que se configura de manera similar. Aunque, como ya vimos, Microsoft no incluye OpenGL de serie en estos sistemas.

GameMaster
01/11/2010, 10:22
Pero no era un problema al ejecutar el MingW ?

jduranmaster
01/11/2010, 10:29
gracias por el tutorial Hardyx.

saludos.

Aiken
01/11/2010, 11:41
mil gracias hardy, has facilitado mucho el proceso de empezar a programar, siempre odio tener que configurar el entorno, a mi me gusta programar no configurar, jeje.

Aiken

Jurk
01/11/2010, 11:55
Toolchain executables > Program files
arm-gph-linux-gnueabi-gcc.exe
arm-gph-linux-gnueabi-g++.exe
arm-gph-linux-gnueabi-g++.exe
arm-gph-linux-gnueabi-ar.exe
gdb.exe
windres.exe
make.exe

Estos ejecutables donde se encuentran?

hardyx
01/11/2010, 12:25
gdb.exe
windres.exe
make.exe
Estos ejecutables donde se encuentran?
Esos son los valores por defecto de la configuración, era por no dejarlos en blanco. Pero realmente no se usan para Caanoo.

< - >

Pero no era un problema al ejecutar el MingW ?
Ese problema fue resuelto en la ultima versión de MINGW. Si te instalas la última versión de Codeblocks+mingw debería funcionar.

Jurk
01/11/2010, 12:33
Esos son los valores por defecto de la configuración, era por no dejarlos en blanco. Pero realmente no se usan para Caanoo.

< - >

Ese problema fue resuelto en la ultima versión de MINGW. Si te instalas la última versión de Codeblocks+mingw debería funcionar.

entonces debo dejarlos en blanco?, o los dejo tal y como estan?

arm-elf-gdb.exe
(blanco)
make.exe

?????

hardyx
01/11/2010, 12:42
entonces debo dejarlos en blanco?, o los dejo tal y como estan?

Ponlo tal y como lo he puesto, hombre. Sobre todo los arm-gph-linux... que son los compiladores de Caanoo. Están en el "compiler instalation directory" que se indica en el cuadro de arriba.
Sino no vas a compilar nada. :D

P.D. he corregido cosillas para hacerlo más claro.

GameMaster
01/11/2010, 13:02
Esos son los valores por defecto de la configuración, era por no dejarlos en blanco. Pero realmente no se usan para Caanoo.

< - >

Ese problema fue resuelto en la ultima versión de MINGW. Si te instalas la última versión de Codeblocks+mingw debería funcionar.

Que version es ? Por cierto sabes si esta el full pack de instalación en la pagina de code blocks ya actualizado ?

(Me acabas de dar la segunda alegria del dia, esto promete :))

hardyx
01/11/2010, 13:09
El Codeblocks 10.05 es una versión nueva del 2010 y supongo que incluirá una versión más actual de MINGW. Pero eso lo tendrás que probar, yo no tengo Vista.

Jurk
01/11/2010, 13:21
Crear una plantilla de proyecto

Vamos a definir una plantilla para los proyectos de Caanoo. Para ello, iniciamos Codeblocks desde el icono del escritorio o desde el menú de Inicio. En el menú, elegimos File > Open, navegamos a la carpeta "Gp2x Template" (dentro de la carpeta de Codeblocks) y abrimos el fichero Gp2x_template.cbp.

Ahora usamos la opción del menú Project > Properties... y veremos una ventana llamada Project/tarjet options. En el cuadro Title pondremos "Caanoo_template". Marcamos la pestaña "Build targets", marcamos la opción DevkitGp2x Release y pulsamos en Duplicate, le daremos el nombre "Gph Caanoo Release". En los cuadros de la derecha cambiaremos Gp2x por Caanoo.

Damos a Aceptar para cerrar la ventana, e iremos al menú de nuevo, esta vez con la opción Project > Build Options... Veremos una ventana similar a la anterior, en la lista marcaremos el elemento "Gph Caanoo Release" y en Selected compiler elegiremos "gphCaanoo", que estará al final. Pulsamos el botón OK para aplicar las opciones y ya lo tenemos.

Ahora usaremos la opción del menú File > Save project as user-template y le daremos el nombre "Caanno_template". Con esto hemos creado una plantilla reutilizable, una base que podemos usar en nuestro proyectos, ahorrando mucho tiempo.


Hay dos opciones, LGPL y GPL... se que debria dar igual... o no?

hardyx
01/11/2010, 15:25
Hay dos opciones, LGPL y GPL... se que debria dar igual... o no?
Es verdad, elige la opción GPL. Para GP2X estas librerías son más rápidas, pero para lo que vamos a hacer es indiferente.

jduranmaster
01/11/2010, 16:07
una cosa sino he entendido mal al instalr el codeblocks "sin tocar nada mas" ya te compila para GP2X y para Wiz?

hardyx
01/11/2010, 16:27
Al instalar el codeblocks con el pack de GP2X compila para GP2X. Con un pequeño parche (http://www.gp32spain.com/foros/showthread.php?t=61359) además, puedes compilar también para Wiz.

< - >
Os dejo un script para detectar las consolas de GPH. De este forma con un solo lanzador, podemos crear programas multiconsola o detectar el modelo de consola. Para ello copiad el script en un fichero de texto llamado por ejemplo lanzador.gpe. Ojo, esto no muestra nada por pantalla, sino por la salida estándar.



#!/bin/sh
if [ -e /dev/accel ]; then
echo "Tienes una Caanoo"
else
if [ -e /dev/grp3d ]; then
echo "Tienes una Wiz"
else
if [ -e /dev/touchscreen/wm97xx ]; then
echo "Tienes una GP2X F200"
else
echo "Tienes una GP2X F100"
fi
fi
fi
Explicación:

/dev/accel: sensor de movimiento de caanoo
/grp3d: aceleradora 3d de la wiz y caanoo
/dev/touchscreen/wm97xx: pantalla táctil de la f200

jduranmaster
01/11/2010, 17:20
modificando solo esos dos ficheros ya hace que compile para Wiz? recuerod que cuando instale el codeblocks para compilar en Wiz habia que tocar un monton de cosas, sunpongo que seran cosas de la desitribucion.

gracias.

PD: lo del ejecutable multiconsola es muy interesante (supongo que mas menos esa es la forma en la que notaz hizo su multiejecutable de picodrive 1.80)

< - >
al hacer la modificacion para que el codeblocks conpile para Wiz como hago para crear proyectos distintos. es decir como diferencio si quiero compilar para GP2x o bien para Wiz?

hardyx
01/11/2010, 17:36
al hacer la modificacion para que el codeblocks conpile para Wiz como hago para crear proyectos distintos. es decir como diferencio si quiero compilar para GP2x o bien para Wiz?
Crea un nuevo target en Project > Properties > Build targets, puedes hacer una copia del de Gp2x, pero que compile en dinámico. Además tienes que tener copias de los ficheros modificados y sin modificar. Yo tengo dos .bat para cambiarlos cada vez. También podrías duplicar el directorio DevkitGp2x con los cambios para caanoo, y apuntar al nuevo perfil.

Este es el wizlibs.bat, el gp2xlibs.bat es similar.

@echo off
echo Activando librerias Wiz...
C:
cd \CodeBlocks\devkitGp2x\sysroot\usr\lib
copy _libm.so.wiz libm.so
copy _libpthread.so.wiz libpthread.so
cd \CodeBlocks\devkitGp2x
echo wiz > gplibs.txt
pause

jduranmaster
01/11/2010, 17:38
leyendo el hilo para que compile en la Wiz veo que hay gente que nunca le funciono de primeraws , a ti si?

hardyx
01/11/2010, 17:48
No es infalible, pero compilando en dinámico y poniendo las librerías necesarias de Wiz suele funcionar. Con el termula o un terminal serie se pueden ver los mensajes. La otra opción es instalar el SDK de Wiz y crear un nuevo perfil.

jduranmaster
01/11/2010, 17:53
con el sdk de wiz te refieres al toolchain para Windows de toda la vida no? quizas ahora que lo tengo rulando la mejor opcion es instalar el toolchain de caanoo y crear un nuevo perfil para el sobre el que ya tengo para Wiz.

hardyx
01/11/2010, 17:58
En tu caso es mejor hacer lo que dices. La solución que he propuesto es para el que no tiene ningún SDK instalado.
Con SDK me refiero al oficial, aunque también hay dos no oficiales: este (http://www.gp32spain.com/foros/downloads.php?do=file&id=2548) y este (http://www.gp32spain.com/foros/downloads.php?do=file&id=2681). No se si te refieres a esos.

GameMaster
01/11/2010, 22:28
He instalado la nueva version.
La ultima vez que toque mi proyecto GL, fue en un XP y compilaba sin problemas, ahora lo probé en Windows 7 a ver si ya chutaba y no tuve suerte.
Bueno, pues no compila en host (en target si), me da error de linkado en las funciones GL, glColor4f y glFlush (), lo que me molesta es que la gl.h esta en la carpeta include de CodeBlocks, incluso he linkado la glut32.lib que baje de internet y el problema sigue.
No se si le falta algo que tenia antes en la instalacion de codeblocks o si sigue siendo por el Windows 7.
Como nota, si pude compilar el ejemplo de GPH del poligono amarillo y funciona bien, con lo cual ya voy imaginando que podré seguir con el proyecto que empecé para el concurso xDDDDD


undefined reference to `_imp__glColor4f'|

http://www.gp32spain.com/foros/attachment.php?attachmentid=22196&stc=1&d=1288646778

hardyx
01/11/2010, 22:39
Creo que te falta incluir la librería opengl32.lib, ya que las funciones que te dan error son de esta otra librería. Aún así, si te va sin problemas con XP, usa el Virtualbox y a volar.

GameMaster
01/11/2010, 22:51
No puedo con el VirtualBox, tenia problemas para instalar las drivers de la tarjeta para el opengl.
Creo que es esa la solución, la de que me equivoque de lib xDDD
Grácias.

hardyx
01/11/2010, 22:57
opengl <> glut. GLUT (gl utility toolkit) es una librería adicional sobre opengl.
Bueno, ahora podrás continuar. :)

Jurk
01/11/2010, 23:15
hardyx...
intento compilar el ejemplo de la plantilla de GP2x para win, y me funciona sin problemas...
pero para caanoo no me compila, ya que me da un error, que segun parece esta relacionado con libmikmod...




=== prueba caanoo, Gph Caanoo Release ===
ld cannot find -lmikmod
=== Build finished: 1 errors, 0 warnings ===

GameMaster
01/11/2010, 23:24
opengl <> glut. GLUT (gl utility toolkit) es una librería adicional sobre opengl.
Bueno, ahora podrás continuar. :)

Me las veo negras siempre para localizar esta lib en internet...
Descargue la lib de una pagina pero me dice format unrecognized al linkar, despues probe dinamicamente con la opengl32.dll, que esta si es fácil de encontrar, y se abre la ventana y sale automaticamente al ejecutar :(

hardyx
02/11/2010, 08:10
pero para caanoo no me compila, ya que me da un error, que segun parece esta relacionado con libmikmod...
Creo recordar que dijo SplinterGU que esta librería no está en el toolchain, y por ahora sólo hay soporte de ogg en la SDL_mixer. Habría que mirar si alguien la ha usado.

Jurk
02/11/2010, 08:34
ya, pero lo curioso es que en realidad ni la utilizo porque solo pide de sdl.h, y no sdl_mixer



///////////////////////////////////////////////////////////////////////////////
/// @file main.cpp
/// @brief Template main file for an empty SDL shell on GP2X based off
/// Lazy Foo.
/// @author Steven Yau
/// @date 16 Aug 2007
///////////////////////////////////////////////////////////////////////////////

#include <SDl/SDL.h>



const int SCREEN_WIDTH = 320;
const int SCREEN_HEIGHT = 240;

int main( int argc, char* args[] )
{
// Initialize all SDL subsystems
if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
{
return 1;
}

// Create the screen surface
SDL_Surface * screen =
SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, 16, SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF );

// Do PC specific stuff
#ifdef PLATFORM_PC
// Set the window caption
SDL_WM_SetCaption( "Hello World", NULL );
#endif // PLATFORM_PC

// Update the screen
if( SDL_Flip( screen ) == -1 )
{
return 1;
}

SDL_Quit();

// Do GP2X specific stuff
#ifdef PLATFORM_GP2X
// Return to the menu
chdir("/usr/gp2x");
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
#endif // PLATFORM_GP2X

return 0;
}

cexher
02/11/2010, 14:53
Hola a todos.
Soy bastante novato en esto así que no seais muy duros con las respuestas;)
¿Existe algún emulador o programa, o hay alguna manera que permita ejecutar un programa o juego de la caanoo (o cualquier otra) en el PC?
Supongo que sí lo habrá, ya que no creo que se tenga que andar copiando a la consola cada vez que se quiera probar lo que se ha compilado, o al menos es para lo que yo lo quiero.
Si hay algún hilo que hable de esto, por favor ponedme el link, ya que yo no he visto nada...

GameMaster
02/11/2010, 15:21
Tienes la maquina del tiempo de regreso al futuro ?

hardyx
02/11/2010, 16:18
No hay ningún emulador de Caanoo para PC. Para programar, lo que se hace es usar la librería SDL que es multiplataforma, y se ejecuta igual que en la consola. Es mucho mejor que un emulador. Tanto si usas C, C++, Fenix o Bennu, siguiendo unas pocas pautas vas a ver en el PC lo mismo que en la consola.

< - >

ya, pero lo curioso es que en realidad ni la utilizo porque solo pide de sdl.h, y no sdl_mixer Abre las opciones del proyecto en Project > build options, marca el perfil "Gph Caanoo Release" y en linker settings > other linker options quita lo siguiente: -lmikmod -lmad. Quita también la opcion -static si la tienes.

Jurk
02/11/2010, 23:41
No hay ningún emulador de Caanoo para PC. Para programar, lo que se hace es usar la librería SDL que es multiplataforma, y se ejecuta igual que en la consola. Es mucho mejor que un emulador. Tanto si usas C, C++, Fenix o Bennu, siguiendo unas pocas pautas vas a ver en el PC lo mismo que en la consola.

< - >
Abre las opciones del proyecto en Project > build options, marca el perfil "Gph Caanoo Release" y en linker settings > other linker options quita lo siguiente: -lmikmod -lmad. Quita también la opcion -static si la tienes.

infinitas gracias!

tambien apunto para el que quiera hacer algo habria que quitar el -lexpat ... (o como se llame)

< - >
bueno, en menos de 2 horas he portado NeoPop a la Caanoo... pero todavia no lo he probado, ni tiene selector ni nada de nada....

ademas seguro que el control mediante el analogico me da dolores de cabeza...

Hardyx, tu que has hecho el port del !reader... me puedes dar algo de info, o alguna libreria ya preparada?

hardyx
02/11/2010, 23:55
Toma ya!! Por fin alguien se ha leido el tutorial. :D
Sobre el analógico, hay algunos posts en GP32X, pero te hago un resumen:

- Los códigos de los botones son diferentes a los de GP2X y Wiz
- El analógico no son botones, sino que son 2 ejes X e Y que hay que leer.
- Lo que se hace es detectar el botón cuando se mueve un cuarto de eje.

Estos son los códigos de los botones de Caanoo:


VK_FA = 0
VK_FX = 1
VK_FB = 2
VK_FY = 3
VK_FL = 4
VK_FR = 5
VK_START = 6 // home/menu
VK_HELP1 = 8 // caanoo only
VK_SELECT = 9 // help2
Y este el código para convertir ejes a botones:


if(SDL_JoystickGetAxis(joy,1) < -16384)
boton = VK_UP;
else if(SDL_JoystickGetAxis(joy,1) > 16384)
boton = VK_DOWN;
else if(SDL_JoystickGetAxis(joy,0) < -16384)
boton = VK_LEFT;
else if(SDL_JoystickGetAxis(joy,0) > 16384)
boton = VK_RIGHT;

Jurk
03/11/2010, 00:08
mmmm... el ejecutable me va, pero no tan bien como quisiera, se me queda bloqueado con la pantalla en blanco, aunque la version de pc me va de lujo...

tengo que mirar esto...

< - >
como da errores graficos, me parece que puede ser cosa de la profundidad de color...

adjunto el ejecutable de pc para que veais que funciona (ni yo me lo creo!!!) :brindis:

Ah!, y sin makefiles ni cosas de nenas, agregando los archivos, renombrandolos y tocando el codigo como debe ser...


ahora, a escarbar en el codigo para hacerlo funcionar como debe

hardyx
03/11/2010, 00:30
Muchas veces en el makefile hay defines que tienes que incluir en el proyecto. También tienes que desactivar el cambio de velocidad de cpu (si lo usa). En Caanoo es distinto y puede fallar.

Jurk
03/11/2010, 00:33
Muchas veces en el makefile hay defines que tienes que incluir en el proyecto. También tienes que desactivar el cambio de velocidad de cpu (si lo usa). En Caanoo es distinto y puede fallar.

como el de timersub()... pero un poco de google, y lo he solucionado en na de na creando un nuevo archivo .h con el codigo...

ademas, la version windows ya es funcional... por lo que las configuraciones del makefile no son, ya que he renombrado el archivo "config.h.in" a "config.h" y lo he incluido en el proyecto...

por cierto, si consigo rular esto sique me desespere... quiza porte algun emu mas que todavia no exista para caanoo. Y toda la ayuda posible sera bien recibida

cexher
03/11/2010, 07:42
Tienes la maquina del tiempo de regreso al futuro ?

No es la de regreso al futuro pero tengo una en la muñeca, aunque en mi casa la llamamos reloj...


Para programar, lo que se hace es usar la librería SDL que es multiplataforma, y se ejecuta igual que en la consola. Es mucho mejor que un emulador. Tanto si usas C, C++, Fenix o Bennu, siguiendo unas pocas pautas vas a ver en el PC lo mismo que en la consola.

Gracias por la respuesta. Precisamente a esto me refería...
Me he explicado mal. No debí poner emulador, ya que obviamente no existe. Solo quería saber la forma de ver en mi PC el funcionamiento de un programa creado para la consola, antes de pasarlo.

Jurk
05/11/2010, 13:02
Compilado gnuRobbo... y funcionando en la CAANOO

ahora solo me falta ajustar los controles... XD

soy muy feliz, en serio!

Por otra parte, el port de Neopop ahora mismo esta en el limbo... hasta que lo coja de nuevo una vez me empolle todo sdl

GameMaster
07/11/2010, 14:22
"Necesitamos definir esta variable para que funcione el toolchain de Caanoo (truco!! :D). Se usa para soportar las rutas de windows con la barra "\" en vez de "/". Para ello vamos a "Mi PC" > botón derecho > Propiedades > Opciones avanzadas > Variables de Entorno. En variables de usuario pulsamos Nueva y damos el nombre: CYGWIN y valor: nodosfilewarning"


Perdona hardy pero no entiendo esto, ya que no te impide que tengas que instalar el cygwin en Windows.

Me explico, con el SDK para Wiz me parecio raro que no tuviera que instalarme el cygwin (ya lo tuve instalado antes de petar mi pc cuando estaba probando cosas con el sdk de Dingoo), o sea, en la carpeta del toolchain para wiz estaba la cygwin1.dll y sus dependencias, con lo cual no era necesario descargarte el cygwin.

Ahora me he puesto a instalar el de Caanoo, y si te fijas en la noticia bot de la release, han puesto unas screenshots de configuración, aparte de que te dicen que necesitas el cygwin (lo que es lógico) y que si ya lo tienes necesitas un update.

He Copiado la cygwin1.dll del toolchain del sdk de wiz para el de caanoo, y efectivamente daba un error de dependencias que dejaba claro que ahora seria necesario un cygwin mas reciente.

Lo que me joroba es tener que instalarme de nuevo el cygwin, ya que es un setup de descarga por internet, donde hay mogollon de ficheros y encima tener que editar el path, con lo sencillo y limpio que era tener las dll del cygwin en la carpeta bin del toolchain, tal como venia antes...

hardyx
08/11/2010, 00:18
GameMaster, no necesitas instalar el cygwin si lo haces como indico. Porque el instalador Codeblocks_mingw, incluye MINGW el cual es una versión reducida de cygwin. Y el truco que indico es porque el toolchain tal y como viene sólo acepta barras "/" de Linux.

Como puedes ver, en mi post no indico nada de instalar Cygwin, porque no es necesario. Se puede hacer también así, hay muchos caminos, pero es mejor ir a lo fácil.

GameMaster
08/11/2010, 00:40
Lo probé pero seguia pidiendo la cygwin1.dll (la pide el arm-gph-linux-gnueabi-c++.exe), al final lo instale, puse el path de cygwin\bin en las variables globales y seguia sin localizarlo, al final copie 2 o 3 dlls de cygwin a la carpeta del toolchain (tal como estaba en el SDK de wiz) y resolvi el problema.

Otra cosa, puse las rutas de las imagenes del anuncio del SDK (noticia bot), pero tuve mogollon de problemas y sigo teniendolos, como tener que copiar 'crti.o' para la carpeta del src para que lo reconociera, el problema actual es que no me localiza la 'libc.so.6' por mas que ponga las rutas y la lib en todas partes...
Splinter me ha comentado que parece que el SDK esta mal, y que las rutas que estan dentro de los .la, son las que utilizan los de GPH y el instalador de Windows no las cambia....
Por otra parte el pdf de instalacion que acompaña el SDK sigue siendo de la version antigua Wiz...

hardyx
08/11/2010, 19:42
GameMaster, no es recomendable que mezcles SDKs ni versiones de Cygwin porque te van a dar problemas. Además las DLLs de Cygwin adaptadas están a lado de los ejecutables del toolchain de Caanoo (el del post).

El SDK que ha sacado GPH con el DGE es diferente a éste. Como dicen los fabricantes: "no doy soporte a productos de terceros" :D

Si sigues todas las indicaciones de configuración del post, te va a encontrar las DLLs, porque le estás indicando donde están.Te pongo una imagen para que veas que trae todas las librerías preparadas:

http://i53.tinypic.com/29dv3ah.jpg

GameMaster
09/11/2010, 17:03
Ya veo, pero yo me instalé el de GPH.
Mañana a ver si lo miro de nuevo, me gustaria poner el oficial, pero vamos, si no consigo ponerlo a funcionar, me instalo el tuyo.
Grácias.

< - >
Buenas, he instalado tu SDK y he configurado codeblocks con todos tus pasos/rutas.

Tengo problemas, y una corrección del tutorial:

1 - Donde pones:

Toolchain executables > Compiler's instalation directory
C:\CodeBlocks\gphCaanoo

Deberia poner:

Toolchain executables > Compiler's instalation directory
C:\CodeBlocks\gphCaanoo\gcc-4.2.4-glibc-2.7-eabi\bin

Ya que es donde estan los ejecutables, y en la que ponias no los encuentra porque no estan :)


Sobre mi problema, tengo problema al compilar, te pongo el output a ver si puedes ayudarme ya que no entiendo lo que puede ser, por otra parte, lo unico que cambia de tu tutorial es que tengo las cosas en Program Files, por ejemplo:

C:\Program Files\CodeBlocks\gphCaanoo ....


El error es el siguiente:

Execution of 'arm-gph-linux-gnueabi-g++.exe -shared -Wl,--dll -L"C:\Program Files\CodeBlocks\gphCaanoo\lib" -L"C:\Program Files\CodeBlocks\gphCaanoo\lib\gcc\arm-gph-linux-gnueabi\4.2.4" -o mi_modulo.so -s -s' in 'E:\WizTest' failed.
Nothing to be done.

hardyx
09/11/2010, 23:15
La ruta de los ejecutables es la correcta, te remito de nuevo a la imagen que puse. Además, el diálogo te indica que bajo ese directorio debe haber un \bin, un \lib, etc.

Es raro el error que te da, ya que te dice al final que lo está ejecutando desde e:\Wiztest. Revisa las opciones de Search directories y la de --sysroot.

GameMaster
10/11/2010, 00:54
Desde e:\Wiztest es donde tengo el src a compilar.

Sobre la ruta, tu tampoco tienes el toolchain en la ruta que pones, o sea, tu pones esta ruta para los binarios:

C:\CodeBlocks\gphCaanoo

pero en la foto tienes esta:

C:\Aplicas\CodeBlocks\gphCaanoo\bin

hardyx
10/11/2010, 13:31
Da igual donde lo tengas, el caso es que pongas la ruta base del toolchain y no la carpeta bin. He puesto C:\Codeblocks en el artículo para que sea más claro, pero tienes que poner todas las rutas apuntando a donde lo instales.

P.D. La línea que has puesto del error, supongo que le has recortado cosas. Porque faltan parámetros al compilador como --sysroot y los path de includes.

GameMaster
10/11/2010, 21:11
Es que me apuesto que tengo todas la rutas y todo bien configurado (sólo cambia 'Program Files'), y lo de la carpeta a secas sin bin, me parece sobretodo raro, porque ya antes tenia configurado el de Wiz y el host, y ambas apuntaban a la carpeta bin del respectivo toolchain.
Es más sin no pongo la carpeta bin, codeblcoks sencillamente me dice que no encuentra los binarios del toolchain (lo que es logico, ya que estan dentro de bin).
Lo voy a revisar de nuevo llegando a casa y te pongo las fotos para que veas.
Grácias.

< - >
Lo he revisado todo mil veces, tienes razón con la carpeta del toochain, para compilar para windows, tambien no ponia la carpeta bin en la ruta, sólo al elegir los compiladores, es cuando entramos dentro de la carpeta bin, o sea, la ruta que tengo para windows (host) es esta:
C:\Program Files\CodeBlocks\MinGW (compilando para windows todo me funciona)

Te pongo el error al compilar para Caanoo, este error sale poniendo todo tal cual lo pones en el tutorial, en el anterior error la diferencia era que la ruta apuntaba directamente a los binarios, o sea,
ahora tengo C:\Program Files\CodeBlocks\gphCaanoo y con el error anterior ponia
C:\Program Files\CodeBlocks\gphCaanoo\gcc-4.2.4-glibc-2.7-eabi\bin


"WizTest - target" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
"WizTest - target" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.

hardyx
10/11/2010, 23:59
Lo que te dice ahora es que en el proyecto, el perfil "target" tiene un compilador asignado que ya no existe, o no es correcto. Tienes abrir el menú Proyect > build options, marcar el perfil "target" y en selected compiler marcar gphCaanoo. O tienes varios o no es el correcto.

GameMaster
11/11/2010, 00:05
Eso ya lo habia mirado, en realidad el compilador que tengo es el GNU ARM GCC Compiler, era el que tenia para wiz, pero substitui todo por el de Caanoo (aunque no haya cambiado el nombre de la lista, todas las rutas son del de Caanoo, o sea, todas las que pones)

romeroca
11/11/2010, 15:46
MUCHAS GRACIAS HARDYX. :rever:

He seguido todos los pasos de tu tutorial para instalar el SDK y funciona perfectamente.

Sólo dos apuntes:

· Si pudieras, añade al post lo de quitar las referencias a las librerias que no hay que linkar, por ejemplo la milkmod.

· Añade el comentario de Jurk de quitar -lexpat.

Lo dicho, aportazo.

GameMaster
11/11/2010, 16:30
Que so utilizais ??

kennyspirit
11/11/2010, 16:33
no, somos alérgicos a la lac tosa

romeroca
11/11/2010, 18:06
Que so utilizais ??

Probado en el "maravilloso" Windows Vista.

Eso sí, tuve dos problemillas:

· Tuve que desinstalar la versión anterior del pack de GP2X SDK que tenía. :mad:

· Primero instalé todo, luego definí las variables de entorno y SOLO entonces pude compilar correctamente. De hecho se me quejaba al compilar de que me faltaba la variable CYGWIN. :loco:

hardyx
11/11/2010, 21:42
He seguido todos los pasos de tu tutorial para instalar el SDK y funciona perfectamente.

Gracias por los comentarios, me alegro de que te funcione. Ya he añadido lo de las librerías al tutorial.

GameMaster, creo que tienes varias versiones mezcladas de SDKs o de cygwin. Incluso puede que tengas algo mal en tu sistema. Pruebalo en otro SO o en una máquina virtual.

GameMaster
11/11/2010, 22:29
A mi tambien me gustaria decir lo mismo, y eso no significa que tu tutorial no sea excelente.
Voy a limpiar los sdk's oficiales, las plantillas y a empezar de nuevo...

romeroca
12/11/2010, 17:20
Voy a limpiar los sdk's oficiales, las plantillas y a empezar de nuevo...

Pues posiblemente ese sea el problema, al menos en mi caso tuve que hacerlo porque si no, no funcionaba. :lamer:

Y si no "format C:" que es mano de santo :D (es broma :brindis: )

jduranmaster
13/11/2010, 22:11
esta actualizado el tutorial?

hardyx
14/11/2010, 01:00
Le he añadido lo que se ha ido sugiriendo, si es eso a lo que te refieres.

GameMaster
14/11/2010, 01:04
Oye hardyx, sabes algo del primer toolchain para caanoo que salio ?
Tengo un problema en linux, el eabi es version 4, pero el primer que salio era version 0, y intento compilar algo en linux para la caanoo, pero como las libs que utilizo se compilaron con la version 0 pues no puedo hacerlo, ya que el toolchain eabi es version 4. Y queria pillarme el eabi version 0 para poder compilarlo, que por ahora genero solo el objeto.

hardyx
14/11/2010, 01:14
La versión 0 es OEABI (old EABI), que no es compatible con Caanoo, sino con Wiz. No puedes mezclar librerías EABI con OEABI. Utilizan una interfaz binaria en los objetos que no es compatible. Recuerda, version 0 = Wiz, version 4 = Caanoo.

GameMaster
14/11/2010, 01:20
Pues lo curioso es que estas libs de que te hablo, son los modulos de Bennu para Caanoo (y no de wiz), que funciona en la consola, estoy portando un modulo para Bennu que depende de los otros. Splinter me dijo que lo descargo en gp32spain pero no sabe precisar, y yo ya probe los 2 que estan por aqui y son version 4 (eabi). Sabes
donde pillarme el otro ? Esto pensando que no sea el toolchain de wiz claro, pero algo que salio despues como siendo de Caanoo.


Edito: Mil gracias hardyx, me has abierto los ojos de sueño que tengo, no me lo creo, realmente estaba usando las libs del port de wiz y juraria por todos los santos que eran de caanoo, y varios días peleandome...

Ya tengo el port y funcionando de maravilla, muchas gracias, lo voy a publicar ya :)

faraday
04/03/2011, 13:49
Me estoy volviendo un poco loco....

He seguido al pie de la laetra el tutorial, pero sigo teniendo porblemas para compilar.

Con el "PC Debug" me da el siguiente error:

"GP2X_Template - PC Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.

Y si le doy al "Run" no hace nada..

Por otra parte, solo me deja compilar el *.gpe para gph caanoo, no me deja darle al "Run", me pasa lo mismo que en el "PC Degbug"

Otra cosa, alguien puede dejar algún código tipo Hello World para probar??

uhfff, espero hacerlo funcionar pronto... :S

saboteur
04/03/2011, 16:16
Yo tampoco he conseguido que funcione el de Windows y estoy usando el de Linux que no ningún problema. A ver si alguien saca una versión donde vaya todo en su sitio, porque si no, no lo entiendo. :confused:

hardyx
04/03/2011, 21:19
Con el "PC Debug" me da el siguiente error:

"GP2X_Template - PC Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.

Revisa la configuración del perfil en Built options, selecciona "PC Debug" y mira que en "selected compiler" aparezca GNU GCC Compiler. Mira también en la opción del menu Settings > compiler and debugger, que estén los directorios bien en la pestaña search directories y en toolchain executables. Te tiene que funcionar si lo has instalado bien, porque es el entorno MINGW que trae Codeblocks.



Por otra parte, solo me deja compilar el *.gpe para gph caanoo, no me deja darle al "Run", me pasa lo mismo que en el "PC Degbug"

Si compilas para Caanoo (ARM) no puedes ejecutarlo en el PC (Intel), sólo en la consola.



Otra cosa, alguien puede dejar algún código tipo Hello World para probar??

La plantilla que indico te crea un esqueleto de programa que usa la SDL, tienes el codigo en este post (http://www.gp32spain.com/foros/showpost.php?p=1159179&postcount=30) de Jurk. Aquí (http://wiki.gp2x.org/wiki/Writing_an_SDL_Hello_World) tienes otro ejemplo.


A ver si alguien saca una versión donde vaya todo en su sitio, porque si no, no lo entiendo. :confused:
Juraría que GPH ya sacó un SDK oficial para Caanoo (diferente al que pongo aquí), aunque no trae el Codeblocks, pero trae un documento oficial para configurarlo.

snork3ls
05/03/2011, 07:30
mmmmh. No es por tocar los Hüeven pero yo lo instale (solo compila para CAANOO) de una forma bastante mas facilita.

Si eso, ya lo subire (es que ahora no estoy con mi ordenador y no suelo tener intenerrrt y como no me dejan o dejaban poner afotos....)

faraday
07/03/2011, 21:33
Muchas gracias hardyx, tema solucionado.

pagantipaco
12/03/2011, 22:59
Hola, soy completamente nuevo en esto. Muchas gracias por el tutorial, lo he seguido paso a paso y sólo he encontrado un problema que es de la instalación: cuando le dices que instale CodeBlocks directamente en el C:\CodeBlocks luego él configura el compilador en C:\Programas\CodeBlocks, sólo hay que editar la referencia.

Consigo compilar para PC Debug y Caanoo pero al probar el ejecutable de PC se cierra sin hacer nada de nada y log dice:


Checking for existence: D:\Caanoo\Prueba\built\Prueba.exe
Executing: "C:\CodeBlocks/cb_console_runner.exe" "D:\Caanoo\Prueba\built\Prueba.exe" (in D:\Caanoo\Prueba\built\)
Process terminated with status 0 (0 minutes, 7 seconds)

¿Alguna idea de qué me falta para poder ver el "hello world"?

hardyx
13/03/2011, 11:49
Bienvenido pagantipaco,
Codeblocks lo puedes instalar donde quieras, pero es recomendable hacerlo en una ruta corta para evitar problemas. Por eso he puesto C:\Codeblocks en el tutorial.

Sobre el "hello world", lo que hace el programa de ejemplo de la plantilla es iniciar el modo gráfico y salir. Nada más. Si quieres dibujar algo o esperar una tecla tendrías que usar las funciones de SDL. Pero ya lo tienes funcionando.

pagantipaco
15/03/2011, 12:15
¡Ah! Vale, es que pensé que pintaba en pantalla "hello world!" o algo así... vale, no me da errores por lo tanto está funcionando ;-)

Lo tengo instalado tal y como pusiste, calcadito, sólo que la instalación pone lo del "program files", vamos, que se equivoca, pero es fácil ver dónde está el error, sobretodo porque lo encontré rápido ;-)

Muchas gracias por la ayuda.

Baalberith
28/05/2011, 06:18
Hola hardyx... para empezar me gustaria agradecerte por el gran aporte. Pienso comprarme un caanoo dentro de poco y ya quiero empezar a programar pero no tenia ni idea de como configurar todo esto. Me surgio un problema... como yo no tengo caanoo aun necesito ver lo que programo en la pc y al compilar con Build target: pc release me aparece un error. cuando compilo con GPH Caanoo release compila a la perfeccion gracias a este tutorial pero no puedo verlo. Podrias decirme brevemente como cofigurar para poder ver en la pc lo que hago?
desde ya mucgisimas gracias.

GameMaster
28/05/2011, 09:42
Como hardyx esta durmiendo te respondo yo. Tienes que configurar todo el entorno como viene en el pdf, es porque te esta faltando algun include o ruta al configurar el host...
Por cierto, bienvenido a esta nuestra pequeña comunidad.

hardyx
28/05/2011, 11:56
Hola Baalberith, cuando compilas para caanoo no puedes ver el resultado en el pc, sólo en la consola. Para verlo en el pc hay otro perfil Debug o Release que usa el GCC para Windows. De esa forma verás lo mismo que se vería en la consola.

Baalberith
30/05/2011, 06:50
si ya vi que el toolchain del PC release esta configurado pero el search directory esta totalmente en blanco. Como lo relleno? igual que con el ghp Caanoo release?
Gracias

hardyx
30/05/2011, 09:43
Si has instalado la versión de Codeblocks que incluye MINGW, ya lo tienes configurado y deberían aparecerte los directorios. Sino, mira si tienes un directorio MINGW dentro de la carpeta de Codeblocks y ponlo en Toolchain executables > Compiler's instalation directory.

Baalberith
30/05/2011, 23:45
jaja de repente me empezo a funcionar... se ve que tenia que reiniciar o algo asi... muchas gracias hardyx

scali
23/10/2011, 15:06
Yo no encuentro esta carpeta:

Crear una plantilla de proyecto

Vamos a definir una plantilla para los proyectos de Caanoo. Para ello, iniciamos Codeblocks desde el icono del escritorio o desde el menú de Inicio. En el menú, elegimos File > Open, navegamos a la carpeta "Gp2x Template" (dentro de la carpeta de Codeblocks) y abrimos el fichero Gp2x_template.cbp.

Realice los paso como manda el tuto pero no se

hardyx
23/10/2011, 22:04
Esa carpeta está dentro de la carpeta donde hayas instalado Codeblocks, en el caso del tutorial en C:\Codeblocks. Si no te aparece puede ser porque no has instalado el pack de Gp2x para Codeblocks.

scali
24/10/2011, 17:40
Ya lo conseguí gracias