Desarrollo para la XBox con Mac

En proceso de traduccion. Un poquito de paciencia... ;-)


Este articulo describe el proceso por el que yo (el autor original) he seguido para configurar mi iBook para compilar codigo C escrito con OpenXDK, y hacer ejecutables nativos de XBox. En el momento de escribir esto, he compilado satisfactoriamente un ejecutable de Windows en mi sistema, a pesar de que no he sido capaz de convertirlo en ejecutable de XBox.


Supervision editar

Todos estos pasos son faciles de seguir, a pesar de que hay algunos trucos que el recien iniciado necesita saber pasando horas de googleo. El proceso seguido es similar a la instalacion de OpenXDK en Linux, pero difiere de el porque estoy usando un microprocesador PowerPC. Esto significa que primero debemos construir un compilador cruzado. Se supone que conoces como acceder a la consola.

DarwinPorts editar

DarwinPorts es una manera de marcar e instalar programas de codigo abierto en tu sistema facilmente, Esta diseñado especificacmente para Darwin (como el nombre sugiere), y usando esto puedes descargar MingGW. La version actual de DarwinPorts es la 1.2, y viene en un comodo paquete instalable. Una vez instalado, ejecuta el siguiente comando para actualizar la lista interna de ports disponibles:

$ sudo port -d selfupdate

MinGW editar

Los es de MingGW y las librerias de la API de Windows te permiten escribir y compilar programas para ejecutarlos en un sistema i386. A pesar de que puedes descargar una copia de todo lo necesario de la web, usando DarwinPorts para bajar los archivos necesarios para ti es la mejor opcion. Para bajar las herramientas necesarias, ejecuta el comando:

$ sudo port install i386-mingw32-gcc

Esto instalara, configurara e instalara los compiladores cruzados gcc y las herramientas en tu sistema. Nota: este paso tomara un tiempo.

Errores de compilacion editar

A la hora de escribir este texto, hay un errore de compilacion cuando el instalador ejecuta 'make' para el paquete 'binutils'. El error exacto es mostrado debajo:

$.../work/binutils-2.15.91-20040904-1/gas/config/tc-i386.h:457:
error: array type has incomplete element type

Para evitar este problema, cambia el compilador a gcc-3.3 cuando se prepare a contruir.

$ sudo gcc_select 3.3

Entonces, una vez que el paquete 'binutils' ha compilado satisfactoriamente, para la instalacion (Ctrl + C) (el instalador fallaria en cualquier caso) y cambia el compilador otra vez a gcc-4.0. Entonces la instalacion deberia completarse satisfactoriamente.

Probando editar

Este es un paso opcional. Yo he probado que la configuracion funcionaba escribiendo un programa Hola Mundo y ejecutandolo en mi maquina Windows. El contenido de 'hola.c' es mostrado debajo:

#include <stdio.h>

int main(int argc, char **argv)
{
	printf ("Hola\n");
	return 0;
}

Para compilar, es como el normal gcc/++:

$ i386-mingw32-gcc -o hola.exe hola.c  

Esto produce un archivo hola.exe ejecuble para Windows que puede correr nativamente en Windows. Nota que esto solo prueba la configuracion del compilador cruzado, y no OpenXDK.

OpenXDK editar

openXDK es un kit libre para desarrollar aplicacion que correran en la Xbox. Contiene un reemplazo completo de libc, usa SDL para multimedia (sonido y red no estan actualmente soportados) y compila con gcc.

Puedes descargar la ultima version desde SourceForge. Estate seguro de descargar el archivo binario OpenXDK_#_bin.zip (donde # es la version). Nota: a pesar de que dice que es para la plataforma i386, este es nuestro sistema objetivo, y OpenXDK NO compilara (incluso con i386-mingw32-gcc) en el Mac.

Cxbe editar

Cxbe comes with OpenXDK, and is located int the bin directory. It is responsible for converting the Windows executable into an Xbox executable. You won't be able to use the one provided, as it is for Windows.

Unfortunately, at the time of writing the Cxbe source in the OpenXDK_src package is from an older version than the compiled version in the OpenXDK_bin package. Until a workaround surfaces, we will have to send the half completed executable to a Windows box and run Cxbe there.

Compiling editar

To compile C code written for the xbox, you need a lengthy flag list for the compiler. The following was adapted from the OpenXDK Website. This assumes that you have a working version of cxbe on your system.

# installed OpenXDK path
XDK = /usr/local/openXDK

# cross-compiler
CC = i386-mingw32-gcc

# cxbe path (for post-processing)
CXBE = $(XDK)/bin/cxbe

SDLFLAGS = -DENABLE_XBOX -DDISABLE_CDROM 
CC_FLAGSA = -g -std=gnu99 -ffreestanding -nostdlib -fno-builtin
CC_FLAGSB = -fno-exceptions -mno-cygwin -march=i386 $(SDLFLAGS)
INCLUDE  = -I$(XDK)/i386-pc-xbox/include -I$(XDK)/include -I$(XDK)/include/SDL

CLINK = -nostdlib
ALIGN = -Wl,--file-alignment,0x20 -Wl,--section-alignment,0x20 
SHARED = -shared
ENTRYPOINT = -Wl,--entry,_WinMainCRTStartup 
STRIP = -Wl,--strip-all
LD_FLAGS = $(CLINK) $(ALIGN) $(SHARED) $(ENTRYPOINT) $(STRIP)
LD_DIRS = -L$(XDK)/i386-pc-xbox/lib -L$(XDK)/lib 
LD_LIBS  = $(LD_DIRS) -lSDL -lopenXDK -lhal -lc -lhal -lc -lusb -lxboxkrnl

all: default.exe

*.o: *.c
	$(CC) $(CC_FLAGSA) $(CC_FLAGSB) $(INCLUDE) $<

default.exe: *.o
	$(CC) -c $< -o $@ $(LD_LIBS) $(LD_FLAGS)
	$(CXBE) -TITLE:"$@" -DUMPINFO:"default.cxbe" -OUT:"default.xbe" $@ >/dev/null

clean: 
	rm -f *.o *.xbe *.cxbe *.exe

Conclusion editar

While there is limited support for Xbox development on the Mac, because of the use of Linux to develop legal xbox executables and the fact that Mac OS X is built on a flavor of Unix, it is possible to piggy-back Linux's support sources and (with slight manipulation) produce a viable solution to Mac Xbox Development.

Referencias editar

Enlaces externos editar