OscarBraindeaD escribió:-cómo creo una pantalla comprimida?
Hay varios compresores / decompresores para z80. Yo, en BeTiled!, usé pucrunch. De
aquí puedes sacar la versión de z80 del decompresor, y el ejecutable para consola de windows del compresor. Te genera un binario que luego importas con el emulador.
-cómo indico en qué dirección empieza?
Las vas poniendo donde quieras, normalmente todas seguidas, y luego, simplemente, le indicas al decompresor dónde empieza y dónde descomprimirla.
Si te fijas en el código del uncrunch, al principio te dice que...
Código: Seleccionar todo
;## Decompress a pucrunched file.
;## In : HL = source address
;## DE = destination address
;## Destroy : AF, BC, DE, HL, AF', BC', DE', HL'
Así que eso, lo llamas teniendo en HL el origen y en DE el destino.
-en lugar de una pantalla o un sonido, cómo puedo meter funciones C/código C en un banco?
No sé cómo, porque no lo he hecho nunca... Código ASM sería muy fácil, compilándolo a partir de $c000 y llamando al sitio que fuese. A ver si Utopian, Nath, o alguno de estos
fieras te puede ayudar con eso.
-si es posible lo anterior... este código, "ve" la ram -las variables- del banco principal (0)?
Sí, mientras estén ubicadas antes de $c000.
-en el addmemory de la spritelib hay que indicar 3 bloques de 14 bytes por cada tile de sprite.
En tu juego hay 10 tiles de sprites, porqué en vez de 30 bloques reservas sólo 24?
En realidad, está mal, pero no por reservar poco... ¡sino por reservar demasiado! ... Según la doc de SpritePack...
Many of SP's functions allocate memory behind the scenes. For example, the creation of a sprite requires the allocation of R*C+1 fourteen byte blocks where R=row size of the sprite in characters and C=column size of the sprite in characters. Each item added to a linked list managed by the linked list data type involves the allocation of a 6-byte node descriptor. This memory allocation occurs without your program's explicitly calling for it to happen. This behind-the-scenes memory allocation is performed through the functions pointed at by "void *u_malloc" and "void *u_free". These function pointers must be declared by your program so that this behind-the-scenes memory allocation can be performed.
Así que, no son 3 bloques, sino uno... y, como tú dijiste, contando la fila y la columna "extra", 3 * 3 + 1 = 10 ... con reservar 10 bloques sería suficiente.
¿Por qué puse 24? ...

... pues porque al principio metí otros sprites más para hacer una cosilla, pero luego cambie de idea y lo hice de otra manera... pero... ¡se me olvidó cambiarlo!
-Cuando te refieres a página, en el mapa de memoria de betiled!, es un banco en realidad?
Sips

que me hacía / hago un poco de lío con los dos conceptos... Me refiero a Banco siempre.
Lamento ser tan brasas...
De brasas nada, tío... que, de veras, para eso estamos
