Toqueteando las tripas del OCS en ASM. Nivel -1

Avatar de Usuario
Chema
Mensajes: 2185
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1661 veces
Agradecimiento recibido: 542 veces
Contactar:

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Chema » 07 Jun 2019 22:19

Último mensaje de la página anterior:

Está genialmente explicado, Mlake. Creo que le voy cogiendo el tranquillo.

Aunque sigo sin mucho tiempo, he dedicado un par de horitas hoy a probar cosas con sprites. A parte de los letreros que se desplazaban y el cursor con colorines animados :) hoy he metido un par de sprites animados para simular brillos. Como son sprites, no se reflejan en el agua, mientras que si cambiase el gráfico del letrero con BOBs, sí que lo haría...

Ya sabéis que los gráficos no son lo mío y tengo una guerra particular con las paletas, pero bueno, se trata de pillar cómo funcionan las cosas, no de hacer una intro -507

Bueno, haré más cosas, pero si quieres cambiar de tema en el curso, perfecto. Estoy deseando llegar al blitter... de hecho tengo en la cabeza ya un pequeño proyectito que molaría :)

MyMovie (1).gif
MyMovie (1).gif (555.42 KiB) Visto 259 veces

Avatar de Usuario
frankrodiii
Mensajes: 19
Registrado: 26 May 2019 14:46
Agradecimiento recibido: 6 veces
Contactar:

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor frankrodiii » 08 Jun 2019 01:12

Chema escribió:Está genialmente explicado, Mlake. Creo que le voy cogiendo el tranquillo.

Aunque sigo sin mucho tiempo, he dedicado un par de horitas hoy a probar cosas con sprites. A parte de los letreros que se desplazaban y el cursor con colorines animados :) hoy he metido un par de sprites animados para simular brillos. Como son sprites, no se reflejan en el agua, mientras que si cambiase el gráfico del letrero con BOBs, sí que lo haría...

Ya sabéis que los gráficos no son lo mío y tengo una guerra particular con las paletas, pero bueno, se trata de pillar cómo funcionan las cosas, no de hacer una intro -507

Bueno, haré más cosas, pero si quieres cambiar de tema en el curso, perfecto. Estoy deseando llegar al blitter... de hecho tengo en la cabeza ya un pequeño proyectito que molaría :)

Para un inexperto en Amiga como yo estoy impresionado con este efecto. -grin
-m4c SE/30

Avatar de Usuario
Mlake
Mensajes: 51
Registrado: 27 Mar 2019 19:54
Agradecido : 25 veces
Agradecimiento recibido: 124 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Mlake » 08 Jun 2019 03:49

Chema escribió:Está genialmente explicado, Mlake. Creo que le voy cogiendo el tranquillo.

Aunque sigo sin mucho tiempo, he dedicado un par de horitas hoy a probar cosas con sprites. A parte de los letreros que se desplazaban y el cursor con colorines animados :) hoy he metido un par de sprites animados para simular brillos. Como son sprites, no se reflejan en el agua, mientras que si cambiase el gráfico del letrero con BOBs, sí que lo haría...

Ya sabéis que los gráficos no son lo mío y tengo una guerra particular con las paletas, pero bueno, se trata de pillar cómo funcionan las cosas, no de hacer una intro -507

Bueno, haré más cosas, pero si quieres cambiar de tema en el curso, perfecto. Estoy deseando llegar al blitter... de hecho tengo en la cabeza ya un pequeño proyectito que molaría :)

MyMovie (1).gif

Diras lo que quieras pero te ha quedado de PM. -thumbup

Todo lo que hemos hecho ha sido para aprovechar el DMA de sprites.
Si quieres profundizar, se podrian reutilizar los sprites y hacerles el "agua" cambiando SPRxPOS con el copper, a la vez que cambiamos la del scroll.

Ya que conoces como funciona SPRxPOS ($YYXX) y SPRxCTL ($YfMP), seguro que este link se hace entendible.

http://codetapper.com/amiga/sprite-tricks/stardust/

Aqui reutilizan los sprites a copper. (paran en X linea, cargan el puntero, modifican SPRxPOS y SPRxCTL y listo), ademas puedes ver como usan la triquiñuela de cambiar el modulo para hacer el reflejo del tunel. Como usan los sprites "mezclados" para la nave.....

Sobre el hilo, yo creo que solo hace falta explicar la prioridades entre playfields/sprites (saber que plano va delante del otro y/o sus posiciones entre los sprites). Con eso ya pueden ir tirando los que no se quieren meter en fregados nuevos y quieren consolidar lo anterior.

Despues nos meteremos a blitear. OJO, que nadie espere virguerias. No soy ELITE, veremos como funciona por encima, como operar con él (minterms) y poco mas... no vamos a hacer glenz vectors. -grin

