Una interrupción de trama (también llamada interrupción de borrado horizontal ) es una señal de interrupción en un sistema informático antiguo que se utiliza para la sincronización de la pantalla. Generalmente, aunque no siempre, la genera el chip gráfico del sistema cuando las líneas de exploración de un fotograma se preparan para enviarse al monitor. La implementación más básica de una interrupción de trama es la interrupción de borrado vertical .
Esta interrupción proporciona un mecanismo para modificar los registros gráficos a mitad de fotograma, de modo que tengan valores diferentes por encima y por debajo del punto de interrupción. Esto permite, por ejemplo, que un objeto monocromático, como el fondo o el borde de la pantalla, tenga varias bandas de color horizontales . O bien, que un sprite de hardware se reposicione para dar la ilusión de que hay más sprites de los que admite el sistema. La limitación es que los cambios solo afectan a la parte de la pantalla que se encuentra debajo de la interrupción. No permiten más colores ni más sprites en una sola línea de exploración.
Los sistemas operativos modernos en modo protegido generalmente no admiten interrupciones de trama, ya que el acceso a las interrupciones de hardware para programas de usuario sin privilegios podría comprometer la estabilidad del sistema. Dado que su caso de uso más importante, la multiplexación de sprites de hardware, ya no es relevante, no existe ningún sucesor moderno para las interrupciones de trama.
Sistemas que admiten interrupciones de trama
Varias computadoras domésticas y consolas de videojuegos populares incluían chips gráficos que admitían interrupciones de trama o tenían funciones que podían combinarse para funcionar como tales. La siguiente lista no es exhaustiva.
Astrocade (dos chips personalizados, 1977)
El Bally Astrocade admitía una interrupción de borrado horizontal para seleccionar los cuatro colores de la pantalla de una paleta de 256 colores. El Astrocade no admitía sprites de hardware.
Ordenadores Atari de 8 bits (chip ANTIC, 1979)
El chip ANTIC utilizado por los ordenadores Atari de 8 bits incluye interrupciones de lista de visualización (DLI), que se activan mientras se dibuja la pantalla. [ 1 ] [ 2 ] El chip ANTIC en sí es considerablemente potente y inherentemente capaz de muchas funciones que otros sistemas requieren interrupciones de raster para replicar. ANTIC puede combinar múltiples modos gráficos en la pantalla, mostrar gráficos de sobreexploración horizontal y vertical, y desplazar con precisión regiones horizontales seleccionadas. Las DLI en Atari se utilizan normalmente para añadir color adicional a la pantalla y reutilizar elementos gráficos del jugador/misil.
ColecoVision y MSX (chip TMS9918, 1979)
La ColecoVision , una consola de videojuegos de 8 bits lanzada en 1982, así como la MSX , una computadora doméstica estandarizada de 1983, utilizaban el microcontrolador Texas Instruments TMS9918 . Este incluye una fuente de "interrupción vertical" para reposicionar los sprites del hardware en la pantalla.
Commodore 64 (chip VIC-II de MOS Technology, 1982)
El procesador VIC-II de MOS Technology para Commodore 64 y Commodore 128 cuenta con un sistema flexible de interrupciones de trama. Estas interrupciones y la intervención de la CPU son necesarias para reutilizar sprites en la pantalla, combinar modos gráficos y desplazar selectivamente regiones de la pantalla. El procesador TED de MOS Technology también admite interrupciones de trama en Plus/4 y Commodore 16 .
Nintendo Entertainment System (chip PPU, 1983)
El chip gráfico PPU de Nintendo Entertainment System no admite interrupciones de rasterización reales: una interrupción se puede configurar para que se active durante el intervalo de borrado vertical , pero no en cualquier línea de exploración arbitraria; en su lugar, requería el sondeo de un "indicador de impacto" que señalaba cuándo se dibujaba el primer sprite. Aunque los primeros juegos como Super Mario Bros. , Castlevania y The Legend of Zelda lograron producir un desplazamiento efectivo en pantalla dividida con este método, consume muchos recursos de la CPU. Algunos cartuchos posteriores incorporaron circuitos MMC (principalmente el chip MMC3 de Nintendo) que mantenían un registro de las líneas de dirección y datos de la PPU y generaban interrupciones de rasterización.
IBM PCjr (Video Gate Array, 1984)
El IBM PCjr, que utilizaba el chip gráfico Video Gate Array, admitía una interrupción de retroceso vertical implementada como IRQ5. [ 3 ] Posteriormente, en 1984, IBM introdujo el estándar gráfico EGA , que también admitía una interrupción de retroceso vertical, pero implementada como XT IRQ2 y deshabilitada por defecto. [ 4 ] Sin embargo, no todas las tarjetas EGA implementaban esta función y muy pocos programas que utilizaban modos EGA dependían de ella.
Las GPU modernas tienen una IRQ registrada en el procesador principal. Es importante destacar que no se trata de una interrupción en blanco vertical ni horizontal, y que su gestión corre a cargo del controlador de la tarjeta gráfica.
MSX2 (Yamaha V9938, 1985)
Los ordenadores MSX2 incorporan un chip gráfico Yamaha V9938 que, al igual que la NES, admite interrupciones verticales en blanco, pero requiere sondeo para las interrupciones horizontales en blanco. Se utilizaba habitualmente para crear pantallas divididas, combinar varios modos de vídeo en una misma pantalla y aumentar el número de colores únicos en pantalla más allá de las especificaciones oficiales. Algunos ejemplos destacados de su uso son la serie Aleste y Space Manbow de Konami .
Amiga (Chip de cobre, 1985)
Los ordenadores Amiga incluyen un coprocesador personalizado llamado Copper , dedicado a gestionar las interrupciones de trama. El Copper ejecuta un programa con instrucciones sencillas que le indican que espere a que se alcance una posición específica de la línea de exploración vertical y del haz horizontal, para luego actualizar el contenido de un registro de hardware personalizado. Esto se suele utilizar para modificar parámetros de visualización, como la mezcla de modos de visualización, la reutilización de sprites o el cambio de registros de color, pero también puede utilizarse para activar una interrupción de la CPU.
X68000 (chip VSOP + VINAS, 1987)
El X68000 , un ordenador doméstico de 16 bits vendido en Japón, cuenta con un sistema de interrupción de trama flexible para multiplexar sprites de hardware.
Game Boy (chip PPU, 1989)
La PPU de Game Boy admite cuatro interrupciones de rasterización: [ 5 ] se puede configurar para que se active al principio de una línea de exploración específica, al final de las líneas de exploración (durante el borrado horizontal ), al principio de todas las líneas de exploración o al principio del borrado vertical. Su inconveniente es que se utiliza el mismo controlador de interrupción para las tres primeras, lo que requiere el uso de código de "despacho" si se utiliza más de una condición.
Referencias
- ↑ De Re Atari . Atari, Inc. 1982.
- ↑ Watson, Alan (1982). "Una introducción a las interrupciones de la lista de visualización" . El segundo libro de Atari de COMPUTE !.
- ↑ Referencia técnica de IBM PCjr . International Business Machines Corporation. Noviembre de 1983. pág. 108.
- ↑ Manual del adaptador de gráficos mejorado de IBM (PDF) . International Business Machines Corporation. pág. 72. Archivado (PDF) del original el 24 de mayo de 2024. Consultado el 29 de julio de 2024 .
- ↑ "Pantalla de vídeo" . GBDev Wiki . Consultado el 20 de octubre de 2017 .
Véase también
- Interrumpe