Toqueteando las tripas del OCS en ASM. Nivel -1

Avatar de Usuario
kikems
Mensajes: 3105
Registrado: 30 May 2013 19:23
Agradecido : 855 veces
Agradecimiento recibido: 1190 veces

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

Mensajepor kikems » 20 May 2019 19:07

Último mensaje de la página anterior:

Aquí te comparto los MOD de la Compo de AW celebrada en 2016, siempre que no se usen con fines comerciales, como es el caso, no tienen problemas, es más los autores encantados y orgullosos de que la gente los pueda usar.
Los autores son ; Joss, Fernando Cabrera, Uctumi, Fireboy y Trojar.

AmigaWaveWeekCompoI2016.rar
(30.95 KiB) Descargado 8 veces


De gráficos, a ver si rescato algunos render 3D y los podemos adaptar a modo de prueba.

Salva
Mensajes: 3
Registrado: 12 May 2019 10:28
Agradecimiento recibido: 4 veces

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

Mensajepor Salva » 20 May 2019 19:24

Gracias por comentar.

Disculpas por haberlos subido, pensé que al ser material tan antiguo no habría problema... Pero es cierto, sin permiso no es ético.
Así que lo he borrado.

Un saludo!. -drinks

Avatar de Usuario
kikems
Mensajes: 3105
Registrado: 30 May 2013 19:23
Agradecido : 855 veces
Agradecimiento recibido: 1190 veces

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

Mensajepor kikems » 20 May 2019 19:49

Salva escribió:Gracias por comentar.

Disculpas por haberlos subido, pensé que al ser material tan antiguo no habría problema... Pero es cierto, sin permiso no es ético.
Así que lo he borrado.

Un saludo!. -drinks


Bueno tampoco seamos tan puristas, es con objetivo formativo , así que no veo que sea problemas y más con material tan viejo. Otra cosa sería con algún gráfico más o menos actual, sin preguntar.

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 22 May 2019 18:37

Por supuesto, el logo de Oric es todo tuyo si lo quieres. Nada me gustaría más que ver a unos cuántos aprendiendo a programar el Amiga con logos de Oric en sus pantallas XD

Estoy teniendo una semana complicada, aunque los sprites parecen más o menos sencillos de usar (o re-utilizar, en este caso) el último ejercicio con todos eso a la vez en pantalla me da un poco de respeto. Voy a necesitar buscar tiempo el fin de semana para intentarlo... ¡No corras con el curso! :)

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

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

Mensajepor Mlake » 22 May 2019 23:35

Chema escribió:Por supuesto, el logo de Oric es todo tuyo si lo quieres. Nada me gustaría más que ver a unos cuántos aprendiendo a programar el Amiga con logos de Oric en sus pantallas XD

Estoy teniendo una semana complicada, aunque los sprites parecen más o menos sencillos de usar (o re-utilizar, en este caso) el último ejercicio con todos eso a la vez en pantalla me da un poco de respeto. Voy a necesitar buscar tiempo el fin de semana para intentarlo... ¡No corras con el curso! :)


Aqui tienes algo sin tanto efecto.

Imagen

En principio solo usamos Sprite0, los demas los "anulamos".

El primer uso se mueve "a pelo", simplemente sumamos 1 al byte $XX del sprite.
El segundo (sprite0b) se mueve usando la variable SpriteX. Ahi podemos movernos pixel a pixel.
El tercero (sprite0c) está en la zona pal. (bits 1 y 2 del byte de control.
Adjuntos
SpritesB.zip
(4.09 KiB) Descargado 6 veces

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 22 May 2019 23:44

Yes la bomba :) No hacía falta que lo simplificases, hombre! Si es que no tengo tiempo pa ná.... pero lo sacaré de debajo de las piedras, tranqui.

:)

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

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

Mensajepor Mlake » 22 May 2019 23:50

Chema escribió:Yes la bomba :) No hacía falta que lo simplificases, hombre! Si es que no tengo tiempo pa ná.... pero lo sacaré de debajo de las piedras, tranqui.

:)
No hay prisas. -drinks

Asi separamos los efectillos para las intros y la "chicha" de lo que queremos tratar.

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 24 May 2019 19:18

He tenido un rato (pequeño, por desgracia) y he cumplido tu reto :) Me he hecho un cursor. -thumbup

Es un poco difícil de manejar (va a toda leche) y no se veía un carajo, así que le he metido el cambio de color toqueteando la paleta en cada iteración bucle. No me gusta demasiado, porque sólo voy sumando 1 a cada color y es muy soso. Tengo que implementar algo más colorido, pero de momento la cosa funciona.

Me queda meterme con la lección 4b... a ver si puedo este finde...
MyMovie.gif
MyMovie.gif (744.03 KiB) Visto 259 veces

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

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

Mensajepor Mlake » 24 May 2019 19:49

Chema escribió:He tenido un rato (pequeño, por desgracia) y he cumplido tu reto :) Me he hecho un cursor. -thumbup

Es un poco difícil de manejar (va a toda leche) y no se veía un carajo, así que le he metido el cambio de color toqueteando la paleta en cada iteración bucle. No me gusta demasiado, porque sólo voy sumando 1 a cada color y es muy soso. Tengo que implementar algo más colorido, pero de momento la cosa funciona.

Me queda meterme con la lección 4b... a ver si puedo este finde...MyMovie.gif

De lujo. -thumbup

Que el raton no tuviera "limites" y que fuera un poco rebelde,era de esperar.
Seguramente le des mas uso que yo,pero queria mostrarte que el word del raton (JOY0DAT) funciona como la posicion del sprite.

Para domarlo,lo suyo seria restarle la posicion y añadir los deltas a la coordenada.

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

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

Mensajepor Mlake » 01 Jun 2019 23:57

Cap 4c. Afinando sprites.

Sabemos como movernos usando el word $YYXX y tambien calcular Y final. Con eso teniamos un movimiento basico.
La pega era que la X corre de 2 en 2 pixels y que con un byte ($YY) no podemos usar la pantalla PAL al completo. Vamos a intentar arreglar eso.

Byte de control:

Lo vamos a dividir en 2 nibbles, Mezcla y Posicion ($MP)
M nos permite "mezclar" los sprites.
P contiene los bits que nos faltan para "afinar" la X, los de Y e Yfinal.

¿Que es eso de mezclar los sprites?
Hasta ahora nuestra idea de sprite es una imagen de 16xloquesea con 4 colores (3+trans), donde tenemos que compartir la paleta con otro sprite "hermano" (0-1/2-3/4-5/6-7).

¿Y si hubiera alguna forma de que los sprites pudieran usar los 16 colores de las 4 parejas? La hay.

http://amiga-dev.wikidot.com/hardware:sprxctl
Ahi entra en juego el nibble M, el bit se llama "Sprite attach control bit". M seria $8 para tenerlo activado.

Un sprite era una imagen de 2 bitplanes (4colores), si lo mezclamos con su sprite hermano, tenemos 4 bitplanes (16 colores). Sacrificamos el sprite impar para darle color a su hermano par.

Al final podemos disponer de 4 sprites (la mitad) pero con los 16 colores (15+trans) que tenian los sprites en inicio (Color16 <---> Color31).

Imagen

¿Como traducimos esto a codigo?

sprite0:
dc.w $ac40,bc00 >Y=$AC X=$40, Yfinal=$BC byte de control 0
dc.w bitplanes 1 y 2 del sprite
......
dc.w 0,0

sprite1:
dc.w $ac40,bc80 >Y=$AC X=$40, Yfinal=$BC byte de control $80 (mezcla)
dc.w bitplanes 3 y 4 del sprite
......
dc.w 0,0

Solo hay que poner los sprites en el mismo sitio y ponerle el $8 al sprite impar para que se mezcle con el otro.

Espero que no se haya hecho muy lioso.


Nos queda otro nibble, el de posicion.

http://amiga-dev.wikidot.com/hardware:sprxctl
Para el OCS nos interesan el bit 0, el 1 y el 2.

El 2 es el bit que nos faltaba en la posicion Y, ahora podemos movermos desde $2c, hasta $12c.
El 1 es el bit que faltaba para la Yfinal.
!!Ya podemos usar toda la pantalla!! -thumbup

Ejemplo:

dc.w $2c40,$2c02
Y=$2c X=$40, Yfinal=$12c byte de control $02 (no mezcla,bit 1 encendido)

dc.w $0540,$1506
Y=$105 X=$40, Yfinal=$115 byte de control $06 (no mezcla,bit 1 y bit 2 encendidos)


Nos queda por tocar el bit 0, el de la X.

Como sabemos que la X va de dos en dos, nuestra posicion siempre sera la mitad de lo que dice el Byte de posicion. Hasta ahi claro.

Pero puede pasar que estemos en la posicion X=33 en nuestro juego/intro, eso no se puede dividir entre dos. ¿Solucion? Lo colocamos en la 32 (que si es divisible 2) y lo rodamos un pixel a la derecha. ¿Se entiende la idea?

Esa es la funcion del bit 0 en el nibble. mover la imagen un pixel a la derecha.
Esta idea de "shifting" hay que entenderla porque mas adelante se va a usar.



Todo esto es cuestion de toquetear y hacer experimentos.
Solo quedarse con un par de ideas.
1.-Para sprites de 16 colores hay que ponerlos en la misma posicion y activar el bit de mezcla en el impar.
2.-el bit de la X es el resto de la division entre 2, los de la Y no tienen ciencia (pero son un coñazo con el que lidiar)


El ejemplo es sencillo.
Aqui estan todos los sprites con sus colores y abajo las mezclas de las diferentes parejas.

Arriba cada una tiene su paleta, abajo todas comparten los mismos 16 colores.
Movemos Sprite0 y Sprite1 sumando 1 a la posicion X.
Movemos la mezcla de Sprite0b y Sprite1b pixel a pixel.

Imagen
Adjuntos
SPRMezcla.zip
(3.41 KiB) Descargado 2 veces

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 02 Jun 2019 21:56

Mi única idea era dedicarme a juguetear con los sprites esta tarde. Y me ha sido imposible. He tenido que hacer mil historias y, para más inri, me a copado el portátil mi hijo con nosequé trabajo del instituto.

Vale. Tengo que comprar otro equipo, pero la cosa es que no he podido hacer nada, así que me cuelo ahora para, al menos, decirte que me ha quedado ya claro cómo funcionan los sprites.

Tengo una pregunta. Pensaba explorar hoy por mi cuenta, pero ya que he fracasado, pues pregunto. ¿Cuál es la mejor manera de tener sprites animados? ¿Tener los datos varias veces, tener la posición actualizada en todos ellos y el puntero al que corresponde al frame actual? ¿Quizás tenerlos todos seguidos como cuando los reutilizas?

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

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

Mensajepor Mlake » 03 Jun 2019 00:30

Chema escribió:Mi única idea era dedicarme a juguetear con los sprites esta tarde. Y me ha sido imposible. He tenido que hacer mil historias y, para más inri, me a copado el portátil mi hijo con nosequé trabajo del instituto.

Vale. Tengo que comprar otro equipo, pero la cosa es que no he podido hacer nada, así que me cuelo ahora para, al menos, decirte que me ha quedado ya claro cómo funcionan los sprites.

Tengo una pregunta. Pensaba explorar hoy por mi cuenta, pero ya que he fracasado, pues pregunto. ¿Cuál es la mejor manera de tener sprites animados? ¿Tener los datos varias veces, tener la posición actualizada en todos ellos y el puntero al que corresponde al frame actual? ¿Quizás tenerlos todos seguidos como cuando los reutilizas?

Imagino que cada maestro tiene su librillo. Lo que hay que tener claro es que quieres hacer y el escenario...

Si me dices "anima un sprite,punto.":

Creo los sprites sueltos:

camina1:
dc.w $YYXX,$YfMP
dc.w frame1
...
dc.w 0,0

camina2:
dc.w $YYXX,$YfMP
dc.w frame2
...
dc.w 0,0

camina3:
dc.w $YYXX,$YfMP
dc.w frame3
...
dc.w 0,0
.
.
.
.

Despues elijo el que me interese, le modifico la posicion/control y lo meto en la copperlist (SPRxPTH/L).

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

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

Mensajepor Mlake » 04 Jun 2019 19:26

@Chema por aqui te dejo un par de ejemplos:

He ripeado el loro de Psygtrollsis como prueba. -grin

Sprite0 es la nave de arriba
Sprite0b es el loro de abajo, animado con fastbobs sobre el propio sprite, para poder reutilizarlo con normalidad
Scprite0c es la nave de abajo.

Sprite1X es el loro de arriba. La X es el frame en curso. Animamos simplemente cambiando los punteros. Aqui no reutilizo.

Imagen

La primera forma sale mas "barata" que un bob normal y te evitas salvar el fondo, la mascara, etc....
Y te permite usar el sprite con normalidad.

La otra forma (sprite1) es mas economica, pero para reutilizarlos se hace un poco lioso.
Adjuntos
Loro.zip
(7.74 KiB) Descargado 2 veces

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 04 Jun 2019 20:33

Ok. Tenía yo en mente hacer algo similar, ya echo un vistazo al código y a ver si pongo sprites animados y pruebo a reutilizar, etc. sobre mi logo de Oric ;)

No sé de dónde sacar el tiempo... sólo me queda probar a reducir mis horas de sueño a la mitad, pero es que soy de los que necesitan 8 horas o no soy persona...

EDIT: Por cierto, no sé si te das cuenta del pedazo de curso que te está quedando con ejemplos de todo... no sé si habrá algo similar por ahí, pero esto es canela fina. No te lo podemos agradecer lo bastante.

Avatar de Usuario
minter
Mensajes: 2403
Registrado: 22 Jul 2014 18:51
Agradecido : 2191 veces
Agradecimiento recibido: 940 veces

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

Mensajepor minter » 04 Jun 2019 20:45

Suscribo lo de Chema por partida doble.
Dormir 8 horas, que no llego...
y un pedazo de curso.

Es como la pelicula de Woody Alllen " Todo lo que usted siempre quiso saber sobre el sexo pero nunca se atrevió a preguntar", pero sobre el Amiga. :)

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

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

Mensajepor Mlake » 04 Jun 2019 22:55

Chema escribió:Ok. Tenía yo en mente hacer algo similar, ya echo un vistazo al código y a ver si pongo sprites animados y pruebo a reutilizar, etc. sobre mi logo de Oric ;)

No sé de dónde sacar el tiempo... sólo me queda probar a reducir mis horas de sueño a la mitad, pero es que soy de los que necesitan 8 horas o no soy persona...

EDIT: Por cierto, no sé si te das cuenta del pedazo de curso que te está quedando con ejemplos de todo... no sé si habrá algo similar por ahí, pero esto es canela fina. No te lo podemos agradecer lo bastante.

minter escribió:Suscribo lo de Chema por partida doble.
Dormir 8 horas, que no llego...
y un pedazo de curso.

Es como la pelicula de Woody Alllen " Todo lo que usted siempre quiso saber sobre el sexo pero nunca se atrevió a preguntar", pero sobre el Amiga. :)


Lo primero gracias a los 2 y a todos los que siguen/postean en el hilo.
Lo del tiempo nos pasa a todos, por eso vamos con parones, lecciones cortas, reutilizando ejemplos.... aun asi, algunos tardamos años en aprender a hacer lo que estamos haciendo ahora, incluso teniendo el dia entero para estar delante del monitor.
Asi que no hay prisas. -drinks

Sobre los sprites.
El sistema del amiga es muy primitivo en ese sentido, son casi un vestigio. Estan ahi, pero si quieres un uso "avanzado", tienes que hacerlo a mano.

Por eso se suele usar como "playfield 3", para dibujar marcadores o 2000 usos mas que solo ves en Amiga.

Eso de que los sprites sean una "lista" en lugar de una direccion de memoria y punto, tiene sus ventajas (tamaño, reutilizacion) pero tiene el inconveniente de la animacion.

La idea del hardware es animar con el blitter, los sprites "deberian" ser estaticos.
Esto en 1985 era una "locura" estando los sprites en plena gloria, pero es cierto que el futuro eran los BOB. (hoy dia cuando mueves un grafico en pantalla, tu GPU "blitea" esa imagen).

Sin embargo una maquina especializada en sprites es mas limitada en tamaño pero se anima facilmente porque tienes los punteros "hechos".

Por eso la animacion del loro no he reutilizado el sprite1. Porque cada frame tendria que arrastrar con todos los posibles "reusos" del sprite.

De la otra forma, el sprite (el 0) no cambia y puedo seguir reutilizandolo. Lo unico que toco (usando el blitter) es el bitmap del pajaro.

Imagen
upload pictures

Avatar de Usuario
Chema
Mensajes: 2199
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1687 veces
Agradecimiento recibido: 551 veces
Contactar:

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

Mensajepor Chema » 07 Jun 2019 22:19

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


Volver a “Software & OS Amiga”

¿Quién está conectado?

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