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
gracias por compartir!
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!!
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
Quote from: Ryo Suzuki on January 02, 2020, 01:11:43 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.
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
Excelente aporte,
por si acaso tienes el codigo fuente del port de Indiket
Gracias
Gracias.
No, no lo tengo porque él es quien se encarga, yo de eso ni idea.
Se lo pido, ¿qué tienes en mente hacer?
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.
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.
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
De acuerdo, gracias.
A ver qué se me ocurre...
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
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
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!
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!
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.
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!.
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?
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....
Genial.
Yo no sé mucho, pero si te puedo ayudar en algo ya sabes que puedes contactarme.
Un saludo.
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
seguramente es un tema de la libreria mixer con lo que compilaron