N-EMU · 레트로 게임 에뮬레이터v1.10.1
개발 이야기작성일 thorv1.10.0

BIOS 파일 없이 넣는 PlayStation 디스크

여러 BIN을 한 게임으로 합치고 CHD와 여러 장짜리 디스크를 다루는 방법, 가장 느린 기준 Android 기기에서 확인한 뒤 JIT를 켜지 않은 결정을 소개합니다.

클로즈 베타 테스트

1.10.0에서 PlayStation을 더하며 엔진으로 PCSX-ReARMed를 골랐습니다. ARM 기기용으로 다듬어 온 엔진이고, 실제 BIOS 이미지 없이도 호스트 코드로 대체 동작을 하는 HLE BIOS가 들어 있습니다. N-EMU는 이 부팅 경로만 사용합니다. Sony BIOS를 가져오는 메뉴도, 대신 넣어 둔 펌웨어 이미지도 없습니다. HLE가 모든 게임의 호환성을 보장하지는 않습니다.

디스크를 가져오는 일은 확장자를 하나 더 받는 것보다 복잡했습니다. CUE 한 장이 여러 BIN을 가리킬 수 있기 때문입니다. 사용자가 CUE와 참조 파일을 모두 함께 고르면 트랙 순서대로 읽어 한 이미지로 합치고, 앱이 새 CUE를 씁니다. BIN이 51개여도 보관함에는 게임 하나가 됩니다. 큰 파일 전체를 한 번에 메모리에 올리지 않고 읽는 동안 해시를 계산합니다.

엔진에는 원래 CUE의 경로를 넘기지 않습니다. 확인한 트랙 표로 만든 가상 CUE와 가상 BIN 두 개만 보입니다. 사용자 파일에 적힌 경로를 엔진이 따라가서 다른 파일을 여는 일을 막는 경계입니다. CHD일 때는 원본 파일을 그대로 저장하고 가상 CHD 하나로 건넵니다.

CHD는 이미 PSP가 쓰는 형식입니다. 확장자만으로 기종을 고르면 기존 PSP 게임을 PS1로 잘못 보낼 수 있습니다. 첫 트랙이 원시 CD 트랙인지 확인해 PS1 디스크를 나누고, PSP용 트랙과 DVD 자료는 기존 PSP 검사로 보냅니다. 같은 확장자를 두 기종이 함께 쓴다고 사용자가 구분해서 변환할 필요는 없습니다.

여러 장짜리 게임은 M3U와 디스크를 함께 고르거나 (Disc 1), (Disc 2)처럼 이름 붙은 파일을 한 번에 고르면 묶입니다. 게임 중 일시정지 메뉴에서 디스크를 바꾸며 한 메모리 카드와 저장 지점 기록을 이어 씁니다. 저장 지점을 불러오면 당시 들어 있던 디스크로 돌아갑니다. 게임별 DualShock을 고르면 두 스틱과 진동을 쓰고 L1, R1, SELECT로 아날로그 모드를 바꿀 수 있습니다.

Android에서 JIT를 켤지는 측정 뒤에 정하기로 했습니다. 2026년 10월 21일, 가장 느린 기준 기기인 갤럭시 탭 A8에서 최적화한 측정 빌드를 1배속으로 실행했고 소유자는 화면의 프레임 수가 안정적이라고 확인했습니다. 기록된 프레임 시간 연속 측정은 아니므로 모든 게임의 속도로 넓혀 말할 수는 없습니다. 느릴 때만 켠다는 기준에 따라 PS1은 Android와 iOS 모두 JIT를 쓰지 않습니다.

  1. 개발 이야기v1.9.0클로즈 베타 테스트

    3DS 저장 지점이 업데이트를 건너는 법

    Azahar를 연결하면서 저장 지점을 설치별로 서명했습니다. 같은 기기의 저장 지점이 앱 업데이트만으로 닫히지 않도록 기준을 다시 나눈 과정을 소개합니다.

  2. 개발 이야기v0.2.0초기 개발

    여러 게임기를 한 앱에 담기

    기종이 달라도 같은 보관함에서 게임을 고르고 저장 데이터를 관리할 수 있도록 여러 에뮬레이터 코어를 연결했습니다.

목록으로지원 기종과 기능