Avatar de Usuario
Skynet
Mensajes: 8
Registrado: 04 Nov 2018 22:50
Ubicación: Almería
Agradecido : 32 veces
Agradecimiento recibido: 14 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Skynet » 08 Jun 2019 23:44

¿Cómo que no? ¿No va a haber Glenz vectors? Bueno, pues algunos sencillitos en wireframe -grin

Avatar de Usuario
kikems
Mensajes: 3093
Registrado: 30 May 2013 19:23
Agradecido : 851 veces
Agradecimiento recibido: 1186 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor kikems » 09 Jun 2019 11:57

Uffff , la que vais a terminar armando aquí entre los tres.

Avatar de Usuario
Mlake
Mensajes: 51
Registrado: 27 Mar 2019 19:54
Agradecido : 25 veces
Agradecimiento recibido: 124 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Mlake » 10 Jun 2019 13:00

Skynet escribió:¿Cómo que no? ¿No va a haber Glenz vectors? Bueno, pues algunos sencillitos en wireframe -grin

Con mis matematicas de Graduado Escolar en un centro de adultos,va a estar complicado...

Ojala estuviera en mi mano. :(

Y encima chema, kikems y ron te jalean. -rofl

Avatar de Usuario
Mlake
Mensajes: 51
Registrado: 27 Mar 2019 19:54
Agradecido : 25 veces
Agradecimiento recibido: 124 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Mlake » 11 Jun 2019 03:41

CAP 5 Prioridad Playfields/Sprites

Si ya nos apañamos con los sprites por DMA, solo nos queda organizar la pantalla.


El encargado de la prioridad es BPLCON2 .

http://amiga-dev.wikidot.com/hardware:bplcon2

De la misma forma que BPLCON0 se encargaba de la configuracion "general" y BPLCON1 del scroll, ahora tenemos BPLCON2.


Imagen
La mejor explicacion de todo el HRM es este dibujo.




Prioridad entre sprites:

Esta es sencilla, SPRITE0 es el mas cercano a nosotros y SPRITE7 el mas lejano.
Aqui no hay nada que rascar, al estar colocados en ese orden en el DMA, se da por hecho que a medida que te acercas a DDFSTART, los sprites deben ser mas "prescindibles" (ver la introduccion del hilo).
Recordad cuando haciamos el scroll, al ensanchar el DDF de $38 a $30, nos comiamos el ultimo sprite.

Imagen


Prioridad entre Playfields:

De esto se encarga el bit 6 de BPLCON2.
0 Si queremos el PF1 encima y PF2 debajo
1 Si queremos el PF2 encima y PF1 debajo


Ahora queda la prioridad PF/SPR.

Una vez tenemos claro como ordenar los fondos (bit 6), tenemos que configurar su posicion respecto a los sprites.

Como siempre, toca hacer un ejercicio mental:
Vamos a quedarnos con un solo Playfield y tenemos 8 Sprites (4parejas).
Podemos insertar nuestro PF entre aquellas PAREJAS que queramos.

Hay 5 "combinaciones" segun te interese.
¿Como las elijo? para eso tenemos 3 bits.

000 PFx SP01 SP23 SP45 SP67
001 SP01 PFx SP23 SP45 SP67
010 SP01 SP23 PFx SP45 SP67
011 SP01 SP23 SP45 PFx SP67
100 SP01 SP23 SP45 SP67 PFx

Teniendo esto claro, hay que pasar estos bits a BPLCON2.

Segun el manual, tienes los bits 0/1/2 para PF1 y 3/4/5 para PF2, en principio es sencillo....
Solo tiene una pega que hay que recordar. En SINGLE PLAYFIELD hay que usar los bits 3/4/5 (aunque la logica te diga single=PF1). Los bits 0/1/2 funcionan en DUAL PLAYFIELD. OJO.

Imagen

Para reciclar a nuestros pajaros, simplemente le hemos dado prioridad sobre la luna.
En cambio, al llegar a la zona pal aprovecho la parada y le doy preferencia al fondo.

De paso dejo una rutina chusterilla de joy para el que quiera hacer experimentos con lo aprendido.
Adjuntos
Loro2.zip
(7.82 KiB) No descargado aún

Avatar de Usuario
Chema
Mensajes: 2185
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1661 veces
Agradecimiento recibido: 542 veces
Contactar:

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Chema » 12 Jun 2019 22:07

Ajá... ya me parecía a mí que tenía que poderse poner un sprite detrás de un plano :)

Supongo que pillarle el truco a esto es ya cuestión de hacer cosas y resolver problemas para acostumbrarse. La rutinilla con los pájaros mola un montón :)

