Skip to content

VitorAngN/oldCPUEmulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emulador CHIP-8 Profissional (C++ & Win32 API)

en pt-br

C++ Win32 API Status

Um emulador completo da CPU CHIP-8 (sistema da década de 70) desenvolvido do zero em C++ moderno. Este projeto foi construído para demonstrar profundidade técnica em engenharia de software, saindo do nível de scripting procedural para uma arquitetura orientada a objetos (OOP) totalmente desacoplada.

O diferencial técnico: A renderização gráfica e o input não utilizam bibliotecas prontas como SDL2 ou SFML. O emulador "conversa" diretamente com o sistema operacional através da Win32 API nativa (<windows.h>), desenhando pixels diretamente na placa de vídeo, garantindo zero dependências externas para compilação.

Emulador CHIP-8 executando Pong
Emulador CHIP-8 executando Pong via Win32 API nativa

🧠 Arquitetura e Engenharia

O projeto foi dividido em dois domínios principais (desacoplamento):

  1. Domínio da CPU (Chip8.cpp & Chip8.hpp):

    • Focado exclusivamente em emular os barramentos de hardware. Nenhuma linha de código aqui sabe da existência de uma janela ou teclado físico.
    • Memória RAM: 4KB (4096 bytes).
    • Registradores: 16 registradores de uso geral (V0 a VF) + Registrador de Índice de 16-bits (I).
    • Timers: Sistema de interrupção simulado para Delay e Sound a 60Hz.
  2. Domínio de Interface (main.cpp):

    • Integração com o SO via Win32 API.
    • Criação da janela via CreateWindowEx.
    • Processamento contínuo da fila de mensagens do Windows (PeekMessage e DispatchMessage).
    • Sincronização de clock: A CPU roda a aproximadamente 300Hz, enquanto o desenho na tela e os timers são sincronizados a 60Hz.

Como Compilar e Rodar

Não é necessário instalar ferramentas complexas ou o CMake. Basta ter o compilador G++ (MinGW) no seu Windows.

  1. Clone o repositório:
git clone https://github.com/VitorAngN/oldCPUEmulator.git
cd oldCPUEmulator/emular8hd
  1. Compile usando o script otimizado que já lida com a linkagem da GDI32:
# Ou simplesmente dê dois cliques no arquivo build.bat pelo Windows Explorer
.\build.bat
  1. Execute passando a ROM desejada como argumento:
chip8_emulator.exe pong.ch8

(Se você não passar nenhum argumento, ele tentará carregar pong.ch8 automaticamente).

Autor

Desenvolvido por João Vitor Angelim Nogueira.
Estudante de Engenharia da Computação focado em Engenharia de Software, Backend e DevOps, buscando aprofundar-se desde o "escovador de bits" até arquiteturas distribuídas e infraestrutura robusta.

About

Um emulador de CPU desenvolvido do zero em C++ para estudos de arquitetura

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors