Skip to content

Developer-Vini/NESEmu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


NESEmu


C SDL2


Emulador de Nintendo Entertainment System desenvolvido em C com SDL2.


Visão Geral

NESEmu é um emulador de console NES (Nintendo Entertainment System) construído do zero em linguagem C. O projeto implementa a arquitetura completa do hardware original, incluindo o processador MOS 6502, a PPU (Picture Processing Unit) e o sistema de mappers para compatibilidade com diversos cartuchos.

O objetivo principal é educacional — fornecer uma referência clara e funcional de como um emulador de console clássico opera em nível de hardware.


Capturas de Tela


Funcionalidades

Componente Descrição
CPU 6502 Implementação completa do processador MOS 6502 com todos os 151 opcodes e 13 modos de endereçamento
PPU Unidade de processamento gráfico com renderização de backgrounds, sprites, scrolling e paleta de cores NTSC
Mappers Suporte nativo a mappers 0 (NROM), 1 (MMC1), 2 (UxROM), 3 (CNROM) e 4 (MMC3)
Controle Entrada via teclado e gamepad para dois jogadores simultâneos
Screenshots Captura de tela em formato BMP com uma única tecla

Instalação

Requisitos

  • Compilador C (GCC, Clang ou MSVC)
  • SDL2 >= 2.0
  • GNU Make (opcional)

Compilar e Executar

git clone https://github.com/Developer-Vini/NESEmu.git
cd NESEmu
make
./nes_emulator <rom.nes>

Windows (MinGW / MSYS2)

make
nes_emulator.exe <rom.nes>

Compilação Manual

gcc -O2 -Wall -Iinclude -o nes_emulator \
    src/main.c src/cpu.c src/ppu.c src/bus.c \
    src/cartridge.c src/palette.c \
    $(sdl2-config --cflags --libs) -lm

Mapa de Teclado

Jogador 1
Tecla Função
Z A
X B
Enter Start
Shift Select
↑ ↓ ← → D-Pad
Jogador 2
Tecla Função
Q A
W B
1 Start
2 Select
T / G / F / H ↑ / ↓ / ← / →
Comandos do Sistema
Tecla Função
R Reset
P Screenshot
Esc Sair

Arquitetura

                    ┌─────────────────────────────┐
                    │           Main Loop          │
                    └──────────────┬──────────────┘
                                   │
              ┌────────────────────┼────────────────────┐
              │                    │                    │
              v                    v                    v
        ┌──────────┐        ┌─────────────┐       ┌──────────┐
        │  Input   │        │     CPU     │       │   PPU    │
        │ Handler  │───────>│  MOS 6502   │──────>│  (NTSC)  │
        └──────────┘        └──────┬──────┘       └────┬─────┘
                                   │                    │
                                   v                    │
                            ┌─────────────┐             │
                            │     Bus     │<────────────┘
                            │ (Decoding)  │
                            └──────┬──────┘
                                   │
                    ┌──────────────┴──────────────┐
                    │                             │
                    v                             v
             ┌─────────────┐             ┌─────────────┐
             │  Cartridge  │             │   RAM/IO    │
             │  PRG + CHR  │             │   2KB RAM   │
             └─────────────┘             └─────────────┘

Referências Técnicas

Recurso Descrição
NESDev Wiki Documentação completa do hardware NES
MOS 6502 Reference Referência do processador 6502
iNES Format Especificação do formato de ROM

Licença

Projeto educacional. Uso livre para fins de estudo e aprendizado.


Feito por Vinicius

About

Emulador de NES desenvolvido para executar jogos clássicos do Nintendo Entertainment System. O projeto simula componentes essenciais do console, como CPU, memória, gráficos e controles, permitindo a execução de ROMs com uma experiência próxima ao hardware original.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors