Problema con memoria

Programando el Amstrad en BASIC, C, etc.
dracmore
Lechoncillo
Lechoncillo
Mensajes: 2
Registrado: Jue 19 Sep , 2013 6:19 pm

Problema con memoria

Mensajepor dracmore » Lun 23 Sep , 2013 7:49 pm

Buenas tardes.

Estamos desarrollando nuestro juego en C con el compilador SDCC y estamos teniendo algunos problemas. Hemos llegado a un punto en el que no podemos meter más recursos ya que hemos agotado prácticamente la totalidad de la memoria disponible. Debido a esto no podemos tener más de 2 fondos y eso que no hemos cargado la música. La pregunta es, ¿conocéis alguna rutina para acceder a disco y para poner en disco los recursos?, estamos un poco desesperados porque no sabemos qué hacer. De hecho nos pasan cosas extrañas como que al tener llamadas a collSp de la librería cpcrslib en un fragmento de código que no se está ejecutando en ese momento hay cosas que se descuadran y demás.

Cualquier ayuda es bien recibida.

Un saludo.

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

Re: Problema con memoria

Mensajepor KaosOverride » Mar 24 Sep , 2013 12:57 pm

Desde donde estas compilando? Yo empece desde &4000 pero logre ganar 4ks bajando a &3000, apurando el superbuffer de la lib.

Exomizas los fondos? Puedes lograr recuperar ram de ahi al almacenarlos comprimidos. Lo mismo concla parte de la partitura de la musica, si es larguita.

Mientras el buffer de descompresion + datos comprimidos sea menos que los datos descomprimidos, eso que ganas. La pantalla la vas copiando de ram a ram? Yo quiero experimentar con plasmar un fondo en pantalla e ir copiqndo a buffers las partes a ensuciar para luego repintarlas a ver que tal va... ideal para desexomizar en pantalla a pelo :D

Para cargar binarios : http://www.cpctech.org.uk/source/load.html
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]

dracmore
Lechoncillo
Lechoncillo
Mensajes: 2
Registrado: Jue 19 Sep , 2013 6:19 pm

Re: Problema con memoria

Mensajepor dracmore » Mar 24 Sep , 2013 3:28 pm

En primer lugar gracias por contestar.

Ahora mismo estábamos en la 3000 y los fondos están comprimidos. El problema creemos que es con la librería ("biblioteca"), que quizá no usamos algo correctamente y estamos comiendo demasiada memoria, bien de datos, bien de código. En cualquier caso estamos probando alguna que otra cosa como lo que comentas al final, si sale algo te lo haré saber.

Gracias nuevamente :D .

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

Re: Problema con memoria

Mensajepor KaosOverride » Mié 25 Sep , 2013 1:14 am

Si vas a acceder a ficheros desde el firmware con ese codigo mejor que no subas hasta &A000 que por ahi arriba esta el buffer de ficheros Amsdos/cassete y bastantes variables de sistema, pila y demas si pretendes volver al Basic... En la guia del firmware y en la web de antes viene un mapa simpatico de la ram de esa zona.

El codigo de carga para el Marron ennla Euskal me lo tuve que compilar en winampe y guardarlo como .bin ya que no lograba integrarlo en C con directivas ASM con la notacion especifica del SDCC...

Despues lo converti a .h con el bin2asm y retoque notepad, y lo "copio" a la posicion &500 y le hago un call. Eso carga el bin en la posicion &3000 y hace el call ahi.

Uso el superbuffer ya que cuando quiero pasar de un bin al otro no lo estoy usando o he dejado de usarlo. Y al cargar en su sitio lo ejecuto y se inicializa todo limpiamente. Pero en tu caso querras hacer una funcion que cargue el binario de marras y luego haga un ret, no un call...

Echa un vistazo a mis fuentes. Tambien otros juegos con los fuentes disponibles pueden dar un poco mas de inspiracion, como los de los mojon twins etc...

No me has confirmado, o no te he sabido entender, si las pantallas van en crudo a fullscreen o si usas tiling...
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]

pacomix
Forum Addict
Forum Addict
Mensajes: 460
Registrado: Dom 11 Nov , 2012 8:05 pm

Re: Problema con memoria

Mensajepor pacomix » Lun 07 Oct , 2013 1:57 pm

El SDCC es un poco jodidillo con algunas cosillas. Si has estado usando el crt0.s que está en todas partes en internet seguramente tengas algún problema con las declaración e inicialización de variables globales y/o estáticas y la zona de memoria que se le asigna.
Lo que dices acerca de que la pantalla se corrompe a veces y demás la mayoría de las veces suele ser por la pila que crece demasiado y te empieza a pisar código.

Por cierto la última versión del SDCC que salió hace que el código del CPC Bros aumente en casi 800 bytes... Yo uso una night build que me bajé el año pasado (v3.2.1 a28 creo...). Con la oficial de esa versión me genera código incorrecto x'D Y parece que ya no es posible conseguirla. Así que la tengo como paño en oro.

¿Usas el firmware? Desde mi punto de vista lo mejor que se puede hacer para tener control total es compilar en 0x0138 y no usar el firmware para nada. Así tienes casi la totalidad de los 64KB para todo.

Si das más datos de lo que estáis haciendo seguramente podríamos echarte un mejor cable.

¡Saludos!


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic