SEGASaturno - Saturn, SEGA y Videojuegos


Dreamcast - Tutorial para programar en Dreamcast con la versión de BennuGD de Indiket



Ryo Suzuki [ 07 Febrero 2016, 09:30 PM ]
Título del mensajeTutorial para programar en Dreamcast con la versión de BennuGD de Indiket
[UPDATE Diciembre 2021]

Para demostrar que se pueden hacer hasta juegos comerciales, nada mejor que mi juego de Dreamcast:

https://www.dreamcastencounter.com

Si yo he podido hacerlo... ¡Tú también!

encuentro_no_casual_official_site_dreamcast

--

Esto ha pasado un poco desapercibido creo, pero me parece que tiene bastante importancia. El bueno de Indiket ha hecho un port hace unos meses de este lenguaje de programación para que pueda funcionar en la 128 bits de SEGA.

bennu_dreamcast

Empecemos por el principio, Bennu GD es un lenguaje de programación sencillo pero potente bajo licencia GNU encarado a hacer videojuegos. Tal vez os suene Fénix, o incluso el original DIV Games Studio, pues este Bennu Game Development podríamos decir que es el sucesor de de estos dos, hasta el punto que es capaz de correr código de los anteriores con unas mínimas modificaciones, si no me equivoco.

Bennu puede ejecutarse en múltiples plataformas y se centra en la modularidad y portabilidad y es quizás ideal para principiantes que quieran comenzar a hacer sus pinitos, aunque es bastante versátil en teoría y permitirá a los versados en la materia de la programación crear juegos más que decentes (de hecho hay juegos comerciales programados con él).

Bennu oficialmente es para Windows, Linux, GP2X Wiz, GP2X Caanoo y Dingux. Aunque seguramente os suena o habéis visto ports no oficiales a otras plataformas como PlayStation 2, Wii, Xbox, GP2X o (precisamente) la Dreamcast, por citar algunas.

explosive dinosaurs juego comercial bennu gd

Uno de los juegos comerciales hechos con Bennu


Y ahí es donde quería yo llegar. La consola de la espiral, que ya contaba con un port de Bennu que apareció hace unos años de la mano de los Colombian Developers. No estaba nada mal y era un gran esfuerzo dando otra posibilidad de desarrollo en la DC, pero tal vez necesitaba algunas mejoras...

Y así, en agosto de este año pasado el colega Indiket, uno de los más importantes miembros de la scene de la Dreamcast en los últimos años diría yo, ha creado su propia versión basada en la de los Colombians. Lo que ha hecho con su particular port es que lo compila sobre la librería SDL para la blanquita de Chui, os sea que le añade otra capa de lenguaje encima.

El resultado es que funciona bastante mejor amén de incorporar varias novedades que pueden ser imprescindibles y que no tenía la anterior versión de los Coldev (reproducir ogg, fuentes ttf, más velocidad, etc...).

Bueno, una vez realizada la introducción vamos al grano, que es lo que queréis. Quizás nadie en su sano juicio se atrevería a publicar un tutorial de un lenguaje de programación sin tener prácticamente ni idea... Pero no será la primera vez que lo hago como ya sabéis, ni digo que vaya a ser la última xD. Así que, allá voy.

sorr_inicio

Sí, SOR Remake fue programado con este lenguaje. Una lástima lo que hizo SEGA...



TUTORIAL BENNU EN DREAMCAST


Siendo justos diré que toqué DIV Games Studio cuando salió hace años. ¿Alguno recordáis la revista oficial con CDROM que salía en los kioskos? Nunca conseguí hacer nada del otro jueves, pero por lo menos trasteé un poco con la programación con la que creo que no tonteaba desde los tiempos del vetusto BASIC de los microordenadores.
Así que podríamos decir que no he empezado desde cero totalmente con Bennu, algunas cosas me sonaban y algunos os sentiréis identificados si digo que sin tener casi ni idea de programación he logrado ya hacer algunas cosillas en el tiempo que llevo cacharreando.

Bennu tiene su compilador y su intérprete. Es decir, y para hacerlo fácil, nosotros vamos a trabajar con documentos de texto normales y corrientes, escribiremos nuestro código en este lenguaje y un programa se encargará de compilarlo y luego otro de interpretarlo para ejecutar el juego o lo que sea que logremos hacer.

Tal vez lo estás adivinando ya, nosotros trabajaremos con el Bennu para PC (ya sea para Windows o Linux) y luego básicamente el programa compilado seremos capaz de correrlo también en la Dreamcast gracias al port de Indi.

Esa es básicamente la idea. Nosotros podremos hacer la pruebas que queramos y testear ejemplos, intentar hacer cosas propias y demás en el Bennu de nuestro ordenador. Es cómodo y sencillo, programar, compilar y ejecutar para verificar el resultado y luego ya nos podemos encargar de ver cómo funciona ese mismo programa de Bennu en la consola Dreamcast, ya sea por medio del emulador de la misma o incluso en hardware real.

Así que vamos a empezar, vamos al grano. Tal vez nos descargaríamos Bennu para Windows o Linux en su página oficial. Esto sería a grandes rasgos el compilador y el intérprete para que lo corramos por medio de linea de comandos desde nuestro sistema operativo. Sin embargo, como intuyo que sois novatos como yo si estáis leyendo esto, vamos a hacer uso de algo que nos facilite un poco las cosas, algo así como un SDK o IDE para Bennu.

Como un integrated development environment (de ahí IDE) o entorno de desarrollo integrado que tiene todas las herramientas necesarias desde un instalador para allanarnos un poco el camino y hacer menos tedioso todo el proceso de compilar y ejecutar nuestros primeros programas.

Lo más cercano que hay en Bennu a eso que yo sepa son los Bennu Packs en este caso para Windows (te funcionará también en Linux con el Wine, si lo prefieres) de los amigos que portaron por primera vez Bennu a la DC, los grandes ColombiansDEV.

Ahí veréis que la última versión del pack es la 2.6 que promete cosas interesantes como:

Citar:
Bennupack include more 150 games with source code, docs, tutorials, and tools for Game Development. Bennu official web site: https://www.bennugd.org/

Fantástico, justo lo que necesitamos. Sin embargo yo os recomiendo que bajéis ésta (la 2.2.) algo más antigua pero que nos va a funcionar bien. A mi la última versión me hace cosas raras como que no se me ven las imágenes y alguna historia más cuando luego paso a Dreamcast :S

Instalamos este pack, el 2.2, que nos va a hacer las veces de IDE o SDK, en nuestro Windows. Yo lo he instalado para este tutorial en concreto en Windows 7 versión 64 bits, pero creo que no hay ningún problema si lo instalaseis en XP (en este caso lo he probado), 8 o incluso 10 en versiones 32 o 64 bits a no ser que alguno me digáis lo contrario. Este pack también se puede instalar al menos en Ubuntu Linux y derivadas a través de Wine y he comprobado que funciona bien (por ejemplo en el popular Lubuntu).

bennu_pack

A la hora de realizar la instalación es recomendable que no le cambies la ruta que os propone, en este caso c:\devBennu. Más que nada porque muchos scripts de compilado y demás creo que apuntan a esa ruta y en algunas más largas o con subdirectorios podrían dar problemas, así que más vale prevenir que curar y dejarlo en la carpeta por defecto en el disco duro que os detecte como raíz.

Una vez acabada la instalación podréis comprobar que tenemos una carpeta en nuestro menú de Inicio llamada Bennu Pack con todo lo que vamos a necesitar para programar con este lenguaje en PC.

La madre del cordero y lo que más nos interesa ahora al principio es el PRG Editor (que no es otra cosa que el Notepad ++ con las rutas y shortcuts para que compile y ejecute lo que hagamos en Bennu)

Cuando lo abramos por primera vez es posible que nos aparezca el plugin manager de este programa sugiriendo que actualicemos. No es necesario, mejor lo cancelamos.

El caso es que ya lo tenemos todo listo. Ha sido tan fácil como instalar este Bennu Pack y abrir este PRG Editor y vamos a comenzar con un pequeño programa para abrir el fuego.

