Toqueteando las tripas del OCS en ASM. Nivel -1

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 02 Oct 2021 08:56

Último mensaje de la página anterior:

¿Es una conversión tuya en asm? -thumbup

En cuanto al curso, estoy con los scrolls. Al estar trabajando me cuesta muchísimo más ponerme con el tutorial. A ver si puedo en unos días y traigo los "deberes" de ese tema -grin
He visto que andabais por el curso de Amigawave de Fernando Cabrera. Muchas de las cosas ya las tenía aprendidas de aquí (fue la primera parte), hubo algunas cosas que no sabía, o no me había fijado.
Ah, también he tenido curiosidad por ver quién había hecho el asmtwo...y Photon de Scoopex tiene un montón de material, ejemplos... una pasada. Eso sí, está en inglés.
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 02 Oct 2021 12:38

mgyv escribió:¿Es una conversión tuya en asm? -thumbup

En cuanto al curso, estoy con los scrolls. Al estar trabajando me cuesta muchísimo más ponerme con el tutorial. A ver si puedo en unos días y traigo los "deberes" de ese tema -grin
He visto que andabais por el curso de Amigawave de Fernando Cabrera. Muchas de las cosas ya las tenía aprendidas de aquí (fue la primera parte), hubo algunas cosas que no sabía, o no me había fijado.
Ah, también he tenido curiosidad por ver quién había hecho el asmtwo...y Photon de Scoopex tiene un montón de material, ejemplos... una pasada. Eso sí, está en inglés.

Anoche tenia un rato y me puse a hacer algo. Lo mismo le echo un par de dias más a ver que sale...

F. Cabrera también tiene articulos sueltos en commodorespain que estan muy bien. El rincon de Fer se llaman.

Los videos de Photon estan chulos, de hecho el inicio del hilo es una fusilada de sus videos, pero es la forma mas sencilla de empezar.

Si el ingles no es un impedimento tienes los videos de Wei-ju Wu, Tomaz Kragelj y Chibi Akumas (que tiene pagina con recursos para 68000, Z80 y mas cosillas).

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 09 Oct 2021 15:38

Por fin he hecho el scroll.
Otra vez me ha pasado que calculo el mod, en teoría debiera ser 240, y he tenido que ir subiéndolo hasta 320 para que me funcionara...
La imagen es 960x256, 3 bitplanes "interleaved"
Hace scroll a la izquierta 640 pixeles, y luego vuelve otra vez 640 hacia la derecha.
Me he tomado la libertad de añadir un replayer de protracker antiguo (lo pillé de una intro de crystal antigua). Lo bueno (para mi, jaja) es que no hace falta una interrupción y basta con llamar el mt_music en el waitVB.
Ah y gracias al compañero Josss, pues he incluído un módulo chip del concurso de Amiga Wave, para probar -drinks
Más adelante ya me pararé a hacer la música yo mismo...

scroll.zip
(17.61 KiB) Descargado 65 veces
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 09 Oct 2021 17:13

mgyv escribió:Por fin he hecho el scroll.
Otra vez me ha pasado que calculo el mod, en teoría debiera ser 240, y he tenido que ir subiéndolo hasta 320 para que me funcionara...
La imagen es 960x256, 3 bitplanes "interleaved"
Hace scroll a la izquierta 640 pixeles, y luego vuelve otra vez 640 hacia la derecha.
Me he tomado la libertad de añadir un replayer de protracker antiguo (lo pillé de una intro de crystal antigua). Lo bueno (para mi, jaja) es que no hace falta una interrupción y basta con llamar el mt_music en el waitVB.
Ah y gracias al compañero Josss, pues he incluído un módulo chip del concurso de Amiga Wave, para probar -drinks
Más adelante ya me pararé a hacer la música yo mismo...

scroll.zip


-thumbup -thumbup -thumbup
Esta de PM.

Si el player que usas para los mods te sirve y estas cómodo, sigue con él.

Sobre el scroll:

¿De donde sacas el 240 para el modulo?

960 pixels son 120 bytes (120*8=960)

