# Retro Boy - Rust로 작성된 Game Boy 에뮬레이터, 웹에서 플레이 가능

> Clean Markdown view of GeekNews topic #19883. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19883](https://news.hada.io/topic?id=19883)
- GeekNews Markdown: [https://news.hada.io/topic/19883.md](https://news.hada.io/topic/19883.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-22T08:33:04+09:00
- Updated: 2025-03-22T08:33:04+09:00
- Original source: [github.com/smparsons](https://github.com/smparsons/retroboy)
- Points: 11
- Comments: 1

## Summary

Retro Boy는 Rust로 작성된 Game Boy 에뮬레이터로, 정확한 CPU와 오디오 에뮬레이션을 제공하며 웹에서 실행 가능합니다. 이 에뮬레이터는 다양한 MBC 카트리지를 지원하고, RTC 기능을 통해 시간 기반 게임도 작동할 수 있습니다. 웹 프론트엔드는 React/TypeScript로 구축되었으며, 사용자 지정 키 매핑, 치트 코드 관리, 모바일 친화적 디자인 등을 제공합니다.

## Topic Body

- 정확한 CPU/오디오 에뮬레이션으로 cycle-accurate한 게임보이 에뮬레이터  
- **wasm-pack**을 사용해 Rust 코드를 WebAssembly로 변환 → 웹에서 실행 가능  
- **Web Audio API** 및 **HTML Canvas** 사용하여 오디오 및 그래픽 처리  
- **로컬 스토리지** 사용 → 배터리 지원 MBC 카트리지의 RAM 데이터 유지 가능  
  
### 주요 특징  
- **정확한 CPU 에뮬레이션** → [JSON CPU 테스트](https://github.com/adtennant/GameboyCPUTests) 통과  
- **정확한 오디오 에뮬레이션**   
- 그래픽 에뮬레이션 → 스캔라인 기반 렌더러 사용  
- MBC1, MBC3, MBC5, HuC1 지원 → 다양한 카트리지 호환  
- RTC(Real Time Clock) 지원 → MBC3 카트리지에서 시간 기반 게임 작동 가능  
- 게임샤크(GameShark) 및 게임지니(GameGenie) 치트 코드 지원  
- 배터리 백업 카트리지는는 로컬 스토리지에 RAM 데이터 저장 가능   
- 웹 프론트엔드  
  - React/TypeScript + Material UI  
  - 전체 화면 모드 지원  
  - 게임 일시정지 및 재개   
  - 모노크롬 및 컬러 모드 선택 가능  
  - 사용자 지정 키 매핑 지원  
  - 치트 코드 활성화 및 관리 가능  
  - 모바일 친화적 반응형 디자인

## Comments



### Comment 36209

- Author: neo
- Created: 2025-03-22T08:33:05+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43429417) 
* 이 프로젝트는 정말 멋있음. 오디오 에뮬레이션에 몇 가지 문제가 있지만, Gameboy 에뮬레이션에 대해 오랜만에 생각해 보았음. Rust와 WASM이 데스크톱 환경에 제한되었던 애플리케이션을 보여주는 데 큰 역할을 하고 있음
  - NES 에뮬레이터를 wasm-bindgen을 사용하여 비슷한 방식으로 구현했음
  - 홈브루 작업을 하고 링크를 공유하면 브라우저에서 바로 작동하는 것이 정말 멋있음

* 최근 Aliexpress에서 £50에 레트로 게임 핸드헬드를 구매했음. Gameboy부터 SNES, PlayStation 1까지 플레이 가능하며, N64와 Dreamcast도 약간 가능함
  - 다양한 옵션이 있으며, 품질은 기대에 못 미칠 수 있지만, 여행 중에 Steam Deck을 구매할 수 없는 상황에서 매우 만족스러움
  - 다양한 커스텀 펌웨어와 앱을 설치할 수 있음
  - USB C 충전 문제를 주의하고, 작은 약한 충전기를 구매할 것을 권장함

* Gameboy 개발에 관심 있는 사람들을 위한 링크와 지원 문서 목록
  - Gameboy Dev: [링크](https://gbdev.io/)
  - PanDocs (기술 참조): [링크](https://gbdev.io/pandocs/)
  - Gameboy 기술 참조 문서 (gekkio): [링크](https://gekkio.fi/files/gb-docs/gbctr.pdf)
  - Game Boy Development Kit 2020 (GBDK-2020) 리부트: [링크](https://gbdk-2020.github.io/gbdk-2020/docs/api/)
  - GBDK-2020 Github: [링크](https://github.com/gbdk-2020/gbdk-2020)
  - GBDK-2020 예제: [링크](https://github.com/gbdk-2020/gbdk-2020/tree/develop/gbdk-lib/examples/gb)
  - GBDK 쇼케이스 (홈브루 소프트웨어): [링크](https://gbdk-2020.github.io/gbdk-2020-gallery/)
  - 홈브루 허브: [링크](https://hh.gbdev.io/)
  - Neil Young 앨범 (Silver & Gold) Gameboy 카메라로 제작된 커버 이미지: [링크](https://en.wikipedia.org/wiki/Silver_%26_Gold_(Neil_Young_album))

* GB/GBC/GBA는 VT102가 그리드 셀 소프트웨어에 해당하는 것과 같음. 데모 씬은 계속 발전하고 있으며, 칩튠은 하드웨어를 여전히 사랑하고 있음
  - GBA용 소프트웨어를 작성하는 것은 작은 현대 ARM 마이크로컨트롤러를 타겟팅하는 것과 비슷함
  - 다양한 에뮬레이터가 있으며, 각각 다른 측면에 집중하고 있음
  - 완벽한 에뮬레이션, 성능 최적화, 메모리 검사 및 치트 코드 제공 등 다양한 기능을 제공함

* 에뮬레이터의 원작자로서, 이 작은 취미 프로젝트가 많은 관심을 받는 것에 놀랐음. 지원에 감사함

* 7살 때 Kirby와 Final Fantasy Adventure를 아버지의 Windows 95 노트북에서 플레이하기 위해 no$gbemulator를 압축 해제하는 방법을 배웠던 기억이 남

* Rust로 작성된 Game Boy 에뮬레이터를 더 많이 보는 것이 정말 좋음. 특히 브라우저 지원이 있는 프로젝트가 멋있음
  - [afterplay.io](https://afterplay.io)라는 브라우저 기반 레트로 게임 플랫폼을 개발 중임
  - 다양한 시스템을 지원하며, 브라우저에서 완전히 실행되고 저장 상태, 클라우드 동기화, Capacitor를 통한 모바일 지원을 제공함
  - 네트플레이, 링크 케이블 지원, RTC 조작, 사용자 정의 가능한 터치 컨트롤 등 재미있는 기능도 있음

* 웹 페이지를 Android 앱으로 추가할 수 있는 웹사이트를 처음 발견했음. 이를 무엇이라고 부르며, 웹 애플리케이션을 설치 가능한 앱으로 만드는 방법을 알고 싶음

* Rust로 유사한 GB 에뮬레이터를 개발했음
  - 라이브러리: [링크](https://github.com/shaoner/padme-core)
  - 웹/wasm 백엔드: [링크](https://github.com/shaoner/padme-browser)

* 친구가 10년 전에 했던 유사한 프로젝트가 생각남: [링크](https://github.com/simias/gb-rs)
