Comprimir pantallas de carga

Soporte técnico sobre los lanzamientos de MojonTwins y comentarios sobre los güegos. Ofrecemos soporte técnico con Fourspriter, te ayudamos con ZX Basic o Z88DK, te damos pistas some cómo saltarse un bicho y cosas así.

Moderador: na_th_an

Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Comprimir pantallas de carga

Mensajepor NeilParsons » Lun, 25 Feb 2013, 02:52

¿Qué utilidad ó rutina en C/M usáis para comprimir los datos de las pantallas de carga en vuestros juegos, mojones míos? :jias:

Es decir, yo tengo un SCREEN$ y quiero reducir su tamaño en cinta a la menor cantidad posible de bytes. Me supongo que en los datos comprimidos de la pantalla hay incluida una rutina que la descomprime totalmente y que al cargar los datos desde cinta, una vez están ya en memoria, haga ejecutar esa rutina para desplegar la pantalla gráfica al instante.

Tengo algo en la mollera... y no es caspa... :lol:
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Comprimir pantallas de carga

Mensajepor na_th_an » Lun, 25 Feb 2013, 09:48

Lo más sencillo (y lo que hacemos nosotros para las pantallas de carga) es usar el compresor que viene en el BMP2SCRExt, que te mete todo en un bloque en 50000 y con un RANDOMIZE USR 50000 lo descomprimes. No comprime demasiado, pero bueno, siempre reduce bastante. El BMP2SCRExt tiene una opción por ahí que te genera un TAP con el bloque comprimido a partir del SCR que le hayas cargado.

Para comprimir a saco lo suyo es usar aplib o exomizer y tal, pero es más lío. Nosotros somos muy vagos para eso.
Adjuntos
BMP2SCR_EXP_2.11a.rar
(190.97 KiB) Descargado 269 veces
Como diría Rorshach: "Urm..."
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Comprimir pantallas de carga

Mensajepor NeilParsons » Lun, 25 Feb 2013, 18:23

Oido cocina... mucho zankyu! :corchoneta:

De hecho ya tengo esta utilidad en el ordenador, pero no había visto esta opción de comprimir los datos de la pantalla. Ahora que lo sé, mejor para mí. 8-)
Tengo una vah-ka leshera
pechis y muy besuquera...
jevilon
Mensajes: 50
Registrado: Lun, 03 Oct 2011, 17:05

Re: Comprimir pantallas de carga

Mensajepor jevilon » Dom, 10 Mar 2013, 13:48

Esto se puede hacer para que lo comprima donde yo quiera y no solo en 50000????
Asi podria usar esta rutina para meter varias pantallas en ram3 y descomprimir la que yo quiera en un momento dado

Por cierto desde ZXbasic se puede llamar a una direccion directamente?

Edito:
Me respondo a mi mismo, cargo el tzx en 32768, cargo reubica, pokeo 25000,3, ejecuto reubica en 25002, cargo mi juego

$this->bbcode_second_pass_code('', 'Sub pantallazo1 ()

Asm
ld a, 3
ld b, 16
or b
ld bc, $7ffd
out (c), a
call 49152
ld a, 16
ld bc, $7ffd
out (c), a
End Asm
End Sub')

y luego llamo a pantallazo1 ()

funciona perfecto
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Comprimir pantallas de carga

Mensajepor na_th_an » Dom, 10 Mar 2013, 17:48

1. Aunque se genere en 50000, son reubicables. Si lo cargas en 46532 (por poner), un RANDOMIZE USR 46532 la descomprimirá. De todos modos hay mejores métodos que comprimen mucho mejor y son más usables. Espérame a mañana y te explico como usar appack.

2. Así:

$this->bbcode_second_pass_code('', 'Asm
Call 50000
End Asm')
Como diría Rorshach: "Urm..."
jevilon
Mensajes: 50
Registrado: Lun, 03 Oct 2011, 17:05

Re: Comprimir pantallas de carga

Mensajepor jevilon » Dom, 10 Mar 2013, 23:08

Perfecto, de todas formas con esto me valdria, para hacer un par de pantallazos para instrucciones, el menu y el final
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Comprimir pantallas de carga

Mensajepor na_th_an » Lun, 11 Mar 2013, 08:16

Ahí va:

viewtopic.php?f=12&t=1122

Usar esto combinándolo con paginación es bastante fácil, podemos añadir esta función:

$this->bbcode_second_pass_code('', 'Sub aplibUnpack128 (page as uByte, source as uInteger, destination as uInteger)
Poke uInteger @apDataPool, source
Poke uInteger 2 + @apDataPool, destination
Poke 1 + @aplib_unpack_128, page
aplib_unpack_128:
Asm
di
ld a, 3
ld b, 16
or b
ld bc, $7ffd
out (c), a

ld hl, (ap__source)
ld de, (ap__destination)

push ix ; Need this. ZX Basic doesn't like that we fiddle with IX.
push iy
call depack
pop iy
pop ix ; Need this. ZX Basic doesn't like that we fiddle with IX.

ld a, 16
ld bc, $7ffd
out (c), a
ei
End Asm
End Sub')

Y meter los binarios que necesitemos en otra página de RAM.

Por cierto, esto viene muy bien:

$this->bbcode_second_pass_code('', 'copy /b cosa1.bin + cosa2.bin + cosa3.bin RAM3.bin')

;)
Como diría Rorshach: "Urm..."
jevilon
Mensajes: 50
Registrado: Lun, 03 Oct 2011, 17:05

Re: Comprimir pantallas de carga

Mensajepor jevilon » Lun, 11 Mar 2013, 09:49

Ñam ñam rico rico y con fundamento... A ver si soluciono un problema al cual no le veo solución... Y terminó ya el juego...

na_th_an cuando puedas te pasas por el hilo de la paginacion en speccy... explico ahi un poco mi problema... y es que por mas que lo miro... no le veo logica... graciassss

Volver a “Ayuda”

¿Quién está conectado?

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