Programación y desarrollo de proyectos en LibXenon

Para consultas y debates sobre el contenido de este artículo, visita el Hilo oficial.



Éste artículo pretende ser una introducción a la programación en el entorno de desarrollo para xbox360 conocido como LibXenon; éste es de código totalmente libre y las aplicaciones desarrolladas con el mismo son 100% legales y de libre distribución.

Para seguir éste "curso" se requerirán conocimientos mínimos de programación C y C++, para ello tenéis disponible éste hilo:

Tutorial programando en C

Contenido

Prerrequisitos:

El único prerrequisito es tener instalado alguna distribución de Ubuntu (yo lo he hecho sobre Ubuntu 10.10) o bien basada en Debian, nos vale cualquier instalación nativa o en una máquina virtual.

Instalación de la Toolchain y librerías:

Existen dos métodos para realizar la instalación de la Toolchain y de todas las librerías necesarias para trabajar con LibXenon adecuadamente, uno semi-automático, a través de AutoXenon, o bien el método manual.

La ventaja de hacerlo todo con AutoXenon es que es más rápido y mucho más amigable realizar todo el proceso, pero podrías perder el control de lo que tienes instalado y dónde, al no ver prácticamente nada del proceso. Además sólo es compatible con escritorios gnome y tiene problemas en algunas versiones de Ubuntu.

Al realizar la instalación manual puedes controlar en todo momento lo que se está haciendo y cómo se está haciendo, además funciona perfectamente en todas las distribuciones basadas en Debian, pero en contrapartida es un proceso mucho más lento y engorroso.

Instalación utilizando AutoXenon:

AutoXenon es una aplicación hecha por mí para facilitar la instalación de LibXenon en máquinas con Ubuntu (en principio vale cualquier distro Debian o basada en él y con un escritorio gnome debería de valer). Ésta aplicación está hecha en Java con el ánimo de portar la instalación también a Windows, pero de momento está en fase beta y es funcional al 100% sólo hasta la versión 10.10, de ahí en adelante da problemas con la instalación de algunas librerías, aunque se puede instalar toda la toolchain y las librerías iniciales. Estoy trabajando en un script para darle funcionalidad completa en todas las versiones.

Aprovecho también para poner mi cuenta de git, por si queréis ver el source (admito sugerencias, jeje):

Chemone

Descarga de autoXenon 0.3_c beta:

Descarga

Cambios:

        -Añadida la instalacion de ZLX, xtaf, ext2fs, ntfs, fat, SDL_ttf, SDL_Mixer y SDL_Image.


Para utilizarla debemos de tener instalado java, yo personalmente recomiendo el open-jdk-6, para ello, ejecutamos en una terminal:

sudo apt-get install openjdk-6-jre

Luego en las propiedades del archivo .jar, debemos de darle permiso para ejecutarse.

Lo ejecutamos con click derecho y "Ejecutar con openjdk"

Se abrirá una ventana con un menú de pestañas, por defecto se abre la pestaña para instalar la toolchain y las primeras librerías básicas, si es una instalación nueva DEBEMOS instalar primero la toolchain y luego las librerías.

En la pestaña de la toolchain tenemos un botón "Instalar toolchain" y un combobox para seleccionar la toolchain a instalar, ahora mismo seguramente dé igual cualquiera de las dos (aunque recomiendo instalar por defecto la de Free60, que es la "oficial"), pero a veces, los desarrolladores hacen modificaciones en la toolchain, necesarias para compilar librerías nuevas o emuladores nuevos, una vez seleccionada la toolchain, pulsamos el botón y se abrirá un terminal pidiendo la contraseña de administrador, para instalar los paquetes necesarios, una vez acabe ésta terminal (no suele tardar mucho),seguramente se abrirá otra ventana (si no se abre no pasa nada) donde nos pedirá nuestro nombre de usuario normal, poned el usuario donde trabajéis normalmente (debéis estar logeados con ése usuario, de lo contrario, lo más probable es que no os deje instalar), no pongáis root u otro usuario especial, ya que el usuario que pongáis aquí será el que tenga acceso a la instalación.

Si es una instalación nueva, ya podéis dejar que haga el resto del trabajo (Si usáis distribuciones de Ubuntu superiores os pedirá más veces la contraseña de administrador, pero no es mucho el tiempo que tendréis que estar de más...), hasta que acabe de instalar la toolchain. Si es una actualización os pedirá confirmación desde una terminal para borrar un par de carpetas, y luego ya lo podéis dejar. El proceso tarda de 2 a 3 horas, según el pc que tengáis.

Una vez que haya acabado, deberemos abrir el fichero .bashrc para editarlo, tanto en el usuario root como en el que usemos normalmente, para ello yo he usado el nano:

nano /root/.bashrc

y añadimos lo siguiente:

export DEVKITXENON="/usr/local/xenon"
export PATH="$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin"

Repetiremos lo mismo con nuestro usuario normal:

