https://www.segasaturno.com/portal/viewtopic.php?f=19&t=8570
-----------------------------------
Ryo Suzuki
07 Febrero 2016, 09:30 PM

Tutorial 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:

[url=https://encuentronocasual.blogspot.com][b]https://www.dreamcastencounter.com[/b]

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

[align=center][url=https://www.dreamcastencounter.com][img src="https://www.segasaturno.com/portal/files/images/2/encuentro_no_casual_official_site_dreamcast.jpg" width=540 /][/align]
--

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

[align=center][img]https://www.segasaturno.com/portal/files/images/2/bennu_dreamcast.jpg[/img][/align]
Empecemos por el principio, [b]Bennu GD[/b] es un lenguaje de programación sencillo pero potente bajo licencia GNU encarado a hacer videojuegos. Tal vez os suene [b]Fénix[/b], o incluso el original [b]DIV Games Studio[/b], pues este [b]Bennu Game Development [/b]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 [b]Dreamcast[/b], por citar algunas.

[align=center][url=https://www.explosivedinosaurs.com/web/][img src="https://www.segasaturno.com/portal/files/images/2/explosivedinosaurs1_1024x576.jpg" alt="explosive dinosaurs juego comercial bennu gd " width=500 /]

[size=9]Uno de los juegos comerciales hechos con Bennu[/size][/align]

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 [b]Colombian Developers[/b]. 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 [b]Indiket[/b], 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 [b]SDL[/b] 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 [b]Coldev[/b] (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.

 [align=center][img]https://www.segasaturno.com/portal/files/images/2/sorr_inicio.png[/img] 

[size=9]Sí, SOR Remake fue programado con este lenguaje. Una lástima lo que hizo SEGA...[/size][/align]

[b]
TUTORIAL BENNU EN DREAMCAST[/b]

Siendo justos diré que toqué [b]DIV Games Studio[/b] 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 [url=https://www.bennugd.org/]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 [b]SDK[/b] o [b]IDE[/b] 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 [b]Bennu Packs [/b]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 [url=https://bennupack.blogspot.com.es/]ColombiansDEV.

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

[quote]Bennupack include more 150 games with source code, docs, tutorials, and tools for Game Development. Bennu official web site: https://www.bennugd.org/[/quote]
Fantástico, justo lo que necesitamos. Sin embargo yo os recomiendo que bajéis [url=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/colombiandevelopers/Tools%20R2.2%20Installer.rar]é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 [b]Windows 7 versión 64 bits[/b], 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).

 [img]https://www.segasaturno.com/portal/files/images/2/bennu_pack.jpg[/img] 

A la hora de realizar la instalación es recomendable que no le cambies la ruta que os propone, en este caso [b]c:\devBennu[/b]. 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 [b]Bennu Pack[/b] 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 [b]PRG Editor[/b] (que no es otra cosa que el [b]Notepad ++[/b] 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 [b]Bennu Pack[/b] y abrir este [b]PRG Editor[/b] y vamos a comenzar con un pequeño programa para abrir el fuego.

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

[code linenumbers=false]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 [/code]

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 [b]Save as[/b] y le decimos que lo guarde en el Escritorio por ejemplo. Mejor aún, creamos una carpeta que se llame [b]Bennu Dreamcast [/b]en el escritorio y a este archivo con nuestro primer código que acabamos de pegar le llamamos [b]main.prg[/b] 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 [b]prg[/b] 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[b] Notepad ++[/b] (rebautizado aquí como[b] PRG Editor[/b]).

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

 [img]https://www.segasaturno.com/portal/files/images/2/hola_mundo_hello_world_benn.jpg[/img]

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 [b]Run Videogame[/b] en el Notepad ++ que tenemos abierto o apretar directamente [b]F6[/b]. Esto es lo que veremos:

 [img]https://www.segasaturno.com/portal/files/images/2/bennugd_dreamcast.jpg[/img]

Ya tenemos nuestro primer programa funcionando. Lo que realmente ha pasado es que el [b]Notepad ++ [/b]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 [b]Bennu Pack[/b], 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 [b]Bennu Dreamcast [/b] que creamos ha aparecido lo que podría ser un misterioso archivo llamado [b]main.dcb[/b] que, sí habéis acertado de nuevo, es nuestro [b]main.prg[/b] compilado y el que acabamos de ver ejecutarse en pantalla.


[b]PERO, ¿QUÉ PASA CON DREAMCAST?[/b]

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 [b]Dreamcast [/b]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 [b]Indiket[/b]. [url=https://www.dreamcast.es/news.php?readmore=745]Aquí tenéis el enlace de cuando lo hizo público en la web hermana [b]Dreamcast.es[/b], pero os pido que no os detengáis ahora leyendo demasiado este interesante link y bajadlo [url=https://www.segasaturno.com/portal/bennugd-port-para-dreamcast-df131.html]aquí directamente.

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

Seguro que te has vuelto a adelantar a la jugada y has intuido que el [b]1ST_READ.bin[/b] 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 [b]main.dcb [/b]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 [b]1ST_READ.bin[/b], que es el binario-interprete de Bennu que nos ejecutará nuestro [b]main.dcb[/b] 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:

[code linenumbers=false] 	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[/code]
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í:

[code linenumbers=false]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 [/code]

Guardamos los cambios y volvemos a compilar y ejecutar con [b]F6 [/b]o con [b]Run Videogame[/b]. 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.


[b]CREANDO EL AUTOBOOT PARA DREAMCAST[/b]

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 [b]Bennu Dreamcast[/b] (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 [b]BootDreams[/b] 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 [b]Dreamcast.es[/b], la versión[b] 1.0.6c [/b]la tenéis disponible en [url=https://www.dreamcast.es/infusions/downloads/downloads.php?cat_id=4&download_id=16]este enlace.

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

 [img]https://www.segasaturno.com/portal/files/images/2/bootdreams_dreamcast_1454868003_418707.jpg[/img] 

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á [b]unscrambled [/b]que si queremos scramblearlo, le decimos también que sí.

Para más pegas nos recuerda que nos falta una [b]IP.BIN[/b], 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 [b]Bootdreams[/b] nos pide que donde guardamos el archivo [b].cdi[/b] 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 [b]SSATURNO.cdi[/b] 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 [b]Null DC[/b], la última versión oficial 104_r136, en concreto. Lo tendréis ya, pero podéis bajarlo [url=https://code.google.com/archive/p/nulldc/downloads]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 [b]File->Normal Boot[/b] y seleccionamos la imagen que acabamos de crear: SSATURNO.cdi

El emulador arranca y aquí tenemos el resultado pertinente:

[align=center][img src="https://www.segasaturno.com/portal/files/images/2/dreamcast_bennu_nulldc.jpg" alt="bennu bennu gd sega dreamcast port programacion hello world sample ejemplo iniciacion lenguaje" width=658 /][/align]

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 :P 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.


[b]¿Y AHORA QUÉ HAGO?[/b]

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 :twisted: )

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. [b]BennuGD [/b]para [b]Dreamcast[/b], con este port de [b]Indiket[/b] 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 [url=https://www.bennugd.org/]web oficial de [b]Bennu[/b] y su [url=https://wiki.bennugd.org/index.php?title=Bennu_Wiki][b]documentación[/b]. De la misma forma podéis echar un ojo a alguno de los [url=https://www.bennugd.org/downloads/ManualBennuGD_Osk.pdf]tutoriales que hay en la web y/o probar  y estudiar los ejemplos que [url=https://code.google.com/archive/p/colombiandevelopers/downloads]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!!



[i]-Ryo "Alfonso" Suzuki[/i]


P.D. Update: Una versión para Dreamcast algo más actualizada (diciembre de 2017) que colgué en el hilo:
[url=https://www.segasaturno.com/Minerva-238/archivos/BennuGD_Dreamcast_Indiket-dic2017.7z]Descarga


-----------------------------------
KeiDash
07 Febrero 2016, 10:56 PM

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Dificil para mi programaicon esa clase el master era fatal..  :P .. 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.. :wink:


-----------------------------------
x-crim
08 Febrero 2016, 11:19 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
justo lo que necesitaba! gracias! :)


-----------------------------------
darumo
08 Febrero 2016, 01:32 PM

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="KeiDash" post="93751"]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.[/quote]

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...

[quote user="nem" post="93753"]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.. :wink:[/quote]

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...

[quote user="x-crim" post="93756"]justo lo que necesitaba! gracias! :)[/quote]

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

[quote user="darumo" post="93765"]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.[/quote]

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

Re: 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

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="93782"]

[quote user="x-crim" post="93756"]justo lo que necesitaba! gracias! :)[/quote]

¿Sí? ¿Para qué? No nos dejes a medias... :) 
[/quote]

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

Re: 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

Re: 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 [b]DIV Games Studio[/b].

Se puede entender como la continuación de [b]DIV[/b] y de [b]Fenix[/b]. Ya que [b]BennuGD[/b] 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 [url=https://alfons-ryo.itch.io/dreamcastnoid]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 :mrgreen:


-----------------------------------
KeiDash
04 Octobre 2017, 07:03 PM

Re: 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

Re: 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

Re: 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 ([i]Software Development Layer?[/i]) 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

Re: 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

Re: 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

Re: 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. 

[b]Adjunto código, pero como es mucho, lo comparto desde[/b] [url=https://codeshare.io/5zgLXk]aquí


-----------------------------------
Ryo Suzuki
20 Octobre 2017, 12:40 AM

Re: 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  :mrgreen:


-----------------------------------
KeiDash
25 Octobre 2017, 05:28 PM

Re: 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. [b]¿Podrías pasarme una copia de tu demul por privado?[/b]

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, [b]no me dejes verlo porque soy super pulcro con eso jajajajajajaja[/b]


-----------------------------------
Ryo Suzuki
26 Octobre 2017, 11:11 AM

Re: 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

Re: 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

Re: 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...

[quote user="KeiDash" post="101908"]
Con lo del código, muchas gracias. Con respecto a tu código, [b]no me dejes verlo porque soy super pulcro con eso jajajajajajaja[/b][/quote]

Indiket ha visto algo y todavía tiene pesadillas :mrgreen:


-----------------------------------
KeiDash
31 Octobre 2017, 11:56 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Pues el homebrew de BennuGD es el que he probado, todo descargado de [url=https://code.google.com/archive/p/bennugddreamcast/downloads]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

Re: Tutorial BennuGD de Indiket para Dreamcast
-----------------------------------
Hombre, detalle importante que omitías :lol: 

¿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

Re: 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

Re: 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

Re: 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

[quote]Editado[/quote]

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

[code linenumbers=false]
write_int(0,0,0,0,&scan_code);

loop
    frame;
end

[/code]


-----------------------------------
Ryo Suzuki
17 Diciembre 2017, 08:24 PM

Re: 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 [b]KeiDash[/b] le puede venir bien esto para implementarlo en su homebrew llamado [b]'Beat Tendency'[/b] 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.

[b]
MÚSICA EN BENNUGD DE DREAMCAST (Y EN GENERAL ME TEMO QUE EN HOMEBREW DE DC)
[/b]
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 [b]CDDA[/b], también podríamos usar archivos ligeros en plan secuenciadores de[b] tipo tracker[/b] y no olvidemos que podemos tirar de archivos de [b]audio con compresión[/b] 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[b] .mod[/b]- 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 [b].ogg[/b] 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 [b]CDDA[/b]. 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.


[b]COMO USAR PISTAS DE AUDIO[/b]

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.
[b]Indiket[/b] 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 [b]mod_dream[/b] 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 [b]Dreamcastnoid[/b], 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 [b]Hello World[/b] habíamos cargado dos módulos aunque no los mencioné para no liar mucho en un principio:

[code linenumbers=false]
import "mod_video"
import "mod_text"
[/code]

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:

[code linenumbers=false]
import "mod_dream"[/code]

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:

[code linenumbers=false]
    if (os_id == 5)
          dc_cddaplay(2,15);	
	end[/code]
Le estamos metiendo un condicional diciéndole que si está corriendo en Dreamcast ejecute esa orden del KOS para reproducir CDDA.

El comando [b]dc_cddaplay[/b] 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:

[code linenumbers=false]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[/code]


[b]GENERANDO NUESTRA IMAGEN ALCOHOL 120[/b]

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 [b]BooDreams[/b] pero esta vez seleccionamos el icono de Alcohol 120:

 [img]http://www.segasaturno.com/portal/files/images/2/100.png[/img]  

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

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  :mrgreen: ) y copialo en el directorio CDDA que verás en la carpeta del Bootdreams.

Yo le he llamado a mi canción [b]02.mp3[/b] 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 [b]Process[/b] y se nos abrirá una ventana que nos dirá [b]'Select the CDDA tracks'[/b].

Bien, aquí lo primero que tenemos que seleccionar y añadir a la parte derecha es [b]audio.raw[/b]. 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 [b]02.mp3[/b], si la vuestra se llama de otra forma pues ya sabéis...

[img]http://www.segasaturno.com/portal/files/images/2/101.png[/img] 

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 [b]cdda.mds [/b]por no ser muy original.

Y eso es todo, cuando acabe ya tenéis un[b] mds+mdf [/b]que podéis probar en[b] Demul [/b]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):

[align=center][url=http://www.segasaturno.com/Minerva-238/archivos/BennuGD_Dreamcast_Indiket-dic2017.7z][img]http://www.segasaturno.com/portal/files/images/2/sonic_boton.png[/img][/align]


P.D: Documentación: http://gamedev.allusion.net/docs/kos-current/cdrom_8h.html#a446b7e47d3c4d6e011f018e9a2b5fb57

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


-----------------------------------
KeiDash
18 Diciembre 2017, 10:59 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="102610"]
[b]
MÚSICA EN BENNUGD DE DREAMCAST (Y EN GENERAL ME TEMO QUE EN HOMEBREW DE DC)
[/b]
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 [b]CDDA[/b], también ...
[/quote]

Magnífica explicación Ryo, creo que esto va a resolver el problema que tenía y te había comentado. [b]Yo pensaba que los ficheros CDDA tenía que generarlos yo previamente[/b], pero acabo de entender que el [b]bootdreams[/b] 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

Re: 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 [b]Franikku[/b] 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Buenos pues como había comentado, dejo aquí para quien le pueda interesar, [b]cómo configurar el pad y la pantalla de la Dreamcast con bennuGD[/b]

[color=#ff5500][b]Funcionalidad[/b][/color]: [b]Configurador de pad y pantalla de Dreamcast en código con BennuGD[/b]
[color=#ff5500][b]Dificultad[/b][/color]: [b]Media[/b]

[b]**EDITADO**[/b]

Bueno lo prometido es deuda.

Acabo de publicar en mi [url=https://github.com/ameliandev/]repositorio de github un mini proyecto [b]para configurar la pantalla y los mandos de la Dreamcast[/b] de manera más sencilla.

[align=center][url=https://github.com/ameliandev/BeenuGD-DC-Configurator] [img]http://www.segasaturno.com/portal/files/images/2/sonic_boton.png[/img] [/align]


-----------------------------------
Ryo Suzuki
29 Diciembre 2017, 01:41 PM

Re: 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

Re: 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

[img]http://www.segasaturno.com/portal/files/images/1551/bottdreams_error_58.png[/img]

[b]**SOLVENTADO**[/b]
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

Re: 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

Re: 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, [url=https://github.com/ameliandev/bennugd.tmbundle/tree/master/amelian-bennugd-0.0.1]aquí

[img]http://www.segasaturno.com/portal/files/images/1551/bennug_on_vscode_1520464093_867673.png[/img] 

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

Saludos,


-----------------------------------
Ryo Suzuki
11 Marzo 2018, 08:53 PM

Re: 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?  :lol:


-----------------------------------
KeiDash
17 Marzo 2018, 08:36 PM

Re: 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.

[url=http://www.segasaturno.com/portal/tutorial-bennugd-de-indiket-para-dreamcast-vp102632.html#p102632]Éste es el post


-----------------------------------
Ryo Suzuki
19 Marzo 2018, 12:49 AM

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="103592"]Muchas gracias.

P.D: No lo veo en el repositorio. Enlace please?[/quote]

El mismo que está en el botón de Descarga con el dibujo de Sonic ([url=https://github.com/ameliandev/BeenuGD-DC-Configurator]éste)


-----------------------------------
Ryo Suzuki
19 Marzo 2018, 08:53 PM

Re: 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

Re: 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::

[code linenumbers=false]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[/code]

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 May 2018, 11:05 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Más tutoriales para quién le interese!

 [img]http://www.segasaturno.com/portal/files/images/2/bennugd_dreamcast_sound.jpg[/img] 

[b]Estoy publicando una serie de tutoriales [/b]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:

· [url=http://amelian.eu/blog/2018/05/18/los-handicaps-de-usar-bennugd-para-dreamcast-apartado-sonoro/]TUTORIAL DEL APARTADO SONORO EN BENNUGD PARA DREAMCAST

· [url=http://amelian.eu/blog/2018/05/31/tutorial-bennugd-para-sega-dreamcast-gestion-de-memoria-ram/]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 May 2018, 12:08 PM

Re: 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 May 2018, 02:01 PM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="104427"]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 ;)[/quote]

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


-----------------------------------
Ryo Suzuki
31 May 2018, 06:17 PM

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="104436"]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...[/quote]

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. [b]Realmente no es una solución[/b]. 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, [b]es solo el identificador del FPG[/b] 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:

[code linenumbers=true]
Process Main()
Private
	int fpgid = 0;
End
Begin

	define_region(1, 0, 0, 640, 480);
	set_mode(640,480, MODE_8BITS);

	fpgid = set_FPG("/cd/files/graphs/screen3.fpg");
	
	p_sMemFree = format((memory_free()MB),0);

	write(0, 500, 60, ALIGN_TOP_RIGHT, "Free Mem:");
	write_var(0, 580, 60, ALIGN_TOP_RIGHT, p_sMemFree);

	write(0, 640/2, 480/2, ALIGN_CENTER, "PRESS SPACE");
	
	Repeat
		frame;
	Until(key(_space))
	
	UNLOAD_FPG(fpgid);
	
	CLEAR_SCREEN();
	DELETE_TEXT(ALL_TEXT);
	
	fpgid = set_FPG("/cd/files/graphs/screen4.fpg");
	
	p_sMemFree = format((memory_free()MB),0);
		
	write(0, 500, 60, ALIGN_TOP_RIGHT, "Free Mem:");
	write_var(0, 580, 60, ALIGN_TOP_RIGHT, p_sMemFree);

	write(0, 640/2, 480/2 - 10, ALIGN_CENTER, "CARGA FINALIZADA");
	write(0, 640/2, 480/2, ALIGN_CENTER, "PRESS SPACE");
	
	Repeat
		frame;
	Until(key(_space))
	
End
[/code]

Si te fijas, hago lo que tu comentas, reasigno el valor devuelto por load_fpg() a la misma variable,[b] pero los dos siguen en memoria ¿Cómo se que siguen en memoria?[/b] 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.

[align=center]
 [img]http://www.segasaturno.com/portal/files/images/1551/image_001_1527837263_192211.png[/img] 
 [img]http://www.segasaturno.com/portal/files/images/1551/image_002_1527837275_345746.png[/img] [/align]

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

Re: 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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[b]EDITO[/b]: 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--
[b]EDITO 2[/b]: 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:

[img]http://www.segasaturno.com/portal/files/images/6567/18n_zh_8.jpg[/img]

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

[img]http://www.segasaturno.com/portal/files/images/6567/dq_9vyic.jpg[/img]

[img]http://www.segasaturno.com/portal/files/images/6567/d_ic1ylf.jpg[/img]

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

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="Ryo Suzuki" post="104445"]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...[/quote]

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

Re: 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-


-----------------------------------
KeiDash
03 Junio 2018, 01:48 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Hola keewan.

Te falta cerrar el if del segundo proceso, al no tenerlo cerrado, lo que va despues no lo cierra bien, de ahí el error.

Ánimo!


-----------------------------------
Keewan
03 Junio 2018, 09:27 PM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Acaba de compilar ahora, muchas gracias!

Aunque todavia no consigo que tire en dc. Cuestion de meterle tiempo supongo


-----------------------------------
Ryo Suzuki
04 Junio 2018, 11:54 AM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="KeiDash" post="104453"]

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().[/quote]

Sí que se puede descargar, hombre.

Realmente el png de manera interna lo copia y lo trata como si fuese un map, diría yo...

Así que puedes hacer:
[code linenumbers=false]
map_del(0,comosellame);[/code]

Liberando así y luego cargando encima, en plan pisando con el mismo nombre de variable me da la sensación que me da un poco más de vidilla con la ram. Ya me contarás...

[quote user="Keewan" post="104455"]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-[/quote]

Eso es por la ruta, yo diría.

Prueba así cuando cargues assets:

[code]

if (os_id == 5); // si es Dreamcast
        
  loquesea=png_load("/cd/img/ojos01.png");   //Carga el png en la memoria -ruta cd-

 else // de lo contrario cambia la ruta ya que es PC

  loquesea=png_load("img/ojos01.png");   //Carga el paquete de graficos FPG en la memoria -ruta cd-
end
[/code]

En Dreamcast necesita la ruta [b]/cd/[/b] que creo que es algo que viene del KOS tb...

También veo que estás usando un compilador muy antiguo. Te pasaré un IDE con la última versión de BennuGD y la Indiket de DC con todo preparado ya...


-----------------------------------
Keewan
04 Junio 2018, 01:14 PM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Gracias ryo!


-----------------------------------
Ryo Suzuki
04 Junio 2018, 01:41 PM

Re: Tutorial BennuGD de Indiket para Dreamcast
-----------------------------------
De nada.

Usa este IDE hasta que te pase el último que está más actualizado:

[url=https://www.segasaturno.com/Minerva-238/archivos/BennuGD_Dreamcast_Indiket-dic2017.7z]Descarga

Es que he visto que ponía 2011 en tu BennuGD :lol:


-----------------------------------
KeiDash
04 Junio 2018, 03:13 PM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
Ah! Cierto, lo probaré a ver que tal.

Gracias caballero.

EDITADO

Ya lo he probado y esto no entiendo ni que hace. MAP_DEL y MAP_UNLOAD, solicitan 2 parámetros, fileID y graphID, o sea un FPG y y el id de la imagen que contiene.

Si cargo una imagen con LOAD_PNG, se carga correctamente, pero luego como la descargo con MAP_DEL si no hay fichero fpg? Por defecto he puesto MAP_DEL(0, IdDePng) y dice que si, que se borra, lo curioso es que si no cargo ninguna imagen también me dice que lo borra, y en todos los casos la ram no se reduce. La verdad es que no se ni que pensar, porque no tengo más datos de este asunto y internamente no se ni que hace


-----------------------------------
Ryo Suzuki
19 Septiembre 2021, 06:32 PM

Re: Tutorial BennuGD De Indiket Para Dreamcast
-----------------------------------
[quote user="KeiDash" post="104478"]
Si cargo una imagen con LOAD_PNG, se carga correctamente, pero luego como la descargo con MAP_DEL si no hay fichero fpg? Por defecto he puesto MAP_DEL(0, IdDePng) y dice que si, que se borra, lo curioso es que si no cargo ninguna imagen también me dice que lo borra, y en todos los casos la ram no se reduce.[/quote]

Se me pasó contestarle al colega.

Si no lo lee él ya, también para todos. El Png se descarga facilmente así:

[code linenumbers=false] map_del(0,imagenquesea);[/code]

Una imagen png que se llamase [b]imagencualquiera.png[/b] con ese ejemplo que doy la habríamos cargado así previamente:

[code linenumbers=false]	if (os_id == 5); // si es Dreamcast
  imagenquesea = png_load("/cd/imagencualquiera.png"); 
    else // de lo contrario cambia la ruta porque es PC
imagenquesea = png_load("imagencualquiera.png"); 
	end[/code]

Habríamos creado la variable [b]imagenquesea[/b] para almacenar ese gráfico png ahí y lo podemos liberar de la ram con el map_del

Ya sabréis, para crear una variable, al principio:

[code linenumbers=false]global 

	int imagenquesea // creo la variable como os digo donde luego almacenaré el gráfico png
[/code]

Por lo visto la gestión de la RAM de la Dreamcast en cuanto a desarrollo no es para tirar cohetes ni siquiera en el propio KOS, por lo que tengo entendido. En BennuGD estamos con dos capas más: SDL + la propia de Bennu, así que hasta cierto punto es lógico que no vaya como la seda.

Pero funcionar funciona y se pueden hacer cosas que ocupen más de la RAM de la máquina. Eso demuestra que descarga RAM, sobre eso no hay discusión.

Y lo mejor para demostrarlo un pequeño ejemplo que hice para el foro de BennuGD:

[img]https://www.segasaturno.com/portal/files/images/2/foro_bennugd.png[/img]

https://mirrorace.org/m/3LfrF

Se queda eternamente cargando y descargando imágenes muy pesadas y no se cuelga. O sea, que ir va.

Lo que marca con en pantalla con la RAM no es muy de fiar, como veréis. Pero lo importante es que funciona y en principio en la Dreamcast podríamos cargar recursos eternamente (o al menos hasta lo que nos cogiera en un CD)

Hilo original:

http://forum.bennugd.org/index.php/topic,4810.0.html

--

Ah! Por cierto, he actualizado algunos enlaces del primer mensaje que estaban caídos.

Este hilo lo lee mucha gente por lo que he visto, así que tampoco quiero dejarlo abandonado. Cualquier duda me comentáis...

Saludos.


-----------------------------------
alicianami
30 Septiembre 2022, 01:24 PM

Re: Tutorial Para Programar En Dreamcast Con La Versión De BennuGD De Indiket
-----------------------------------
Buenas dias,

Soy usuaria de la comunidad BennuGD de varios años, hice algun port de un juego de pinguinos para Android usando BennuGD, Pixstudio.
https://www.youtube.com/watch?v=I8EruOcTB-s
con un fallo de fuga de memoria ram, es decir no liberaba ram y mientras jugabas se consumia la ram poco a poco.

Anteriormente estaba portado en Gemix Studio.
Al final este juego de pinguinos se paso al AppGameKit Classic.
https://www.youtube.com/watch?v=FS95LnSdsc8

Y hace años atras unos 10,11 años, use FenixGD para la GP WiZ y Dreamcast de aquel momento.

Quiero informarme a fondo de como se encuentra actualmente el port de BennuGD para Dreamcast

Se que estas tambien en la comunidad BennuGD,

Tengo dudas, por que me he fijado que ha habido problemas con el Audio al usar OGG, tambien con la liberacion de recursos en la memoria RAM, que parece que se arreglo como comentas.

Mis dudas son las siguientes:
1-Donde me descargo un BennuGB Pack para Dreamcast? Tienes tu uno actualizado, con todas las tools??

Encontre esto: en la primera pagina:
[b]P.D. Update: Una versión para Dreamcast algo más actualizada (diciembre de 2017) que colgué en el hilo[/b]
Es el que estoy probando...

2-Que emulador de Dreamcast usas para probar y debugear?
Probe el demul, y me gusto y si funciona.


3-Usas la consola real Dreamcast?
si es asi, que metodo usas para probar tu juego? Quemas el disco CDI a CD-R 700MB?? o pasas el archivo CDI a un cargador de juegos via: Adaptador SD o HDD, o usas GDEmu??

Yo por el momento solo tengo el Adaptador SD con DreamShell y RetroDream... pero no me funciona cargar los CDI de BennuGD, se reinicia la consola.

Tambien puedo grabar discos CD-R.
Minetras esperare a comprar el GDEmu...


4-Que limitaciones y que recomendaciones darias, a la hora de programar y preparar los recursos graficos, sonoros... para Dreamcast.


5-Que características funcionan con Dreamcast: Botones, mandos, resolucion de pantalla, colores y el VMU para salvar datos... etc.
Esta documentado? hay ejemplos?


6-A la hora de crear el CDI, me lo crea a tamaño de 772 MB (810.513.321 bytes), le mete archivos Dummy, no se puede desactivar eso?



Tengo mucha experiencia en lenguaje Div, soy adicta.
Luego tambien mucha experiencia en usar notepad++.

Desearia probar las capacidades actuales de BennuGD para Dreamcast, y hacer un pqueño estudio de sus características, para un proyecto personal.

Gracias por el aporte de BennuGD para Dreamcast!
Quiero sacarle partido a esta maravillosa consola!


un Saludo!


-----------------------------------
Ripfire
02 Octobre 2022, 03:42 AM

Re: Tutorial Para Programar En Dreamcast Con La Versión De BennuGD De Indiket
-----------------------------------
[quote user="alicianami" post="116637"]Buenas dias,

Soy usuaria de la comunidad BennuGD de varios años, hice algun port de un juego de pinguinos para Android usando BennuGD, Pixstudio.
https://www.youtube.com/watch?v=I8EruOcTB-s
con un fallo de fuga de memoria ram, es decir no liberaba ram y mientras jugabas se consumia la ram poco a poco.

Anteriormente estaba portado en Gemix Studio.
Al final este juego de pinguinos se paso al AppGameKit Classic.
https://www.youtube.com/watch?v=FS95LnSdsc8

Y hace años atras unos 10,11 años, use FenixGD para la GP WiZ y Dreamcast de aquel momento.

Quiero informarme a fondo de como se encuentra actualmente el port de BennuGD para Dreamcast

Se que estas tambien en la comunidad BennuGD,

Tengo dudas, por que me he fijado que ha habido problemas con el Audio al usar OGG, tambien con la liberacion de recursos en la memoria RAM, que parece que se arreglo como comentas.

Mis dudas son las siguientes:
1-Donde me descargo un BennuGB Pack para Dreamcast? Tienes tu uno actualizado, con todas las tools??

Encontre esto: en la primera pagina:
[b]P.D. Update: Una versión para Dreamcast algo más actualizada (diciembre de 2017) que colgué en el hilo[/b]
Es el que estoy probando...

2-Que emulador de Dreamcast usas para probar y debugear?
Probe el demul, y me gusto y si funciona.


3-Usas la consola real Dreamcast?
si es asi, que metodo usas para probar tu juego? Quemas el disco CDI a CD-R 700MB?? o pasas el archivo CDI a un cargador de juegos via: Adaptador SD o HDD, o usas GDEmu??

Yo por el momento solo tengo el Adaptador SD con DreamShell y RetroDream... pero no me funciona cargar los CDI de BennuGD, se reinicia la consola.

Tambien puedo grabar discos CD-R.
Minetras esperare a comprar el GDEmu...


4-Que limitaciones y que recomendaciones darias, a la hora de programar y preparar los recursos graficos, sonoros... para Dreamcast.


5-Que características funcionan con Dreamcast: Botones, mandos, resolucion de pantalla, colores y el VMU para salvar datos... etc.
Esta documentado? hay ejemplos?


6-A la hora de crear el CDI, me lo crea a tamaño de 772 MB (810.513.321 bytes), le mete archivos Dummy, no se puede desactivar eso?



Tengo mucha experiencia en lenguaje Div, soy adicta.
Luego tambien mucha experiencia en usar notepad++.

Desearia probar las capacidades actuales de BennuGD para Dreamcast, y hacer un pqueño estudio de sus características, para un proyecto personal.

Gracias por el aporte de BennuGD para Dreamcast!
Quiero sacarle partido a esta maravillosa consola!


un Saludo![/quote]

Por lo que leí hace un tiempo atras, el BennuGD de Indiket usa parte de la libreria de SDL-custom de Chui (corrijanme si me equivoque), por lo cual tiene el gran problema de no libera memoria en el RAM, lo mismo pasa con el [url=https://gbatemp.net/threads/sega-dreamcast-dreambor-games.612615/]OpenBOR/DreamBOR para Sega DreamCast.
Pues bien, he subtituido la libreria SDL-custom por una antigua de OpenGL compatible para el LibreBOR (una bifurcación de DreamBOR) para Sega DreamCast y GP2X (tambien para Sega Saturn pero estoy estudiando la forma de hacerlo funcionar) y estoy trabajando en eso. 
Si el proyecto llega a una version estable entonces se podria subtituir dicha libreria a BennuGD (dentro de las posibilidades).
En mi opinion, la ultima version de BennuGD de Indiket no es viable para proyectos de gran envergadura, este solo sirve para demostraciones de las capacidades de BennuGD para la Sega DreamCast.


-----------------------------------
darumo
02 Octobre 2022, 04:30 PM

Re: Tutorial para programar en Dreamcast con la versión de BennuGD de Indiket
-----------------------------------
A ver si da buenos resultados el tema. Tal como comentas parece que lo de la RAM es un problema muy serio que impide proyectos con cierta complejidad en Dreamcast y eso es una pena, también impedirá que juegos ya existentes en BennuGD rulasen aunque lo hiciesen en maquinas con igual o menos cantidad de RAM.

Por otro lado ¿el tema de IDE para programar cómodamente sigue estando algo verde y no hay alguno realmente bueno y estable? Cuando probé Bennu en su día acabó mi paciencia en 3 tardes los IDE que habían para picar código para el. Siempre eché en falta el buen editor de DivGamesStudio cuando miraba Fenix y después Bennu como alternativas. Veo que en el tuto parece usarse Notepad++ ¿pero se complementa bien y es cómodo? Siempre me ha parecido una carencia bastante importante y que BennuGD no ha pegado más fuerte por ello, ya que comunidad de DivGamesStudio había mucha.


-----------------------------------
alicianami
02 Octobre 2022, 06:37 PM

Re: Tutorial Para Programar En Dreamcast Con La Versión De BennuGD De Indiket
-----------------------------------
[quote user="Ripfire" post="116640"]

Por lo que leí hace un tiempo atras, el BennuGD de Indiket usa parte de la libreria de SDL-custom de Chui (corrijanme si me equivoque), por lo cual tiene el gran problema de no libera memoria en el RAM, lo mismo pasa con el [url=https://gbatemp.net/threads/sega-dreamcast-dreambor-games.612615/]OpenBOR/DreamBOR para Sega DreamCast.
Pues bien, he subtituido la libreria SDL-custom por una antigua de OpenGL compatible para el LibreBOR (una bifurcación de DreamBOR) para Sega DreamCast y GP2X (tambien para Sega Saturn pero estoy estudiando la forma de hacerlo funcionar) y estoy trabajando en eso. 
Si el proyecto llega a una version estable entonces se podria subtituir dicha libreria a BennuGD (dentro de las posibilidades).
En mi opinion, la ultima version de BennuGD de Indiket no es viable para proyectos de gran envergadura, este solo sirve para demostraciones de las capacidades de BennuGD para la Sega DreamCast.[/quote]

Segun el ultimo post de Ryo Suzuki, encontro la manera y esta documentada:
https://www.segasaturno.com/portal/show_post.php?p=113420

Lamentablemente me resulta imposible descargar su ejemplo en este link:
[url=https://mirrorace.org/m/3LfrF]https://mirrorace.org/m/3LfrF

Esto es probarlo, aun asi el lo confirma.

Luego lo que comenta [b]darumo[/b] sobre el IDE, esto es cosa de la comunidad de BennuGD esta claro, ahora tambien somos nostros que debemos personalizarlo a nuestro gusto el notepad++, yo lo hice para el SGDK para homebrew de Megadrive y tambien para GemixStudio, llevo muchos años usando notepad++,
Lo que eches mas de menos seria el autocompletar de las funciones, variables globales y constantes del mismo lenguaje custom, eso tiene muuucho curro de añadirlo.

Aun que este Hilo se centra en el desarrollo de homebrew para Dreamcast usando BennuGD.


-----------------------------------
Ripfire
03 Octobre 2022, 01:13 AM

Re: Tutorial Para Programar En Dreamcast Con La Versión De BennuGD De Indiket
-----------------------------------
[quote user="alicianami" post="116643"]Lamentablemente me resulta imposible descargar su ejemplo en este link:
[url=https://mirrorace.org/m/3LfrF]https://mirrorace.org/m/3LfrF[/quote]

https://doodrive.com/f/9zj3j0 [Caducado]
https://files.fm/u/2m9hhzyzq [Caducado]
https://gofile.io/d/FS3ShO [Caducado]
https://filerio.in/gr8a073l7qgs [Caducado]
https://1fichier.com/?f7ny0bbbjvs5cluutgqw [Caducado]
https://clicknupload.to/cet40d2vbe8p [Caducado]
https://drop.download/vym8a0mzsrt4 [Caducado]
https://userscloud.com/pbw6ir3f5bcb [Caducado]
https://ddownload.com/fxxeisws3cvf [Caducado]
https://turbobit.net/y1o1g2bi8hyl.html [Caducado]

Todo los enlaces estan muertos, es decir enlace expirados, espera que Ryo Suzuki lo re-suba el fichero o algun otro usuario tenga dicho archivo para poder descargarlo.

Como comenté anterior-mente, si el BennuGD tiene libreria SDL-costum de Chi debe tener fuga de memoria y/o no libera memoria en el RAM (dependiento de la progamación). Posiblemente hayan resuelto liberar memoria del RAM pero no la fuga (corríjame si me equivoco), aun asi tendría que probarlo para llegar a mis conclusiones. Salu2


