Karoshi MSX Community
05 de Julio de 2021, 11:58:28 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2
  Imprimir  
Autor Tema: Gestión de memoria  (Leído 10302 veces)
0 Usuarios y 1 Visitante están viendo este tema.
burguera
Visitante
« : 02 de Noviembre de 2006, 08:14:59 pm »

Ya tengo otra duda que preguntar. A ver si me empapo de vuestra sabiduría y algún día puedo hacer alguna aportación interesante, en forma de juego espero  Cool
Nada, que andaba yo todo ilusionado con la idea de meter mi juego en una ROM de 32KB, sobretodo porque eso facilita mucho las cosas: las primeras 16KB con la BIOS, las 32 siguientes con mi código y las 16 finales, RAM para variables y tal. El tema está en que ahora mismo veo que mi plan inicial era muy complejo y, o bien recorto un poco el juego, o en 32KB no me cabe.

Mi pregunta es la siguiente: es complicado adaptar un código que supone la estructura de memoria anterior a uno que tenga 48KB de ROM y use la RAM de otro slot, haciendo cambios de slot para cada acceso a RAM? Ralentiza mucho el sistema? Otra opción que veo es no tener las primeras 16KB ocupadas por la BIOS. Se ralentiza mucho (es más, se puede hacer?) cambiar de slot cada vez que se quiera acceder a la BIOS? Bueno, en general mi pregunta va en el sentido de que opciones tengo para pasar de 32 a 48KB teniendo en cuenta que necesito la BIOS y que, obviamente, necesito RAM?

Por otro lado, a mi me hace mucha ilusión tener mi juego en cartucho, y la oferta de Matra me gusta... sabéis si está limitada a ROMs de 32KB o pueden ser de 48KB? Es curiosidad, si no, eso puedo preguntarselo a ellos.
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #1 : 02 de Noviembre de 2006, 08:22:43 pm »

Por otro lado, a mi me hace mucha ilusión tener mi juego en cartucho, y la oferta de Matra me gusta... sabéis si está limitada a ROMs de 32KB o pueden ser de 48KB? Es curiosidad, si no, eso puedo preguntarselo a ellos.

Pues ojala veamos alguno en un futuro Smiley Las roms de Matra van hasta los 64ks.
En línea

--

Cindy Lauper She Bops!
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #2 : 02 de Noviembre de 2006, 11:07:37 pm »

Hombre, pues si te planteas tener contenido comprimido que deba ser pasado a RAM, como gráficos, musicas o mapeado, puedes tenerlos en esa primera página del ROM de 48kb junto con una rutinilla de transferencia a RAM, de forma que, cuando necesites de su contenido, activas esa página y llamas a la rutina que hay en ella pasándole los destinos en registros, y después que regrese y tan anchos.

O sea, que de forma normal tienes que:

pag0.- BIOS (pag 0 del SLOT 0)
pag1.-16kb ROM (pag 1 del ROM (SLOT 1 o 2) )
pag2.-16kb ROM (pag 2 del ROM (SLOT 1 o 2) )
pag3.-16kb RAM (pag 3 del SLOT 3)

Cuando necesites de los buffers que tienes en la 1a pag del ROM cambias esa página para que:

pag0.-16kb ROM (pag 0 del ROM (SLOT 1 o 2) )
pag1.-16kb ROM (pag 1 del ROM (SLOT 1 o 2) )
pag2.-16kb ROM (pag 2 del ROM (SLOT 1 o 2) )
pag3.-16kb RAM (pag 3 del SLOT 3)

En esas primeras 16kb ROM metes una pequeña rutinilla de transferencia (con un simple ldir) para pasar datos a la RAM (siempre en la pag 3).
Una vez hecho, vuelves y activas la BIOS de nuevo a la página 0.

Así, el peso de la programación va en las páginas 1 y 2 del ROM, mientras que la página 0 la usas para contener datos puros y duros que los coges cuando quieras sin molestar al programa principal.

¿¿Me se ha entendidooo??  Roll Eyes  Wink
« Última modificación: 02 de Noviembre de 2006, 11:14:21 pm por Viejo_archivero » En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
burguera
Visitante
« Respuesta #3 : 03 de Noviembre de 2006, 12:29:56 am »

