1

Pitch: Fiz um Interpretador/Emulador de Chip8 com Python

Depois de muito tempo sem publicar nada por aqui, e de ter desistido de estudar programação algumas vezes, há algum tempo eu terminei um projeto relativamente complicado de se fazer do jeito certo, um interpretador de Chip8.

obs: Para ver uma screenshot do emulador, clique aqui

para esse projeto eu fiz uso de:

  • Python (3.12);
  • Tkinter como gerenciador da interface mais básica do emulador;
  • Pygame para a tela dos jogo em si;

Eu fiz uso principalmente do ChatGPT para criar as telas e economizar tempo com o que pra mim era essencial, implementar todas as instruções, suas logicas internas, e a questão da lógica de forma geral. Aprender a questão das telas me custaria mais tempo, e tiraria o foco do objetivo principal que era o emulador.

Foi um desafio interessante entender a questão dos registradores, operações bitwise e como são interpretadas as instruções.

Atualmente o emulador passa em todos os testes que estão aqui neste link após varias correções da logica usando o registrador VF.

Eu baixei as roms e coloquei em /test_roms (preciso verificar se eu posso realmente fazer isso, ou se descumpri a licença do criador delas)

Na verdade, além do emulador, eu fiz também um assembler básico e funcional, mas que ainda não é tão simples de usar, pois necessita mexer no código do assembler em si, o que não é o ideal.

o assembler fica na pasta /mychipssem

Também estou fazendo uma especie de monitor/REPL para programar em chip8 de forma mais direta usando um simulador de terminal que gravará os seus comandos, mas esse monitor ainda não está funcional.

o monitor está em /recorder

Concluindo, foi um desafio muito gratificante e que não demorou tanto quanto eu imaginava, eu duvidei muito de que eu conseguiria fazer isso, mas eu consegui, e isso me animou a voltar a programar, pelo menos programar o que me diverte.

Obs: Atualmente, a única forma de rodar o emulador é se você tiver o python no seu computador, baixar o pygame e o tkinter e rodar

python3 mychip8.py

na raiz do projeto, eu preciso criar um release no GitHub e assim poderei dizer que está finalizado por hora.

Carregando publicação patrocinada...