Autor Tema: Bennupack Dreamcast DEVKIT 2017  (Leído 1199 veces)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Bennupack Dreamcast DEVKIT 2017
« Respuesta #30 en: Octubre 17, 2017, 06:35:59 pm »
El nuevo dreamcast incluira esto...  todavia en pruebas...


 
+ SDL 1.2.15
+ PNG  1.6.32
+ MIKMOD 3.3.11.1
+ Zlib 1.2.11
+ arreglos de memoria
+ se arreglo la funcion  exec("program.bin");   mod_sys
+ mejoras internas
+ nueva libreria fake sdl mixer del  (Author: arcadenea, https://github.com/arcadenea/fake_mixer)
+ arregladas las funciones del modulo mod_mem,  (mem_total and mem_available)
+ bootdreams 2.0 (win10 arreglos) exclusivo del pack
 


Por el momento seguimos en la optimizacion de la memoria...
segun los test de malloc   

+ cuando liberas memoria el sistema operativo KOS  siempre te dice que te queda la misma
memoria libre, segun veo eso en otros sistemas operativos es normal ese comportamiento .. (queda un remanente fantasma)

+ la DC tiene 16MB de RAM (incluyendo bennu y kos cargados queda en 12 MB libres) 
entonces en el test alojamos 5MB 10 veces usando malloc y free y los resultados son que si libera memoria , aunque siempre
dice que queda 7MB siempre .. mirad pantallazos




+ si el DC se pone rebelde ahora se arreglo la funcion de bennu...  exec("externo.bin") donde
puedes ejecutar un programa externo, (para resolver mas los limites de memoria) para juegos grandes...

+ y las mejoras citadas al comienzo

l1nk, no se que funcion estas usando para saber la memoria libre, pero quizas no esta dando la memoria libre, sino el bloque (contiguo) mas largo disponible... pensa que puedes no ser el unico alocando y liberando memoria, y entre tu alloc y free, puede quizas existir otro alloc de otra parte del codigo, y ahi se genera una fragmentacion...

proba allocar todo lo que te dice que tenes libre, hace luego el testeo de memoria, luego libera y luego testea otra vez la memoria disponible...

algo asi como (pseudocodigo)

Código: [Seleccionar]
mem = malloc(12000);
if ( !mem ) say ("no se ha podido hacer el malloc"); end

say("memoria libre antes del free: " + memorialibre());

free( mem );

say("memoria libre despues del free: " + memorialibre());

mem = malloc(12000);
if ( !mem ) say ("no se ha podido hacer el malloc"); end

say("memoria libre antes del free: " + memorialibre());

free( mem );

say("memoria libre despues del free: " + memorialibre());
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Ryo Suzuki

  • Full Member
  • ***
  • Mensajes: 141
  • Karma: 3
    • SEGASaturno
Re:Bennupack Dreamcast DEVKIT 2017
« Respuesta #31 en: Octubre 17, 2017, 07:16:54 pm »
Qué gran trabajo  l1nk3rn3l!!

A ver si se consigue que se pueda liberar la RAM, finalmente.

También la posibilidad de "saltar" cargando otro file puede ser muy bueno, no solo para eso sino para la posibilidad de hacer algo parecido a un menú que ejecute varios homebrew de BennuGD diferentes desde la DC.

Lo que no entiendo muy bien, dices .bin. ¿Sería otro 1st_read.bin? Yo pensaba que cargarías otro .dcb diferente. No me queda claro...

Ánimo! Lo esperamos!

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6187
  • Karma: 157
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Bennupack Dreamcast DEVKIT 2017
« Respuesta #32 en: Noviembre 26, 2017, 01:11:42 am »
Sé que esto es algo viejo, pero quiero aportar mi granito de arena.
Lo mismo ya lo sabeis, pero existen SO que no liberan la memoria, como Android. Estos SO consideran que la memoria vacía es memoria desaprovechada, por lo que lo qe hacen es marcar esa zona de memoria como "aprovechable", no como "libre", y siguen consumiendo la memoria libre con nuevos programas. Es cuando se quedan sin memoria cuando hacen uso de esa memoria "aprovechable". ¿Por qué se hace así? Porque si en algún momento necesitamos volver a ejecutar el programa, o usar algo que habíamos cargado recientemente... ¡ya está en memoria!, no hace falta volverlo a cargar, y eso, con los CDs como almacenamiento masivo, es mucho tiempo de ahorro.

Puede que la medición de memoria libre sólo tenga en cuente la memoria sin usar, y no la memoria marcada como "aprovechable". De ahí que siga marcando la misma cantidad siempre, pero que no se registre ningún cambio a la hora de (volver a) cargar un fichero a memoria.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

l1nk3rn3l

  • Hero Member
  • *****
  • Mensajes: 1975
  • Karma: 253
Re:Bennupack Dreamcast DEVKIT 2017
« Respuesta #33 en: Noviembre 26, 2017, 03:20:32 am »
Que pena con los que postearon , no sabia que habia una actualizacion del post,
El foro deberia tener al comienzo los post mas recientes y despues todo el temario como esta,

asi seria mas facil chekar cuales post son nuevos , Bueno lo que me comenta el Maestro Splinter
la respuesta es parecida a la del colega  Drumpi (la zona no esta ocupada , pero no se reporta como libre)

De todas maneras en la practica puede ser fragmentacion , ya que algunos sistemas operativos viejos
no tenian un gestor de memoria como los kernel actuales...

Bueno para no profundizar aquí esta la respuesta que me dieron la gente de dreamcast
http://dcemulation.org/phpBB/viewtopic.php?f=29&t=104419&sid=3009e7224861beae8c5e5e5f7dddab95

El Port de dreamcast no se ha tocado , ya que otros proyectos como BennuPhoton requerían mas atención, ya que no existían,




Ryo Suzuki

  • Full Member
  • ***
  • Mensajes: 141
  • Karma: 3
    • SEGASaturno
Re:Bennupack Dreamcast DEVKIT 2017
« Respuesta #34 en: Noviembre 29, 2017, 11:22:55 am »
El problema sigue estando ahí y entiendo lo que comentáis de que cuando has cargado algo y luego lo liberas de memoria de cara a mostrar la memoria libre no conste aunque en teoría sí sea utilizable.

La historia viene que debe haber algún bug o algo porque en la práctica no es utilizable esa memoria "aprovechable", ya que si intentas cargar algo digamos encima de esa memoria ya no puede y se cuelga. Realmente solo podemos usar la RAM que tenemos al principio e independientemente de que intentemos liberar assets luego y aunque no constase numéricamente como RAM libre de nuevo es que en realidad no puedes cargar nada más así que la RAM solo puede usarse una sola vez.

Esto limita muchísimo las posibilidades de hacer algo, ya que nos quedan algo así como 10 megas de RAM y estamos "condenados" a solo poder usar eso.

Espero que se pueda solucionar tarde o temprano, porque creo que es muy importante. A las malas que se pudiera lanzar otro .dcb o algo por el estilo para poder modular los proyectos al estar condicionados por una RAM no liberable.

A ver si puedes echarle un ojo l1nk3rn3l. Gracias y un saludo!


P.D: Esto debe ser alguna cosa del port de BennuGD a Dreamcast porque en KOS no sucede...