Understood, viejo_archivero. Me gusta la idea, así sólo se pierde tiempo con cambios de slots cuando hay que descomprimir datos tipo música, pantallas y tal. Que es, precisamente, cuando unos milisegundo arriba o abajo no se notan. Tomo nota! Gracias
En línea
ARTRAG
Visitante
« Respuesta #4 : 03 de Noviembre de 2006, 11:13:12 pm »

The other option is to avoid the BIOS at all, usually this improves
a lot the performance of the VDP access and allows you to
optimize the code even further.


En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #5 : 03 de Noviembre de 2006, 11:46:04 pm »

The other option is to avoid the BIOS at all.

BIOS is your friend  Wink
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
burguera
Visitante
« Respuesta #6 : 03 de Noviembre de 2006, 11:52:50 pm »

No creas, ARTRAG, me lo había planteado. Pero, la verdad, después de ver que usando la BIOS me va lo suficientemente rápido (de hecho, la mayor parte del motor gráfico está listo y me sobra aún muuuucho Z80), he decidido seguir usando la BIOS. Si bien es cierto que usar 16KB para las cuatro rutinitas que realmente necesito es excesivo, pero no se puede pedir todo Smiley
En línea
burguera
Visitante
« Respuesta #7 : 14 de Noviembre de 2006, 01:56:03 am »

Otra cosa sobre la memoria. Si uso la BIOS, no tengo más remedio que apechugar con la zona de trabajo del sistema en la parte alta de la RAM, no? O existe alguna forma sencilla de usarla? Si no es mucho preguntar, a partir de qué dirección no me conviene usar RAM?
En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #8 : 14 de Noviembre de 2006, 11:38:14 am »

Pues es una buena pregunta, yo no lo se exactamente... suelo contar con un tope imaginario de 12KB de uso en RAM, pero seguro que se puede usar un poco más... ¿alguien nos da el dato?  Wink
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #9 : 14 de Noviembre de 2006, 12:14:05 pm »

Creo que se puede usar exactamente .. a partir de lo que sería PILA .. no?
Y la zona de pila la obtienes en esta variable ...(#0xfc4a)
En línea

MSX4EVER2GETHER
www.nerlaska.com
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #10 : 14 de Noviembre de 2006, 12:28:56 pm »

Si prescindes de la BIOS totalmente, es decir, desactivas la página 0 y reprogramas la ISR de $38 (o pasas a IM2); entonces estareis solos el Z80 y tú en un espacio de 64K, sin variables de sistema ni zarandajas.
La variable de entorno $FC4A no estoy seguro de que quede inicializada antes de que el programa salte a la dirección de arranque de la ROM, ante la duda lo mejor es ser un poco conservador y como supongo que no es plan de meterse en esos fregaos, lo mejor es redefinir el puntero de la pila no superando $F000. La rutina de arranque de la ROM te deja la pila un poco más arriba si no recuerdo mal (se puede comprobar fácil monitoreando el arranque de tu ROM con el BlueMSX), así que mejor no acercarse mucho.
En línea

Doom dee doom dee doom
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #11 : 14 de Noviembre de 2006, 04:00:46 pm »

Por lo que yo se .. si se inicializa .. de hecho yo la uso Smiley
En línea

MSX4EVER2GETHER
www.nerlaska.com
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #12 : 14 de Noviembre de 2006, 07:51:59 pm »

Cierto, ya está inicializada a $F380. La pila del sistema andaba por la $F08E (en casi todos los MSX que he probado) pero supongo que la puedes machacar sin peligro, además tampoco es probable que crezca tanto tu pila.
En línea

Doom dee doom dee doom
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #13 : 14 de Noviembre de 2006, 08:25:59 pm »

... salvo que quieras utilizar programación recursiva en ensamblador: devorarás la pila, literalmente. Y si no me creéis, echadle un vistazo al código fuente del MINE SWEEPER.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #14 : 14 de Noviembre de 2006, 08:59:10 pm »

Citar
... salvo que quieras utilizar programación recursiva en ensamblador: devorarás la pila, literalmente.

Salvajes...¡si el Z80 tuviera puños os ibais a enterar! 2 Guns Firing
En línea

Doom dee doom dee doom
Páginas: [1] 2
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!