¿Cómo se usa el registro 23? (scroll vertical)

Por Warchild

Paragon (1285)

Imagen del Warchild

23-11-2011, 13:32

No acabo de aclararme con este tema, todo lo que consigo es hacer un scroll a saco de la página activa pero no sé como mover la tabla de los sprites para que no esté en la misma página que la del scroll. ¿Alguien me puede dar algun pequeño ejemplo en Basic?

Saludos Smile

Login sesión o register para postear comentarios

Por pepitor128

Master (156)

Imagen del pepitor128

26-11-2011, 13:41

No entiendo que quieres hacer. ¿Mover los sprites a la pagina inactiva para esconderlos o algo? Los sprites no van con las páginas a su aire y son independientes del scroll vertical.

Por Warchild

Paragon (1285)

Imagen del Warchild

26-11-2011, 22:46

Pongo un pequeño listado para ilustrar el problema, así me será más fácil explicarme:

10 SCREEN 5:SET PAGE 0,0:COLOR 15,1,1
20 FOR K=0 TO 7:READ A:A$=A$+CHR$(A):NEXT
30 SPRITE$(0)=A$
40 CIRCLE (40,40),15,8
50 FOR J=0 TO 255
60 VDP(24)=J
70 PUT SPRITE 0,(128,96),15
80 NEXT
90 GOTO 50
100 DATA 255,255,255,255,255,255,255,255

Bueno, espero no haber metido la pata tecleando... el programa es simple, en screen 5 defino un sprite (sin matarme mucho) y dibujo un circulito (lo sé, hay un Picasso en mi interior). Mediante un bucle usando el registro 23 hago un scroll de toda la página. El sprite se mueve tambien con el scroll, pero lo que me interesa es la zona inferior de la página, donde verás que aparece una franja que contiene datos (la pequeña linea blanca horizontal de la izquierda corresponde al sprite definido antes). Quizá haya entendido mal, pero pienso que esos datos pueden situarse en cualquier zona de la VRAM, por lo que dispondrías de toda la página para gráficos. ¿Esto es así o solo pueden situarse las tablas de los sprites en la misma página? Es que de otra forma no veo como hacer un scroll por hardware sin que aparezca esa franja Question

Por pepitor128

Master (156)

Imagen del pepitor128

29-11-2011, 12:26

La resolución de pantalla en screen 5 es de 256x256 aunque en pantalla sólo puedas ver 192 lineas verticales (o 212). Si la pintas sólo hasta la vertical 192 aún te quedan 64 pixels sin pintar (los 64 pixels que no caben y sólo se ven al hacer scroll). Lo que no sé es si con comandos basic puedes llegar a pintar esos 64 pixels o tendrás que hacerlo escribiendo directamente en vram.

Por Warchild

Paragon (1285)

Imagen del Warchild

30-11-2011, 15:57

He hecho varias pruebas pero no acabo de enterarme. Consigo pintar la zona con vpokes pero poco más, las tablas de los sprites las muevo al camviar de página pero el sprite se queda fijo, no se mueve con PUT SPRITE ni con vpokes a la tabla de atributos... vamos que estoy mu liao, me rindo de momento con este tema y cambio a un proyecto sin scroll y en SCREEN 4, a ver si atino un poco más.

Gracias por la ayudaBig smile

Por assembler

Champion (404)

Imagen del assembler

30-11-2011, 17:44

Creo que los sprites, para conseguir el efecto, tienes que moverlos tú para que se "queden donde están" (realmente se deben mover hacia abajo)

70 PUT SPRITE 0,(128,96+J),15

Por Warchild

Paragon (1285)

Imagen del Warchild

02-12-2011, 16:35

El problema no es sincronizar las coordenadas del sprite, el tema es que el registro 23 mueve toda la pantalla, incluida la zona que normalmente no es visible y donde están los datos de los sprites y la copia de la paleta. Con el bucle for...next se ve claro a qué me refiero. Gracias de todos modos, como dije intentaré hacer algo en SCREEN 4 (ya tengo mi churro-editor de caracteres) y ya puestos miraré de liarme con el ensamblador. Preparaos!

Tongue

Por MsxKun

Paragon (1030)

Imagen del MsxKun

02-12-2011, 17:00

Reubica los sprites a otra pagina.

ADDRESSES OF TABLES REGISTERS

- register 5:
Bit 0-7: lsb of the Sprite's Attribute Table
- register 11:
Bit 0-1: Sprite Attributes table initial address
Bit 2-7: not used
- register 6:
Bit 0-5: Sprite's Profiles table initial address
Bit 6-7: not used

O algo por el estilo... (en el handbook esta mas detallado)