Seleccionamos File--->New en el PRG Edtior y nos disponemos a crear nuestro primer y sencillo ejemplo, que será algo así:

Código: [Ocultar] [Seleccionar]
import "mod_video"
import "mod_text"


process Main()

begin


set_mode(320,240,16);


write(0,40,69,0,"Hola PC desde Bennu Game Development!");

write(0,40,100,0,":-)");

write(0,30,200,0,"By Ryo -Alfons- de wwww.segasaturno.com");


loop
frame;
end

end


Copiamos este código de aquí, lo pegamos en el archivo nuevo que acabamos de crear en el PRG Editor y ya está hecho, vamos a guardar. Guardamos como o Save as y le decimos que lo guarde en el Escritorio por ejemplo. Mejor aún, creamos una carpeta que se llame Bennu Dreamcast en el escritorio y a este archivo con nuestro primer código que acabamos de pegar le llamamos main.prg y lo guardamos en esa nueva carpeta para tenerlo todo centralizado, en /Bennu Dreamcast.

Casi todos los programas principales en Bennu se les suele llamar así (main), también la extensión prg es de Bennu pero es realmente un archivo de texto (o .txt en Windows) que podemos abrir con cualquier editor de ídem aunque es más cómodo hacerlo con este Notepad ++ (rebautizado aquí como PRG Editor).

Fijaos como se ve el código de nuestro main.prg con este programa que hemos instalado con el Bennu Pack:

hola_mundo_hello_world_benn

Mucho más organizado y visualmente más fácil de reconocer todo ya que colorea según que cosas para que lo identifiquemos todo mejor (es lo que hacen casi todos los editores orientados a la programación).

Pero vamos a lo realmente interesante. Ya hemos creado y guardado nuestro primer código con el típico "Hello World" para romper el hielo en un lenguaje de programación y ahora lo que vamos a hacer es compilarlo y ejecutarlo. Para ello algo tan fácil como ir a la opción Run Videogame en el Notepad ++ que tenemos abierto o apretar directamente F6. Esto es lo que veremos:

bennugd_dreamcast

Ya tenemos nuestro primer programa funcionando. Lo que realmente ha pasado es que el Notepad ++ ha llamado al compilador y ha compilado nuestro modesto código. Luego también ha llamado al intérprete que se ha encargado de ejecutar nuestro código ya compilado y por eso lo tenemos corriendo en pantalla.

Esto es la sencillez y comodidad que nos brinda usar un IDE como el Bennu Pack, porque si no tendríamos que haber hecho estas operaciones a mano desde la línea de comandos o haber creado un batch file o algo por el estilo, sin embargo de esta forma nos facilita la tarea, ¿no creéis?

Si os fijáis en el escritorio, en la carpeta Bennu Dreamcast que creamos ha aparecido lo que podría ser un misterioso archivo llamado main.dcb que, sí habéis acertado de nuevo, es nuestro main.prg compilado y el que acabamos de ver ejecutarse en pantalla.


PERO, ¿QUÉ PASA CON DREAMCAST?

Sí, esto se me está haciendo un poco largo por más que intento ir al meollo del asunto. Luego os comento el código si es necesario que aunque no tiene mucho misterio es bueno tener las cosas claras cuando estamos empezando.

Vale, ya tenemos nuestro primer programa pintando un mensaje en pantalla funcionando en el Bennu de PC, pero lo que realmente queríamos quizás es correrlo en la Dreamcast y tratar de empezar a programar cosas para esta consola (o incluso tratar de portar juegos de Bennu que hay en PC o en otras plataformas).

Así que vamos a descargar el port del gran Indiket. Aquí tenéis el enlace de cuando lo hizo público en la web hermana Dreamcast.es, pero os pido que no os detengáis ahora leyendo demasiado este interesante link y bajadlo aquí directamente.

Se trata de la revision 090715 y cuando desccomprimáis el archivo veréis bastantes cosas que os pueden parecer un auténtico galimatías . Id a la carpeta BennuGD-KOS2 y copiad el archivo que nos interesa que no es otro que el 1ST_READ.bin a la carpeta de vuestro escritorio Bennu Dreamcast , donde tenemos nuestros recientes y modestos main.prg original y el main.dcb recién compilado.

Seguro que te has vuelto a adelantar a la jugada y has intuido que el 1ST_READ.bin de Indi es el intérprete de Dreamcast de Bennu. En la consola del espiral no debemos compilar, simplemente debemos ejecutar con el intérprete de la 128 bits de SEGA el main.dcb que acabamos de parir. Para ello, lo único que tenemos que hacer es crear un CD autoboot que entienda y ejecute nuestra blanquita con el 1ST_READ.bin, que es el binario-interprete de Bennu que nos ejecutará nuestro main.dcb en la malograda consola de SEGA.

Pero, permitidme que modifique un poco nuestro humilde código ahora que lo vamos a correr en una de nuestras consolas preferidas. Vamos a añadirle un condicional con estas líneas:

Código: [Ocultar] [Seleccionar]
if (os_id == 5)
write(0,40,69,0,"Hola DC desde Bennu Game Development!");
else
write(0,40,69,0,"Hola PC desde Bennu Game Development!");
end

Como verás, lo que estamos metiéndole es un IF para que escriba una cosa u otra dependiendo si se va a ejecutar en PC o en la última consola de SEGA. Nuestro código completo, por lo tanto, quedará así:

Código: [Ocultar] [Seleccionar]
import "mod_video"
import "mod_text"


process Main()

begin


set_mode(320,240,16);

if (os_id == 5)
write(0,40,69,0,"Hola DC desde Bennu Game Development!");
else
write(0,40,69,0,"Hola PC desde Bennu Game Development!");
end

write(0,40,100,0,":-)");

write(0,30,200,0,"By Ryo -Alfons- de wwww.segasaturno.com");


loop
frame;
end

end


Guardamos los cambios y volvemos a compilar y ejecutar con F6 o con Run Videogame. Aparentemente no habrá habido cambios ya que en PC lo vamos a ver igual que estaba al ejecutarse tal y como le hemos programado que haga, aunque nuestro main.dcb ha sido de nuevo compilado y actualizado con el condicional que le hemos puesto para que en nuestra DC muestre la otra frase que hemos añadido cuando la detecte.


CREANDO EL AUTOBOOT PARA DREAMCAST

Ha llegado el momento de crear nuestro CD para probar nuestro primer programa de Bennu, pero en esta ocasión en la propia Dreamcast. Ya tenemos los archivos necesarios en nuestra carpeta Bennu Dreamcast (1ST_READ.bin y main.dcb. O dicho de otro modo, el binario-ejecutable y nuestro código ya compilado) por lo que vamos a recurrir a BootDreams para generar una imagen de CDRom que pueda correr la consola.

¿Dónde puedo bajar el BootDreams? Pues en la web que tiene más descargas de Dreamcast que no es otra que Dreamcast.es, la versión 1.0.6c la tenéis disponible en este enlace.

Lo instalamos y lo ejecutamos. Ahora lo configuramos de la siguiente forma: pulsamos en el botón del viejo y entrañable Discjuggler para que nos cree una imagen con este formato, en Selfboot Folder navegamos a nuestro directorio Bennu Dreamcast del escritorio donde tenemos nuestros archivos listos, CD Label dejadlo por defecto -yo como soy muy pesao pongo SSATURNO- y en Disc Format voy a poner Data/Data por si acaso ya que hay algunas consolas muy concretas que solo leen este tipo de autoarranque.

bootdreams_dreamcast_1454868003_418707

Nos pregunta si estamos seguros que vamos a crear una imagen autoboot de formato .cdi de Discjuggler, le decimos que sí.

Luego nos saldrá otro mensaje que acojona en principio que nos dice el binario está unscrambled que si queremos scramblearlo, le decimos también que sí.

Para más pegas nos recuerda que nos falta una IP.BIN, que se nos ha olvidado, y te da la opción de crear una. Le decimos, por supuesto, que sí también (estos dos últimos pasos ya no tendremos que hacerlos las siguientes veces que trabajemos en ese mismo directorio).

Correcto, ahora ya el Bootdreams nos pide que donde guardamos el archivo .cdi de Discjuggler que va a crear con nuestro código de Bennu ejecutable en Dreamcast. Yo lo he dejado por defecto que pone el mismo nombre el CD Label, por lo tanto me ha quedado SSATURNO.cdi y lo he guardado en el escritorio para tenerlo a mano.

Fantástico, BootDreams nos avisa que ha finalizado y ha creado correctamente la imagen de CD autoarrancable.

Ya podemos al fin probarla en nuestro emulador preferido. Yo voy a hacer uso del Null DC, la última versión oficial 104_r136, en concreto. Lo tendréis ya, pero podéis bajarlo aquí si lo estimáis oportuno. Necesitáis la BIOS de la DC y demás, pero eso no voy a explicarlo aquí ya que estoy seguro que todos habéis corrido alguna vez este u otros emus de la Dreamcast.

Abrimos el NullDC, vamos a File->Normal Boot y seleccionamos la imagen que acabamos de crear: SSATURNO.cdi

El emulador arranca y aquí tenemos el resultado pertinente:

bennu bennu gd sega dreamcast port programacion hello world sample ejemplo iniciacion lenguaje


Como comprobaréis ha funcionado además el condicional que le hemos metido ya que ahora pone DC en lugar de PC al haber detectado que corre sobre ese hardware ahora.

Podéis probarlo en hardware real, ya que os aseguro que en la propia Dreamcast funcionará también. Si queréis gastar un CD para tan magna obra, adelante Fuera de coñas, quien tenga disco duro, adaptador de SD o lo que sea puede certificar si lo desea que funcione bien en la propia máquina. Aunque los emuladores suelen ser bastante fiables a día de hoy, no está de más ir probando en la consola si vamos a hacer cosas más elaboradas para evitarnos luego sorpresas desagradables.

Yo personalmente uso el BBA para lanzar a la Dreamcast y probarlo en hard real, más adelante si me animo os explicaré cómo se hace.


¿Y AHORA QUÉ HAGO?

Pues es el momento de empezar a investigar sobre el propio lenguaje Bennu y comenzar a estudiar ejemplos, comandos, procesos y demás para ver cómo funciona todo y animarse a hacer nuestros pequeños proyectos.

Ahora ya sabemos que en principio lo que corramos en el PC con Bennu podemos ejecutarlo también luego en Dreamcast. Eso sí, ya os imaginaréis que en la DC no va a funcionar como en un PC pasado de vueltas de última generación que tengáis hoy en día en casa. La Dreamcast no podéis ponerla a resoluciones muy altas para que todo vaya fino, ni podéis hacer mucho uso de RAM y demás historias, ya que recordad que se trata de un hardware del 98.

Además como dije al principio este Bennu está corriendo sobre SDL, así que algo de rendimiento también tiene que perder, por no decir que el port puede tener todavía algunos pequeños bugs o cosas concretas sin implementar (eso a Indiket )

Sin embargo, creo que se pueden hacer juegos 2D de bastante calidad y dignos que corran en la 128 bits de SEGA sin demasiados problemas. Aunque no soy el más indicado para corroborarlo sospecho que es así, por el tiempo que llevo tocándolo y las pruebas que he hecho en la propia consola.

En resumen. BennuGD para Dreamcast, con este port de Indiket en concreto, es con casi toda seguridad la forma más sencilla de programar en Dreamcast para las personas que no tienen mucha idea y se están iniciando en este mundillo. Además se pueden conseguir resultados bastante buenos con tiempo y dedicación.

Para continuar investigando, podéis visitar la web oficial de Bennu y su documentación. De la misma forma podéis echar un ojo a alguno de los tutoriales que hay en la web y/o probar y estudiar los ejemplos que encontraréis sin demasiada dificultad.

Si os gusta el tema quizás pueda continuar haciendo tutoriales para profundizar un poco más. Cosas como manejo de sprites y scrolls, reproducción de música, etc.

Un saludo a todos y recordad... Dreamcast nunca muere!!



-Ryo "Alfonso" Suzuki


P.D. Update: Una versión para Dreamcast algo más actualizada (diciembre de 2017) que colgué en el hilo:
Descarga


