Toqueteando las tripas del OCS en ASM. Nivel -1

Avatar de Usuario
Chema
Mensajes: 2261
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1907 veces
Agradecimiento recibido: 604 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: 75
Registrado: 27 Mar 2019 19:54
Agradecido : 34 veces
Agradecimiento recibido: 165 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: 3412
Registrado: 30 May 2013 19:23
Agradecido : 992 veces
Agradecimiento recibido: 1366 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: 75
Registrado: 27 Mar 2019 19:54
Agradecido : 34 veces
Agradecimiento recibido: 165 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: 3412
Registrado: 30 May 2013 19:23
Agradecido : 992 veces
Agradecimiento recibido: 1366 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: 75
Registrado: 27 Mar 2019 19:54
Agradecido : 34 veces
Agradecimiento recibido: 165 veces

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

Mensajepor Mlake » 10 Ago 2019 02:22

CAP 6e Final de A=D

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 32 veces

Avatar de Usuario
Mlake
Mensajes: 75
Registrado: 27 Mar 2019 19:54
Agradecido : 34 veces
Agradecimiento recibido: 165 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


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: 13
Registrado: 04 Nov 2018 22:50
Ubicación: Almería
Agradecido : 43 veces
Agradecimiento recibido: 17 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: 2261
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1907 veces
Agradecimiento recibido: 604 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: 788
Registrado: 05 Jun 2015 18:36
Ubicación: Valencia
Agradecido : 161 veces
Agradecimiento recibido: 520 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・CD32・G5 MorphOS・
MiSTMiSTerZX-UnoUnAmiga・Acorn A3010・Performa 630・Mac 4400・PowerMac G4 MDD・Ultimate64・Atari XE 1Mb+VBXE・MSX2F1XD

Avatar de Usuario
kikems
Mensajes: 3412
Registrado: 30 May 2013 19:23
Agradecido : 992 veces
Agradecimiento recibido: 1366 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.


Volver a “Software & OS Amiga”

¿Quién está conectado?

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