Si el DDF tiene 40 bytes de ancho, te saltas los 80 bytes del BPL1 que no caben, luego los 120 del BPL2 (ya van 200) y despues los 120 del BPL3 (ya tienes los 320)

Imagen


¡OJO! el que marca los modulos es el DDF, no el DIW.

DIW se encarga de la "ventana", el "lienzo" lo marca el DDF.

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 09 Oct 2021 18:40

Mlake escribió:...
¿De donde sacas el 240 para el modulo?
960 pixels son 120 bytes (120*8=960)
Si el DDF tiene 40 bytes de ancho, te saltas los 80 bytes del BPL1 que no caben, luego los 120 del BPL2 (ya van 200) y despues los 120 del BPL3 (ya tienes los 320)
...

-nosweat
Tienes razón, estaba empeñado en saltarme los otros 2 bitplanes y ni me acordé de los 80 que sobraban del primero. Es que el módulo, por una cosa o por otra, al final siempre lo pongo mal y lo saco probando, -rofl

¡La próxima voy por el dual playfield!
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 10 Oct 2021 13:51

Aquí traigo mi test con el dual playfield.

Me ha costado un poco, pues el playfield del fondo no acababa de verse bien, como si uno de los bitplanes "volara" y no había manera de fijarlo, luego, misteriosamente, al reiniciar el amiga, dejó de ir completamente. -rofl . Tuve que ir a una copia anterior, y a partir de ahí ya salió bien.

Ah, y echo de menos no poder subir archivos .lha...

DPlayField.zip
(36.63 KiB) Descargado 77 veces
Adjuntos
DualPlayfield.png
DualPlayfield.png (17.08 KiB) Visto 2603 veces
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 10 Oct 2021 21:29

Me autocorrijo:
Las dos rutinas de scroll las he hecho en el portátil, pues no tenía a mano ni el amiga ni el monitor CRT.
Ahora ya estoy en casita, y voy a probar las rutinas en el amiga de verdad, y cual es mi sorpresa que el scroll no va lo suave que debiera ir en el monitor CRT.
Donde dije:

mgyv escribió:...
Me he tomado la libertad de añadir un replayer de protracker antiguo (lo pillé de una intro de crystal antigua). Lo bueno (para mi, jaja) es que no hace falta una interrupción y basta con llamar el mt_music en el waitVB.
...
scroll.zip


Para que el scroll vaya bien de verdad, la llamada al mt_music debe ir ANTES del jsr waitVB. (en los listados lo he puesto después...)
Como decía mlake, si te funciona........digamos que de momento me vale... -grin
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 17 Oct 2021 14:56

Mlake escribió:Domingos Ociosos.

Si ya le habeis pillado el rollo a los playfields, solo queda hacer experimentos.

Imagen

Rapidito y sin tochos....

Imagen

FUENTE: https://ufile.io/68rydznv


Es por si alguien tiene el archivo fuente, que quería echarle un vistazo a lo del efecto "agua", pero ya no vale el link...
Ahora estoy empezando con los sprites, pero no quería quedarme sin probar este efecto.
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 18 Oct 2021 14:22

Adjuntos
agua.7z
(3.02 KiB) Descargado 48 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 » 19 Oct 2021 03:15

mgyv escribió:Es por si alguien tiene el archivo fuente, que quería echarle un vistazo a lo del efecto "agua", pero ya no vale el link...
Ahora estoy empezando con los sprites, pero no quería quedarme sin probar este efecto.


Si le pillas el rollo, puedes probar algunos mas.

Aqui lo explican de forma visual, en lugar de usar el HDMA de la SNES, usamos el copper.
Las transparencias se pueden hacer igual, solo que tenemos que preparar la paleta nosotros mismos (la snes sí calcula la "mezcla").

El efecto del ejemplo lo tienes en el 2:25

https://www.youtube.com/watch?v=zjQik7uwLIQ

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 20 Oct 2021 10:48

Mlake escribió:Si le pillas el rollo, puedes probar algunos mas.
Aqui lo explican de forma visual, en lugar de usar el HDMA de la SNES, usamos el copper.
Las transparencias se pueden hacer igual, solo que tenemos que preparar la paleta nosotros mismos (la snes sí calcula la "mezcla").
El efecto del ejemplo lo tienes en el 2:25

