Toqueteando las tripas del OCS en ASM. Nivel -1

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

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

Mensajepor Chema » 02 Ago 2019 09:58

Último mensaje de la página anterior:

Bueno, he estado ahogado con temas del trabajo y no he podido hacer nada :( Además, ahora Llega esa época en el año en la que uno disfruta lo que puede con la familia y eso deja poco tiempo libre para vicios :)

Prometo hacer lo posible para seguir aprendiendo cosillas de programación con el Amiga. De hecho ya tengo ideas de qué cosas quiero probar estos días... a ver si se logra.

Mlake, no dejes de avanzar con este hilo, que está quedando genial. Ya van 8 páginas ¡y lo que falta!

Tengo muchas ganas de que llegues al modo de línea del blitter.

Avatar de Usuario
Mlake
Mensajes: 178
Registrado: 27 Mar 2019 19:54
Agradecido : 76 veces
Agradecimiento recibido: 324 veces

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

Mensajepor Mlake » 07 Ago 2019 14:54

Chema escribió:Bueno, he estado ahogado con temas del trabajo y no he podido hacer nada :( Además, ahora Llega esa época en el año en la que uno disfruta lo que puede con la familia y eso deja poco tiempo libre para vicios :)

Prometo hacer lo posible para seguir aprendiendo cosillas de programación con el Amiga. De hecho ya tengo ideas de qué cosas quiero probar estos días... a ver si se logra.

Mlake, no dejes de avanzar con este hilo, que está quedando genial. Ya van 8 páginas ¡y lo que falta!

Tengo muchas ganas de que llegues al modo de línea del blitter.


Ahora mismo ando un poco liado y como no hay nadie en el hilo que esté haciendo cosillas o tenga dudas, puedo tomarmelo con calma.
A ver si le puedo dar un empujon.

Sobre el modo linea, comento lo mismo que le dije a Skynet.
Yo no entiendo de matematicas. Lo que hacemos en el hilo se tiene que poder resolver contando con los dedos. Lo demas se me escapa.
No soy informatico, electronico ni nada de eso. Para mi el Amiga es una "maquina de hacer demos".