nano /home/nombredeususario/.bashrc

Y también las añadiremos al fichero .profile, para que NetBeans no de problemas después:

nano /root/.profile
nano /home/nombredeususario/.profile

Una vez instalada la toolchain, ya podremos ir a la otra pestaña e instalar las librerías:

¡¡¡Atención!!!
Si usas un versión de Ubuntu superior a la 10.10, probablemente falle la instalación de la mitad de las librerías, por lo que, 
si tienes una versión superior a ésta, se recomienda seguir a partir de aquí el método manual.

Para instalar las librerías, si no hemos puesto un nombre de usuario antes, nos lo pedirá en éste momento, al igual que en la toolchain, no debemos de poner usuarios especiales y estar logeados con el usuario que pongamos.

Una vez haya acabado, podemos pasar a instalar y configurar NetBeans.

Se agradecerían reportes de funcionamiento de autoXenon tanto negativos como positivos.

Instalación manual

Empezamos abriendo una terminal e instalando los paquetes básicos, para ello ejecutamos como superusuario:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev texinfo git-core gettext build-essential


Lo siguiente será crear un directorio donde descargar todos los sources necesarios para nuestro entorno de desarrollo, se recomienda crearlo dentro del directorio /opt, para crearlo ejecutamos:

mkdir /opt/free60-git

A continuación nos introducimos en el directorio que acabamos de crear y descargamos el git en él:

cd /opt/free60-git
git clone git://github.com/Free60Project/libxenon

Para poder tener acceso a ellos posteriormente con otro usuario ejecutamos lo siguiente:

sudo chown -R usuario:usuario /opt/free60-git
donde nombre de ususario es el nombre de nuestro usuario con el que trabajemos normalmente

Ahora vamos al directorio de la Toolchain, damos permisos de ejecucion al script y la instalamos, para ello:

cd libxenon/toolchain
sudo chmod a+x build-xenon-toolchain
./build-xenon-toolchain toolchain

Éste proceso descargará, compilará e instalará los archivos necesarios de nuestra toolchain, dependiendo del PC que tengamos éste proceso durará aproximadamente 2 horas.

Una vez que haya acabado, deberemos abrir el fichero .bashrc para editarlo, tanto en el usuario root como en el que usemos normalmente, para ello yo he usado el nano:

sudo nano /root/.bashrc

y añadimos lo siguiente:

export DEVKITXENON="/usr/local/xenon"
export PATH="$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin"

Repetiremos lo mismo con nuestro usuario normal:

sudo nano /home/nombredeususario/.bashrc

Y también las añadiremos al fichero .profile, para que NetBeans no de problemas después:

sudo nano /root/.profile
sudo nano /home/nombredeususario/.profile

Podemos testear la instalación de la toolchain, abriendo un nuevo terminal y ejecutando:

xenon-gcc

Si devuelve "xenon-gcc: no input files" es que la instalación se ha realizado correctamente, de lo contrario debemos revisar que no se hayan cometido errores durante el proceso.

Para continuar, instalaremos LibXenon y las librerías básicas, para ello, vamos al directorio que contiene el Script de la toolchain:

cd /opt/free60-git/libxenon/toolchain

Y ejecutamos:

./build-xenon-toolchain libs

Éste comando descargará e instalará LibXenon y algunas de las librerías mínimas para funcionar, algunas, pero no todas, ya que faltan las necesarias para el acceso a dipositivos, que se ha renovado recientemente, por lo que continuaremos instalando todas éstas librerías.

Instalando libfat

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de libfat:

git clone git://github.com/LibXenonProject/fat-xenon.git

Vamos al directorio:

cd fat-xenon

Y ejecutamos:

make
make install

Instalando libntfs

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de libntfs:

git clone git://github.com/LibXenonProject/ntfs-xenon.git

Vamos al directorio:

cd ntfs-xenon

Y ejecutamos:

make
make install

Instalando libext2fs

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de libext2fs:

git clone git://github.com/LibXenonProject/ext2fs-xenon.git

Vamos al directorio:

cd ext2fs-xenon

Y ejecutamos:

make
make install

Instalando xtaflib

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de xtaflib:

git clone git://github.com/LibXenonProject/xtaflib.git

Vamos al directorio:

cd xtaflib

Y ejecutamos:

make
make install

Comprobar la instalación

Ahora procederemos a compilar un sample para comprobar la instalación:

./build-xenon-toolchain cube

Nos pondrá que lo descarga y lo compila.... cuando muestre "cube.elf32 compiled, run it via xell" es que ha acabado bien, si deseamos ver el sample, cambiamos el nombre a xenon.elf, lo copiamos en la raíz de un pen y lo ejecutamos en nuestra consola via xell, si todo va bien deberíamos ver un cubo metalizado girando en nuestra pantalla.

Enhorabuena ya tenemos lo básico!!!!

Instalación manual de librerías opcionales