https://www.youtube.com/watch?v=zjQik7uwLIQ


Está interesante. Me está dando alguna idea para probar....a ver si soy capaz de hacer lo que estoy pensando... -grin

Cambiando de tema, me ha pasado una cosa un poco rara, a ver si se os ocurre la forma de hacerlo correctamente:
En el curso de Cabrera, he visto que los cálculos de píxeles, al inicio, en las constantes, va calculando para un ancho de bitmap, ancho de pantalla en píxeles, para pasarlo a bytes, calcula el módulo directamente en el código y pone las fórmulas como constantes al poner los punteros a los bitmaps, el módulo de la copperlist, número de bitplanes etc, etc, etc. Entonces, me he decidido a hacerme una "plantilla" limpia. En este caso estoy haciendo una de dual playfield, y la verdad es que es más cómodo. Hasta aquí todo correcto, hasta dónde he hecho me funciona bien.
Otra cosa que quiero hacer para dejar el código más limpio y modular, es utilizar includes para poner partes del código típicas, y ya desde el programa principal, poder llamar a las funciones. Aquí es dónde tengo dudas:

He utilizado tu include "os.i", y hace un par de días tenía la plantilla funcionando aparentemente bien. Tenía puesto un "include media/os.i", y ensamblaba y funcionaba correctamente.
Hoy, quería seguir, y me he encontrado que el código ensamblaba correctamente, pero al darle "j", me pone "Illegal instruction at address XXXXX". He ido comentando partes del código, y el fallo está en el "bsr osOFF", que me arroja el error al intentar ejecutarlo.
He quitado el include y he pegado el código del "os.i" directamente en el programa principal y de esta forma me funciona bien.

Me autocontesto, hice alguna prueba más y ya sé porque es:
Al estar en el archivo include, está en una posición alejada del PC en ese momento, y el "bsr" no llega tan lejos, y en su lugar hay que utilizar un "jsr" y ya funciona... -banghead
Lo curioso es que no me estaba avisando de ello (en otras ocasiones, el asmtwo me lo decía y ya me daba cuenta). -grin
Ya puedo seguir...
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 20 Oct 2021 19:41

mgyv escribió:Está interesante. Me está dando alguna idea para probar....a ver si soy capaz de hacer lo que estoy pensando... -grin

Cambiando de tema, me ha pasado una cosa un poco rara, a ver si se os ocurre la forma de hacerlo correctamente:
En el curso de Cabrera, he visto que los cálculos de píxeles, al inicio, en las constantes, va calculando para un ancho de bitmap, ancho de pantalla en píxeles, para pasarlo a bytes, calcula el módulo directamente en el código y pone las fórmulas como constantes al poner los punteros a los bitmaps, el módulo de la copperlist, número de bitplanes etc, etc, etc. Entonces, me he decidido a hacerme una "plantilla" limpia. En este caso estoy haciendo una de dual playfield, y la verdad es que es más cómodo. Hasta aquí todo correcto, hasta dónde he hecho me funciona bien.
Otra cosa que quiero hacer para dejar el código más limpio y modular, es utilizar includes para poner partes del código típicas, y ya desde el programa principal, poder llamar a las funciones. Aquí es dónde tengo dudas:

He utilizado tu include "os.i", y hace un par de días tenía la plantilla funcionando aparentemente bien. Tenía puesto un "include media/os.i", y ensamblaba y funcionaba correctamente.
Hoy, quería seguir, y me he encontrado que el código ensamblaba correctamente, pero al darle "j", me pone "Illegal instruction at address XXXXX". He ido comentando partes del código, y el fallo está en el "bsr osOFF", que me arroja el error al intentar ejecutarlo.
He quitado el include y he pegado el código del "os.i" directamente en el programa principal y de esta forma me funciona bien.

