Aperte o análogo de Space Invaders a 1 kilobyte (1978 original leva 8)



Este jogo, fortemente inspirado por Space Invaders, foi escrito do zero para ATtiny2313 e enviado para o concurso de 1 kilobyte realizado recentemente em Hackaday .

Não é fácil colocar esse jogo em 1024 bytes. Mas o autor decidiu obter um jogo totalmente funcional com pontuação, som e uma saída de vídeo VGA com uma resolução de 640x480 e uma frequência de 60 Hz.

Obviamente, todo o código é completamente escrito em assembler e, para a geração de som e vídeo, é programado para obter intervalos de tempo precisos.

A interrupção do timer atende aos requisitos para sincronização horizontal VGA e, como a taxa de quadros é obtida dividindo a linha horizontal por um número inteiro, os dois tipos de sincronização podem ser colocados em um procedimento de processamento de interrupção. Para fazer isso, o procedimento conta com precisão os ciclos.

A frequência da linha de 31,5 kHz é tomada no mesmo procedimento que a base para a recepção de sons.

O procedimento de processamento de interrupção ocupa 90% do tempo do computador, portanto toda a lógica do jogo é calculada durante o feixe de retorno. Várias máquinas de estado controlam o movimento dos personagens, determinando a posição dos mísseis, etc.

Um pequeno gerador de caracteres é usado para armazenar a fonte para exibir a pontuação, além de peças e sprites.

Apenas algumas horas antes do final da recepção dos materiais, o código estava pronto e enviado à competição. Tudo acabou sendo realizado nele. Geração de um sinal VGA padrão (embora a resolução real seja muito menor que 640x480 - “pixels quadrados enormes”), controle de um gamepad para SNES ou seu clone com três sinais de Relógio, Trava, Dados, sprites de programa com movimento suave, em vez de pular de familiaridade na familiaridade, pontuação, mudança cíclica de ladrilhos como no original ...



O mesmo gamepad:



Você também pode criar o mesmo dispositivo e reproduzir um análogo de 1 kilobyte de Space Invaders. Monte o circuito (quartzo a 20 MHz não é mostrado, conecta-se aos pinos 4 e 5, o conector no canto superior direito é para o programador). O autor afirma que ele desenhou esse diagrama em um smartphone às 4 da manhã imediatamente antes de enviá-lo para o concurso. Obviamente, o adaptador Parallax é opcional, você pode apenas pegar o conector VGA.



Ao usar o adaptador, o dispositivo fica assim:



Compile a fonte ( arquivo do programa e do cabeçalho ) usando o AVR Studio ou o GCC, ou apenas preencha o arquivo HEX anexado - é mais rápido, mas você não poderá digitar o código. E você pode ver por si mesmo que o análogo de Space Invaders, que se encaixa em um kilobyte, é uma realidade.

Source: https://habr.com/ru/post/pt446984/


All Articles