¡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 primera edición japonesa de Virtua Fighter incluye un GD-rom con un video llamado Project Berkley (uno de los nombres de las betas de Shenmue).

BennuGD para Dreamcast

Última actualización en 5 year hace
IndiketIndiketAdministrador
Publicado 9 year hace
DEBUG EN BENNUGD

Referencia: http://wiki.bennugd.org/index.php?tit...nu_console

Una característica muy potente de Bennu es que el intérprete (de PC) incluye un debugger que además, es fácil de usar!!

* Importad el módulo de debug: import "mod_debug";
* Compilad con el flag de debug: >> ./bgdc -g nombre.prg
* Ahora, ejecutad vuestro programa como siempre: >> ./bgdi nombre.dcb

Bien, para abrir la consola de depuración simplemente pulsad: Alt+C y alehop!! :D

wiki.bennugd.org/images/5/59/Console.PNG


Tenemos varios comandos que podemos usar (ej. poner breakpoints). Os recomiendo leer la referencia, pero os comento algunos de prácticos:

INSTANCES: Nos devuelve todos los threads en ejecución del programa (muy útil!).
GLOBALS: Muestra las variables globales declaradas.
TRACE: Ejecuta la siguiente instrucción (un step).
KILL (processID): Mata un hilo de ejecución.

Y recordad que siempre tenéis el "say" para hacer los típicos printf :D
alexislightalexislightAdministrador
Publicado 9 year hace
Me lo lei todo! no voy a ponerlo en practica por falta de conocimiento pero se agradece la dedicacion!(y)
Amo a mi Dreamcast
1.bp.blogspot.com/-ISA2GZATNCQ/TbntZYUJViI/AAAAAAAAAB4/wDlRYAhu_lo/s1600/vardream.gif
IndiketIndiketAdministrador
Publicado 9 year hace
¡Muchas gracias alexislight! Se agradece :)
Sigo con mis notas personales: esta vez es un pequeño tutorial para compilar la última versión de BennuGD en nuestro sistema host... el MAC OS X!!

¡MUY IMPORTANTE! BennuGD compila pero no funciona para entornos de 64bits (sólo compilaremos para arquitectura i386)

COMPILAR BENNUGD

* Tendremos que tener instalado XCode 8 y uno de los siguientes repositorios: Macports o Homebrew.
* Para empezar, debemos de instalar las siguientes librerías necesarias para compilar: SDL, SDL_mixer, libpng. También añadiremos la freetype para un siguiente módulo que compilaremos.

Abrimos un terminal y ejecutamos:
Macports: >> sudo port install libsdl +no_x11 +universal libsdl_mixer +universal zlib +universal libpng +universal freetype +universal

Homebrew:
>> brew install zlib --universal libpng freetype --universal libmikmod --universal
>> brew install sdl --universal
>> brew install sdl_mixer --universal --with-libmikmod --with-libvorbis

Actualización Agosto 2017: Homebrew ya no soporta usar versiones viejas de OpenSSL, así que hay que modificar los Makefiles para quitar toda referencia al uso de la SSL. Deben de tocar estos ficheros:

modules/configure.in -> Cambiar el caso de "darwin", y no compilar "mod_crypt"
modules/Makefile.am -> Quitar la referencia a mod_crypt
core/configure.in -> Cambiar el caso de "darwin" y comentar "AC_SUBST(CRYPT_LDFLAGS)"
core/bgdi/src/Makefile.am -> Quitar la referencia de $(CRYPT_LDFLAGS)
core/bgdc/src/Makefile.am -> Quitar el fichero "../../common/b_crypt.c \"
core/bgdrtm/src/Makefile.am -> Quitar la referencia de $(CRYPT_LDFLAGS)

Actualización Agosto 2017 (2) : Si queréis compiar la librería mod_image, debéis de instalar la librería libpng pero compilando para 32/64 bits, y además instalar la SDL_image también para 32/64 bits, y con el flag "-without-webp"