Me autocontesto, hice alguna prueba más y ya sé porque es:
Al estar en el archivo include, está en una posición alejada del PC en ese momento, y el "bsr" no llega tan lejos, y en su lugar hay que utilizar un "jsr" y ya funciona... -banghead
Lo curioso es que no me estaba avisando de ello (en otras ocasiones, el asmtwo me lo decía y ya me daba cuenta). -grin
Ya puedo seguir...


Los ejemplos del hilo son muy simples y cuando empiezas, prefiero que los calculos de modulo, DDF, DIW... se hagan "a mano" para entender la movida y luego te organizas poniendo constantes a tu gusto.
Hay a quien le gusta tener las constantes en bytes, en words, en pixels.... yo creo que eso es personal.

Yo uso BSR porque los codigos del hilo son pequeños y es mas "barato" que JSR, ademas intento tener cerca las rutinas basicas (waitVB,waitBLT...).
Si usas este codigo y empiezas a engordarlo, ya has visto que las llamadas se quedan cortas.

Sobre tu plantilla, mas de lo mismo. Si te sientes comodo y ya sabes lo que estas haciendo, sigue asi. Este hilo no es de programacion sino de saber como funciona el Amiga por dentro. -rofl

Yo te recomiendo que te vayas preparando un archivo/proyecto "base" (startup) y empezar tus programas desde ahi.
Si quieres separar las rutinas en archivos y usar INCLUDE, ya depende del editor que uses y lo comodo que te sea moverte entre ficheros.

Puedes hacer algo asi para cosas rapidas:



Imagen


Cuando usamos CODE_P , le decimos al SO que cargue ese HUNK en FASTRAM y si no hay,pues que tire de CHIPRAM.

Lo demas creo que es sencillo.
Puedes tener cada rutina por separado y tienes un "main" mas limpio, o tenerlo todo a la vista.....

Imagen

Para la memoria chip creamos dos hunks:

chip: Lo usamos para nuestra coppelist,graficos,sonidos.... (incluye copperlist minima con parada en PAL y compatibilidad AGA)


chiptemp: Para buffers temporales. BSS sirve para eso, para reservar datos en memoria sin que aumente el tamaño del ejecutable. La C es para que lo haga en CHIPMEM.



A partir de ahi, pon las constantes a tu gusto y haz los calculos con ellas. -drinks
Adjuntos
BASE.7z
(1.7 KiB) Descargado 62 veces

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 20 Oct 2021 23:07

Interesante. Hay alguna de las ideas que propones que no se me había ocurrido. Lo del BSS tampoco lo sabía. -grin

Ya sé por qué "crasheaba" todo. Resulta que el asmtwo, al ponerle un include y ensamblar, te hace el "pass 1" y debe guardarlo ensamblado en memoria, y las veces posteriores que ensamblas ya no lo pone, y no lo vuelve a ensamblar (parece un trabalenguas pero no lo es -no ).

Quiero decir, que estaba colocando las cosas a mi manera dentro de uno de los includes, y tenía un error de stack (overflow, qué vergüenza...). Y no me di cuenta, porque funcionaba todo ok en ese momento. El fallo quedó en el include, y un par de días después, cuando lo ensamblé de nuevo, me pillo la versión del include con el fallo y no me iba.
Resumen: si cambio algo en un include y quiero probarlo, es mejor salir del asmtwo, volver a entrar y ensamblar todo de nuevo.
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 21 Oct 2021 18:07

CAP 8 Introduccion al DMA de sonido.

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.

De la misma forma que explicabamos que es un bitmap o un sprite, tenemos que explicar que es un sonido para el amiga.



Imaginad el desplazamiento del cono de un altavoz:

Imagen


Tenemos un punto maximo de expansion, un punto maximo de compresion y un punto central donde descansa el cono. Pues el amiga tiene un byte para guardar esa "posicion".
Cuando alguien habla de samplear a 8/16/24.... bits, es el numero de bits que tienes para guardar la posicion del altavoz.

Si tenemos un byte, podemos usar el 0 como punto "neutral" y usar +-127 para los puntos maximos de desplazamiento. ¿Se entiende?
Eso es lo que se llama sampleo "signed", el centro es 0 y el SIGNO nos dice el movimiento.
Otros cacharros usan "unsigned" donde todos los valores son positivos y el 0 es el mas bajo.

