Sobre o projeto
JSNES é um emulador completo do Nintendo Entertainment System (NES) escrito em JavaScript. Funciona tanto no navegador quanto em ambientes Node.js, tornando-o adequado para projetos de jogos retrô na web, emuladores embarcados ou ferramentas do lado do servidor.
A biblioteca oferece dois pontos de entrada principais:
- `jsnes.Browser` — um wrapper de alto nível que cuida automaticamente da renderização em canvas, reprodução de áudio via Web Audio API, entrada de teclado e gamepad e temporização de quadros. Pode carregar ROMs a partir de URLs ou dados brutos e fornece métodos para capturas de tela, pausa/retomada e limpeza.
- `jsnes.NES` — um núcleo de baixo nível para integrações personalizadas. Emite buffers de quadros brutos (256×240 ARGB Int32Array) e amostras de áudio por meio de callbacks, deixando a temporização, renderização e tratamento de entrada a cargo do desenvolvedor.
Os principais recursos incluem:
- Suporte a controles padrão do NES (dois jogadores) com mapeamentos de teclas configuráveis persistidos no localStorage.
- Suporte à API Gamepad para controles modernos.
- Emulação da pistola de luz Zapper.
- Persistência de SRAM com bateria por meio de callbacks para estados salvos.
- Serialização de salvar/carregar estado (`toJSON`/`fromJSON`).
- Taxa de quadros ajustável e monitoramento de FPS.
- Exemplo de componente React incluído; um frontend React completo está no diretório `web/`.
A instalação é feita via npm (`npm install jsnes`) ou diretamente por tag de script do CDN unpkg. O build usa formatação Prettier e inclui uma suíte de testes.
O JSNES originou-se do vNES de James Sanders e foi inspirado no JSSpeccy de Matt Wescott. É mantido ativamente e usado em projetos como o NEStation para NES multiplayer pela internet.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.