Mis trabajos para Outline 2020

Del 22 al 24 de mayo, se lleva a cabo una votaci贸n en l铆nea de demopati 2020. El evento se plane贸 para mayo de este a帽o, pero se pospuso hasta octubre por todos los motivos conocidos.
Hablar茅 de mi trabajo


No recuerdo cu谩ndo llam茅 la atenci贸n sobre el concurso de introducci贸n peque帽a de 128 bytes, pero cada a帽o trato de participar. La preparaci贸n para la competencia se lleva a cabo de antemano, para el a帽o 2020 los planes fueron de trabajo para el ZX Spectrum y Atari XE, pero m谩s tarde los planes cambiaron. Comenzar茅 con Apple II:

HiRes Walk




Me gusta esta computadora, es atractiva porque tomar谩 mucho esfuerzo resolver problemas simples. Las tareas fueron: reproducci贸n de sonido, operaciones de disco, gr谩ficos, int茅rprete SWEET-16.
Los gr谩ficos para Apple II son dos modos: LoRes con una resoluci贸n de 40x48, 16 colores y Hires con una resoluci贸n de 280x192 6 colores.

Estudiar la estructura de la pantalla parecer谩 extra帽o, probablemente este formato se deba al hecho de que Wozniak, mientras dise帽a una computadora, guarda en todos los chips disponibles. Tratar con el modo de texto y LoRes fue f谩cil para m铆, pero el modo HiRes fue un callej贸n sin salida. Cualquier operaci贸n con la pantalla requerir谩 secciones de c贸digo que no permitir谩n que la introducci贸n se ajuste al tama帽o de 128 bytes. Entonces decid铆 hacer trampa usando los procedimientos disponiblesy prueba tu mano. La idea era simple: dibuja una l铆nea que dejar谩 una marca.

Cualquiera que haya escrito algo similar a un juego de pong conoce el algoritmo. Para la introducci贸n, necesita los datos X1, dx1, dxe / Y1, dy1, tinte. X1, Y1 - la coordenada actual, dx1, dy1 determinan la direcci贸n del movimiento, dxe, tinte - establece el l铆mite de la coordenada. Con este conjunto de datos, puede usar un procedimiento para las coordenadas (X1, Y1), (X2, Y2) o para la primera l铆nea blanca.

Queda por hacer un rastro. La idea surgi贸 por s铆 sola: escrib铆 un programa, lo ejecut茅 16 veces con el depurador y tom茅 los datos listos: un par (X3, Y3) y (X4, Y4) servir谩n para dibujar una l铆nea negra. Resulta que los puntos (X1, Y1), (X2, Y2) se mueven a lo largo de una trayectoria dada, y (X3, Y3), (X4, Y4) los siguen, pero con cierto retraso. El trabajo final: transfiri贸 los datos necesarios a la direcci贸n 0, por lo que el tama帽o del c贸digo se guarda debido al direccionamiento de la p谩gina cero.

Los perfeccionistas se quejar谩n de que la l铆nea no toca la esquina derecha, pero obtendr茅 la excusa preparada. La resoluci贸n de la pantalla es de 280 puntos, por lo que el c贸digo ha cambiado para manipular datos de 16 bits y la introducci贸n ha crecido de 128 bytes a 256 bytes.

Halfton




Esta es una nueva versi贸n del trabajo anterior , decid铆 cambiar la entrada de atributos por textura. 47 bytes aumentaron a 128, el resto fue ocupado por la generaci贸n y visualizaci贸n de texturas. Hay un inconveniente: la introducci贸n es lenta, pero no puede saltar m谩s all谩 de 128 bytes.

Sparx




La idea de una introducci贸n surgi贸 por s铆 sola, decid铆 escribir c贸digo y ver qu茅 pasa. La introducci贸n es simple: se utiliza un modo de texto est谩ndar con configuraciones adicionales. Atari tiene un modo de gr谩ficos GTIA, se llama GR脕FICOS 9. Por cierto, en BASIC puede usar el mismo modo. Se activa configurando el bit 6 en la ubicaci贸n de memoria GRIOR (direcci贸n 623). En este modo, los bytes de mordisco alto y bajo se interpretan como el valor del brillo del color (0-15).
Un ejemplo es el programa (Turbo BASIC).
imagen

El resultado del trabajo
imagen

Y en modo de texto, despu茅s de escribir POKE 623.64, la pantalla se ve as铆
imagen

Para el modo de texto, caracteres que se ven como rect谩ngulos de brillo 0-15.

Para Atari, hay codificaci贸n de caracteres ATASCII, el orden en la tabla
imagen

Pero, adem谩s de la codificaci贸n, tambi茅n hay un c贸digo de caracteres internos:
imagen

escriba TurboBasic
POKE DPEEK(88),1
en la esquina superior izquierda "!"

Esta numeraci贸n se utiliza para describir la fuente: 8 bytes para el espacio, los siguientes 8 bytes para "!". En BASIC, la direcci贸n de la fuente se almacena en la celda 756 (CHBAS), debe multiplicar el valor por 256. Adem谩s, la direcci贸n 756 es el valor sombra de $ D409.

Las fuentes se formaron para el modo seleccionado: 8 valores $ 00, 7 valores $ 11..8 valores $ FF. Tenemos caracteres con c贸digos 0-15 y con un brillo de 0-15.

El algoritmo de acci贸n result贸 ser simple: copiar l铆nea por l铆nea y disminuir el valor en 1 si se encuentra un c贸digo que no es igual a 0.

Smalevi4




El trabajo es una broma. Le铆 el art铆culo Serepindipitous Circles en BYTE Magazine, agosto de 1977, vol.2 N8, y decid铆 probar el c贸digo. Y nuevamente, result贸 una peque帽a introducci贸n de 48 bytes. No quer铆a mostrar el trabajo terminado, as铆 que cambi茅 el c贸digo y las opciones de dibujo para que se dibujara una figura similar con un cuadrado en el centro. Total 128 bytes.

Ufff 驴Si la presentaci贸n de los principios de la introducci贸n tom贸 tanto tiempo como el trabajo en la introducci贸n? Crear efectos es muy divertido, y tambi茅n es divertido optimizar el tama帽o del c贸digo. Prueba tu mano, 驴y si funciona?

All Articles