* Descargamos el código fuente de BennuGD con este comando:
>> svn co https://svn.code.sf.net/p/bennugd/code/ bennugd

* Copia el siguiente script que aparece a continuación y lo guardas como "build-osx.sh". Ya está preparado para i386, además del path a /usr/local (Macports puede usar /opt/local).

#!/bin/bash

TARGET=osx-darwin

export CFLAGS="-DTARGET_MAC -arch i386 -I/usr/local/include"
export LDFLAGS="-arch i386 -framework Cocoa"

echo "### CFLAGS and LDFLAGS env ###"
echo $CFLAGS;
echo $LDFLAGS;

echo "### Building BennuGD Core ###"
       
cd core
chmod a+x configure

# Patch Makefile.in's to build .dylib's instead of .so's
FILES="bgdrtm/src/Makefile.in bgdrtm/src/Makefile.am"
for i in $FILES; do
   echo $i
    sed -i -e 's/-module/-shared/g' $i
done

# Patch BGDI (main executable) OSX SDLmain init
# Fixing multiple relinking :)
FILES="bgdi/src/Makefile.in bgdi/src/Makefile.am"
for i in $FILES; do
   echo $i
    sed -i -e 's/.libs -lbgdrtm/.libs -lSDLmain -lSDL -lbgdrtm/g' $i
    sed -i -e 's/bgdi_LDFLAGS =/bgdi_LDFLAGS := -arch i386 -framework Cocoa/g' $i
done

case $1 in
    release)
        ./configure && make clean && make
        ;;

    *)
        make
        ;;
esac
if [ $? -ne 0 ]; then
    echo "*** ABORT ***"
    exit 1
fi
cd -

echo "### Building BennuGD Modules ###"

cd modules
chmod a+x configure

# Patch Makefile.in's to build .dylib's instead of .so's
for i in *; do
    if [ -d $i ]; then
        sed -i -e 's/-module/-shared/g' $i/Makefile.in;
        sed -i -e 's/-module/-shared/g' $i/Makefile.am;
    fi;
done

case $1 in
    release)
        ./configure && make clean && make
        ;;

    *)
        make
        ;;
esac
if [ $? -ne 0 ]; then
    echo "*** ABORT ***"
    exit 1
fi
cd -

echo "### Building BennuGD Tools ###"

cd tools/moddesc
chmod a+x configure
case $1 in
    release)
        ./configure && make clean && make
        ;;

    *)
        make
        ;;
esac
if [ $? -ne 0 ]; then
    echo "*** ABORT ***"
    exit 1
fi
cd -

echo "### Copying files to bin folder ###"

mkdir -p bin/$TARGET 2>/dev/null
#cp 3rdparty/des-4.04b/libdes.so bin/$TARGET
cp core/bgdi/src/.libs/bgdi bin/$TARGET
cp core/bgdc/src/bgdc bin/$TARGET
cp core/bgdrtm/src/.libs/libbgdrtm.dylib bin/$TARGET
cp $(find modules -name '*.dylib') bin/$TARGET
cp tools/moddesc/moddesc bin/$TARGET

echo "### Build done! ###"

exit 0


* Abrid el fichero /core/bgdi/src/main.c para añadir el define:
#include <SDL/SDL.h>
Es importante hacerlo, ya que sino os dará un error de linkaje que dice que no os encuentra SDL_main.

* Abrid el fichero /modules/libdraw/libdraw.c y quitad dos "_inline" de:
void _HLine32_stipple( uint32_t * ptr, uint32_t length )
void _HLine32_nostipple( uint32_t * ptr, uint32_t length )

* NUEVO! Abrid el fichero /modules/mod_sound/mod_sound_exports.h y comentad estas dos funciones:
// FUNC( "UNLOAD_SONG" , "P" , TYPE_INT , modsound_unload_song2 ),
// FUNC( "UNLOAD_WAV" , "P" , TYPE_INT , modsound_unload_wav2 ),


