Página 22 de 22

Re: Compresor de mapas

Publicado: Jue, 27 Feb 2014, 15:44
por na_th_an
Con lo fácil que es activar el MODE_128K en config.h :lol:

Re: Compresor de mapas

Publicado: Jue, 27 Feb 2014, 15:50
por angel
$this->bbcode_second_pass_quote('na_th_an', 'C')on lo fácil que es activar el MODE_128K en config.h :lol:


:adore: :adore: :adore:

Re: Compresor de mapas

Publicado: Jue, 27 Feb 2014, 16:30
por elborra
$this->bbcode_second_pass_quote('na_th_an', 'C')on lo fácil que es activar el MODE_128K en config.h :lol:
La gracia también era sacar mi ZX+y poder cargarle el juego sin ningún interfaz añadido (además no tengo muy claro que el mío tuviera AY, ya que es una interfaz para disqueteras y modo 128K)

Re: Compresor de mapas

Publicado: Lun, 03 Mar 2014, 22:49
por elborra
Buenas, ayer pude ponerme por fin a ver si pasaba el juego a 128K, sin COMPRESSED_LEVELS. Después de cambiar un par de cosillas y aclararme con el loader conseguí por fin echar a andar el juego. Sin embargo parte de la descompresión de cada pantalla (1 tile siempre en la columna 0 casualmente y siempre en la misma coordenada 0,7), recuerdo que uso la rutina descompresora de mapas de antonio. Sespués de trastear y no encontrar una posible razón lógica de este bug caí en la cuenta de que quizás era debido al buffer de descompresión apuntado por DMAP_BUFFER (originalmente 0x5b01). Simplemente como test probé a cambiar el buffer por 0x5b02 ->1 byte y ahora las pantallas se generaban nuevamente con un tile mal puesto pero en otras coordenadas.

¿es posible que el buffer de descompresión ya no sea usable en 128K -> 0x5b01 ( 23297 )
En caso afirmativo: ¿que bufer podría usar?
En caso negativo: ¿es posible que la rutina de antonio entre en conflico con la función unpack_RAMn y en consecuencia depack?

Re: Compresor de mapas

Publicado: Lun, 03 Mar 2014, 23:09
por antoniovillena
Si quieres puedo cambiar la rutina para que acepte cualquier DMAP_BUFFER, pero ten en cuenta que este buffer podría solaparse con cualquier otra estructura de la Churrera. Pregunta a na_th_an. Por ejemplo en FASE el DMAP_BUFFER apunta a $5b40 (línea 268)

https://github.com/DSkywalk/fase/blob/m ... engine.asm

Re: Compresor de mapas

Publicado: Lun, 03 Mar 2014, 23:51
por elborra
Nathan , en 128.h aparece $this->bbcode_second_pass_code('', 'void SetRAMBank(void) {
#asm
.SetRAMBank
ld a, ($5b5c)
and f8h
or b
ld bc, $7ffd
ld ($5b5c), a
out (C), a
#endasm
}')
y en reubica.asm vuelve a aparecer esa dirección 5b5c, ¿puede ser la clave? ¿hay algún buffer libre por ahí o podría mover a alguna otra dirección la paginación?

Re: Compresor de mapas

Publicado: Mar, 04 Mar 2014, 00:03
por antoniovillena
Ahí está la clave, sería más fácil reubicar la variable que reubicar el buffer

Re: Compresor de mapas

Publicado: Mar, 04 Mar 2014, 07:53
por na_th_an
$this->bbcode_second_pass_quote('elborra', 'N')athan , en 128.h aparece $this->bbcode_second_pass_code('', 'void SetRAMBank(void) {
#asm
.SetRAMBank
ld a, ($5b5c)
and f8h
or b
ld bc, $7ffd
ld ($5b5c), a
out (C), a
#endasm
}')
y en reubica.asm vuelve a aparecer esa dirección 5b5c, ¿puede ser la clave? ¿hay algún buffer libre por ahí o podría mover a alguna otra dirección la paginación?


Sí, de hecho tendría que haber quitado eso. No es necesario para paginar si no vas a volver a BASIC (esa dirección es una variable del sistema para decirle a 128 BASIC qué RAM hay puesta), así que la rutina se puede quedar así:

$this->bbcode_second_pass_code('', 'void SetRAMBank(void) {
#asm
.SetRAMBank
ld a, 16
or b
ld bc, $7ffd
out (C), a
#endasm
}')

Prueba a ver.

Re: Compresor de mapas

Publicado: Mar, 04 Mar 2014, 10:17
por elborra
$this->bbcode_second_pass_quote('na_th_an', 'P')rueba a ver.
Brujeriiiiiía :adore:

Ya va fino, fino :P

Que en reubica.asm haya también referencias a esa misma dirección no parece afectar ya a la descompresión del mapa.

¡¡Al ataquerr!!

Re: Compresor de mapas

Publicado: Mar, 04 Mar 2014, 10:32
por na_th_an
En reubica sí es necesario. Reubica se ejecuta mientras el juego se está cargando para ir colocando los bloques en su sitio. Cada vez que se ejecuta, luego vuelve al BASIC para seguir cargando bloques. De todos modos, reubica se va a tomar viento en cuanto se carga el bloque principal, que lo sobrescribe todo ;)