Bennu Game Development

Foros en Español => Plataformas => Dreamcast (homebrew) => Mensaje iniciado por: Ryo Suzuki en Enero 02, 2020, 01:11:43 pm

Título: BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Enero 02, 2020, 01:11:43 pm
Bueno pues uno de los problemas que parecíamos tener los que estabamos trasteando con el port para Dreamcast es que no se podía gestionar la Ram y cargar y descargar recursos que ibamos usando en nuestros desarrollos, por lo que parecíamos estar limitados a los 16mb que tiene la consola.

He confirmado, o al menos eso creo a menos que me demostréis lo contrario, que no es así. Que al menos con la última versión de mi colega Indiket se pueden cargar recursos de forma ilimitada.

(https://www.segasaturno.com/portal/files/images/2/foro_bennugd.png)

Lo he probado en consola real dejándolo ahí en bucle y he llegado a ver que carga y descarga más de 1 giga de datos. Y sigue...

Os dejo el código fuente y el archivo CDI si lo queréis probar directamente en el emulador.

Tenéis ahí también el binario, o sea el 1st_read.bin que es la última versión de Dreamcast de abril del año pasado. Está actualizada a KOS de esa fecha y BennuGD también de ese momento. Tiene varios updates y mejoras que Indiket podría detallaros mejor...

Aquí lo tenéis:

https://filebin.net/f5s15xtrr2jpsw4a (se cayó, mirror: https://mirrorace.org/m/3LfrF )


Yo es que ya con mi juego había llegado al límite de la RAM de la Dreamcast y ya el propio juego prueba y que funciona. Aunque KOS tampoco parece tener una gestión de la RAM para tirar cohetes lo importante es que en el port de Bennu parece funcionar ya de manera similar (y que en SDL, que pasa por ahí tb)

Un saludo.


P.D. Luego lo pongo en un server más "seguro".
P.D2. No asustéis de mi código. Da miedo, pero... funciona xD
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: SplinterGU en Enero 03, 2020, 07:11:29 am
gracias por compartir!
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Enero 05, 2020, 04:22:06 pm
De nada, todo lo contrario.

Me puse en plan paranóico e hice otra versión que en la primera tanda a movía más que la RAM de la consola (unos 30 megas).

También funciona.

En todo caso lo probaré también con fpgs que me lo comentaba el otro día Amelian.

Una cosa sí que quiero avisaros. SplinterGU y demás ya supongo que lo dan por hecho. No es lo mismo lo que pesan los assets que usemos a nosotros que lo que le pesan a BennuGD internamente cuando los tiene en memoria, al menos las imágenes.

Quiero decir, no penséis que podéis cargar 16 megas de imágenes, audios y demás contenido hasta limpiar de nuevo la RAM. En realidad es menos.

Las imágenes creo que internamente cuando BennuGD las carga las pasa a map interno o algo y deben pesar más. Es decir, podéis tener vosotros 4 megas de imágenes que habéis optimizado pero en RAM interna a Bennu y a la Dreamcast le están ocupando el doble de RAM aprox...

Yo por lo que he visto se pueden tener unos 8 megas casi todo en imágenes reales que llenan los 16 megas de la DC cuando las ha importado BennuGD. Tenedlo en cuenta porque ya veréis que cuando empecéis a cargar muchas cosas si os pasáis se colgará.

Aún así es perfectamente factible hacer cosas ya que estamos hablando de 640x480 y da mucho lugar a la optimización.

Y siempre podemos ir cargando y descargando cosas de RAM en cuanto la necesitemos.

Un saludo!!
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Drumpi en Febrero 10, 2020, 05:34:04 pm
Sí, vamos lo normal de Bennu, las imágenes en RAM usan el formato MAP descomprimido.
Me alegra saber que el tema de la memoria se ha arreglado, espero que lo de la música también, si no se ha hecho ya :D

Ahora mismo estoy centrado en sacar una nueva versión del Echo para el aniversario, pero no sé si ponerme con el port a DC es viable, dadas las malas experiencias anteriores :D
De todas formas, por curiosidad ¿Has comprobado qué valor devuelve la variable global del sistema OS_ID cuando se ejecuta un programa? Empiezo a sospechar que los problemas que tuvimos están relacionados con algo de eso :P
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: blostec en Febrero 10, 2020, 07:47:22 pm

Os dejo el código fuente y el archivo CDI si lo queréis probar directamente en el emulador.

Tenéis ahí también el binario, o sea el 1st_read.bin que es la última versión de Dreamcast de abril del año pasado. Está actualizada a KOS de esa fecha y BennuGD también de ese momento. Tiene varios updates y mejoras que Indiket podría detallaros mejor...

Aquí lo tenéis:

https://filebin.net/f5s15xtrr2jpsw4a (https://filebin.net/f5s15xtrr2jpsw4a)




Hola Ryo Suzuki, quería probarlo pero veo que el link ya no funciona. Hay otro sitio donde pueda descargarlo, tengo curiosidad por ver el código. Muchas gracias.

Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Mayo 06, 2020, 09:50:01 am
Drumpi, lo de la música sigue igual. Se puede solventar usando CDDA para música y WAV para los FX, de momento bien...

Lo del port, tienes que echarle bastante valor :P

Blostec, disculpa:

https://filebin.net/ls268rhsor7i3568

No lo vi. Otra vez enviadme un privado o un e-mail, please.


P.D. Drumpi, lo olvidé. Es os_id = 5 Dreamcast

Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: l1nk3rn3l en Mayo 06, 2020, 01:51:37 pm
Excelente aporte,

por si acaso tienes el codigo fuente del port de Indiket

Gracias
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Mayo 07, 2020, 08:34:45 am
Gracias.

No, no lo tengo porque él es quien se encarga, yo de eso ni idea.

Se lo pido, ¿qué tienes en mente hacer?
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: l1nk3rn3l en Mayo 08, 2020, 10:52:58 pm
es interesante estudiar el codigo, obviamente  seguirlo mejorando como meterle un motor3d
decente. por el momento estamos copados de trabajo .
si tienes la oportunidad de compartirlo o subirlo algun repositorio seria ideal.
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Mayo 15, 2020, 08:34:12 am
De acuerdo, se lo pido a ver si puede subirlo.

También Ian Micheal está haciendo su propio port. No es público aún pero me pasará una versión de test en la que dice que va bien la reproducción de ogg.

Por cierto, tú que hiciste el port inicial e implementaste el save a la Visual Memory, ¿es posible que cuando grabe pueda editar lo que pone como nombre de archivo? Aparecen varias cosas que no puedo quitar...

Gracias.
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: l1nk3rn3l en Mayo 15, 2020, 02:56:12 pm
Claro todo es posible, pero en el momento estamos haciendo la parte de admob de bennu en android
y probar la integracion de un motor3D q tenemos en el horno .....
y en breve nos pondremos a revisar el dreamcast de nuevo a ver q se puede mejorar

deja aqui las sugerencias , propuestas a ver si podemos ayudar
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Mayo 22, 2020, 03:43:07 pm
De acuerdo, gracias.

A ver qué se me ocurre...
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Octubre 21, 2021, 06:53:57 pm
Chicos, perdón que retome este tema.
Estuve tomando el código de Ryu y la verdad no entiendo como logra que se libere la ram... jajaja.
Tomé parte de su código y trate de hacer algo mucho mas simple pero a la vez mas determinante y es cargar mas de 50 imágenes diferentes una por una.
se toma una imagen... se carga... se muestra... se descarga... y pasamos a la siguiente.... no sé que estoy haciendo mal... pero poco a poco la memoria se me va acabando y en la imagen 50 páfate, se cuelga... y es que justo al llegar ahi llegamos a los 16mb de imágenes.

Estoy dejando en este repositorio todo el código y un compilado también por si lo quieren ver.
https://easyupload.io/z0vbry

Les agradecería mucho si puedo entender porque no me realiza la liberación de ram.
Abrazos!
Gracias
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Octubre 24, 2021, 09:01:07 am
Sí que te la estaba realizando la liberación de RAM.

Que te cargara 16 megas de imágenes ya era una demostración clara, porque BennuGD cuando carga en Dreamcast creo que no cuenta con 16 megas libres (eso es lo que tiene la consola)

El problema porque se te cuelga he estado mirándolo y es porque cargas la fuente y cambias el modo de video en tantas ocasiones.

Eso causa el freeze.

Mira, aquí tienes tu ejemplo retocado y ahora funciona bien, ya verás:

https://mirrorace.org/m/57u4w

Hay 59 imágenes ahora y pesan unos 24 megas. Todas las carga y las muestra en pantalla, como comprobarás.

O sea libera RAM, está demostrado.

Un saludo.

P.D. Yo hice otro ejemplo que no subi con imágenes más pesadas. No me acuerdo si de 3 o 4 megas cada una y lo probé hasta más de un giga y sigue descargando imágenes. Con esa versión del binario de Indiket funciona

P.D2. Gracias por la actualización del código porque de esa forma lo hace más sencillo y yo lo no sabía!

P.D3. Pongo el código suelto por si acaso:
https://codeshare.io/Lw3D6N
mirror: https://www.codepile.net/pile/EqgEoAyO
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Octubre 24, 2021, 01:36:29 pm
Ryo!! Sos un genio!!
Mil gracias!!. Claro. En mí afán de reducir el código no me di cuenta que al llamar de nuevo al main() iba a cargar la fuente y el modo de video.
Que emoción! Ahora solo queda por ver si funciona con fpg. Voy a tomar tu código y hacer la misma prueba usando load y unload fpg. Crucemos los dedos. Pero que bueno esto! Un abrazo grande!
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Octubre 26, 2021, 08:49:34 pm
Bueno! Genios entre genios!
Lo probé con FPG y también funciona!
Con los png que se habia probando anteriormente armé 4 FPG de 8megas cada uno aprox. y fueron cargados y descargados correctamente.
Comparto el código y un cdi para emular si lo desean.

https://easyupload.io/hsukq1

Se acabaron las excusas! que emoción!!
Abrazos para todos!
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Noviembre 08, 2021, 05:03:20 pm
Me alegro Gabysantof.

Sí, en principio con la versión última de Indiket se pueden hacer cosas en Dreamcast. Solo hay que tener en cuenta algunas limitaciones, pero la RAM no es pobleman en principio.

¿Puedes poner el ejemplo de los fpgs de nuevo? No llegué a tiempo a descargarlo y ya no está disponible.

Un saludo.
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Noviembre 12, 2021, 07:44:23 pm
Hola.
Si, perdón la demora, estuve con unos temas en la PC y perdí el codigo!
Acá dejo algo muy similar.
Sentite libre de realizarle las modificaciones que quieras y compartir con quien quieras !
https://easyupload.io/56ztsq

Está cargando y descargando 5 archivos fpgs con 5 graficos cada uno, en total unos 30 megas de imágenes sin problemas!.
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Noviembre 16, 2021, 08:21:07 am
Genial. Ya lo he descargado y le he echado un ojo.

Creo que deberíamos hacer lo mismo con el audio. Para demostrar que el buffer puede llenarse y vaciarse también.

Por cierto Gabysantof, ¿estás desarrollando algo ya para Dreamcast? ¿O andas más que nada haciendo pruebas?

Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Noviembre 18, 2021, 10:07:09 pm
Corría el año 2017 cuando empecé a desarrollar un shoot em up. Me costó bastante hacer que funcione a buena velocidad... Primero había armado todos los sprites para 640x480 y luego tuve que bajar a 320x240.. cuando vi que no se podía liberar la ram termine dejando el proyecto. Luego fui papá y peor.. jaja. Ahora mí hija tiene 1 año y 2 meses y de a poco estoy retomando el proyecto. Yo diría que está a un 40% de lo que desearía. Hay que hacer mucho mucho mucho trabajo de pixel art. Pero en breve voy a subir lo que tengo a ver qué les parece....
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Ryo Suzuki en Noviembre 30, 2021, 04:40:18 pm
Genial.

Yo no sé mucho, pero si te puedo ayudar en algo ya sabes que puedes contactarme.

Un saludo.
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: Gabysantof en Julio 29, 2022, 08:03:29 pm
Ya descubrí cual es el problema con el tema del audio... el problema está en el interprete de dreamcast.
El ultimo que tenemos "1ST_READ.bin" (del miércoles, ‎01‎ de ‎enero‎ de ‎2020 y pesa 1.943.572 bytes) que soluciona el problema de la liberación de la RAM en los juegos debe tener algun tema con el audio... porque si uso este intérprete sucede esto del audio que se escuchan paneados a 1 solo parlante.

Probé con un 1ST_READ.bin anterior (del ‎jueves, ‎13‎ de ‎agosto‎ de ‎2015 y pesa 1.106.980 bytes) y los audios se escuchan bien por ambos parlantes perfectamente!!
Este 1ST_READ.bin es el que usa Falken en sus juegos y por eso funciona ok el audio!!

El problema es que yo no puedo usar este 1ST_READ.bin ya que no libera bien la ram.... tengo que usar si o si la ultima versión mas reciente.
Ryo, en las pruebas que hicimos de liberar la ram puedes probar cargar un wav por las dudas? estoy seguro que ahi te va a fallar y el wav se va a escuchar en 1 solo parlante...
Intenté contactar con indiket en la página de dreamcast.es y dejé un mensaje en el foro, aún no tuve ninguna respuesta.
Espero que se pueda solucionar esto, mil gracias por la ayuda de siempre!
Saludos desde Argentina!
Gabriel
Título: Re:BennuGD de Dreamcast sí que libera la RAM
Publicado por: SplinterGU en Julio 30, 2022, 01:29:47 am
seguramente es un tema de la libreria mixer con lo que compilaron