* Todo listo!! Para compilarlo en nuestro Mac:
>> cd bennugd
>>./build-osx.sh release


¡Y tachán! Dentro de la carpeta bin/osx-darwin tendremos los binarios bgdc (compilador), bgdi (intérprete), los ficheros .dylib (módulos de BennuGD) y la utilidad moddesc (que nos da info de los modulos).
Editado por Indiket en 27-08-2017 18:57, 7 year hace
IndiketIndiketAdministrador
Publicado 9 year hace
COMPILAR UN MÓDULO (mod_ttf)

Una de las ventajas de compilar BennuGD, es que nos permite también compilar algunos módulos hechos para la comunidad (en caso que, por ejemplo, no tengamos la librería para nuestro sistema). Este ejemplo es muy ilustrador: mod_ttf tiene un dll (Windows), un so (Unix) y código fuente, pero no un dylib (Mac). No nos queda más remedio que preparar una compilación...

Antes de todo, asegúrate que tienes instalada la freetype (--universal) con Macports o Homebrew.

Descárgate mod_ttf de esta dirección: http://www.bennugd.org/downloads/mod_...tf-1.1.zip y lo descomprimes.
La carpeta mod_ttf tiene que ir a dentro de bennugd/modules

Ok, ahora viene la parte complicada :/ . Tendremos que modificar el Makefile para que nos incluya nuestra nueva librería. Hay que tocar los siguientes ficheros:

bennugd/modules/Makefile.am

Añadir la carpeta del nuevo módulo, después de las de librerías:
SUBDIRS = \
[...]
mod_ttf       \


bennugd/modules/configure.in

