성능
레트로 게임 에뮬레이션은 연산 부하가 큽니다. 흔한 성능 문제와 해결 방법:
"ROM이 너무 커서 로드 불가"
앱은 매니페스트에 largeHeap=true 를 설정해 메모리를 최대로 확보하지만, Android는 여전히 단일 프로세스 RAM 요구량을 제한합니다. 증상:
- "메모리 부족" 또는 "ROM 너무 큼" 오류로 게임 실행 실패
- Play 누르면 앱 충돌
원인과 해결:
| 원인 | 해결 |
|---|---|
| ROM 파일이 ~500 MB 초과 | 더 컴팩트한 형식 사용 (.bin+.cue 대신 .chd; PSP는 .iso 대신 .cso) |
| 기기 RAM < 4 GB | 이 기기에선 GBA / 제네시스까지의 시스템에 머무르기 |
| 다른 앱이 메모리 점유 | 백그라운드 앱 종료, 폰 재시작 |
| 저장소에 큰 ROM 많음 | 저장소 관리로 공간 확보 |
플레이 중 렉/끊김
보통의 의미:
- CPU 병목 — 대부분 에뮬레이터는 CPU 에뮬레이션에 단일 스레드. 강력한 단일 코어 성능의 폰(최근 플래그십)이 PSX/N64/PSP/NDS/3DS를 잘 돌림. 오래된 중급 폰은 PSX 이상에서 고전.
- GPU 병목 — 3DS (Citra/Azahar), PSP (PPSSPP 고해상도), N64 (Mupen64Plus) 외에는 드묾.
시도할 노브:
| 노브 | 효과 |
|---|---|
| 프레임 스킵 (코어 옵션) | N번째 프레임마다 스킵해 오디오 부드럽게 |
| 내부 해상도 낮춤 (PSP, 3DS) | 해상도 절반 → 큰 속도 개선 |
| CPU 모드를 JIT로 | 일부 코어(N64, PSP)는 JIT로 큰 가속 |
| CPU 모드를 Interpreter로 | 속도 낮지만 정확도 향상 (드물게 슬로다운 원인) |
셰이더 필터 비활성 (sharp 로 설정) | CRT 셰이더는 GPU 비용 |
| 오디오 샘플레이트 낮춤 | 일부 코어가 오디오 옵션 노출 |
대부분의 노브는 인게임 메뉴 → Settings 에 있음.
오디오 크래클/팝
크래클은 오디오 버퍼 언더런 — 보통 프레임 드롭 때문. 시도:
- 프레임 스킵을 auto 로 (코어 옵션).
- 내부 해상도 낮춤.
- 헤드폰 연결 — 블루투스 오디오는 일부 코어가 흡수하기 어려운 지연 추가.
기기가 뜨거워짐
에뮬레이션이 CPU/GPU에 부하를 줘 폰이 뜨거워집니다. 발열 줄이기:
- 내부 해상도 낮춤 (PSP, 3DS, N64)
- 비싼 셰이더 비활성 (
sharp로) - 휴식 (수동 냉각이 큼)
- 긴 세션에 폰 팬 / 외장 쿨러 연결
- 뜨거우면 CPU 클럭 스로틀링 — 지속 발열이 슬로다운을 유발, 더 슬로다운
배터리가 빨리 닳음
같은 이유. 팁:
- 화면 밝기 낮추기
- 긴 세션에 시스템 배터리 절약 사용
- 배터리 중요할 때 가장 비싼 코어 (Citra/Azahar, PPSSPP 고해상, Dolphin) 회피
- 장거리에 보조 배터리
성능을 위한 다른 코어 선택
여러 코어가 있는 시스템은 가벼운 쪽 선택:
| 시스템 | 가벼움 | 무거움 (더 정확) |
|---|---|---|
| NES | Nestopia | FCEUmm |
| PSX | PCSXReARMed | Beetle PSX HW |
| NDS | DeSmuME | MelonDS |
| 3DS | Citra | Azahar |
| MAME | MAME 2003 Plus | MAME (최신) |
게임 상세 → Core 드롭다운에서 게임별 설정.
성능 등급별 권장
저가 Android (Snapdragon 6xx / Helio G): NES, SNES, 게임보이 군, 메가 드라이브 / 제네시스, MAME 2003
중급 (Snapdragon 7xx / Dimensity 8xx): + GBA, PSX, N64, 새턴 (주의), 아케이드 (네오지오)
플래그십 (Snapdragon 8xx / Apple A 동급): 위 모두 + PSP, NDS, 3DS