Página 1 de 3

Scroll horizontal carácter a carácter

Publicado: Vie May 06, 2016 7:39 am
por Kodaly
Siguiendo con las prácticas en ensamblador, he conseguido realizar un scroll horizontal carácter a carácter. Como me estoy iniciando lo he hecho superponiendo una pantalla sobre otra con una rutina que pinta el mapa a partir de una coordenada en el array de tiles. Así a pelo el scroll funciona aunque obviamente es mejorable.
El problema es que el sprite que va en medio parpadea debido a que cada pantalla se machaca una encima de otra por lo que se borra todo el sprite.
¿Cómo podría solucionar esto?
Muchas gracias.

Re: Scroll horizontal carácter a carácter

Publicado: Vie May 06, 2016 9:27 am
por climacus
Hola.

Existen varias maneras de solucionarlo.
Una sería usar un buffer de pantalla. Creas la pantalla actual en el buffer, pintas todos los sprites, y cuando esté todo lo que se tiene que ver, vuelcas todo el buffer a la pantalla real.
Otra manera es hacer el juego para modelos de 128kb y usar la shadow screen.
Otra sería usar el método de ir pintando detrás del raster de la pantalla, pero éste es más complicado y tiene sus limitaciones.

Yo en Knightmare 2ZX he usado el primer método y si usas rutinas rápidas para crear el mapa, pintar los sprites y volcar el buffer, el asunto funciona bastante bien.

Re: Scroll horizontal carácter a carácter

Publicado: Vie May 06, 2016 11:09 am
por Kodaly
Climacus, muchísimas gracias.
Voy a probar con el buffer. Creo que lo he entendido pero lo que parece complicado es ver de qué forma puedo pintar en la pantalla del buffer y de ahí rápidamente volcarlo todo en la pantalla real. Probaré a ver qué velocidad consigo.

Re: Scroll horizontal carácter a carácter

Publicado: Vie May 06, 2016 12:07 pm
por climacus
Para eso, puedes usar LDI para ir volcando cada línea. Lo más rápido es ir haciendo POP y PUSH alternando la pila entre el buffer y la pantalla real

Re: Scroll horizontal carácter a carácter

Publicado: Vie May 06, 2016 4:33 pm
por Kodaly
Gracias de nuevo, climacus.
He probado a hacer el volcado a la memoria de pantalla real desde la dirección 51200, por probar. Lo he hecho con ldir, que aunque sé que es lentísimo quería hacer una prueba inicialmente.
Primero pinta el primer tercio de la pantalla, luego los tiles que debieran ir en el segundo tercio se han pintado sobre el primer tercio. La zona de pantalla del segundo tercio se queda en blanco y sí que se imprime el tercer tercio correctamente.
Creía que se copiaría todo del tirón tal cual de un byte a otro.
Pruebo escribiendo varios ldi pero sólo se imprimen los primeros bytes y el resto aparecen y desaparecen rápidamente.
En fin, seguiré tanteando a ver qué tal.

Re: Scroll horizontal carácter a carácter

Publicado: Sab May 07, 2016 10:38 am
por Kodaly
Lo que comentaba lo he solucionado haciendo el buffer en otra dirección, en 49152 :oops: Con ldir me pinta bien la pantalla. Ahora a crear un código rápido con ldi.
¿Hay alguna zona de la memoria en concreto recomendada para el buffer o ya depende de cada juego?

Re: Scroll horizontal carácter a carácter

Publicado: Sab May 07, 2016 7:25 pm
por climacus
La memoria que tenga que ver con la pantalla y para código que se tenga que ejecutar rápido o a velocidad constante no debe ser contenida. Osea hay que ponerlo por encima de 32728. Editado

Re: Scroll horizontal carácter a carácter

Publicado: Dom May 08, 2016 10:22 pm
por Alxinho
A ver si te animas algún día a hacer cursillos Climacus! :mrgreen:

Re: Scroll horizontal carácter a carácter

Publicado: Lun May 09, 2016 9:49 am
por climacus
Alxinho escribió:A ver si te animas algún día a hacer cursillos Climacus! :mrgreen:
Creo que queda patente que me explico fatal, no? :oops:

Re: Scroll horizontal carácter a carácter

Publicado: Mar May 10, 2016 9:12 am
por Alxinho
Lo que queda patente es que sabes mucho y ese mucho nos iría muy bien a todos que lo compartas con tutoriales :mrgreen:

Re: Scroll horizontal carácter a carácter

Publicado: Mar May 10, 2016 10:05 am
por radastan
Me apunto a que Climacus nos traslade sus conocimientos. Si quieres haz un texto y yo lo "traduzco", se me da bien.

Re: Scroll horizontal carácter a carácter

Publicado: Mar May 10, 2016 7:23 pm
por Kodaly
Pues sí. Gracias a las orientaciones de climacus me está quedando un scroll bastante decente. Al final estoy haciendo el buffer con la pila. Laborioso pero efectivo.

Re: Scroll horizontal carácter a carácter

Publicado: Mié May 11, 2016 8:49 am
por climacus
radastan escribió:Me apunto a que Climacus nos traslade sus conocimientos. Si quieres haz un texto y yo lo "traduzco", se me da bien.
No, si al final me liáis entre unos y otros...

Voy a mirar si puedo dedicarle el tiempo suficiente y quizá me anime.

Re: Scroll horizontal carácter a carácter

Publicado: Mié May 11, 2016 8:49 am
por climacus
Kodaly escribió:Pues sí. Gracias a las orientaciones de climacus me está quedando un scroll bastante decente. Al final estoy haciendo el buffer con la pila. Laborioso pero efectivo.
Me alegro mucho de que te haya servido. Cuando tengas algo presentable nos lo enseñas!!!!

Re: Scroll horizontal carácter a carácter

Publicado: Mié May 11, 2016 9:23 am
por Alxinho
climacus escribió:
radastan escribió:Me apunto a que Climacus nos traslade sus conocimientos. Si quieres haz un texto y yo lo "traduzco", se me da bien.
No, si al final me liáis entre unos y otros...

Voy a mirar si puedo dedicarle el tiempo suficiente y quizá me anime.
Imagen