Iniciado por
masteries
Masteries hace eso con 16 colores, masteseries no se qué hará...
Los 32 colores del Amiga, sus 5 planos de bits...
vamos a abrir el cajón; suponiendo que los planos del Amiga estén organizados de la misma forma que los del Atari STE; que según la gente de eab.abime no es así.
Contemos la historia técnica y lo que es un STE:
Sobre los anchos de banda y el monstruo del blitter de la gama STE:
En el STE los píxeles constan de 4 bits y se organizan en grupos de 16, y sólo puedes escribir de 16 en 16 bits, cada vez que mueves a pantalla con el blitter, mueves la información de 16 píxeles; se estructuran así:
16 píxeles
-------------------------------------------------------------- --------------------------------------------------------------
64 bits: Bit0-Pixel0 Bit0-Pixel1 Bit0-Pixel2 ... Bit0-Pixel15 | Bit1-Pixel0 Bit1-Pixel1 Bit1-Pixel2 ... Bit1-Pixel15 ... y así otras 2 palabras de 16 bits más
si Amiga lo estructurase igual:
16 píxeles
-------------------------------------------------------------- --------------------------------------------------------------
80 bits: Bit0-Pixel0 Bit0-Pixel1 Bit0-Pixel2 ... Bit0-Pixel15 | Bit1-Pixel0 Bit1-Pixel1 Bit1-Pixel2 ... Bit1-Pixel15 y así otras 3 palabras más de 16 bits
En Amiga, respecto a STE, tienes que mover un 25% más de datos; sin en STE 4 palabras es el 100%, en Amiga 5 palabras es un 125%
El Amiga presenta una RAM con un reloj de entrada inferior a 7 MHz, mientras que el STE presenta un reloj en la RAM de 8 MHz; hay más ancho de banda disponible para mover datos en STE.
Sigamos,
el blitter del Amiga es muy poderoso de por sí, pero se diseñó para funcionar por el método tradicional, emplear máscaras, hacer operaciones lógicas entre máscara y gráfico... dibujar empleando varias pasadas; que se traducen en varias pasadas por la RAM.
El blitter del STE parte del diseñado para el Mega ST, que monta un 68k con caché a 16 MHz; este blitter se diseñó de forma que supusiera una ventaja a utilizar respecto a su CPU; no habría tenido sentido un blitter que aportará poco respecto a hacer ese trabajo con la CPU. El blitter del MegaST corre a 16 MHz, se alimenta del reloj de su CPU, y consume muy pocos ciclos de reloj en sus tareas, bastantes menos que la CPU. Quedaos con la copla de los 16 MHz del blitter en el MegaST, pues es muy importante para lo que viene después. En el MegaST, el blitter tiene 2 modos de funcionamiento, más unas 12 formas de utilizarse.
Llegamos al STE, y recibe una actualización del mismo blitter que monta el MegaST... sí señores, no es el mismo del MegaST, es un update con un nuevo modo de funcionamiento y algunas formas más de utilizarse; cuya documentación apenas tuvieron algunos desarrolladores, entre ellos el autor de las AGT... jajaja por aquí va llegando la magia... el nuevo modo de funcionamiento le permite al blitter tomar el control de la máquina, supendiendo el reloj de la CPU; pero manteniendo el circuito DMA de audio digital en funcionamiento; así mismo una nueva forma de utilizarse bajo este modo, es el de mover datos de un sitio a otro, pero conociendo de antemano los bits que no se verán alterados por el proceso de escritura; lo que antes se hacía mediante operaciones lógicas de máscaras, ¡ahora no requiere máscaras! ¡Pudiendo dibujar sprites de una sola pasada! ¡Y para limpiar el escenario de los sprites también puede conocer de antemano los dirty rect. y limpiarlos de una pasada! Un par de cosas que no podía hacer la anterior versión del blitter del MegaST, y que se parecen más a dibujar sprites en un modo de video chunky que en uno planar.
Y si esto no fuera suficiente, cuando el blitter entra en el modo maestro en el STE, ¡pasa a funcionar a 16 MHz! (duplica el reloj de entrada en su interior) y el sistema rinde como un MegaST en lo que a ancho de banda y movimiento de datos se refiere; la CPU sigue restringida a 8 MHz, pero en estas tareas no interviene, se la manda a dormir. El DMA accede a memoria de forma alterna al blitter, las frecuencias del audio de salida son algo peculiares para mantener este sincronismo con el blitter, y que no se estorben. En este modo es también el blitter quien se encarga de leer y escribir en la RAM, y lo hace al mismo rendimiento que un MegaST, o un MegaSTE.
Así que una vez explicadas las diferencias entre los anchos de banda de un Amiga 500 o 500 Plus o 600; y un STE; nos queda decir que si con todo esto, ya está al límite con unos 18 - 20 sprites de 32x32 a 4 bits, si tuviera que mover esto mismo a 5 bits; no llegabas a 50 frames por segundo, y sin los 50 frames la técnica del dualfield no funcionaría bien; por debajo de 40 ya se empieza a notar flickeo.
Así que en Amiga no sería nada fácil o directamente extrapolable hacer dualfield con 32 colores; quizá con 16 si se pudiera, pero desconozco si en Amiga te ves obligado a escribir siempre los 5 planos de bits.
Y ahora más trucos recien descubiertos e indocumentados del blitter del STE:
-Si en lugar de utilizar los end mask como fueron pensados, los utilizamos para escribir datos gráficos en ellos; se te permite concatenar dos sprites... y si en el siguiente haces lo mismo... se vuelve a concatenar... (técnicamente no será así de sencillo, pero así es como podemos dibujar sprites gigantes con buen rendimiento; porque no se desaprovechan datos; descubrimiento del autor de las AGT de este año 2020). En eab.abime, expertos del Amiga han probado ha intentar replicar esto en el blitter del Amiga, y no realiza esta función de concatenado.
-Y otro truco descubierto del blitter del STE, si no configuras zonas vacías (píxeles que no se verán alterados por la escritura) entre las zonas vacías del principio y el final del gráfico, se te permite dibujar una línea de textura de hasta 256 píxeles de ancho. O lo que es lo mismo, el blitter del STE hace rasters con textura. Vamos, con lo que se hace el suelo de Street Fighter 2 Alguien ya descubrió esto en 1994, colgué un vídeo por aquí. En AGT es el formato de sprites tipo SLAB. Recordad, que son hasta 256 píxeles sin que el blitter deje de funcionar, 256 píxeles copiados sin que la CPU se despierte, 256 píxeles copiados con el rendimiento de un MegaST/E
-Otro descubrimiento del autor de las AGT, de cuando programó el juego Cisco Heat y añadió soporte para STE; el blitter del STE puede rellenar áreas con un color elegido de la paleta, así dibuja la carretera en Cisco Heat. También puede hacer otras primitivas gráficas sencillas. Esto lo hace sin necesidad de mover datos, sólo escribe sabiendo lo que está haciendo, lo que le permite pintar muy rápido las primitivas.
Ahora vamos a por el consumo de memoria:
-Para el asunto del dualfield y el frame-slipping (que la tasa de cuadros no baje a la mitad en caso de sobrecarga, sino que se queda a 40 y tantos cuadros), necesitas unos 160 KB de RAM. Otros 128 más o menos para los drivers gráficos, unos 4 KB más para mi driver de audio. Los sprites, al ser sprites compilados (ya contienen lo que la CPU tiene que escribir en el blitter, la CPU a nivel gráfico sólo lee las órdenes y se las transmite al blitter), ocupan bastante y un 10% más si los quieres con dualfield; el mapeado al ser dualfield, ocupa como si los tiles estuvieran en color de 8 bits.
En definitiva, que con menos de 2 MB de RAM no puedes hacer todo esto. Y han de ser 2 MB de Chip RAM, aquí está el verdadero problema del Amiga, sólo los A500 Plus y el A600 pueden montar 2 MB de Chip RAM sin hacer trucos raros. El STE puede montar 4 MB, y son todo chip RAM.
-Respecto al audio:
-Solo empleo audio digital mono de 8 bits a 12,5 KHz, el Amiga creo que no puede trabajar con .wav directamente. El YM2149 ni lo toco siquiera.
-Respecto al scroll:
-En contra de la creencia popular, el scroll hardware del STE consta de dos ventanas independientes, dos scrolles independientes; que si bien no hacen un parallax puro como el de MegaDrive, si puede emplearse el segundo para desplazar una zona de la pantalla a distinta velocidad y crear un efecto parallax algo más limitado. Pero usando el hardware; el autor de las AGT está estudiando su uso e implementación.
----------------------------------------------------------------------
Resumiendo, el Amiga nació con mucho hardware y muchas ventajas;
El STE recibió el blitter del MegaSTE con modos de funcionamiento mucho más modernos y eso le confiere a nivel gráfico un ancho de banda mayor.
También recibió una dosis de memoria RAM bastante mayor, que se suele antojar necesaria para sprites compilados y dualfield.
Ambas máquinas no pueden espejar horizontalmente los sprites, al menos no cuando son sprites compilados, lo que no deja de sentarme mal por la cantidad de RAM que se merienda el mismo gráfico mirando hacia el otro lado. El STE si puede espejar verticalmente, que ahora mismo no sé para qué sirve, pero para algo servirá. Supongo que el Amiga también podrá hacer esto último.
Marcadores