- Usando um FPGA UP5K, o autor recriou em hardware o jogo "Another World".
- O jogo roda em uma máquina virtual (VM) que chama um blitter e um rasterizador para gerar os gráficos.
- O autor criou implementações em hardware da VM, do blitter e do rasterizador no FPGA.
- O projeto se encaixa dentro dos requisitos de recursos do FPGA e usa 128 KB de memória SPRAM.
- O autor começou entendendo como os dados fluem pelo código e pelos dados do jogo.
- O projeto inclui um SoC que conecta tudo e adiciona a atualização de vídeo.
- O framebuffer usa blocos SPRAM, e cada framebuffer é mapeado perfeitamente para blocos SPRAM.
- O controlador de vídeo transmite pixels a 25 MHz e usa buffer duplo para evitar cintilação.
- O blitter copia o conteúdo de um framebuffer para outro ou preenche um framebuffer com uma cor sólida.
- O autor recriou com sucesso o jogo em hardware, com o projeto rodando em várias placas FPGA.
- O artigo discute a implementação do blitter e do rasterizador no motor do jogo.
- A unidade de blitter copia pixels durante o vblank, e a unidade de rasterização desenha polígonos no framebuffer.
- O blitter verifica um pulso de início e preenche com cor quando especificado.
- O rasterizador lê vértices de polígonos de uma BRAM de porta dupla para desenhar polígonos côncavos.
- O rasterizador usa um truque de paleta para transparência e pode copiar pixels de outro framebuffer de origem.
- O motor do jogo inclui um mecanismo de renderização de fontes e suporte a fundos pré-renderizados.
- O processo de build inclui copiar os arquivos de dados do jogo e executar simulações ou jogar em outras plataformas de hardware.
- O artigo discute o desenvolvimento de um projeto de hardware executado em FPGA para o jogo Another World.
- O autor menciona várias tarefas ainda pendentes, como testar o jogo, ajustar timings, corrigir problemas de renderização e adicionar música.
- O autor também menciona conectar outras partes do jogo e a possibilidade de salvar o estado do jogo.
- Construir outros jogos ou demos sobre esse hardware também é citado como um possível projeto futuro.
- O artigo fornece links para a série de posts do blog, o port e materiais relacionados às ferramentas.
- O projeto em Silice usado neste trabalho está sob licença MIT, enquanto o port modificado em C++ mantém a licença GPL original.
- O artigo também explica termos centrais como framebuffer, rasterizador, blitter e máquina virtual (VM) para leitores menos familiarizados com a área.
1 comentários
Comentários do Hacker News