El modo linea es menos intuitivo que la leche, los registros (modulos, punteros, etc....) cambian totalmente su funcion.
Octantes, Bresenham.... todo eso es chino para mi. :(

http://www.winnicki.net/amiga/memmap/LineMode.html

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

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

Mensajepor kikems » 07 Ago 2019 17:27

Mlake escribió:
Ahora mismo ando un poco liado y como no hay nadie en el hilo que esté haciendo cosillas o tenga dudas, puedo tomarmelo con calma.
A ver si le puedo dar un empujon.

Sobre el modo linea, comento lo mismo que le dije a Skynet.
Yo no entiendo de matematicas. Lo que hacemos en el hilo se tiene que poder resolver contando con los dedos. Lo demas se me escapa.
No soy informatico, electronico ni nada de eso. Para mi el Amiga es una "maquina de hacer demos".

El modo linea es menos intuitivo que la leche, los registros (modulos, punteros, etc....) cambian totalmente su funcion.
Octantes, Bresenham.... todo eso es chino para mi. :(

http://www.winnicki.net/amiga/memmap/LineMode.html


No te pienses eso, muchos somos los que os seguimos en la sombra, no paréis.

Avatar de Usuario
Mlake
Mensajes: 178
Registrado: 27 Mar 2019 19:54
Agradecido : 76 veces
Agradecimiento recibido: 324 veces

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

Mensajepor Mlake » 07 Ago 2019 20:48

kikems escribió:
No te pienses eso, muchos somos los que os seguimos en la sombra, no paréis.


De eso no tengo dudas,solo hay que ver los agradecimientos y los animos.

A lo que iba es que no parece que haya nadie que le corra prisa para presentar algo en el Evoke. xD

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

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

Mensajepor kikems » 09 Ago 2019 13:46

Mlake escribió:
kikems escribió:
No te pienses eso, muchos somos los que os seguimos en la sombra, no paréis.


De eso no tengo dudas,solo hay que ver los agradecimientos y los animos.

A lo que iba es que no parece que haya nadie que le corra prisa para presentar algo en el Evoke. xD


Para la Evoke no creo, pero yo tengo esperanzas de que alguno lo intente para Capacitor.

Avatar de Usuario
Mlake
Mensajes: 178
Registrado: 27 Mar 2019 19:54
Agradecido : 76 veces
Agradecimiento recibido: 324 veces

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

Mensajepor Mlake » 10 Ago 2019 02:22

CAP 6e Final de A=D

A los que ya dominan el tema, quiero que comprendan que la cantidad de burradas que puedan aparecer son para intentar explicar conceptos, sobre todo al principio.

En el capitulo anterior vimos como funcionaba el descending mode. Basicamente es hacer el blit al reves, empezamos en el ultimo word y terminamos en el primero.
Esto nos permitia (entre otras cosas) shiftear a la izquierda, asi que decidimos hacer un scrolltext.
La parte del movimiento la apañamos en el cap anterior, ahora solo nos queda empezar a escribir.


¿Cual va a ser el plan?

Imagen


Una vez tenemos en movimiento el bitmap, solo tenemos que blitear los caracteres en el extremo derecho.
Si nuestra pantalla tiene 320pix (40bytes) apuntamos pantalla+38 (el ultimo word/16pix)


Como dijimos al inicio, lo suyo es hacer el fondo mas ancho que el monitor:

En lugar del DDF (data fetching) a $38/$D0, podriamos subir a $38/$D8 (16pixel mas ancho por el lado derecho), pero tendriamos que estar atentos porque los modulos cambian (el bitmap ya no tendria 320pix sino 336, dos bytes mas).

Asi quedaria oculto todo el trabajo de pegar las letras (de la misma forma que escondiamos el fondo cuando "scrolleabamos" los playfields en capitulos anteriores).



De todos modos, dijimos que lo dejariamos todo a la vista para ir aprendiendo.

Imagen

¿Como seria el "loop" del programa?

Leemos el string, bliteamos la letra, shifteamos 16 veces (el ancho de la fuente), leemos string, pegamos otra letra , 16 shifts y todo el rato lo mismo......

Ya que sabemos el truco, podemos quitar la morralla de fondo que usabamos como guia.
Tambien podemos apreciar como se van bliteando los carateres.



Imagen

¿Se entiende la idea?





¿Como declaramos el string?

String: dc.b "BLABLABLA",0

En memoria se quedaran almacenados los ASCII codes de cada letra y el 0 nos sirve como marca para el final.

Lo demas es igual que el ejemplo anterior de tilemaps, leemos el byte del mapa (string) y bliteamos el tile correspondiente (caracter).



Si hemos pillado la idea, solo es cuestion de empezar a toquetear.

Imagen


Aqui lo hemos reutilizado con algo de color via copper, podeis hacer el scroll sobre el fondo directamente, o en un buffer aparte y cambiar el puntero de los bitplanes (BPLxPTH/L) en la linea necesaria. Si eliger esta opcion, puedes hacer que esa linea sea "dinamica" para que el texto suba y baje (como haciamos con las rasterbars).....

Podeis hacerle el efecto "agua" o deformar las letras con BPLCON1....

Todo es cosa de revisar capitulos anteriores y echarle imaginacion. xD
Adjuntos
Scrolltext.zip
(3.04 KiB) Descargado 86 veces

Avatar de Usuario
Mlake
Mensajes: 178
Registrado: 27 Mar 2019 19:54
Agradecido : 76 veces
Agradecimiento recibido: 324 veces

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

Mensajepor Mlake » 07 Sep 2019 01:16

CAP 6f Fuente B y blits en color

A los que ya dominan el tema, quiero que comprendan que la cantidad de burradas que puedan aparecer son para intentar explicar conceptos, sobre todo al principio.


Imagino que ya estais cansados de trabajar con A y D. Como vimos en la introduccion al blitter, es la combinacion mas barata y versatil.


¿Que tiene de "malo" usar B y D? Aqui vienen las pegas....

1º Sabemos que el blitter trabaja por etapas (pipeline) y que la FUENTE B es mas lenta (6 vs 4 ciclos) que la FUENTE A . (ver Capitulo 6 y 6b)

2º No podemos enmascarar los primeros/ultimos 16 pixels como haciamos con la FUENTE A (BLTAFWM y BLTALWM) . Ya vimos que sin eso, el bob se vuelve un "pegote" cuando lo mueves.


Por lo demas, A y B funcionan igual. Apuntamos a las fuentes/destino, shifteamos (si es necesario) y copiamos. Recordad nuestra chuleta $AFMMB000.

Esas "pegas" de las que hablamos se arreglan usando las fuentes A y B A LA VEZ.
La fuente A nos sirve de mascara para B y seguimos gastando 6 ciclos porque A nos sale "gratis".






Minterms.

Imagen

Ya conocemos esta tabla de capitulos anteriores. Tenemos todas las combinaciones posibles entre fuentes. Ahora vamos a usar A y B.

Imagen

Antes podiamos copiar tal cual o hacer un negativo. Con dos fuentes el abanico se abre.
Para no dar palos de ciego, vamos a poner una situacion "real" y buscaremos la solucion que nos convenga.

Imagen

Tenemos una "textura" que parece un codigo de barras y dos mascaras (estrella/circulo).

Si quisieramos una mascara positiva:
Cuando A=0 (blanco) el destino tiene que ir a 0. Da igual lo que tenga B.
Cuando A=1 (negro), el destino tiene que ser igual que B.

Si quisieramos una mascara negativa:
Cuando A=1, el destino es 0
Cuando A=0, el destino es igual a B.


Imagen

¿Se entiende la idea?



Blits en color

Hasta ahora hemos estado bliteando a un bitplane, lo que pasa que con el copper y el dual playfield, habiamos "falseado" los colores.

¿Por que nos metemos en ese tema ahora?
Porque a la hora de blitear en color con mascara, hay que tener en cuenta como hemos almacenado la imagen.

Al principio del hilo siempre os he recomendado trabajar con bitplanes entrelazados en lugar de tenerlos sueltos. El motivo es que estando entrelazados, podemos recortar toda la imagen con un solo blit.
Si tenemos los bitplanes separados, tendriamos que hacer un blit por cada plano. Eso significa gastar mas CPU (configurar varios blits) y perder tiempo esperando a que el blitter termine para enviar el siguiente.

La teoria es muy bonita pero... ¿a que viene que esto? No estamos haciendo nada exigente como para estar obsesionandonos con los ciclos.

El problema es que a la hora de enmascarar, la opcion entrelazada (que a priori es la mejor)nos pide hacer un sacrificio. Tenemos que tener una mascara para cada bitplane, es decir gastar memoria.
Si la textura del ejemplo anterior tuviera 3 bitplanes (8colores) necesitariamos 3 estrellas y 3 circulos.

En cambio al usar bitplanes separados, el bliteo nos sale un poco mas caro en tiempo, pero con una mascara podemos cubrir todos los bitplanes (por si andamos justos de memoria pero nos sobra tiempo).




En la proxima entrada haremos alguna chorradilla para explicar las cosas mas a fondo.
Ya es tarde y mañana hay que producir.

Avatar de Usuario
Skynet
Mensajes: 48
Registrado: 04 Nov 2018 22:50
Ubicación: Almería
Agradecido : 125 veces
Agradecimiento recibido: 29 veces

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

Mensajepor Skynet » 25 Nov 2019 17:36

Ya va tocando otra parte de esta interesante serie -grin

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

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

Mensajepor Chema » 25 Nov 2019 19:57

Es verdad... Venga Mlake, dale caña :)

Siento no estar nada activo siguiendo el curso. Es que se me han puesto las cosas "interesantes" en el curro y me he quedado sin tiempo, de verdad. Pero prometo seguir con ello en cuanto pueda.

Avatar de Usuario
Estrayk
Mensajes: 1232
Registrado: 05 Jun 2015 18:36
Ubicación: Valencia
Agradecido : 345 veces
Agradecimiento recibido: 985 veces

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

Mensajepor Estrayk » 26 Nov 2019 15:53

Mlake, aunque comentemos pocos, estamos mucha gente atenta, venga!, siguiente episodio plis!
-j4tar1 ・Falcon 060 ・・MegaSTE ・・STe ・
-coam1・v600・A1000・A1220・A1230・A1260・v1200・CD32・G5 MorphOS・
MiSTMiSTer・X68000・Acorn A3010・Performa 630・PowerMac 4400/7600/G3/G4・Ultimate64・Atari XE 1Mb+VBXE・MSX2F1XD

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

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

Mensajepor kikems » 26 Nov 2019 16:46

Eso, sigue dándole, aquí lo seguimos todos.

Avatar de Usuario
Skynet
Mensajes: 48
Registrado: 04 Nov 2018 22:50
Ubicación: Almería
Agradecido : 125 veces
Agradecimiento recibido: 29 veces

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

Mensajepor Skynet » 23 Oct 2020 08:51

A ver si resucita este hilo tan interesante -drinks

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

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

Mensajepor kikems » 23 Oct 2020 10:53

Skynet escribió:A ver si resucita este hilo tan interesante -drinks


Cierto. -thumbup

Avatar de Usuario
Mlake
Mensajes: 178
Registrado: 27 Mar 2019 19:54
Agradecido : 76 veces
Agradecimiento recibido: 324 veces

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

Mensajepor Mlake » 10 Ago 2021 01:35

CAP 6g Máscaras

A los que ya dominan el tema, quiero que comprendan que la cantidad de burradas que puedan aparecer son para intentar explicar conceptos, sobre todo al principio.

Como vimos en el capitulo anterior, a la hora de usar el bliter con varios bitplanes tenemos que ver como colocar los planos.

Como siempre hay que decidir si gastamos memoria o tiempo de proceso. Ademas, segun el modo que elijas, algunas tecnicas/efectos son mas faciles de hacer que otros.


¿Sueltos o entrelazados?


Imagen

Si tenemos los planos sueltos, es mas facil cuadrar los punteros (no tienes que calcular nada).
A la hora de montar el playfield te olvidas de modulos e historias....
El problema es que a la hora de blitear, tienes que hacer un blit por plano y es tiempo que tienes a la CPU esperando para enviar el siguiente.
Con los planos entrelazados, con un blit atacas a todos los bitplanes de una vez.
La pega es que al montar el playfield, tienes que calcular los punteros, los modulos, etc.....

La mayoria de las veces usaremos la opcion entrelazada para aprovechar el bliter a tope.

¿Cual es el sacrifico entonces?


Imagen

Como vemos en la imagen, para enmascarar el blit podemos reutilizar la mascara si separamos los planos.
Si queremos que haga los 3 blits en 1, tenemos que darle 3 mascaras (entrelazadas tambien).

Parece una tonteria, pero te pones a llenar la memoria de graficos y las mascaras te empiezan a comer el terreno.

¿Como trasladamos la idea a nuestro codigo?
Repasemos la posibilidades de las fuentes.

Fuente D.
Es el destino del blit.
Es un bloque de 16pixels (minimo) y su posicion tiene que cuadrar en zonas multiplo de 16 (0 pixel -16 pixels -32 pixels -48...)
Usando esta solo esta fuente, podemos borrar/llenar bloques de memoria con las limitaciones anteriores.
Como no hay mas fuentes, no podemos jugar con minterms y solo podemos mover ceros o unos.

Fuente A
La mas versatil.
Podemos desplazar el contenido 1-15 pixels a la derecha. (primer nibble de nuestra chuleta)
Con esto evitamos la limitacion de ir de 16 en 16 pixels y podemos movernos a cualquier sitio
Ademas podemos enmascarar hasta 16 pixels tanto al inicio como al final de cada blit (BLTAFWM).
Como vimos, esto nos sirve para tapar basuras generadas por el desplazamiento.

Fuente B
Es un temino medio, nos deja desplazarnos a la derecha (el nibble B de la chuleta)como la fuente A , pero no tiene el poder de enmascarar la basura del principio o del final.

La gran ventaja es que con esta fuente se amplian los minterms aun mas.

Os podeis liar la manta a la cabeza con las tablas de verdad y jugar con las combinaciones, aqui solo vamos a tratar lo mas simple y util.



COMENZAMOS CON NUESTRA CHULETA .

BLTCON0 = $AFMMB000

A= desplazamiento FUENTE A
F= ¿Cuantas fuentes/destino?
MM= Minterm
B= desplazamiento FUENTE B
000 = Lo demas apagado.

Despejamos.
Desplazamiento de A = 0
Fuentes A B D = D
Minterm = 03 o 30 si queremos mascara positiva o negativa
Desplazamiento de B = 0


TOTAL

BLTCON0 = $0D030000
o
BLTCON0 = $0D030000



El resto es como siempre.
Configurar mascaras de A (BLTAFWM)
Modulos las fuentes (BLTxMOD)
Punteros de las fuentes (BLTxPTH)
Tamaño del blit (BLTSIZE)


El unico cambio (ahora que hacemos los blits en color) es que multiplicamos la altura de nuestro bloque por el numero de bitplanes, ya que estamos trabajando con planos entrelazados.

ANTES = move.w #altura_del_bob_en_lineas*64+ancho_del_bob_en_words,BLTSIZE(A6)
AHORA = move.w #altura_del_bob_en_lineas*numero_de_planos*64+ancho_del_bob_en_words,BLTSIZE(A6)






En temas codigo no vamos a profundizar mas porque no tiene mucha ciencia si ya dominamos las lecciones anteriores. Lo que me interesa es que nos vayamos familiarizando con el sistema planar y sus posibilidades (no todo van a ser pegas).


Imagen

El ejemplo de hoy es sencillo, dos mascaras (positiva y negativa). No hay mucho que rascar.


Al principio del capitulo comentabamos que lo normal va a ser usar este sistema entrelazado, pero ¿y si jugamos con los planos sueltos?

El foco es un simple bob que se mueve solo sobre el bitplane superior que es el que se encarga de dar luz/sombra a los bitplanes de abajo.


Imagen


Como solo tocamos uno de los planos, nos puede ser mas sencillo hacerlo con bitplanes separados porque en este caso el entrelazado mas que ayudar, estorba.
Los tipicos efectos de Shadebobs suelen funcionar asi, van "manchando" un bitplane, saltan a otro y van dejando esas estelas que se entremezclan.
Adjuntos
Luces.7z
(7.75 KiB) Descargado 35 veces

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

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

Mensajepor Chema » 11 Ago 2021 10:00

Hey!!! Ahora estoy de vacas y sin equipo para programar a mano, pero esto lo retomo en cuanto pueda!!! GRACIAS

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

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

Mensajepor minter » 11 Ago 2021 10:01

Chema escribió:Hey!!! Ahora estoy de vacas y sin equipo para programar a mano, pero esto lo retomo en cuanto pueda!!! GRACIAS

Ya estás tardando!!! -11

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

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

Mensajepor kikems » 11 Ago 2021 10:53

Me fascina este hilo.


Volver a “Software & OS Amiga”

¿Quién está conectado?

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