Ya conocemos dos palabros para identificar nuestras muestras de audio, 8 bits y signed.

Para que el altavoz suene, no podemos mandarle un valor (voltaje) y punto,tenemos que ir suministrandole esos "bytes" con cierto ritmo para que mueva el aire.
Aqui entra el valor tiempo.


Imagen

En Rojo tienes el "supuesto" sonido, lo entrecomillo porque lo que realmente tenemos es la aproximacion que nos dan los puntos azules. Trabajamos en digital/discreto.

Aqui hay dos formas de medir el tiempo,una cuando creas el sample y otra cuando lo reproduces.

Crear samples:
Si acortamos el espacio entre puntos, tenemos una señal mas rica, pero hay que gastar muchos puntos. Eso se llama frecuencia de muestreo.
Cuando oyes "el sample es de 8 bits 11Khz", quiere decir que cada segundo tiene 11.000 muestras de 1 byte.

Reproducir samples:
Si acortamos el tiempo entre puntos, el sample suena mas agudo y si lo alargo, se vuelve grave. Eso se llama "periodo" en el chipset de amiga.


Si los dos tiempos coinciden, el sonido sale tal cual. Si cambiamos, el sonido se modifica.
Quizá me estoy enrollando como una persiana, pero quiero que quede medio claro que la frecuencia y el periodo estan relacionados pero no son lo mismo.






Vale, ya sabemos que el sonido necesita un puñado de bytes y un "periodo" con el que procesar esos bytes. ¿algo mas?
Sí, para que los altavoces no funcionen siempre a tope, un control de volumen estaria bien.


Estas 4 cosas tienen su registros:

AUDxLCH
AUDxLEN
AUDxVOL
AUDxPER

No se necesita (casi) nada mas para lanzar un sample via DMA.


No creo que haya dudas hasta aqui.

El puntero para el sample es facil. Lo hemos hecho con bitplanes, sprites....

LEN es la longitud en words del sample,lo pide en words porque por el canal del DMA van a salir 2 bytes.

El volumen simplemente es un word con valor 0-64.


Lo complicado es el periodo.
En teoria es el tiempo/velocidad a la procesas las muestras (bytes).



El problema es que el tiempo lo lleva la señal de video y puede darse el caso de que necesites una frecuencia X para lo que sea y solo puedas usar una aproximacion".
Seguro que muchos musicos/coders te pueden dar ejemplos.




Seguro de que estais cansados de esta imagen, pero es que el amiga se resume en esto:


Imagen

Esto es lo que repite el DMA del amiga una y otra vez.

Vamos a simplificarlo por colores:
refrescamos la memoria DRAM en ROJO
tiempo para disco en AMARILLO
tiempo para audio en VERDE
tiempo para sprites en AZUL
tiempo para bitplanes en VIOLETA

Imagen
¿Que pasa si lo superponemos a una linea de un monitor ?

La colocacion de los eventos es aproximada, pero os podeis hacer una idea.
A lo mejor asi se ve mas facil tambien el data fetching de los bitplanes.



Imagen
Si tenemos 312 lineas por pantalla PAL, son 312 slots para nuestro sample.
Si tenemos 50 pantallas por segundo son 312*50 = 15.600 slots
Cada slot es un word, asi que son 2 bytes. 15.600*2= 31.200 bytes(muestras) por segundo
Esa seria la frecuencia maxima teorica, el problema es que realmente no se pueden usar todos esos slots, porque el chipset te "roba" algunos para su propio funcionamiento.
El maximo usable son +-28.800Khz.


Si queremos lanzar un sample con una frecuencia de muestreo X, sacamos la calculadora.

El chipset PAL corre a 3.546895Mhz y yo necesito X Khz

periodo=Velocidad de video/velocidad del sampleo

Si el resto es 0, de lujo. Si no, correrá a la frecuencia mas aproximada.



Ejemplo:
Me bajo un sample 8 bit signed 11,025Khz. ¿Que periodo necesito?
periodo = 3546895/11025 = 321

¿Se entiende?


