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

런어헤드로 버튼 반응 앞당기기

게임은 버튼 입력을 읽은 뒤 한 프레임 이상 지나야 반응을 화면에 보여 줍니다. 런어헤드는 그만큼 미리 진행해 반응을 앞당깁니다. 대신 계산량이 늘어 배터리를 더 씁니다.

클로즈 베타 테스트

게임은 버튼 입력을 읽은 뒤 한 프레임 이상 지나야 반응을 화면에 보여 줍니다. 에뮬레이터에서는 화면 표시와 입력 처리에 걸리는 시간도 더해져 버튼 반응이 늦게 느껴질 수 있습니다.

런어헤드는 게임을 미리 진행해 나중에 나올 화면을 먼저 보여 주는 방식입니다. 화면을 표시할 때마다 게임을 한 프레임 진행하고 그 상태를 보관합니다. 이어서 설정한 프레임 수만큼 더 진행한 화면을 보여 준 뒤, 보관한 상태로 돌아갑니다. 버튼 반응은 그만큼 빨리 보이지만 실제 게임 진행은 한 번에 한 프레임씩 유지됩니다.

소리와 진동은 화면에 보여 주는 마지막 프레임의 것만 사용하고, 화면에 표시하지 않는 프레임의 것은 버립니다. 미리 진행한 내용이 게임 내 저장에 남지 않도록 mGBA는 저장 지점에 포함되지 않는 카트리지 저장 메모리도 따로 복사해 함께 되돌립니다. 되감기 기록과 저장 지점에는 미리 진행하기 전의 상태만 남습니다.

대신 계산량이 늘어납니다. 화면을 한 번 표시할 때마다 설정한 프레임 수에 한 프레임을 더해 진행하고, 게임 상태를 저장하고 불러오는 작업도 반복합니다. 그래서 기본값은 ‘끔’이며 1×일 때만 작동합니다. 빨리 감기 중에는 버튼 반응을 앞당길 필요가 없기 때문입니다.

미리 진행할 프레임 수는 기종마다 다릅니다. 대부분 2프레임까지 선택할 수 있습니다. 슈퍼 패미컴과 메가 드라이브는 실기기에서 처리 부담을 측정하기 전까지 1프레임으로 제한했습니다. 닌텐도 DS와 PSP는 저장 지점의 용량이 수 MiB에서 수십 MiB에 달합니다. PSP 코어는 미리 진행하는 프레임도 그래픽 처리가 필요합니다. 이런 부담 때문에 두 기종을 제외했습니다.

이 기능을 만드는 과정에서 다른 문제도 찾았습니다. ares로 실행하는 여섯 기종은 화면 전달이 늦어지면 한 번에 두 프레임씩 진행하는 경우가 있었습니다. 런어헤드가 제대로 작동하려면 한 번에 한 프레임씩 진행해야 합니다. 한 프레임을 실행한 뒤 화면 전달이 끝날 때까지 기다리도록 고쳐, 평소 플레이에서도 두 프레임씩 진행하던 문제를 함께 해결했습니다.

실기기에서 프레임 처리 시간과 배터리 사용량이 얼마나 달라지는지는 아직 측정하지 않았습니다.

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

    게임 내 저장을 플레이 중에 파일에 기록하기

    게임 내 저장을 백그라운드 전환이나 게임 종료 때만 파일에 기록하던 문제를 고쳤습니다. 1.2.0에서는 마지막 변경 후 1초 동안 더 바뀌지 않으면 파일에 기록합니다.

  2. 개발 이야기v1.2.0클로즈 베타 테스트

    일시정지 화면의 반복 작업 줄이기

    게임을 일시정지해도 화면을 그리는 작업은 반복될 수 있습니다. 1.2.0에서는 새 영상이 들어오거나 표시 설정이 바뀔 때 다시 그리고, 설정을 저장하기 전에 미리 시험할 수 있게 했습니다.

목록으로지원 기종과 기능