Encuesta Miembros

¿Que le impide a la gente conectar su Dreamcast online?

-No tengo DreamPi, pero quisiera uno.
-No tengo DreamPi, pero quisiera uno.
45% [50 Votos]

-Tengo RaspberryPi, pero no el resto...
-Tengo RaspberryPi, pero no el resto...
12% [13 Votos]

-No dispongo de teléfono fijo.
-No dispongo de teléfono fijo.
5% [6 Votos]

-No dispongo de internet.
-No dispongo de internet.
1% [1 Voto]

-No dispongo de tiempo.
-No dispongo de tiempo.
5% [5 Votos]

-Solo dispongo de BBA.
-Solo dispongo de BBA.
2% [2 Votos]

-Falta de interés en los juegos actuales online.
-Falta de interés en los juegos actuales online.
7% [8 Votos]

-Falta de información en general/Felíz jugando solo :-)
-Falta de información en general/Felíz jugando solo :-)
23% [25 Votos]

Votos: 110
Debes iniciar sesión para votar.
Iniciada: 08/11/2016 23:25

Archivo de Encuestas

Sabías que...

El juego de Sega Space Channel 5, tuvo una batalla legal contra Lady Miss Kier, miembro de Dee-Lite, por las similitudes entre ella y el personaje principal del juego, Ulala. Miss Kier perdió.

Ver el Tema

Avatar del Usuario

Configurar KOS 2.0 Toolchain en Linux 

Started by Guaripolo on 08-01-2009 04:15

64 Respuestas 26202 Visitas
Who posted:
Guaripolo
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
Descargar código fuente.  Código.
mkdir /home/usuario/dreamcast
cd /home/usuario/dreamcast





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

Descargar código fuente.  Código.

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:
Descargar código fuente.  Código.

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





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

Descargar código fuente.  Código.
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.

Descargar código fuente.  Código.

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.
Descargar código fuente.  Código.
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!!!
Descargar código fuente.  Código.

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:

Descargar código fuente.  Código.

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
Descargar código fuente.  Código.
/home/usuario/dreamcast/kos/doc


a la carpeta
Descargar código fuente.  Código.
/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:

Descargar código fuente.  Código.

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.

Descargar código fuente.  Código.
#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:
Descargar código fuente.  Código.
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
Descargar código fuente.  Código.
make



Una vez finalizado vayan al directorio /home/usuario/dreamcast/kos-ports y también tipeen:
Descargar código fuente.  Código.
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.lxdrea...wnload.php



Enviando con el DC-TOOL

Ver apartado COMPILAR DC-TOOL del TUTORIAL de DEPURACIÓN: http://www.dreamc...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.

Descargar código fuente.  Código.
sudo arp -s 10.0.0.3 00:11:22:33:44:55




Ahora ya sólo nos queda enviar los binarios unscrambleados:
Descargar código fuente.  Código.
./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:
Descargar código fuente.  Código.
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.dreamc...ad_id=2147
 
Neoblast
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"
 
Indiket
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 smile
Editado por Indiket el 26-04-2009 23:50
 
Horuhe
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 tongue
 
Guaripolo
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).
 
Indiket
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 el 20-03-2011 22:24
 
Guaripolo
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 el 11-04-2009 17:50
 
Indiket
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 el 19-04-2009 01:50
 
Guaripolo
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.
 
Indiket
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) ^^.
 
Guaripolo
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).
 
Indiket
Guaripolo, por fin ya todo me funciona smile
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.
 
Guaripolo
Si metele nomas, la idea es ir mejorando el tutorial hasta que llegue a un estado "estable" y ahí meter todo en un pdf.
 
Indiket
Añadí un nuevo apartado para crear imágenes cdi con herramientas nativas (gracias Guaripolo por las indicaciones).
 
Horuhe
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 bigsmile

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 tongue
 
Indiket
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.
 
Neoblast
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"
 
Guaripolo
¿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!
 
Neoblast
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"
 
Horuhe
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 tongue

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 ^^
 
Saltar al Foro:

Supporters