Meus trabalhos para o Outline 2020

De 22 a 24 de maio, ocorre uma votação on-line do demopati 2020. O evento foi planejado para maio deste ano, mas foi adiado para outubro por todos os motivos conhecidos.
Vou falar do meu trabalho


Não me lembro de quando chamei a atenção para o concurso de introdução de 128 bytes, mas todos os anos tento participar. A preparação para a competição é realizada com antecedência. Para o ano de 2020, os planos funcionavam para o ZX Spectrum e o Atari XE, mas posteriormente os planos foram alterados. Vou começar com o Apple II:

HiRes Walk




Eu gosto deste computador, é atraente porque será necessário muito esforço para resolver problemas simples. As tarefas foram: reprodução de som, operações de disco, gráficos, intérprete SWEET-16.
Os gráficos para Apple II são dois modos - LoRes com resolução de 40x48, 16 cores e Contratos com resolução de 280x192 6 cores.

O estudo da estrutura da tela parecerá estranho, provavelmente esse formato se deve ao fato de o Wozniak, ao projetar um computador, salvar em todos os chips disponíveis. Lidar com o modo de texto e LoRes foi fácil para mim, mas o modo HiRes era um beco sem saída. Quaisquer operações com a tela exigirão seções de código que não permitirão que a introdução caiba no tamanho de 128 bytes. Então eu decidi trapacear usando os procedimentos disponíveise tente sua mão. A idéia era simples: desenhe uma linha que deixe uma marca.

Quem escreveu algo semelhante a um jogo de pong conhece o algoritmo. Para a introdução, você precisará dos dados X1, dx1, dxe / Y1, dy1, corante. X1, Y1 - coordenada atual, dx1, dy1 determina a direção do movimento, dxe, corante - defina o limite da coordenada. Com esse conjunto de dados, você pode usar um procedimento para coordenadas (X1, Y1), (X2, Y2) ou para a primeira linha branca.

Resta fazer um rastro. A ideia surgiu por si mesma: escrevi um programa, executei 16 vezes com o depurador e peguei os dados prontos - um par (X3, Y3) e (X4, Y4) servirá para desenhar uma linha preta. Acontece que os pontos (X1, Y1), (X2, Y2) se movem ao longo de uma determinada trajetória e (X3, Y3), (X4, Y4) os seguem, mas com um certo atraso. O trabalho final - transferiu os dados necessários para o endereço 0, para que o tamanho do código seja salvo devido ao endereçamento da página zero.

Os perfeccionistas resmungam que a linha não toca o canto direito, mas eu receberei a desculpa preparada. A resolução da tela é de 280 pontos; portanto, o código foi alterado para manipular dados de 16 bits e a introdução aumentou de 128 para 256 bytes.

Halfton




Este é um remake do trabalho anterior , decidi alterar a entrada de atributos por textura. 47 bytes aumentaram para 128, o restante foi ocupado pela geração e exibição de textura. Há uma desvantagem: a introdução é lenta, mas você não pode pular além de 128 bytes.

Sparx




A ideia de uma introdução surgiu por si só, decidi escrever código e ver o que acontece. A introdução é simplificada - um modo de texto padrão com configurações adicionais é usado. O Atari possui um modo de gráfico GTIA chamado GRAPHICS 9. A propósito, no BASIC você pode usar o mesmo modo. É ativado configurando o bit 6 na localização da memória GRIOR (endereço 623). Neste modo, os bytes de mordidela altos e baixos são interpretados como o valor do brilho da cor (0 a 15) .Um
exemplo é o programa (Turbo BASIC) .O
imagem

resultado do trabalho
imagem

E no modo de texto, depois de escrever POKE 623.64, a tela fica
imagem

assim. retângulos de brilho 0-15.

Para Atari, há codificação de caracteres ATASCII, a ordem na tabela
imagem

Mas, além da codificação, também há um código de caracteres internos:
imagem

Digite TurboBasic
POKE DPEEK(88),1
no canto superior esquerdo aparece "!"

Essa numeração é usada para descrever a fonte - 8 bytes por espaço, os próximos 8 bytes para "!". No BASIC, o endereço da fonte é armazenado na célula 756 (CHBAS), você precisa multiplicar o valor por 256. Além disso, o endereço 756 é o valor de sombra para $ D409.

As fontes foram formadas para o modo selecionado: 8 valores $ 00, 7 valores $ 11..8 valores $ FF. Temos caracteres com códigos 0-15 e um brilho de 0-15.

O algoritmo da ação acabou sendo simples: copiar linha por linha e diminuir o valor em 1 se um código diferente de 0 for encontrado.

Smalevi4




O trabalho é uma piada. Li o artigo Serepindipitous Circles na BYTE Magazine, agosto de 1977, vol.2 N8, e decidi experimentar o código. E, novamente, uma pequena introdução de 48 bytes acabou. Como não queria mostrar o trabalho final, alterei o código e as opções de desenho para que uma figura semelhante fosse desenhada com um quadrado no centro. Total de 128 bytes.

Ufff. Se a apresentação dos princípios da introdução levou tanto tempo quanto o trabalho da introdução? Criar efeitos é muito divertido, e otimizar o tamanho do código também é divertido. Tente sua mão, e se der certo?

All Articles