Según te he entendido anteriormente, ¿sería posible cambiar la posición del sprite con el Copper, *en medio* de su pintado? Es decir, ¿entre una línea y otra? Con eso se tienen que poder hacer efectos chulos... como una imagen en un monitor que se deforma por el ruido o cosas así.

Crees que sería buena idea, por ejemplo, usar sprites para implementar las burbujas tipo cómic y donde el texto haga scroll, como en SkoolDaze? supongo que es cosa de ir bliteando el texto sobre el gráfico del sprite. Las burbujas eran, creo que de 48 pixels de ancho, aquí podrían hacerse con 3 sprites... (no, no pienso en portar Skool Daze, era sólo una idea...)

Avatar de Usuario
Mlake
Mensajes: 51
Registrado: 27 Mar 2019 19:54
Agradecido : 25 veces
Agradecimiento recibido: 124 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Mlake » 13 Jun 2019 02:31

Chema escribió:Ajá... ya me parecía a mí que tenía que poderse poner un sprite detrás de un plano :)

Supongo que pillarle el truco a esto es ya cuestión de hacer cosas y resolver problemas para acostumbrarse. La rutinilla con los pájaros mola un montón :)

Según te he entendido anteriormente, ¿sería posible cambiar la posición del sprite con el Copper, *en medio* de su pintado? Es decir, ¿entre una línea y otra? Con eso se tienen que poder hacer efectos chulos... como una imagen en un monitor que se deforma por el ruido o cosas así.

Crees que sería buena idea, por ejemplo, usar sprites para implementar las burbujas tipo cómic y donde el texto haga scroll, como en SkoolDaze? supongo que es cosa de ir bliteando el texto sobre el gráfico del sprite. Las burbujas eran, creo que de 48 pixels de ancho, aquí podrían hacerse con 3 sprites... (no, no pienso en portar Skool Daze, era sólo una idea...)



Los sprites se pueden partir sin problema.
Solo tienes que esperar con el coper la linea adecuada y cambiar la $XX usando SPRxPOS.
Con eso le damos su nueva posicion.
Por ej:
dc.w $ac07,$fffe (Espera al principo de la linea $ac)
dc.w $SPRxPOS,$acXX
Al llegar a la linea $AC, la X vale lo que le hayas puesto.

Lo puedes hacer varias veces a lo largo del sprite.


Imagen

Si ademas de trocearlos quieres separarlos, se complica un poco.
Ahora no hay que estar pendiente de donde empieza el nuevo trozo sino donde termina el que estas pintando.
Si el sprite por defecto tenia 100 pixels (un suponer) y tu lo cortas, el puntero sigue corriendo mientras no lo usas.
Para evitar eso, usamos las paradas para frenar los punteros y despues cargar la nueva posicion.
Por ej:
dc.w $ac07,$fffe (Espera al principo de la linea $ac)
dc.w $SPRxXTL,$ac00 (frena los punteros dandole la Yfinal+byte de control 00)
dc.w $SPRxPOS,$bcXX (Coloca la nueva posicion ($YYXX) del sprite 16 pix mas abajo)

Y asi con los trozos que necesites......


Imagen

Espero haberme explicado bien.


Sobre los bocadillos..... como dirian los gallegos, depende.
Blitear sobre los sprites tiene 2 ventajas en este caso.
Si necesitas transparencia y si necesitas que se muevan (que vibre mientras hablan los personajes, que se muevan de un sitio a otro....).
Ahi te evitas guardar el fondo y usas blits sencillos A=D. Se podria mirar esa aproximacion.

Si el bocadillo es estatico y opaco. Usar BOBs de toda la vida solo es caro al principio (guardo fondo, pinto bocadillo) pero despues puedes blitear el texto dentro de forma directa, porque el propio bocadillo te disimula el fondo de la fuente.

Avatar de Usuario
Mlake
Mensajes: 51
Registrado: 27 Mar 2019 19:54
Agradecido : 25 veces
Agradecimiento recibido: 124 veces

Re: Toqueteando las tripas del OCS en ASM. Nivel -1

Mensajepor Mlake » 17 Jun 2019 00:09

Uso del DMA de SPRITES:

Para los que les gusta hilar fino y saber que ocurre con el DMA, quiza esto les sirva de ayuda.

Imagen

En violeta tenemos el tiempo en el que trabaja el DMA de Sprites.
Los primeros puntos son el momento en el que procesan los punteros que les da el copper. SPRxPTH/L
Se iluminan todos los canales porque siempre hay que declarar todos los sprites, aunque sea a uno dummy.

Despues podemos ver como abren y cierran para mostrar la imagen de los sprites.

Como vimos en el post anterior, podemos abrir y cerrar los DMA a mano usando SPRxCTL/SPRxPOS.


Volver a “Software & OS Amiga”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado