¡Oh no! ¿Dónde está el JavaScript? El navegador Web no tiene JavaScript activado o no es compatible con JavaScript. Active JavaScript en su explorador Web para ver correctamente este sitio Web o actualizar a un navegador Web que admita JavaScript.
Sabías que...
La Sega Dreamcast tiene 16 Mb de Ram, 8 Mb de VRam y 2 Mb para Audio, incorpora dos procesadores , SH4 y ARM7.

Configurar KOS 2.0 Toolchain en Linux

Última actualización en 4 year hace
GuaripoloGuaripoloAdministrador
Publicado 14 year hace
Voy a postear esto en el foro para ir completándolo de a poco, todavía no cubre todo lo que quiero abarcar (crear isos booteables desde linux y otras cositas más), pero les va a servir para montar un entorno básico descargando el toolchain ya compilado y compilando el kos y los kos-ports. Ahí les va, por favor no escatimen en comentarios y sugerencias:

Instalar y configurar un entorno de desarrollo en Linux:



Bueno este tutorial esta destinado a configurar un entorno de desarrollo en Linux, similar al que podemos usar con el Dreamcast Development Enviroment.
Hay muchos tutoriales disponibles en internet (bueno no tantos), yo me basé en el de Dreamcast Scene, pero lo modifiqué un poco con el objetivo de que se parezca más al DDE (así la transición de Cygwin a Linux es más natural).
Como principio les explico que esto fué hecho sobre un Ubuntu 8.04, no se como funcionará sobre otras distribuciones (no debería ser muy diferente).
Muchos de los comandos aquí presentados pueden también hacerse de forma visual (como crear carpetas). Es indistinto.


Empezando el trabajo: Abran una consola de Linux (en Ubuntu pueden ir a aplicaciones, accesorios, terminal). Parece un poco tonta mi explicación pero la intención es que hasta el mas inexperto pueda seguir estos pasos.


Creando un directorio de trabajo:
Suponemos que queremos crear el directorio de trabajo dentro de nuestro home
mkdir /home/usuario/dreamcast
cd /home/usuario/dreamcast


Descargando el KOS:
En el directorio de trabajo, tipeen (mejor copien y peguen, menos trabajo):


git clone git://git.code.sf.net/p/cadcdev/kallistios kos
git clone git://git.code.sf.net/p/cadcdev/kos-ports kos-ports


Con eso se descarga la última revisión del KallistiOS (sistema operativo para Dreamcast) y los ports de librerías de desarrollo.


Compilando el Toolchain: Descarga
Hay varias razones por la que es muy recomendable compilar nuestra toolchain, y no descargarnos una versión binaria:

- La versión binaria está desfasada (ej: el binutils es el 2.15 y actualmente vamos por el 2.22)
- Los binarios de las librerías que podemos obtener no nos funcionarán si no compilamos nuestra toolchain.
- Además, si lo hacemos podremos después compilar el dc-tool ip/serial :)

Primero vamos a la carpeta del kos donde hay un script que nos facilita la vida:

cd kos/utils/dc-chain
sh -e download.sh


Se descarga unos 40 MB, a esperar un ratillo. Una vez descargados ejecutamos:

sh -e unpack.sh




Compilando el Toolchain: Configuración
Ahora toca configurar el Makefile de la siguiente forma, ábranlo con su editor favorito:

Tendréis que cambiar:
- kos_root por vuestra carpeta inicial
- sh_prefix y arm_prefix son los directorios, cambiar /opt/toolchains/dc/ por /usr/local/dc
- gcc_ver es la versión de GCC que compilará KOS. Las disponibles y recomendadas son 3.4.6, 4.5.2 y 4.7.0
- Si usáis GCC 4.7.0, debéis mantener arm-eabi y no arm-elf.


sh_target=sh-elf
arm_target=arm-eabi
kos_root=/home/usuario/dreamcast
sh_prefix  := /usr/local/dc/$(sh_target)
arm_prefix := /usr/local/dc/$(arm_target)
binutils_ver=2.22
gcc_ver=4.7.0
newlib_ver=1.20.0
gdb_ver=6.7.1
insight_ver=6.7.1

Guardad y salid del editor.

La carpeta del sh y arm pueden que no estén creadas. Antes, hemos de crear esas carpetas y darles permisos de escritura.
cd /usr/local/
sudo mkdir dc
sudo chmod 755 dc
sudo chown usuario:usuario dc


IMPORTANTE: aseguraros de crear estas dos carpetas ANTES de compilar!!!

sudo mkdir /usr/local/dc/sh-elf/sh-elf/include
sudo mkdir /usr/local/dc/sh-elf/sh-elf/include/sys

cd /home/usuario/dreamcast/kos/utils/dc-chain




Compilando el Toolchain: Compilación
Finalmente, nos situamos en el directorio "dc-chain" y escribid "make". Ahora toca esperar un buen rato, por lo que os podéis ir a tomar una vuelta :)
Si todo ha ido bien, felicidades, hoy es tu día de suerte!!! :D :D


Nota: Si falla la compilación y la queréis hacer de nuevo, es aconsejable deshacer primero los parches de KOS y luego reaplicarlos:


cd gcc-4.7.0
patch -R -p1 < /home/usuario/dreamcast/kos/utils/dc-chain/patches/gcc-4.7.0-kos.diff

cd newlib-1.20.0
patch -R -p1 < /home/usuario/dreamcast/kos/utils/dc-chain/patches/newlib-1.20.0.diff




Configurando el KOS: Basics
Copien el archivo environ.sh.sample de la carpeta
/home/usuario/dreamcast/kos/doc
a la carpeta
/home/usuario/dreamcast/kos 
y cambienlé el nombre por environ.sh. Ábranlo para editarlo con su editor favorito.
Editen las siguientes lineas para que queden como les indico:


export KOS_BASE="/home/usuario/dreamcast/kos/"

export KOS_CC_BASE="/usr/local/dc/sh-elf"
export KOS_CC_PREFIX="sh-elf"

export DC_ARM_BASE="/usr/local/dc/arm-eabi"
export DC_ARM_PREFIX="arm-eabi"




NEW!! Configurando el KOS: Activar STACK TRACE: FRAME POINTERS

¿Más opciones? Pues sí jeje. Cuando un juego crashea (es decir, lanza una "exception"), KOS nos dice el estado de la máquina. Hay una serie de valores que nos interesan:
* PC: Program Counter. Nos dice exactamente en qué punto terminó la ejecución.
* Stack: La pila nos es muy útil, ya que indica de qué funciones venimos (es decir, en qué función se encuentra y tal).

Por defecto, KOS no tiene activado la traza de la pila. Aunque activándola se reduce un poco el rendimiento, vale la pena!

Para activarla:

Hay que editar el fichero environ.sh y cambiar el KOS_CFLAGS.

#export KOS_CFLAGS="-O2 -fomit-frame-pointer"
export KOS_CFLAGS="-O2 -DFRAME_POINTERS"


IMPORTANTE! : Tenéis que recargar el entorno de KOS! Lo mejor sería cerrar y volver a abir la ventana, para después hacer un "source environ.sh"
Si ya tenías KOS, tendréis que volver a recompilarlo.

Después, en vuestros Makefiles de los programas, aseguraros que se compila con -g (por defecto ya es así), y no se usa el -fomit-frame-pointers.


Configurando el KOS: Inicializar

Para inicializar las variables de entorno necesarias tienen que ejecutar lo siguiente:
source environ.sh



Configurando el KOS: Compilar

Para compilar el KOS simplemente pónganse en el directorio raíz (con la consola, en nuestro caso /home/usuario/dreamcast/kos) y tipeen

Una vez finalizado vayan al directorio /home/usuario/dreamcast/kos-ports y también tipeen:
sh utils/build-all.sh

(siempre seguido de la tecla enter, no os olvidéis cheee).

¡Listo! Tenemos un toolchain básico completamente funcional.

NOTA: Cada vez que vayan a usar el toolchain DC tienen que ejecutar "source environ.sh", a menos que agreguen esas lineas a su archivo .bashrc dentro de su carpeta de usuario (por ejemplo /home/usuario/.bashrc, quedaría algo como "source /home/usuariol/dreamcast/kos/environ.sh")

