프로젝트 소개
JSNES는 JavaScript로 작성된 완전한 기능을 갖춘 Nintendo Entertainment System(NES) 에뮬레이터입니다. 브라우저와 Node.js 환경 모두에서 작동하므로 웹 기반 레트로 게임 프로젝트, 임베디드 에뮬레이터 또는 서버 측 도구에 적합합니다.
라이브러리는 두 가지 주요 진입점을 제공합니다:
- `jsnes.Browser` — 캔버스 렌더링, Web Audio API 재생, 키보드 및 게임패드 입력, 프레임 타이밍을 자동으로 처리하는 고수준 래퍼입니다. URL이나 원시 데이터에서 ROM을 로드할 수 있으며 스크린샷, 일시 정지/재개, 정리를 위한 메서드를 제공합니다.
- `jsnes.NES` — 사용자 정의 통합을 위한 저수준 코어입니다. 콜백을 통해 원시 프레임 버퍼(256×240 ARGB Int32Array)와 오디오 샘플을 내보내며 타이밍, 렌더링, 입력 처리는 개발자에게 맡깁니다.
주요 기능은 다음과 같습니다:
- localStorage에 저장되는 구성 가능한 키 바인딩을 갖춘 표준 NES 컨트롤러(2인용) 지원.
- 최신 컨트롤러를 위한 Gamepad API 지원.
- Zapper 광선총 에뮬레이션.
- 저장 상태를 위한 콜백을 통한 배터리 백업 SRAM 지속성.
- 상태 저장/로드 직렬화(`toJSON`/`fromJSON`).
- 조정 가능한 프레임 속도 및 FPS 모니터링.
- React 컴포넌트 예제 포함; 전체 React 프런트엔드는 `web/` 디렉터리에 있습니다.
설치는 npm(`npm install jsnes`) 또는 직접 unpkg CDN 스크립트 태그를 통해 이루어집니다. 빌드는 Prettier 포맷을 사용하며 테스트 스위트를 포함합니다.
JSNES는 James Sanders의 vNES에서 시작되었으며 Matt Wescott의 JSSpeccy에서 영감을 받았습니다. 활발히 유지 관리되고 있으며 인터넷을 통한 멀티플레이어 NES를 위한 NEStation과 같은 프로젝트에서 사용됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.