Un caso parecido, añadiremos el nuevo Makefile a compilar:
[...]
AC_OUTPUT([
Makefile
mod_ttf/Makefile
[...]


Ok, ahora hay que ir dentro de la carpeta del módulo (en nuestro caso, mod_ttf) y crear el fichero Makefile.am. Este fichero lo usará el configure para generar los Makefiles.
Para el ejemplo, usad exactamente el siguiente contenido:

## Process this file with automake to produce Makefile.in

#AUTOMAKE_OPTIONS = no-dependencies foreign

lib_LTLIBRARIES = libmod_ttf.la

libmod_ttf_la_SOURCES = ttf.c
libmod_ttf_la_CFLAGS = $(COMMON_CFLAGS) $(SDL_CFLAGS) -I$(BGD_PATH)/include -I$(BGD_PATH)/bgdrtm/include -I../libfont/ -I../libgrbase/ -I/usr/local/include/freetype2
libmod_ttf_la_LDFLAGS = -s -shared -no-undefined -avoid-version
libmod_ttf_la_LIBADD = $(COMMON_LDFLAGS) $(SDL_LIBS) -L$(BGD_PATH)/bgdrtm/src/.libs -lbgdrtm -lfreetype -L$(BGD_PATH)/../modules/libgrbase/.libs -lgrbase -L$(BGD_PATH)/../modules/libfont/.libs -lfont

## Make sure these will be cleaned even when they're not built by
## default.
CLEANFILES = libmod_ttf.la


Siguiente paso: regenerar los Makefiles. Volver al directorio superior y ejecutad estas dos instrucciones:
>> autoreconf -i
>> automake
>> ./configure


Finalmente, podemos volver al directorio "bennugd" y ejecutar nuestro script de compilación (cruzar los dedos ayuda xD)
>> /build-osx.sh release

Si os ha funcionado toda la compilación, tendréis la nueva librería modular en vuestra carpeta de bins. Recordad, es una compilación dinámica (no estática) y la librería es como un "wrapper" a vuestras librerías del sistema (en este caso, la freetype).
Editado por Indiket en 20-09-2015 11:57, 9 year hace
IndiketIndiketAdministrador
Publicado 9 year hace
CROSS-COMPILAR BENNUGD DESDE UBUNTU PARA WIN32

¿Tienes algún amigo hereje que usa Windows y necesita algún módulo en DLL? ¿Tienes repelús de usar Windows y no te pondrás una máquina virtual para ello? Si ese es tu caso, camarada, bienvenido a esta sección :D :D

SISTEMA HOST: UBUNTU 14.04 LTS

Veréis, dentro del mundillo de cross-compile a windows, existen dos programas para generar binarios: MINGW32 y MINGW-W64. El segundo es un fork más evolucionado, que permite compilar para 32 y 64 bits y además, ya incluye headers de librerías como DirectX. Usaremos este último!!

0. Instalar los siguientes paquetes básicos:
>> sudo apt-get install build-essential subversion mingw-w64 mingw-w64-tools


1. Ok, ya tienes el compilador pero... también tienes que compilar todas las librerías de tu proyecto para Win32, una a una (ugh, dolor!!). Así que ármate de paciencia, y al toro!

zlib:

>> apt-get source zlib1g
>> cd zlib-1.2.8.dfsg
>> CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar RANLIB=i686-w64-mingw32-ranlib CFLAGS="-DNO_FSEEKO" ./configure --prefix=/usr/i686-w64-mingw32/
>> make
>> sudo make install


Si os da un error (como a mí) de este tipo: /i686-w64-mingw32/bin/ld: cannot find -lc collect2: ld returned 1 exit status

No os asustéis xD. Repetid el último comando sin el parámetro "-lc" y luego el "make install". Os compilará correctamente ;)

openssl (1.0.1p - 32 bits):

Nota: el "Configure" con C mayúscula:
>> wget http://www.openssl.org/source/openssl-1.0.1p.tar.gz
>> tar -zxf openssl-1.0.1p.tar.gz
>> cd openssl-1.0.1p
>> PATH=/usr/i686-w64-mingw32/bin/:$PATH ./Configure no-shared disable-capieng --prefix=/usr/i686-w64-mingw32/ mingw
>> PATH=/usr/i686-w64-mingw32/bin/:$PATH make CC=i686-w64-mingw32-gcc RANLIB=i686-w64-mingw32-ranlib
>> sudo make install


libpng:

>> wget http://kent.dl.sourceforge.net/project/libpng/libpng16/1.6.18/libpng-1.6.18.tar.gz
>> tar -zxf libpng-1.6.18.tar.gz
>> cd libpng-1.6.18
>> ./configure --prefix=/usr/i686-w64-mingw32/ --host=i686-w64-mingw32
>> make
>> sudo make install


SDL 1.2.15:
(Compilaremos sin soporte DirectX).

>> wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
>> tar -zxf SDL-1.2.14.tar.gz
>> cd SDL-1.2.14
>> ./configure --prefix=/usr/i686-w64-mingw32/ --host=i686-w64-mingw32 --disable-directx
>> make
>> sudo make install


SDL_mixer:
ATENCIÓN: Hay un bug durante la compilación de la SDL_mixer 1.2.12 con SDL 1.2.15!!

Para resolverlo, tenéis que hacer un primer intento de compilación, y luego editar el fichero /build/.libs/libSDL_mixer.la:

# Libraries that this one depends upon.
dependency_libs =


Quita la "-lmingw32" y pon "/usr/i686-w64-mingw32//lib/libSDLmain.la" ANTES de la libSDL.la

>> wget http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz
>> tar -zxf SDL_mixer-1.2.12.tar.gz
>> cd SDL_mixer-1.2.12
>> ./configure --prefix=/usr/i686-w64-mingw32/ --host=i686-w64-mingw32
>> make
>> sudo make install


Nota: esta versión de SDL_mixer no la compilaremos con soporte OGG, MP3, FLAC ni Mikmod.

2. Ahora os descargáis los fuentes de BennuGD:
>> svn co https://svn.code.sf.net/p/bennugd/code/ bennugd

3. Dadle permisos de ejecución a los scripts del configure.
>> cd bennugd
>> sudo chmod +x core/configure modules/configure tools/moddesc/configure

4. Editad el fichero "build-win32-cross-opensuse.sh" y haced estos cambios:

PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig

CFLAGS ="-O2 -I${WIN32CROSS}/include -I${WIN32CROSS}/include/[b]openssl[/b] -I${WIN32CROSS}/include/SDL"

Cambiad los 3 "make" que están en core, modules y tools por esto: make SDL_LIBS='-lSDL'


5. Compilation time!! Ejecutad el script desde el directorio raíz de los fuentes.
>> ./build-win32-cross-opensuse.sh release

6. A disfrutar!! :D :D :D
SonicccpSonicccpMiembro
Publicado 9 year hace
Guauu, esta interesante, solo un apunte tonto. Esto se descarga en windows o en Linux, estoy mas interesado hacerlo en Linux, tengo el Ubuntu en un equipo viejo que uso para estas cosas.

Si es así, esta bien mirarlo y probar haber que se logra con tanto código, jeje.
Somos la joven guardia que va forjando el porvenir. Nos templó la miseria, sabremos vencer o morir. Noble es la causa de librar al hombre de su esclavitud. Quizá el caminó hay que regar, con sangre de la juventud.
IndiketIndiketAdministrador
Publicado 9 year hace
Esto es desde Ubuntu Sonicccp, para crear ejecutables y DLL para usarlo en Windows! ;)

