Por Gallica
Un viaje técnico al corazón del hardware Amiga 500, para entender cómo el chip Denise y el Copper permiten mostrar mucho más que 32 colores o 8 sprites, y superan todos los límites gráficos de la máquina.
Somaire
I. El corazón gráfico del Amiga: Denise & el Copper
- Denise es el chip de video principal: gestiona los bitplanes (hasta 6 en A500), el multiplexado de sprites hardware (8 simultáneos por línea), la priorización, los scrollings y la composición final de la imagen.
- Copper (coprocesador “coprocesador de video” integrado en Agnus): se ejecuta en paralelo con la CPU. Su objetivo: escribir, en momentos precisos de la generación de la imagen (por “raster”), en los registros del chipset, para modificar al vuelo los colores, los modos de video, las direcciones de bitplane, etc.
Clave de la potencia Amiga: en cada scanline, o incluso pixel, el Copper puede modificar la paleta, cambiar de modo, disparar interrupciones… ofreciendo así una expresividad casi ilimitada con una CPU lenta.

II. Multiplicar los colores en pantalla: trucos del Copper & paleta dividida
1. Funcionamiento de la paleta en Denise
En modo estándar 5 bitplanes (32 colores simultáneos entre 4096), Denise muestra la imagen en RAM según un índice en una tabla de 32 colores (“Color00” a “Color31”).
Límite normal: cada píxel puede referenciar 1 color entre 32.
Pero…
2. Aprovechamiento del Copper para el “cambio de color raster”
- El Copper puede ejecutar una lista de instrucciones (“Copperlist”) sincronizadas con el barrido de la pantalla (el haz raster).
- En cada scanline (o incluso cada porción de línea), puede reescribir los registros de colores (
$DFF180a$DFF1BE). - Consecuencia: el mismo “Color 01” mostrará un tono diferente arriba, en medio, abajo…
- Si se cambia la totalidad o parte de la paleta cada línea, cada banda horizontal de la pantalla puede tener sus propios colores.
Ejemplo: cambiando 16 colores cada 4 líneas en una pantalla de 256 líneas, se pueden mostrar cientos de colores reales (“efecto arcoíris”, degradados, “gradientes de cielo” en Shadow of the Beast o Lionheart).

3. “Copperbars” y efectos raster
- Cambiar la paleta cada x líneas = barras de color (“copperbars” clásicas de las demos)
- Cambiar dinámicamente la paleta según una tabla precalculada = efectos “fuego”, plasma, degradados arcoíris (State of the Art, Arte…)
- Se puede combinar el copper con el blitter para efectos de distorsión o de pantalla dividida animada (ejemplo: degradados de cielo en Agony, Enigma)
4. Modo HAM (Hold-And-Modify) y Copper
- El modo HAM permite 4096 colores simultáneos (limitado por artefactos).
- Se puede combinar con copper para cambiar el orden de los bits o las paletas “base” al vuelo (trucos avanzados de demomaker).
5. Ejemplo de copperlist
CWAIT $2C, $20 ; Attend la ligne 44, colonne 32
CMOVE COLOR01, $F00 ; Change la couleur 1 (rouge)
CWAIT $34, $20
CMOVE COLOR01, $0F0 ; Change la couleur 1 (vert)
CWAIT $3C, $20
CMOVE COLOR01, $00F ; Change la couleur 1 (bleu)
Este código cambia el color n.º 1 en tres lugares verticales diferentes para mostrar bandas rojas, verdes y azules.
III. Superar el límite de 8 sprites hardware: multiplexación y trucos
1. Límite oficial
Denise gestiona 8 sprites hardware por línea, cada uno hasta 16×256 px (modo 4 colores, posible emparejamiento para 16 colores pero menos sprites).
2. Técnicas de multiplexación
- Cambio de dirección de sprite “en vuelo” (vía Copper o interrupción): cuando el raster termina de mostrar un sprite en una línea, el Copper reescribe su dirección para mostrar otra imagen más abajo, en otra línea (“sprite multiplexing” al estilo C64, ¡pero en hardware en Amiga!).
- Blitter objects: además de los 8 sprites, el blitter puede copiar gráficos al vuelo en los bitplanes, simulando sprites por software con muy bajo coste de CPU (usado en Ruff’n’Tumble, Uridium 2, Agony…)
- Bitplanes animados: algunos juegos usan bitplanes enteros para simular “sprites grandes” o efectos (nubes en Shadow of the Beast, jefes en Lionheart…)
Ejemplo concreto: en Agony, el Copper sirve para multiplexar los sprites y mostrar 16 pájaros diferentes, el blitter copia los disparos, y la paleta dividida dinamiza el fondo.

3. Prioridad y trucos para evitar conflictos
- Buena planificación del “slot de sprite” para que enemigos y disparos nunca aparezcan en la misma línea vertical (o uso de sprites “recortados”/multiplexados vía Copperlist).
- Sprites usados también para HUD, efectos, overlay, no solo para el gameplay.
- En modo EHB (Extra Half-Brite), algunos juegos simulan aún más colores para los sprites mediante duplicación y atenuación automática.
IV. Demos y juegos emblemáticos: lo que Copper y Denise hacen posible
- Shadow of the Beast: degradados de cielo con copper, sprites multiplexados para enemigos, paralaje en 12 planos gracias a la copperlist
- Lionheart: copper para dividir paletas (cielo, decorados, sprites separados), bitplanes dinámicos, jefes gigantes simulados en bitplane/objetos blitter
- State of the Art: barras de copper animadas, vídeo en tiempo real con cambio de paleta en cada scanline (más de 600 colores mostrados en pantalla)
- Demo “Enigma” (Phenomena): plasma, barras raster, gradientes de cielo, copper usado para “parpadear” efectos de luz, superando las 256 colores
- Kid Chaos: fondo dinámico, sprites multiplexados, HUD en overlay vía sprite
Hecho técnico destacado: en Amiga 500, demos recientes superan 1000 colores visibles mediante copper + cambios de paleta al vuelo, con 8 sprites multiplexados para crear efectos nunca vistos en consolas de 16 bits.

V. Códigos, trucos y recursos para profundizar
- Recursos de código:
- Consejo práctico: para superar 32 colores o 8 sprites, siempre pensar en “raster time” y planificar sus listas de copper. El truco es la automatización de cambios mediante tablas precalculadas y el uso combinado de blitter + sprites.
Conclusión
El Amiga 500, a través de Denise y el Copper, es capaz de mostrar mucho más que sus especificaciones oficiales. Gracias a la programación cycle-accurate, listas de copper avanzadas y multiplexado, rivaliza con la Megadrive/SNES en muchos aspectos – y a veces las supera.
El verdadero límite no es el hardware: es la creatividad del programador. La escena demo lo ha demostrado, y las herramientas modernas permiten a todos aprovecharlo.