KeiDash [ 07 Febrero 2016, 10:56 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Pues mira, esto es una gran noticia para mi ya que estoaba buscando justamente información de desarrollo en las consolas de SEGA, esto es todo un lujo, primero el Jo Engine y ahora este pedazo de manual.

Mil gracias.


nem [ 08 Febrero 2016, 12:30 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Dificil para mi programaicon esa clase el master era fatal.. .. alguna vez trate a aprender c++ y lo mas que logre hacer es aprender a compilar el emuladro pcsx2 en visual studio.. de alli en mas soy un completo noop. pero bien saber el dreamcast todavia tiene potencia de sobra para cosas mas nuevas...

Seria interesante hacer un port a este lenguaje de algun programa tipo media como VLC o MEDIA PLAYER CLASSIC.. digo ya serian cosas mayores pero habra mas sencillos, me gustaria ver un progama para correrr en condiciones archivos de video..


x-crim [ 08 Febrero 2016, 11:19 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
justo lo que necesitaba! gracias!


darumo [ 08 Febrero 2016, 01:32 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Siempre he estado con la espina de probar Bennu (tuve mi época con DivGameStudio y tanto Fenix como Bennu se basan en el), pero siempre me he topado con que no encuentro un entorno para editar el lenguaje y buenos programas para el tema de sus formatos heredados de DivGamesStudio, sobre todo bajo Linux (es el S.O. en el que mas tiempo estoy con diferencia), en Windows había algún IDE medio aceptable cuando lo probé (con algún problema molesto), si tenéis alguno recomendable soy todo oídos.


Ryo Suzuki [ 09 Febrero 2016, 04:53 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
KeiDash escribió: [Ver mensaje]
Pues mira, esto es una gran noticia para mi ya que estoaba buscando justamente información de desarrollo en las consolas de SEGA, esto es todo un lujo, primero el Jo Engine y ahora este pedazo de manual.

Mil gracias.


De nada, hombre. A ver si te animas también, a mi la verdad es que me parece más accesible y fácil que el Jo Engine con el que también andamos haciendo pruebas...

nem escribió: [Ver mensaje]
Seria interesante hacer un port a este lenguaje de algun programa tipo media como VLC o MEDIA PLAYER CLASSIC.. digo ya serian cosas mayores pero habra mas sencillos, me gustaria ver un progama para correrr en condiciones archivos de video..


Buff, con este Bennu creo que sería complicado. Más que nada porque eso consume muchos recursos y no creo que fuese lo más adecuado ya que estamos en SDL/KOS, y luego Bennu, al menos eso creo...

Algún compañero te lo podrá confirmar, pero creo que con la Dreamcast ya se hizo todo lo que se pudo prácticamente en cuanto a reproductores de audio/video para lo que puede dar la máquina.

Aún así, ahora que lo dices... el port de los Colombians me suena que manejaba un formato de video para este Bennu y creo que funcionase bastante bien. No sé si eso está implementado, es algo que debería contestar quizás Indiket...

x-crim escribió: [Ver mensaje]
justo lo que necesitaba! gracias!


¿Sí? ¿Para qué? No nos dejes a medias...

darumo escribió: [Ver mensaje]
Siempre he estado con la espina de probar Bennu (tuve mi época con DivGameStudio y tanto Fenix como Bennu se basan en el), pero siempre me he topado con que no encuentro un entorno para editar el lenguaje y buenos programas para el tema de sus formatos heredados de DivGamesStudio, sobre todo bajo Linux (es el S.O. en el que mas tiempo estoy con diferencia), en Windows había algún IDE medio aceptable cuando lo probé (con algún problema molesto), si tenéis alguno recomendable soy todo oídos.


Hombre darumo! Me alegra oir que hiciste tus pinitos con el DIV como yo. A ver si te animas a hacer algo con este Bennu para la DC también.

Lo que pides de un IDE para Linux, me suena que hay algo que leí hace meses en los foros oficiales:

http://forum.bennugd.org/

Si lo encuentro te lo paso. O si puedes buscarlo tú mismo o preguntar, adelante... (estoy casi seguro que algo hay, aunque también que igual tú eres capaz de hacerte algún batch que llame a bgdi.exe y bgdi.exe en tu editor favorito de Ubuntu o la distro que uses ahora)

Por otro lado el Bennu Pack corriendo en Linux con Wine tampoco da quebraderos de cabeza por lo que he podido ver...

Seguiré con alguna otra lección de las mías. A ver si os apuntáis a probar cosas con este lenguaje que es muy accesible.


zeros [ 11 Febrero 2016, 07:43 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Como te curras las clases Ryo!! muy buena noticia también ;)


Ryo Suzuki [ 16 Febrero 2016, 12:00 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Hombre! Gracias, zeros. Tengo amigos docentes y eso se puede pegar, ¿eh?

Seguiré con los tutoriales de las cosas básicas para quien se anime a empezar, solo que estos días ando sin tiempo para ponerme a escribir algo medio largo, con capturas de pantalla, etc...


x-crim [ 19 Febrero 2016, 08:15 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]


x-crim escribió: [Ver mensaje]
justo lo que necesitaba! gracias!


¿Sí? ¿Para qué? No nos dejes a medias...


Este verano quiero meterme de lleno en programar para dreamcast, pero no quiero dar palos de ciego. Es algo que me motiva bastante. Los únicos juegos que he programado ha sido para navegador xD y bastante "chorra"

https://dl.dropboxusercontent.com/u/30145365/nutmeg/index.html <- aquí el primer juego que saqué haha la bso os debe sonar xDD


Noobsaibot73 [ 20 Junio 2017, 05:10 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Solo por preguntar... El tema en Bennu para la creación de juegos... ¿Es como en Div Games Studio? Hace años lo tuve en mis manos y lo dejé escapar, cuando habría podido crear algún juego decente... Y ahora que vuelvo a ver el tema, me interesa, pero solo si es Bennu, trabaja igual que Div Games.


Un saludo a todos.


Ryo Suzuki [ 07 Agosto 2017, 01:37 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Disculpa Noobsaibot73, no había visto el mensaje.

Sí, se puede decir que sí, que trabaja de forma muy similar a DIV Games Studio.

Se puede entender como la continuación de DIV y de Fenix. Ya que BennuGD es un fork (como una variante independiente) de Fenix y este lo era de DIV por lo tanto no tendrías que tener problema.

Yo mismo he adaptado varios códigos de Fenix a BennuGD y es relativamente simple. Sin ir más lejos el Dreamcastnoid que hice para la DCJAM2016 salió de un sample muy sencillo de Fenix que estudié y potencié hasta convertirlo en un juego modesto con cara y ojos...

Indiket cuando hizo el update del port también porteo algún juego de Fenix y comentaba que era sencillo. De DIV yo alguna cosa simple he probado y funciona bien, solo hay que cambiar unas chorraditas típicas.

A ver si os pongo por aquí algo más de este lenguaje orientado a Dreamcast. Con la tontería he ido aprendiendo y dándome ostias a base de probar


KeiDash [ 04 Octobre 2017, 07:03 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo muchas gracias por el tutorial. he estado buscando información y me gustaría hacerte unas preguntas con respecto al tema del desarrollo para DC.

No si mis preguntas son incorrectas, pero bueno, allá va..

¿Qué diferencia hay entre desarrollar con BennuGC y KOS?


Ryo Suzuki [ 04 Octobre 2017, 09:32 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
De nada, a ver si lo amplio porque solo es lo básico para comenzar.

Lo que preguntas no es incorrecto, yo me pregunté lo mismo.

Si te refieres en cuanto a Dreamcast en concreto, la diferencia es que BennuGD al igual que su versión original de PC corre usando el SDL, por lo tanto por eso fue relativamente fácil digamos ser portado a la Dreamcast ya que como sabrás SDL está para DC gracias a Chui.

Y ahí esta el meollo, SDL de Chui corre en realidad bajo KallistiOS. Para que me entiendas es como una capa de lenguaje, como si fuese un traductor adapta las ordenes de SDL a KOS.

Por lo tanto BennuGD de Dreamcast corre bajo dos capas, bajo la de SDL y luego inevitablemente KOS.

La diferencia sería que si programas en KOS te libras directamente de esas dos capas con lo tendrías más rendimiento del hardware de la máquina.

¿Por qué todo el mundo no codea con KOS directamente te preguntarás supongo entonces? Pues por ejemplo porque SDL suele ser bastante más fácil al estar todo orientado a cosas simples como su nombre indica y además es compatible con muchos hardwares por lo tanto si programases con SDL puedes tener tu código corriendo en multiples plataformas relativamente fácil.

¿Y por qué programar con BennuGD si es una capa más? Pues porque creo que es un lenguaje más fácil y totalmente orientado a hacer videojuegos. Al igual que SDL, en BennuGD lo que hagas podría rular en muchos sistemas (Dreamcast, PC, Android, PlayStation 2, Linux, Mac, Caanoo, GP2X Wiz, etc...)

También esta el tema que para comenzar BennuGD sería el que te da más facilidad. Porque para configurar el entorno es realmente sencillo, te paso un zip y ya lo tienes ya puedes compilar y ejecutar.

KOS y SDL es más complicado configurarte el entorno para comenzar, cosa que para novatos como yo ya te echa mucho para atras.

Eso más en cuanto a Dreamcast. Si te refieres más en general creo que SDL y Bennu tienen la ventaje de ser muy portable como decía y KOS supongo que habrá que hacer más ajustes para que vaya a otras plataformas y creo que así "fácil" solo iría de alguna forma en PC porque creo que se parece mucho a C.

Espero no haber metido la pata. Si tienes más dudas te trato de echar un cable. Saludos.


KeiDash [ 05 Octobre 2017, 11:12 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Bueno a ver si he entendido.

Por una lado, está KallistiOS que es la base del desarrollo y por encima, para hacer la codificación más sencilla está BennuGD que trabaja con el SDL (Software Development Layer?) de Chui ¿Es correcto?

He visto como se debe configurar el KallistiOS y la verdad es que sí, tiene su complejidad.

Entiendo que por lo que comentas, trabajar directamente con KallistiOS da más rendimiento en el producto final que trabajar con el SDL directamente, pero ¿Es mucha diferencia?

¿Se puede decir que BennuGD es un framework?

Saludos,


Ryo Suzuki [ 06 Octobre 2017, 12:59 AM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Kos es el estándar de desarrollo Open Source en DC, para que me entiendas.

Más que más sencilla quizás es que SDL te abre muchas puertas para portar cosas que están en ese lenguaje, entre ellas Bennu.

Trabajar directamente con Kos te da el máximo rendimiento, quizás hasta cercano a hacerlo con el Katana oficial de sega. (También te digo que ese rendimiento si eres novato quizás no se lo saques)

Creo que hay gran diferencia, no sabría decirte %


BennuGD yo no lo consideraría un framework. Es un lenguaje de programación sencillo pensado para hacer videojuegos basado en C y Pascal.

Espero no estar metiendo la pata porque yo no se demasiado....


KeiDash [ 06 Octobre 2017, 08:42 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Bueno no te preocupes no pasa nada si te equivocas en algo. Todavía no logro entender bien el concepto de que es que cosa, aunque todo sea para programar. Voy a ver si puedo profundizar más en el asunto.

Gracias igualmente tio :-D


KeiDash [ 19 Octobre 2017, 10:15 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Pues hablando con Ryo, le comentaba que me está dando errores el juego cuando lo ejecuto en un emulador, en este caso nullDC (de momento no consigo hacer funcionar el demul)

En PC, me funciona correctamente. Con el Bootdreams creo la imagen .cdi y en principio parece todo ok, pero esto está petando y desconozco el motivo.

Adjunto código, pero como es mucho, lo comparto desde aquí


Ryo Suzuki [ 20 Octobre 2017, 12:40 AM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
La ruta en Dreamcast es /cd/ eso es la raíz.

En emulador trata de configurarlo para que te corra los juegos comerciales a un framerate correcto y si puedes familiarízate con cómo funciona el emu y demás.

El emulador más fiel es Demul pero el NullDC tampoco hay que descartarlo porque tenemos consola y podemos ver qué está pasando en nuestro programa gracias al mod say.

Cualquier cosa no dudes en preguntar por aquí.


P.D: Me gusta cómo escribes el código. Mucho más estructurado y ordenado, se nota que tienes experiencia en el tema. No como yo, que funcionar funciona pero si ves el código


KeiDash [ 25 Octobre 2017, 05:28 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Puess con respecto al tema emuladores, he probado todo tipo de configuración y versiónes y no hay manera.

nullDC me ejecuta muy lento los homebrew (da igual el que sea) y los juegos comerciales los ejecuta perfectamente.
demul me ejecuta juegos comerciales a la perfección, pero ningún homebrew, se queda el emulador parado (que no colgado) justos despues de las letras de SEGA que salen despues del logo de Dremcast, y de ahí no avanza..

Creo que puede ser cosa de mi PC, algo de la gráfica. Estoy por ver si puedo ejecutar alguno en el portátil que tiene Ubuntu, pero me es incómodo. ¿Podrías pasarme una copia de tu demul por privado?

Quizás me falta algo pero vamos, que he probado de todo.

Con lo del código, muchas gracias. Con respecto a tu código, no me dejes verlo porque soy super pulcro con eso jajajajajajaja


Ryo Suzuki [ 26 Octobre 2017, 11:11 AM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Es realmente raro. Si te van los comerciales bien tendrían que irte los indies también.

Mi Demul no tiene nada especial, es la última versión:

http://demul.emulation64.com/downloads/

Con la BIOS y ya está.

Con Linux la emulación en Dreamcast no es muy recomendable yo diría. Creo que va bajo Wine el NullDC y poca cosa más (estaba el Lxdream, pero no es para tirar cohetes).

¿Qué gráfica tienes? ¿Es Ati o NVDIA? Creo recordar que hay una configuración para definir eso en Demul, echale un ojo si puedes...


KeiDash [ 26 Octobre 2017, 07:52 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Pues una gráfica sencilla, una Nvidia GeForce 210, nada del otro mundo. La cosa es que los juegos oficiales los ejecuta bien...


Ryo Suzuki [ 28 Octobre 2017, 11:08 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Es raro. A las malas hago un pequeño tutorial de cómo configurar el Demul.

¿Te va mal con homebrew solo de BennuGD o en general (KOS y demás?)

No tiene ningún sentido en principio...

KeiDash escribió: [Ver mensaje]

Con lo del código, muchas gracias. Con respecto a tu código, no me dejes verlo porque soy super pulcro con eso jajajajajajaja


Indiket ha visto algo y todavía tiene pesadillas


KeiDash [ 31 Octobre 2017, 11:56 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Pues el homebrew de BennuGD es el que he probado, todo descargado de aquí. La verdad es que no se. Le he dejado una demo a un amigo que tiene una DC a ver si ahí va bien, para descartar, por que si va mal también en la Dreamcast original, algo está fallando. Lo curioso es que ejecutado en PC va perfecto.


Ryo Suzuki [ 31 Octobre 2017, 06:19 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Hombre, detalle importante que omitías

¿Estás usando el binario que te pasé de Indiket o usas el binario de los Colombians?

Es que el port de los colombians es bastante más lento (tanto a la hora de cargar los assets como para los fps que arroja) e igual es de eso...


P.D: Prueba por ejemplo el Dreamcastnoid que tienes en nuestra web, que te tiene que ir rápido: http://www.segasaturno.com/portal/dreamcastnoid-df133.html


KeiDash [ 06 Noviembre 2017, 08:25 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Uso la que tu me enviaste aunque creo que tiene ligeras diferencias, por ejemplo, la funcion memory_free() y memory_total() no me funciona con el BIN que me pasaste, no se cual es el motivo.

Si me he dado cuenta de una cosa, he desactivado el audio en el emulador (nullDC) y ahora va bien con el homebrew..flipo


Ryo Suzuki [ 17 Noviembre 2017, 02:22 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Pídele por privado a Indiket el binario de la última versión, que no lo tengo yo aquí a mano. Él arreglo ese bug y ahora lo de ver la memoria ya funciona.

Lo del emu es raro. Sí que es verdad que sin sonido se debería notar algo la velocidad, pero no tanto.

De todas formas yo te recomiendo que uses Demul siempre ya que va mejor y es más fiel (NullDC por si tienes algún bug y quieres ver la consola para ver que te dicen los says que metas para detectarlo).

Un saludo!


KeiDash [ 20 Noviembre 2017, 11:46 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Duda con el PAD. Que teclas del teclado van asociadas a los botones de la Dreamcast??

_LEFT, _RIGHT, _UP, _DOWN y _START no tengo problema, pero no se con qué se mapean los botones A, B, X, Y , L y R

Citar:
Editado


Ya me han dicho como encontrar los botones. Me han indicado en los foros de bennuGD que con el siguiente código, puedo averiguar que botónes están asociados a las constantes de bennuGD

Código: [Ocultar] [Seleccionar]
write_int(0,0,0,0,&scan_code);

loop
frame;
end



Ryo Suzuki [ 17 Diciembre 2017, 08:24 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Bien hecho, ya postearemos por aquí de todos modos las equivalencias de los controles del mando de la Dreamcast.

Ahora os voy a escribir un pequeño tutorial de cómo usar música en BennuGD orientado a la Dreamcast. Imaginemos que queremos una banda sonora bonita que vaya sonando durante nuestro juego.

Quería hablaros antes de como usar efectos de sonido, imágenes y otras cosas pero como al amigo KeiDash le puede venir bien esto para implementarlo en su homebrew llamado 'Beat Tendency' pues le escribo aquí un pequeño tutorial que le puede valer a todo el mundo.

Me voy a centrar en el uso de audio tracks. Como sabéis la Dreamcast puede reproducir pistas de audio ya sea en CDROM o en GDROM, el formato estándar de audio de los compact disc de toda la vida.


MÚSICA EN BENNUGD DE DREAMCAST (Y EN GENERAL ME TEMO QUE EN HOMEBREW DE DC)

En el BennuGD de Dreamcast por lo que he ido probando yo podríamos usar tres formatos para reproducir música para el juego o proyecto homebrew que sea que tratemos de desarrollar. El ya mencionado CDDA, también podríamos usar archivos ligeros en plan secuenciadores de tipo tracker y no olvidemos que podemos tirar de archivos de audio con compresión y que la consola descomprimiría 'on the fly', como puede ser el conocido .ogg.

Todos tienen sus pros y sus contras. Por ejemplo, archivos hechos con tracker -por citar algunos con extensión .mod- suelen ser ligeros y los cargas en el buffer de audio de la consola pesando muy poco y puedes reproducirlos al instante sin que tengan mucha exigencia para la máquina porque usan sus instrumentos o samples y para la CPU no suponen casi nada de esfuerzo consiguiendo una muy buena calidad y un particular feeling algo retro si están bien compuestos.

Archivos con compresión .ogg son buenos porque como los .mp3 y otros formatos con gran calidad y a la vez buena compresión pesan poco, dan buena performance y podemos exportar cualquier cosa a estos formatos sin tener que componer con trackers y similares. Lo malo es que le exigen a la máquina guardarse un hilo de ejecución podríamos decir para ir descomprimiendo el archivo y reproduciéndolo con un buffer determinado, a una máquina como la Dreamcast que es del 98 le cuesta (recordáis el reproductor mp3 que solo podía hacer eso?)

Y por último, la música que me voy a centrar es la de pistas de audio directamente o CDDA. Lo bueno es que es la calidad máxima que pueda existir en DC podríamos decir (sistema PCM con una frecuencia de muestreo de 44 100 muestras por segundo y con dos canales, 16 bits, etc). Además no solo eso, ya que la Dreamcast ni se despeina reproduciendo esta música. Para ella es que como el que oye llover, es trabajo del lector y no le consume ningún recurso estar reproduciendo una canción desde su lector que sea una audio track.

No todo podía ser tan bonito, como sabéis. Uno de los problemas es el peso. Una canción depende de la duración se puede ir a los 60 megas o más. Aquí no existe compresión así que segundos es peso, y peso gordo. Los juegos comerciales en los que su música era CDDA si os acordáis normalmente no podían contar con muchos temas, una decena o algo así en, por citar algunos, juegos de coches y similares.

Otro de los problemas del CDDA es que exige total y completa dedicación del lector de la consola. Si estamos reproduciendo una pista de audio no podemos leer nada de datos, el lector se puede ocupar solo de la reproducción de la pista. Esto quiere decir que si necesitamos cargar algún gráfico, sonido o recurso que tengamos que usar lo tendremos que hacer antes de lanzar la reproducción de la pista de audio lo que limita bastante el control de cómo cargas las cosas en RAM...

Pero bueno, para un juego homebrew nos puede ir muy bien hacer uso de CDDA y voy a explicar aquí cómo hacerlo. Cómo mandar desde BennuGD que nos reproduzca las pistas y cómo generar correctamente la imagen del CD de la Dreamcast que contiene los datos y las pistas de audio para que luego suenen correctamente y en el orden que queramos.


COMO USAR PISTAS DE AUDIO

BennGD nos viene listo con un mod para manejar pistas de CDROM. El mod_cd:

http://wiki.bennugd.org/index.php?title=Mod_cd

En principio en PC o en Linux, por citar dos sistemas en los que corre y pueden tener instalados CDROM y podemos hacer uso de la música, debería funcionar bien.
Indiket portó mod_cd a la versión de BennuGD de Dreamcast (creo que en la de los Colombians no estaba o crasheaba) y en principio podríamos usar este modulo para controlar el CDROM de la Dreamcast y que reproduzca las canciones que queramos. Pues bien, ya os adelanto que no funciona del todo bien.

Me comentaron que incluso el PC el mod cd está algo roto. Funcionar funciona, pero hace cosas raras y no nos permite por ejemplo hacer loops en las canciones, algo que necesitamos si queremos lanzar un tema que esté sonando hasta que nos interese (nos pasemos la fase, nos maten, pase algo que queramos, etc...)

Así que vamos a usar mod_dream que es un módulo que como habréis adivinado solo funciona en la Dreamcast y es para hacer cosas que sean solo para esta máquina. Los Colombians ya lo habilitaron para cosas como grabar en la VMU e Indiket ha ido introduciéndole funcionalidades que le he ido pidiendo cuando me han hecho falta.

Una de las funcionalidades que necesité es el uso de CDDA y hacerlo como si trabajaramos con KOS directamente. Para que me entendáis, con el mod dream podemos meterle funciones del KallistiOS que lanzamos directamente desde BennuGD. Un ejemplo sencillo que os pongo es en mi Dreamcastnoid, en la versión física, detecto en qué idioma está la consola Dreamcast para así poner el juego en inglés o en español depende de cómo el usuario tenga configurada la BIOS, algo que el BennuGD no tiene es algo propio de la DC.

Pero no me quiero ir más por la tangente. Aquí lo que vamos a hacer es usar el mod dream en su ultima versión de Indiket para reproducir pistas de audio CDDA.

Para ello vamos a empezar cargando ese módulo. En nuestro primer código de Hello World habíamos cargado dos módulos aunque no los mencioné para no liar mucho en un principio:

Código: [Ocultar] [Seleccionar]
import "mod_video"
import "mod_text"


El primero como habréis adivinado era para definir el modo de vídeo, los fps, etc. Y el segundo, como también habréis anticipado, era para trabajar con textos.

Ahora le añadiremos el módulo custom para hacer cosas específicas con la Dreamcast:

Código: [Ocultar] [Seleccionar]
import "mod_dream"


Como estamos reutilizando el ejemplo del Hello World simple de antes le pondremos música a este mismo ejemplo, si os parece bien.

Le añadiremos esto:

Código: [Ocultar] [Seleccionar]
if (os_id == 5)
dc_cddaplay(2,15);
end

Le estamos metiendo un condicional diciéndole que si está corriendo en Dreamcast ejecute esa orden del KOS para reproducir CDDA.

El comando dc_cddaplay es la clave y los valores (2,15) significan lo siguiente. 2 es la primera track CDDA que le meteremos ahora cuando hagamos la imagen de CD. Para que no entendamos la 1 sería la falsa track con la que conseguimos el autoboot en la DC y la 2 será nuestra primera canción que usaremos.

15 significa que queremos que esa pista la reproduzca en bucle infinito, o sea que esa canción cuando llegue al final vuelva a comenzar de nuevo. 15 es el número de veces que queremos que se repita esta pista, 15 se considera infinito en KOS si quisiéramos que solo sonase una vez esta pista de audio entonces pondríamos (2,0) -o sea que repita 0 veces la track 2-

Y ya está. Básicamente está hecho. Si quisiaremos reproducir más pistas solo habría que tener en cuenta esos números a la hora de llamarlas y luego ponerlas en el orden correcto cuando generemos nuestra imagen de disco, que ahora os explicaré cómo se hace.

Así que el código actualizado esta vez con música de CD sonando de fondo sería algo tan simple como esto:

Código: [Ocultar] [Seleccionar]
import "mod_video"
import "mod_text"
import "mod_dream"


process Main()

begin


set_mode(320,240,16);

if (os_id == 5)
write(0,40,69,0,"Hola DC desde Bennu Game Development!");
else
write(0,40,69,0,"Hola PC desde Bennu Game Development!");
end

write(0,40,100,0,":-)");

write(0,30,200,0,"By Ryo -Alfons- de wwww.segasaturno.com");


if (os_id == 5)
dc_cddaplay(2,15);
end

if (os_id == 5)
write(0,40,120,0,"Con CDDA track sonando");
else
write(0,40,120,0,"Sin musica");
end


loop
frame;
end

end



GENERANDO NUESTRA IMAGEN ALCOHOL 120

Pues ya estamos preparados para crear nuestro CD y probarlo en emulador o en consola real nuestro pequeño proyecto digamos que ahora es musical.

Volvemos a contar con el querido BooDreams pero esta vez seleccionamos el icono de Alcohol 120:

100

En la pestaña Extras tenemos que mirar que esté activo 'Add CDDA tracks':

Bien que no se nos olvide que necesitamos una pista de audio para que suene en nuestro proyecto. Coge cualquier .mp3 o wav o lo que tengas a mano que te de más rabia (algún tema de Joselito iría bien ) y copialo en el directorio CDDA que verás en la carpeta del Bootdreams.

Yo le he llamado a mi canción 02.mp3 y la he colocado en ese directorio. Tranquilo porque el Bootdream la convierte automáticamente a formato WAV de calidad audio CD.

Le damos a Process y se nos abrirá una ventana que nos dirá 'Select the CDDA tracks'.

Bien, aquí lo primero que tenemos que seleccionar y añadir a la parte derecha es audio.raw. Esta es la fake track muy ligera que consigue engañar a la consola y hacer el autoboot.

Luego añado mi pista que he puesto, en mi caso 02.mp3, si la vuestra se llama de otra forma pues ya sabéis...

101

Le damos a OK y vereis que empieza a procesar y convertir las pistas.

Luego os pedira un nombre para el .mds de Alcohol que os generará. Yo le he llamdado cdda.mds por no ser muy original.

Y eso es todo, cuando acabe ya tenéis un mds+mdf que podéis probar en Demul y disfrutar del ejemplo Hello World esta vez con música CDDA sonando de fondo y en bucle infinito.

He intentado ir al grano y no liarme mucho pero me pilláis un poco espeso esta tarde y con un catarro de aupa.

Un saludo.


Descargad mejor la última versión del binario de BennuGD que me pasó Indiket. Está actualizado totalmente y os he metido también un IDE con la última versión de BennuGD de PC para que compiléis facilmente (tiene el mod_dream ready y actualizado, of course):

sonic_boton



P.D: Documentación: http://gamedev.allusion.net/docs/ko...1f018e9a2b5fb57

https://forum.bennugd.org/index.php?topic=4319.0


KeiDash [ 18 Diciembre 2017, 10:59 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]


MÚSICA EN BENNUGD DE DREAMCAST (Y EN GENERAL ME TEMO QUE EN HOMEBREW DE DC)

En el BennuGD de Dreamcast por lo que he ido probando yo podríamos usar tres formatos para reproducir música para el juego o proyecto homebrew que sea que tratemos de desarrollar. El ya mencionado CDDA, también ...


Magnífica explicación Ryo, creo que esto va a resolver el problema que tenía y te había comentado. Yo pensaba que los ficheros CDDA tenía que generarlos yo previamente, pero acabo de entender que el bootdreams junto con la opción de Alcohol120% es la que convierte los ficheros de audio (wav, mp3, ogg) a formato de audio. A continuación, voy a preparar una entrada para la detección del pad de Dremcast en BennuGD, ya que lo mío me ha costado y puede que a alguien le sirva.

Muchas gracias Ryo, lo probaré esta semana y te comento.


Ryo Suzuki [ 18 Diciembre 2017, 01:41 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Sí, así es.

Lo que te puedes hacer si quieres (yo lo hago en ocasiones) es tener un condicional que indique si es PC o Dreamcast y si es PC cargar un .ogg y reproducirlo para hacerte una idea de lo que hay de fondo ya que para compilar ir probando y demás es un tanto frío tener el juego sin música.

También te digo que lo del convertir de mp3 y demás, siempre que puedas usa WAV directamente a calidad CD para que no haya nada de perdida de calidad. Yo para el tutorial en plan prueba os digo que cojais cualquier archivo de audio casi, pero para un juego en plan medio en serio lo suyo es dar la máxima calidad posible (en 'Encuentro no casual' ahora estoy trabajando con wavs calidad CD que me pasa Franikku y suena de lujo)

Lo del pad, estaría bien que lo explicases bien. Yo le iba a preguntar a Indiket porque el analógico no recuero ahora cómo se detecta, todo lo demás lo tengo controlado pero me costó también lo suyo porque no está documentado.

Es como esto del CDDA. Cuando lo sabes es fácil, pero bien que me dio trabajo hasta que conseguí tenerlo funcionando (y gracias a que Indi me pudo meter las opciones de KOS en el mod dream para controlar el CD-DA)

Ah! Puedes usar también mod_cd para controlar algunas cosas como el Cd_stop() , Cd_play() y demás. En principio va todo de lujo, lo único malo es que no hacía el loop en las canciones, para eso hemos de usar el dc_cddaplay del mod_dream.

Saludos.


KeiDash [ 20 Diciembre 2017, 06:39 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Buenos pues como había comentado, dejo aquí para quien le pueda interesar, cómo configurar el pad y la pantalla de la Dreamcast con bennuGD

Funcionalidad: Configurador de pad y pantalla de Dreamcast en código con BennuGD
Dificultad: Media

**EDITADO**

Bueno lo prometido es deuda.

Acabo de publicar en mi repositorio de github un mini proyecto para configurar la pantalla y los mandos de la Dreamcast de manera más sencilla.

sonic_boton


Ryo Suzuki [ 29 Diciembre 2017, 01:41 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Genial tío. No sabía lo del analógico.

¿Puedes adjuntar el código directamente? (los .prg y tal...)

Un saludo.


KeiDash [ 30 Diciembre 2017, 07:16 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo aquí estoy teniendo un problema, a ver si puedes ayudarme. Hago todo el proceso y añado los ficheros como tu comentas, pero al darle a procesar me sale el siguiente errror:

BootDreams
Create_Alcohol120_Image - modCDimage
Error: 58
Mensaje: File Already Exists

bottdreams_error_58

**SOLVENTADO**
El problema es que la carpeta del bootdreams ya contenía un fichero IP.bin y se ve que da conflicto con el que está en el directorio del código del juego. Voy a probar si esto me consigue reproducir el audio y te comento.


Ryo Suzuki [ 02 Enero 2018, 12:05 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Comprendo.

Yo el ip.bin no lo pongo en el directorio del juego, se puede adjuntar en el Bootdreams y usar un gráfico personalizado.

Mira por ejemplo en el Dreamcastnoid que le hice un pequeño guiño a Matra.


Cambiando de tema se ve que los de los botones como lo ha puesto en su tutorial de KeiDash finalmente no funciona en Dreamcast en hardware real (sí en PC y en emulador de Dreamcast) así que lo actualizaremos corregido, seguramente con el uso de keys en vez de mod_joy.

Un saludo.


KeiDash [ 08 Marzo 2018, 01:05 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Bueno,

Hace unos días he vuelto a la marcha. Como soy un poco "tikismikis" con las herramientas con los que trabajo para picar código, éstos días me he puesto a intentar conseguir compilar código de BennuGD desde el IDE Visual Studio Code. Finalmente lo he conseguido y como el texto se veía plano, ya que por defecto, vscode no tiene soporte de sintaxis BennuGd, la he creado yo.

Tiene un fallo que no se aún como arreglar y es para los bloques de texto comentados (/* */), que no aplica el color de comentado, pero el compilador a pesar de ello, lo reconoce como texto comentado tal cual.

La extensión está en mi repositorio de github, aquí

bennug_on_vscode_1520464093_867673

Espero que sea útil para más de uno.

Saludos,


Ryo Suzuki [ 11 Marzo 2018, 08:53 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Buen trabajo tío. Yo me he acostumbrado ya a trabajar con el Notepad ++ y haciendóme mis propios batchs para actualizarlo, etc.. pero siempre es bueno tener otras opciones.

Nadie más se anima a usar BennuGD?


KeiDash [ 17 Marzo 2018, 08:36 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Bueno lo prometido es deuda.

Acabo de publicar en mi repositorio de github un mini proyecto para configurar la pantalla y los mandos de la Dreamcast de manera más sencilla.

Éste es el post


Ryo Suzuki [ 19 Marzo 2018, 12:49 AM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Muchas gracias.

P.D: No lo veo en el repositorio. Enlace please?


KeiDash [ 19 Marzo 2018, 06:02 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]
Muchas gracias.

P.D: No lo veo en el repositorio. Enlace please?


El mismo que está en el botón de Descarga con el dibujo de Sonic (éste)


Ryo Suzuki [ 19 Marzo 2018, 08:53 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Ostras! No me salía la imagen de Descarga, sorry.

Esta genial, a ver si vamos poniendo más cosas en plan tutorial y subimos también la última versión que nos ha pasado Indiket!


Ryo Suzuki [ 24 Abril 2018, 05:54 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Le pongo este pequeño sample para el amigo Keidash aquí.

Me preguntaba como usar el mod_file en Dreamcast.

http://wiki.bennugd.org/index.php?title=Mod_file

Un pequeño ejemplo funcional de cómo lo hago para sacar datos de un archivo texto::

Código: [Ocultar] [Seleccionar]
import "mod_file"
import "mod_say"
import "mod_video"
import "mod_text"
import "mod_ttf"
import "mod_map"



Process Main()
Private
int handle; // handle for the loaded file
string first_line; // here's where the first line of the file will go
int fuente; // Variable contenedora, creo

Begin

set_mode(640,480,16);


set_text_color(rgb(255,255,255));

// Open the file "file.txt"
if (os_id == 5); // si es Dreamcast
handle=fopen("/cd/file.txt",O_READ);
else // de lo contrario cambia la ruta
handle=fopen("file.txt",O_READ);
end



if (handle == 0)
say( "Could not open file" );
return;
end

// Read the first line form the file
first_line = fgets(handle);

// Output the read line
say( "Read from file:" );
say('"' + first_line + '"'); // Lo printea mal, no saca ñ y demas tema... :

write(0,20,30,0, "Esto es lo que saca del txt:");
write(0,21,42,0,'' + first_line + ' ');




// Close the file (important!)
fclose(handle);

loop
frame;
end

End


Solo hay una cosa, el archivo de texto tiene que tener una codificación específica que es con la que trabaja internamente BennuGD para poder mostrar acentos y demás, luego la especifico que ahora no recuerdo.

Lo pongo aquí por si le sirve a alguien más...


KeiDash [ 31 Mayo 2018, 11:05 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Más tutoriales para quién le interese!

bennugd_dreamcast_sound

Estoy publicando una serie de tutoriales basados en mi aprendizaje de BennuGD para Dreamcast. Entre las curiosidades técnicas que me he encontrado y la falta de documentación para Dreamcast, me he decantado por hacer una serie de mini tutoriales que creo que pueden ayudar a alguien. De momento, he publicado los siguientes:

· TUTORIAL DEL APARTADO SONORO EN BENNUGD PARA DREAMCAST

· TUTORIAL PARA LA ADMINISTRACIÓN DE RAM EN BENNUGD PARA DREAMCAST

El siguiente tutorial en el que estoy trabajando es el de la creación de assets de 8bits para reducir la carga de la RAM en la Dreamcast.

Saludos! Espero que se a de ayuda


Ryo Suzuki [ 31 Mayo 2018, 12:08 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Muy buen trabajo, tío.

Lo de la RAM, creo que tengo un pequeño truco que te contaré y si funciona bien lo introduces ;)


KeiDash [ 31 Mayo 2018, 02:01 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]
Muy buen trabajo, tío.

Lo de la RAM, creo que tengo un pequeño truco que te contaré y si funciona bien lo introduces ;)


Entonces ya te voy a deber dos cañas jajaja, pero espero esa información con ansias.


Ryo Suzuki [ 31 Mayo 2018, 06:17 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Pues se ve que es una cosa heredada de la mala gestión de la RAM que se ve que ya tiene KOS, creo recordar que me comentó Indiket, pero yo lo que hago aunque es un poco chapuzas es reutilizar variables y recargar assets en la misma después de su correspondiente descarga y parece que me funciona mejor.

Ya me dirás si te funciona. Ya sé que parece una tontería...


KeiDash [ 01 Junio 2018, 09:47 AM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]
Pues se ve que es una cosa heredada de la mala gestión de la RAM que se ve que ya tiene KOS, creo recordar que me comentó Indiket, pero yo lo que hago aunque es un poco chapuzas es reutilizar variables y recargar assets en la misma después de su correspondiente descarga y parece que me funciona mejor.

Ya me dirás si te funciona. Ya sé que parece una tontería...


Gracias por tu contesta amigo Ryo.

Esa solución que comentas es una "posible solución" y nótese las comillas, que explico en el tuto que tengo publicado. Realmente no es una solución. Lamentablemente eso que comentas no funciona, me explico.

Realmente cuando cargas un FPG, el valor devuelto que almacenas en la misma variable como tu comentas, es solo el identificador del FPG cargado en memoria, no es el fpg en si mismo. En este caso, los dos FPG se quedan en memoria y no se pueden borrar o el indicador de memoria ram libre no funciona, te pongo un ejemplo real:

Código: [Ocultar]
  1. Process Main() 
  2. Private 
  3. int fpgid = 0; 
  4. End 
  5. Begin 
  6.  
  7. define_region(1, 0, 0, 640, 480); 
  8. set_mode(640,480, MODE_8BITS); 
  9.  
  10. fpgid = set_FPG("/cd/files/graphs/screen3.fpg"); 
  11.  
  12. p_sMemFree = format((memory_free()MB),0); 
  13.  
  14. write(0, 500, 60, ALIGN_TOP_RIGHT, "Free Mem:"); 
  15. write_var(0, 580, 60, ALIGN_TOP_RIGHT, p_sMemFree); 
  16.  
  17. write(0, 640/2, 480/2, ALIGN_CENTER, "PRESS SPACE"); 
  18.  
  19. Repeat 
  20. frame; 
  21. Until(key(_space)) 
  22.  
  23. UNLOAD_FPG(fpgid); 
  24.  
  25. CLEAR_SCREEN(); 
  26. DELETE_TEXT(ALL_TEXT); 
  27.  
  28. fpgid = set_FPG("/cd/files/graphs/screen4.fpg"); 
  29.  
  30. p_sMemFree = format((memory_free()MB),0); 
  31.  
  32. write(0, 500, 60, ALIGN_TOP_RIGHT, "Free Mem:"); 
  33. write_var(0, 580, 60, ALIGN_TOP_RIGHT, p_sMemFree); 
  34.  
  35. write(0, 640/2, 480/2 - 10, ALIGN_CENTER, "CARGA FINALIZADA"); 
  36. write(0, 640/2, 480/2, ALIGN_CENTER, "PRESS SPACE"); 
  37.  
  38. Repeat 
  39. frame; 
  40. Until(key(_space)) 
  41.  
  42. End 
  43.  


Si te fijas, hago lo que tu comentas, reasigno el valor devuelto por load_fpg() a la misma variable, pero los dos siguen en memoria ¿Cómo se que siguen en memoria? Pues fácil, comprobando la memoria libre en cada caso, antes y depués de cargar y descargar. Este mismo ejemplo exportado a el emulador, muestra como la memoria RAM a pesar de hacer un UNLOAD_FPG() sigue teniendo la misma RAM ocupada.


image_001_1527837263_192211
image_002_1527837275_345746


Esto indica que:

1. O el UNLOAD_FPG() no funciona, por lo que más me decanto ya que el juego me da cuelgues de out of memory cuando tengo varias cosas cargadas y hago UNLOADS de los mismos y vuelvo a cargar más.

2. Que el muestreo de la memoria RAM libre tampoco funciona, cosa que no se que pensar, ya que con el punto 1 que indico es muy evidente que la RAM se satura.

Si te fijas en las imágenes, la RAM es la misma tanto al cargar como al descargar los elementos de la RAM, por eso me decanto más por el primer punto.

No se si se me está pasando algo la verdad ¿Tú qué opinas?


Ryo Suzuki [ 01 Junio 2018, 06:49 PM ]
Título del mensajeRe: Tutorial BennuGD de Indiket para Dreamcast
Bien comprobado.

Prueba con load_png.


P.D: También te digo una que una cosa es lo que pone y otra cosa es lo que sucede en realidad...


Keewan [ 02 Junio 2018, 03:38 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
EDITO: acabo de arreglarlo, tenia una linea de codigo a medio escribir y se solucionaba si la quitaba. Aunque sigo sin saber como usar el configurador del mando--
EDITO 2: Me vuelve a dar el mismo error da igual donde use lo de os_id, el segundo proceso me da error. SI lo quito, sin embargo, me compila. Y si vuelvo a otra version anterior del prg donde lo tenia funcionando, funciona tambien

Pues estooo... perdon si molesto a alguien, pero el bennu no me deja compilar una cosa. Los problemas empezaron cuando intente hacer funciones especificas para dreamcast (usando if (os_id)), pero no entiendo que relacion pueda tener con el problema

Adjunto imagenes:

18n_zh_8

Me da este error, que en la linea 55 hay un proceso no definido, excepto que...

dq_9vyic

d_ic1ylf

Si alguien pudiese echar un cable lo agradeceria (y si me explica tambien como usar el configurador del mando de keidash pues...)


KeiDash [ 02 Junio 2018, 05:07 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Ryo Suzuki escribió: [Ver mensaje]
Bien comprobado.

Prueba con load_png.


P.D: También te digo una que una cosa es lo que pone y otra cosa es lo que sucede en realidad...


LOAD_PNG() es la misma pesca, pero con diferente caña. Obtienes el ID identificador, pero nunca acceso al recurso en memoria del mismo. En versiónes anteriores de BennuGD se podía obtener el puntero en memoria como segundo parámetro, y esto permitiría luego trabajar con esa sección en memoria, pero en versiones más recientes lo eliminaron. Ni idea de porqué.

A parte de que LOAD_PNG() no tiene el método de descarga del mismo, es decir, no existe un UNLOAD_PNG().


Keewan [ 02 Junio 2018, 09:50 PM ]
Título del mensajeRe: Tutorial BennuGD De Indiket Para Dreamcast
Una pregunta: ¿como consigo que no se me vea todo en negro cuando uso el emulador para probar mi código? En pc me va, pero cuando lo ejecuto en dreamcast solo consigo música cdda en loop.

Puedo adjuntar código y assets si es necesario... Los gráficos están todos en un mismo archivo FPG de 16 bits, y la profundidad de color de la pantalla también es 16 bits.

Perdón si molesto-




Powered by Icy Phoenix