Creo que lo he conseguido, pero aún está todo muy "en pinzas" y puede ser que muchas cosas no vayan... así que WARNING xDDD
F
FusekiMiembro Júnior
Publicado 9 year hace
Great work! I need to set up a KOS environment and compile the latest BennuGD for Dreamcast. I'm still working within Fenix (I'm working on two games, plus I've done many old DIV ports for theisozone.com), but the limitations of Fenix 0.84b are starting to show. Thank you for the tutorials!
IndiketIndiketAdministrador
Publicado 9 year hace
Hey Fuseki! Glad to see you again here, great news!! ^^

Thanks a lot hehe, and you're welcome! Its a bit sad that BennuGD community don't pay too much attention to this Dreamcast port, because I see great potential on it! For instance, I'll try to compine this Bennu version with OGG support from KOS. Sounds cool, huh? :D
F
FusekiMiembro Júnior
Publicado 9 year hace
Sounds great! Yes… the Dreamcast port of Bennu has been neglected. I have asked for help on the official forum, but no one answers. I have the engine for my next game finished (the game just needs new graphics and some tuning), and am considering porting it over to Bennu for the Dreamcast, as I'd like to have VMU saving support. I'll keep checking the page to see how you're doing with OGG support. I'm using s3m songs right now.
IndiketIndiketAdministrador
Publicado 9 year hace

Cita

Fuseki ha escrito:

Sounds great! Yes… the Dreamcast port of Bennu has been neglected. I have asked for help on the official forum, but no one answers. I have the engine for my next game finished (the game just needs new graphics and some tuning), and am considering porting it over to Bennu for the Dreamcast, as I'd like to have VMU saving support. I'll keep checking the page to see how you're doing with OGG support. I'm using s3m songs right now.


Hey Fuseki, how are you? Sorry for my delay, I've been working hard to bring to you a new release of the Bennu engine :) . I fixed the issues with OGG (I think), and added 50/60Hz selector as bonus.

As for VMU saving, if I recall correctly, there is support. You have to load the mod_dream module and use the functions "configtovmu" and "configfromvmu". Check source code at file mod_dream/vmu.c, its really simple to get it :D
F
FusekiMiembro Júnior
Publicado 8 year hace
No problem. I've got it all sorted, and even figured out that Fenix 0.84b is able to save to the VMU (using save() and load(), and the path '/vmu/a1/'... all thanks to Chui for the information!). There's an issue with the rand() function in BennuGD that makes my game do strange things (objects all end up in the same place and don't randomize), and I haven't sorted that out just yet, so I'm sticking to 0.84b for my current game, and will use BennuGD for my next game.
IndiketIndiketAdministrador
Publicado 8 year hace
I just state that I replied the rand issue in the other post! ;) . Thanks again for your support Fuseki!
F
FusekiMiembro Júnior
Publicado 8 year hace
I know this is old, but I have a quick question- do you have a Windows i386 binary of the version of BennuGD compiler that you've compiled for the Dreamcast? I've got things pretty well sorted with my new game in BennuGD and wish to test it on the Dreamcast. Thanks for any help you can offer!

EDIT: I figured it out. For anyone else wanting to try this, you must use the OLD compiler from BennuPack 2.2 to get this to work. The newest compiler doesn't seem to compile the code in a way that'll run on the Dreamcast, unless I'm doing something wrong.
Editado por Fuseki en 28-12-2016 00:52, 8 year hace
Ryo SuzukiRyo SuzukiAdministrador
Publicado 8 year hace
I am using the last BennuGD version released a few months ago and is working fine for the Dreamcast port that Indiket gives to us.

Is the last one, bgd-1.0.0-r335, and it haves some things updated and I recomend it to you.

All the Bennupacks are working with Dreamcast version too if I remember well, maybe you have some problems with the paths and you can't load the assets.

I am using a little custom and little SDK that I created with the last version of the compiler & interpreter and the last binary of the Dremcast that Indiket compiled days ago. I am working with it for Dreamcastnoid and my adventure-visual novel and everything is OK, if you want I could upload for you.
www.segasaturno.com/portal/files/posted_images/user_2_saturno_ryo.jpg
F
FusekiMiembro Júnior
Publicado 8 year hace
Sure, I'd love to give it a try. Thanks! It must be something I'm doing wrong, as the old compiler sees my paths just fine, but the newer one doesn't. In nullDC, I get some weird read errors, and a black screen on the Dreamcast itself.

I appreciate the help!
Ryo SuzukiRyo SuzukiAdministrador
Publicado 8 year hace
You have a MP with my custom SDK updated both BennuGD interpreter & compiler and the last version of the 1st_read.bin (Indiket-nov2016)

Yes, I know the problem with the paths in the last versions. But you can make it work for DC and PC with something like that:


   if (os_id == 5);  // Dreamcast
             load_fpg("/cd/shit.fpg");
       else // PC
             load_fpg("shit.fpg"); 
       end


And it gonna run fine. Let me know if you have some problem. Bye!
www.segasaturno.com/portal/files/posted_images/user_2_saturno_ryo.jpg
F
FusekiMiembro Júnior
Publicado 8 year hace
That'll save me from having to made a CD image everytime I want to test something as well. I use nullDC for testing the images, but I'd rather just run it on my PC and cut out a step. Thanks for the files!
Ryo SuzukiRyo SuzukiAdministrador
Publicado 8 year hace
Yes, you can test it easy in PC and later in Dreamcast or emulator.

I would recommend you to use Demul because is much better and it works more similar to a real hardware.

You're welcome.
www.segasaturno.com/portal/files/posted_images/user_2_saturno_ryo.jpg
F
FusekiMiembro Júnior
Publicado 8 year hace
I'll give Demul a try, although I think my PC might be a bit too old to run it. The version of nullDC I'm using is really old but it works with my lowly Intel graphics.

I had an issue with sound only coming out of one channel with the IDE and runtime you supplied to me, so I just went with the older version of the runtime that I was using. It plays and works fine with that version, so I;ll release it using that one for now. The game is finished and I'm preparing it for release as we speak.
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