NOTA 2: KOS 2.0.0 ya define la versión en la consola cuando ejecutamos un binario! (ejecuta el make_banner.sh durante la compilación)



Instalando LXDREAM:
Para probar lo que compilamos podemos usar el LXDREAM, simplemente entren al sitio web www.lxdream.org y pueden bajar el paquete para DEBIAN o los sources (y compilarlos).

http://www.lxdream.org/download.php



Enviando con el DC-TOOL

Ver apartado COMPILAR DC-TOOL del TUTORIAL de DEPURACIÓN: http://www.dreamcast.es/forum/viewthr...ad_id=1460

Uso: Si usamos la ip 0.0.0.0, antes de enviar un binario hay que hacer un arp de la siguiente forma:

Nota: Substituid 10.0.0.3 por una dirección IP libre de vuestra red, y 00:11:22:33:44:55 por la MAC que os da el BBA al poner el cd en la DC. En entornos Mac OS X, antes debéis editar la configuración de red de vuestra tarjeta Ethernet y ponerla en modo manual, sin DHCP, y en el rango adecuado que le queréis asignar.

sudo arp -s 10.0.0.3 00:11:22:33:44:55


Ahora ya sólo nos queda enviar los binarios unscrambleados:
./dc-tool-ip -x "ruta relativa binario" -t 10.0.0.3 -i file.iso


El parámetro i sólo lo usamos si queremos que los datos se lean desde el PC y no desde el cd de la Dreamcast. Un comando rápido para crear un iso:
mkisofs -r -J -o nombre.iso Carpeta_de_los_ficheros



Crear imágenes CDI "a la bootdreams"

Ver apartado ¡Yo controlo! Manejar imágenes CDI por Terminal "like a boss" :) :
http://www.dreamcast.es/forum/viewthr...ad_id=2147
NeoblastNeoblastSuper Administrador
Publicado 14 year hace
Guaripolo crea un artículo de esto.
Muchas gracias eres el puto amo, yo siempre he hehco eso el caso es que luego siempre me dan mil errores al compilar y al final acabo usando windows para esto en concreto...
Shenmue es mi regalo para los jóvenes del siglo XXI

"Yu Suzuki"
IndiketIndiketAdministrador
Publicado 14 year hace
Good good! Irá de perlas cuando lo ponga en el Ubuntu.
Un comentario, viendo el kos-ports del svn, creo que no están todas las librerías que se incluyen en el DDE.

Quizá fuera interesante ver cuáles hay que añadir o actualizar :)
Editado por Indiket en 26-04-2009 23:50, 13 year hace
H
HoruheMiembro
Publicado 14 year hace
Felicitaciones! es un articulo necesario sin duda que ayudará a muchos. Yo lo hice y me costo un poquillo con sus pequeños momentos de recordar sus muertos jajajaja

Como tuve problemas y formatee lo volveré a hacer como dices aquí y te cuento ^^

Graxas xD

Sisi, dctools ip please xD Si se pudiese hacer una buena biblioteca de ayuda se moverá todo mucho más :P
GuaripoloGuaripoloAdministrador
Publicado 14 year hace
ok voy a traducir lo del dctool, la verdad no se si funciona (no tengo coders cable o bba). Cuando esté terminado lo voy a subir como un artículo.

