1 pontos por GN⁺ 2023-07-16 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2023-07-16
Comentários do Hacker News
  • Another World: um videogame clássico conhecido por seus gráficos impressionantes e estilo artístico
  • O jogo é curto e os quebra-cabeças dependem de tentativa e erro, mas artisticamente ainda é popular
  • Fãs de Another World também podem gostar de Flashback: The Quest for Identity
  • Existem ports de Another World para várias plataformas, incluindo Amstrad CPC, Nintendo 64 e PlayStation 1
  • O autor deste artigo usou uma linguagem HDL personalizada chamada Silice para o port em FPGA
  • Os gráficos planares usados no Amiga têm vantagens como efeitos de transparência e efeito moiré
  • O uso de uma máquina virtual (VM) no jogo pode ter causado queda de desempenho em PCs dos anos 90
  • O jogo tem uma abertura memorável e uma jogabilidade desafiadora, como escapar do leão
  • O desenvolvedor original de Another World fez uma palestra retrospectiva na GDC sobre as ferramentas de desenvolvimento e o processo de animação
  • Assistir a um playthrough no YouTube pode ajudar jogadores que têm dificuldade com o jogo