Por ahora SOLAMENTE quiero que quede claro lo que es un sample y las 4 cosas que necesita saber el amiga antes de lanzarlo.

Avatar de Usuario
mgyv
Mensajes: 179
Registrado: 10 May 2021 21:49
Ubicación: Vigo
Agradecido : 157 veces
Agradecimiento recibido: 107 veces

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

Mensajepor mgyv » 04 Nov 2021 17:56

Por fin he terminado (más o menos) la mini-intro con lo aprendido:
Copper y modos de pantalla, copper después de la linea $ff, dual playfield, sprites (sin reutilizar).
Me he encontrado problemas varios, y más o menos los fui capeando (partes de la intro que sonaban más rápido en el 030, copperlist que funcionaba desde el ensamblador y no desde el ejecutable, etc, etc). -banghead
En los sprites no llegué a la parte de abajo de la pantalla...lo sé...pero ya me salía humo por la cabeza y ya no lo cambié...
No utilizo el blitter (todavía no lo controlo). Las burbujas más pequeñitas las hice a palo seco con la CPU.
Optimización 0º....... digo 0%
A ver qué os parece, -drinks

birraeffect.png
birraeffect.png (6.84 KiB) Visto 2236 veces
Adjuntos
birraeffect.zip
(41.71 KiB) Descargado 48 veces
-coam1 A2000 [TF534+6mb ZII+opalvision], A500 [ide68k+9.5mb], CD32 [TF330], PiStorm, -sp3zy +2A

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 » 04 Nov 2021 23:19

mgyv escribió:Por fin he terminado (más o menos) la mini-intro con lo aprendido:
Copper y modos de pantalla, copper después de la linea $ff, dual playfield, sprites (sin reutilizar).
Me he encontrado problemas varios, y más o menos los fui capeando (partes de la intro que sonaban más rápido en el 030, copperlist que funcionaba desde el ensamblador y no desde el ejecutable, etc, etc). -banghead
En los sprites no llegué a la parte de abajo de la pantalla...lo sé...pero ya me salía humo por la cabeza y ya no lo cambié...
No utilizo el blitter (todavía no lo controlo). Las burbujas más pequeñitas las hice a palo seco con la CPU.
Optimización 0º....... digo 0%
A ver qué os parece, -drinks

birraeffect.png


La leche -shock

Ya me hubiera gustado que mi primera intro hubiera sido asi... -grin

Echandole un ojo al codigo, veo que has tirado de modulos para mover el playfield hacia arriba y hacia abajo.
Es la forma mas eficiente, pero hay que hilar fino para que no te de esos "saltos" raros.

Si en lugar de usar modulos, haces un scroll vertical "real" (cambiando los punteros) es mas controlable y escueto de programar, pero hay mas movimientos de copper que usando tu metodo (bpl1mod+bpl2mod vs bpl1pth/l+bpl2pth/l+bpl3pth/l....)

Imagen

La copperlist es sencillita.
Creamos una variable Y para la posicion vertical. Como empezamos el playfield en $2C, pues la primera parada es $2c05. Como queremos un word para la copperlist, ANDeamos con $FFFF.

Hacemos la parada, cambiamos punteros e incrementamos el valor de Y hasta la siguiente linea.

Asi durante 200 pixels de alto (esto ya va a tu gusto)


Imagen

El codigo, tres cuartos de lo mismo.

Usamos el numero del frame en curso como indice para movernos por la tabla y que asi vaya rotando.

El valor de la tabla se la sumamos directamente al puntero de la linea


https://www.youtube.com/watch?v=6OiF1Gnzvf4



Lo dicho, te ha quedado de lujo.

Para mi, el motivo del hilo era este. Que a la gente le entrara el gusanillo de toquetear al amiga.
Me quedo mas que satisfecho. -thumbup
Adjuntos
AGUA2.7z
(4.71 KiB) Descargado 40 veces

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

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

Mensajepor jltursan » 05 Nov 2021 11:55

¡Es genial ver estos avances a partir de tutos como este!, vais a conseguir que me vuelva el gusanillo... -thumbup


Volver a “Software & OS Amiga”

¿Quién está conectado?

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