Respecto a las librerías, voy a poner una sección de como compilar una librería, hay muchas que no están incluidas (yo por ejemplo tuve que compilar las sdl+opengl de chui, porque copiando los binarios precompilados no me funcionaba (no se porqué daba errores de compilación).
IndiketIndiketAdministrador
Publicado 13 year hace
Che, hoy me lo he puesto en mi Ubuntu. El problema que he tenido es que el /usr/local tiene de propietario root, con lo cual al hacer los pasos con sudo's, al final no conseguía compilar el kos por tema de permisos.

Un detalle, al hacer el svn tal y como lo pones, no crea dos carpetas kos. Con lo cual todo está en /..../dc/kos y /..../dc/kos-ports

Me lo he puesto de la siguiente forma: en mi home la carpeta dreamcast/KOS y la toolchain está en /usr/local/dc. Parece ser que todo ha ido bien, voy a probar de compilar cosas jejeje.

Librerías que incluye la SDL de Chui (1.2.9):
freetype-2.0.9
zlib-1.2.3
libpng-1.2.8
SDL-1.2.9
SDL_image-1.2.4
SDL_mixer-1.2.6
SFont
SDL_flic
SDL_gfx
SDL_ttf-2.0.8

Librerías que faltan respecto la DDEr4:
lib3ds
lib7z
liblzma
libmxml
SDL_prim
SGE (SDL Graphics Extensions)
KGL-X: libkglx -> implementación parcial de OpenGL: hay 2 versiones conocidas:
* Chui (OpenGL 1.2)
* Heinrich Tillack (v. 0.41, de Iris3D)

Más librerías que ha sido porteadas a KOS:
Allegro 4.2.2
* Dumb 0.93
* Alpng 1.3
* JGMOD 0.97
* jpgalleg 2.5
libWildMidi (de Chilly Willy)
libxml2 (de Troy)
ODE (0.11.1 de Indiket)
SDL_Sound

Librerías disponibles para reproducir vídeos:
VCD Players
libmpeg2 (0.5.1, de PH3NOM). SÍ VÍDEO / NO AUDIO
libdivx (de Mekanizer) SÍ VIDEO / SÍ AUDIO
dreamroq (RoQ format, 2011)

Por liberar:
LibXviD (de PH3NOM)
LibTheora (de PH3NOM)


-------------------------------------
Kos y kos-tools svn a 11/04/09: 628
Editado por Indiket en 20-03-2011 23:24, 12 year hace
GuaripoloGuaripoloAdministrador
Publicado 13 year hace
sisi creo que hacerlo en /home es lo más correcto respecto de las políticas de seguridad en linux (yo lo hice de la otra forma por fiaca).


Se podría hacer un paquete deb (o un rpm) para poder instalar todo más facil ¿no?
Editado por Guaripolo en 11-04-2009 17:50, 13 year hace
IndiketIndiketAdministrador
Publicado 13 year hace
Creo que sí, se podría usar las variables $KOS_BASE y tal de entorno para instalar el deb? He podido compilar SDL_prim y SGE bien (esta última necesitaba de un fichero extra de la freetype que no viene en las de Chui y lo he tenido que sacar de la Cygwin (ft2build.h).

Otra cosa, te maldigo Guaripolo... por no avisar de que, con la toolchain binaria no puedo compilar el dc-load!!!! (falta la libbfd).
Editado por Indiket en 19-04-2009 01:50, 13 year hace
GuaripoloGuaripoloAdministrador
Publicado 13 year hace
como no tengo bba ni coders cable no uso el dc-load, así que nunca te iba a poder avisar, yo hago todas las pruebas sobre el nulldc corriendo en wine. Lo del png voy a probar, la verdad no lo probé (estoy trabajando en un juego que usa pcx y bmp nada más).

Habría que hacer un listado de liberías y armarlas bien para el paquete. Yo tengo por ahí un SDL_sound que me paso Ron y algunas librerías más, vamos a ponernos de acuerdo y hacemos un paquete para que todos no sufran tanto -como nosotros- para armar sus toolchains.
IndiketIndiketAdministrador
Publicado 13 year hace
Igualmente te toca modificar tu minitutorial, que dreamcastscene lo ponía bien clarito xD
Estoy usando de pruebas el lxdream, y me gusta (puedo cargar los elf directamente) ^^.
GuaripoloGuaripoloAdministrador
Publicado 13 year hace
ahi modifique el tutorial (maldito indiket me hace laburar y no puedo ni escribir me duele todo del partido de futbol de ayer).

El lxdream me andaba bien la primera vez que lo probe (cuando lo compile yo mismo), pero hace poco baje un paquete y no funcionaba bien (y no tenía ganas de compilarlo de nuevo).

Ya estuve leyendo un poquito como hacer paquetes deb, voy a armar uno para probar y faltaría recopilar todas las librerías posibles y ponerse de acuerdo en la nomenclatura de algunas (como las sdl, las sdl de chui y las sdl+opengl). ¿podemos incluir las allegro? (habría que preguntarle a chui).
IndiketIndiketAdministrador
Publicado 13 year hace
Guaripolo, por fin ya todo me funciona :)
Y ya se pk no te funcionan los binarios precompilados de chui, precisamente hace pocos días nos lo estuvimos mirando.
Todo es por culpa de la toolchain. La versión del binario es antígua y incompatible con los objetos generados con las últimas. Si te compilas tu propia toolchain (con gcc-3.4.6) entonces te irá perfectamente.

Si no te importa, modificaré el tutorial y añadiré todos los pasos detallados.
GuaripoloGuaripoloAdministrador
Publicado 13 year hace
Si metele nomas, la idea es ir mejorando el tutorial hasta que llegue a un estado "estable" y ahí meter todo en un pdf.
IndiketIndiketAdministrador
Publicado 13 year hace
Añadí un nuevo apartado para crear imágenes cdi con herramientas nativas (gracias Guaripolo por las indicaciones).
H
HoruheMiembro
Publicado 13 year hace
Muchas gracias Indiket!

Tengo por ahí un PII con Debian que utilizo como mini server para compartir...voy a ponerme a instalarlo después de comer para así hacer cosillas a través de SSH desde cualquier PC y cualquier lugar :D

Por cierto, las cosas que comentas sobre la librería de CHUI podrías documentarlas también así esto estaría más completo y no solo el KOS :P
IndiketIndiketAdministrador
Publicado 13 year hace
Las librerías de Chui no tienen mucho misterio. Te bajas la versión de los binarios y la descomprimes en la carpeta del kos y listos.
En los programas, los includes tendrán que ser de la forma:
#include <SDL/SDL.h> //Con la carpeta SDL delante.
NeoblastNeoblastSuper Administrador
Publicado 13 year hace
interesante, Alguien se apunta a con esto hacer una distribucion de dreamcast preparada para compilar y que venga ya con el emu y eso.
tengo la distro modifcable perfecta para poder hacerlo, es la que han usado en wifislax y backtrack.
Slackware modoficable con sus scripts y plugins...
www.slax.org
Con que una persona más se una al proyecto nos ponemos a ello.
Shenmue es mi regalo para los jóvenes del siglo XXI

"Yu Suzuki"
GuaripoloGuaripoloAdministrador
Publicado 13 year hace
¿y si mejor hacemos paquetes debian?

La verdad no se que piensa el resto, a veces una distro no es muy util, me parece más util usar una distro cualquiera y poder instalar el toolchain ahi...

Igualmente podemos hacer las dos cosas. Muencha!
NeoblastNeoblastSuper Administrador
Publicado 13 year hace
imagina que no estásen tu PC o lo que sea, pues corres la distro de DC rápidamente desde un USB o livecd porque ni siquiera ocuparía 200 megas, como mucho mucho ocuparía 300...
Shenmue es mi regalo para los jóvenes del siglo XXI

"Yu Suzuki"
H
HoruheMiembro
Publicado 13 year hace
Tengo entendido que Slackware no es una distribución "fácil" ni "amigable" pero como es para el trabajo directo que no hay que hacer nada me parece una idea perfecta. He utilizado el WifiSlax y va perfecto xD Creo que ya que se hace una distribución adrede para el desarrollo para DC se debería incluir una buena documentación de apoyo dentro de la misma tanto de KOS, SDL y Allego además de ejemplos de juegos con el código para ejemplos, libros de programación (libres), etc... Así el que sabe poco se lo pones fácil :P

Y lo de empaquetar también me parece muy buena idea aunque ya que nos ponemos a empaquetar lo mejor sería hacerlo como mínimo para RPM y DEB, las dos grandes familias. Esta sin duda es una buena opción para aquellos que programen "habitualmente" en DC, no creo que se ponga a botar un livecd o usb si lo hacen a menudo. Lo harían en casos como el que comenta Neoblast.

Si puedo ayudar en algo solo decirlo ^^
puede ver todos los hilos de discusión en este foro.
puede iniciar un nuevo hilo de discusión en este foro.
no puede responder en este hilo de discusión.
no puede empezar en una encuesta en este foro.
puede cargar archivos adjuntos en este foro.
no puede descargar archivos adjuntos en este foro.
Afiliados
SEGA Saturno - Saturn, SEGA y Videojuegos