Instalar ZLX

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de ZLX:

git clone git://github.com/LibXenonProject/ZLX-Library.git

Vamos al directorio:

cd ZLX-Library

Y ejecutamos:

make -f Makefile_lib install


Instalar sdl-libxenon

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de sdl-xenon:

git clone git://github.com/LibXenonProject/libSDLXenon.git

Vamos al directorio:

cd libSDLXenon

Y ejecutamos:

make -f Makefile.xenon install


Instalar sdl_Image

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de sdl_Image:

git clone git://github.com/LibXenonProject/SDL_Image.git

Vamos al directorio:

cd SDL_Image

Y ejecutamos:

make -f Makefile.xenon install

Instalar sdl_Mixer

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de sdl_Mixer:

git clone git://github.com/LibXenonProject/SDL_Mixer.git

Vamos al directorio:

cd SDL_Mixer

Y ejecutamos:

make -f Makefile.xenon install

Instalar sdl_ttf

Vamos al directorio donde descargamos nuestro repositorios:

cd /opt/free60-git

Clonamos el repositorio de sdl_ttf:

git clone git://github.com/LibXenonProject/SDL_ttf.git

Vamos al directorio:

cd SDL_ttf

Y ejecutamos:

make 
make install

Instalando NetBeans

NetBeans es un IDE gratuito que nos permite programar en diversos lenguajes, si bien está programado y diseñado para hacerlo en java, también nos sirve perfectamente para hacerlo en C++, y es el IDE donde se programan todos los proyectos desarrollados en LibXenon (por ejemplo el emu de nintendo 64).

En primer lugar debemos descargar NetBeans de su página oficial http://www.netbeans.org (también podemos instalar la versión 6.9 desde el centro de software de Ubuntu), para instalarlo debemos de tener el jdk 7 instalado, hay versiones de NetBeans que lo integran y otras que no, en caso de querer instalarlo por separado lo podemos descargar de ésta dirección: http://www.oracle.com/technetwork/java/javase/index.html y lo instalamos siguiendo las instrucciones que hay en la propia web.

Una vez instalado el jdk damos permisos de ejecución al instalador de NetBeans: [code]cd /directorio donde lo hallamos descargado chmod a+x netbeans-loquesea-linux.sh ./netbeans-loquesea-linux.sh[/code] Se abrirá la ventana del instalador y seguimos los pasos, una vez halla acabado, reiniciamos el equipo.

Configurando NetBeans

Éstos son los pasos básicos para configurar cualquier proyecto con asistencia de código, además podremos tener acceso inmediato a la documentación de las funciones de libxenon.

En la ventana "Nuevo proyecto" seleccionamos C/C++ en un lado, y en el otro "project with existing source"

En la siguiente ventana nos pedirá una ruta, le damos la ruta del sample del cubo, para cualquier proyecto nuevo es recomendable tomar como base la estructura de éste sample. En el apartado "Select configuration Mode" elegiremos la opción "Custom", una vez hecho esto pulsamos "next".

En la siguiente ventana deberíamos dejar todo tal u como está, a no ser que netbeans no encuentre automáticamente la ruta del makefile del cubo, en cuyo caso debemos de dársela manualmente. Hecho esto pulsamos "next".

En la siguiente ventana podemos dejar todo como nos lo propone NetBeans, aunque en la última fila podemos especificar un directorio donde que remos que nos guarde el resultado compilado de nuestro proyecto, si no especificamos nada estará donde esté el makefile del proyecto.

En la siguiente ventana añadiremos el directorio de libxenon y dónde está instalado: [code]/opt/free60-git/free60/libxenon /usr/local/xenon[/code]

En la siguiente damos a "manual configuration" y añadimos la siguiente ruta a las que ya están [code]/usr/local/xenon/usr/include[/code] Damos "next"

Aquí simplemente ponemos el nombre del proyecto, su localización (si no nos pondrá donde el sample del cubo) y si queremos que sea nuestro proyecto principal (no recomendado).

Una vez hemos acabado veremos a la izquierda nuestro proyecto con los sources seleccionados. Ahora ya podemos empezar....

Para compilar usamos el botón con dibujo de martillo en la barra de herramientas de arriba. Si todo va bien en la ventana de abajo debemos ver "build succesfully".

Espero que éste tutorial sirva para que la gente se anime un poco, a ver si podemos sacar algo entre todos. Un saludo a todos y ni qué decir tiene que éste tutorial está en continua construcción (yo también acabo de empezar en libxenon) y según valla aprendiendo iré actualizando con nuevos contenidos.

Gracias a Checo21, el Doctor Katz (gracias por testear autoXenon xD), Williamspyp por ayudarme a corregir el tutorial, y gracias a todos los que con vuestras aportaciones, contribuís a agrandar el tuto, ya que animáis a que sigua actualizándolo. (A ver si dentro de poco podemos abrir un hilo de programación.... jejejeje).