최근 수정 시각 : 2024-04-16 22:31:57

Dolphin(에뮬레이터)


이 문서는
이 문단은
토론을 통해 표제어를 Dolphin(에뮬레이터)으로 하기로 합의되었습니다. 합의된 부분을 토론 없이 수정할 시 편집권 남용으로 간주되어 제재될 수 있습니다.
아래 토론들로 합의된 편집방침이 적용됩니다. 합의된 부분을 토론 없이 수정할 시 편집권 남용으로 간주되어 제재될 수 있습니다.
[ 내용 펼치기 · 접기 ]
||<table width=100%><table bordercolor=#ffffff,#1f2023><bgcolor=#ffffff,#1f2023><(> 토론 - 표제어를 Dolphin(에뮬레이터)으로 하기
토론 - 합의사항2
토론 - 합의사항3
토론 - 합의사항4
토론 - 합의사항5
토론 - 합의사항6
토론 - 합의사항7
토론 - 합의사항8
토론 - 합의사항9
토론 - 합의사항10
토론 - 합의사항11
토론 - 합의사항12
토론 - 합의사항13
토론 - 합의사항14
토론 - 합의사항15
토론 - 합의사항16
토론 - 합의사항17
토론 - 합의사항18
토론 - 합의사항19
토론 - 합의사항20
토론 - 합의사항21
토론 - 합의사항22
토론 - 합의사항23
토론 - 합의사항24
토론 - 합의사항25
토론 - 합의사항26
토론 - 합의사항27
토론 - 합의사항28
토론 - 합의사항29
토론 - 합의사항30
토론 - 합의사항31
토론 - 합의사항32
토론 - 합의사항33
토론 - 합의사항34
토론 - 합의사항35
토론 - 합의사항36
토론 - 합의사항37
토론 - 합의사항38
토론 - 합의사항39
토론 - 합의사항40
토론 - 합의사항41
토론 - 합의사항42
토론 - 합의사항43
토론 - 합의사항44
토론 - 합의사항45
토론 - 합의사항46
토론 - 합의사항47
토론 - 합의사항48
토론 - 합의사항49
토론 - 합의사항50
||

1. 개요2. 상세3. 기능
3.1. Ishiiruka 빌드3.2. 트라이포스 빌드3.3. MMJ/MMJR 빌드
4. 호환성

1. 개요


닌텐도 게임큐브 Wii를 지원하는 오픈 소스 에뮬레이터. 다운로드 페이지[2]

이름의 어원은 닌텐도 게임큐브의 개발 코드네임인 'Dolphin'.

2003년에 닌텐도 게임큐브의 에뮬레이터로서 출발한 것이 시초이지만, 2008년에 오픈 소스로 전환하고 Wii를 추가한 때에 본격적으로 유명해졌다.

PS2보다 성능이 약간 더 좋은 게임큐브임에도 어째선지 PCSX2보다 최적화가 잘 되어 있다는 평이었으나 시간이 지나 PCSX2도 스피드 핵 및 다양한 명령어 지원으로 사정이 많이 달라졌다.[3] 대신(?) Dolphin은 윈도우 이외의 운영체제에서도 안정적인 구동을 보장한다.

2023년 2분기에 Steam에 해당 에뮬레이터가 출시될 예정이였으나 닌텐도의 DMCA 요청으로 인해서 취소되었다. # 소스 코드에 Wii의 인증키가 대놓고 하드코딩되어 있던 것이 문제가 되었다.

2. 상세

Dolphin의 최소 사양은 다음과 같다. 공식 홈페이지 출처
OS 64비트 Windows (7 SP1 이상), Linux, macOS (10.10 Yosemite 이상).[4]
프로세서 SSE2를 지원하는 CPU. "modern"(3GHz, 듀얼 코어 이상이며 2008년보다 오래되지 않은) CPU가 강력히 권장된다.
그래픽 카드 D3D10 / OpenGL 3.0을 지원하는 "reasonably modern" 그래픽 카드. D3D11 / OpenGL 4.4 이상 권장.[5][6]
만약 위의 사양을 만족하지 못하는 경우라면 4.0-157 이하의 버전은 DX 9를 지원하며, 4.0-1609 이하의 버전은 32비트 시스템을 지원하므로 이용할 수 있다. 최신 버전에 비해 호환성은 떨어지고 속도도 느리다는 점은 감수해야 한다.

유명한 Ishiiruka 버전은 32비트 시스템, DX 9, DX 12 등 공식 버전에서 퇴출된 기능들을 지원해 주고 있으니 이쪽을 찾아 이용해도 괜찮다.

7세대 콘솔 가운데 가장 처음으로 만들어진(그리고 2016년 중반까지는 사실상 유일하던)[7] 에뮬레이터다.

안드로이드를 지원한다. 스마트폰 AP의 낮은 성능과 드라이버 호환성 문제로 오랫동안 골골거렸지만 2010년대 말 모바일 AP의 급격한 성능 향상과 맞물려 Dolphin 팀이 안드로이드 버전에 노력을 기울인 덕분에 2020년대에 들어서는 중급 이상의 스마트폰에서[8][9] 많은 게임이 원활하게 구동된다. 드라이버 호환성은 여전히 타는 편이니 Vulkan과 OpenGL을 번갈아 시험해보는 것이 좋다.

iOS 또한 지원한다. A9 이상의 기기라면 준수한 구동성능을 보여준다. 다만 iOS의 에뮬레이터들이 모두 그렇듯 탈옥이 필수적으로 요구된다. Cydia 소스 AltStore를 이용하면 탈옥 없이도 사용 가능하다.

PCSX2와는 달리 바이오스를 구하는 등의 번거로운 일도 필요가 없다.[10] Wii 게임도 구동되는 건 당연히 Wii가 게임큐브를 오버클럭한 버전이기 때문이다. 물론 Wii 리모컨과 눈차크로의 블루투스 연결도 완벽히 지원한다. 블루투스 동글과 적외선 센서바를 별도 구매해야 구동되며, 둘을 합친 돌핀바라는 물건도 판매되고 있다. Wii U용 게임큐브 컨트롤러 어댑터가 발매된 뒤에는 정식 게임큐브 컨트롤러도 지원한다. 기존에 지원하는 엑스박스 컨트롤러에서 스틱 범위가 어긋나는 문제가 없다는 게 장점이다.

4.0으로 업데이트 된 당시에 이전 버전의 Wii 세이브 데이터를 옮길 때 번거로움이 있었다.[11] 이전까지는 User 폴더를 옮기는(!) 꼼수로 옮길 수 있었으나 4.0 버전은 시궁창... 에뮬레이터 자체에서 bin 세이브 데이터를 가져오는 방법으로 일일이 로드해야 하는데, 이전 버전에 있는 세이브 데이터를 내보낸 뒤에 사용하려는 돌핀 버전에서 그 데이터를 가져와야 했다. 덤으로 이전에 사용하던 키 맵핑도 지원하지 않아 일일이 다시 맵핑해줘야 했다.

4.0 버전 이후로 설정 파일들이 내 문서 경로에 저장되는데, 이것이 거슬린다면 돌핀이 있는 경로에 portable.txt라는 0바이트짜리 파일을 만듬으로써 해결할 수 있다.

2015년 6월 중순, 돌핀팀은 프로젝트를 2개로 분기했다. 4.0 이후에 그때까지의 호환성 문제 보완을 위해 동분서주하느라 기능 추가가 지연된 점을 해결하기 위함이다. 그 하나는 차후 버전을 위해 추가 개발을 해 나가는 5.0-RC(Release Candidate) 버전이고, 다른 하나는 기존의 개발자 버전으로, 이쪽은 호환성 문제 해결만을 집중한다. 7월달의 보고서에 따르면 5.0 버전의 발매일을 아직 기약할 수는 없고, 현재로서 이용자들에게 최선의 선택은 여전히 개발자 버전이라고 한다.


2016년 6월 24일, 드디어 5.0가 공개되었다.


위 영상은 각 버전별 재생 속도 비교영상이다. DX12는 이 영상이 공개된지 얼마 지나지 않아 지원 종료되었고, Vulkan이 빠른 속도를 제공하며 발전중이다.

수많은 버그 픽스, 그래픽 깨짐 현상 해결, 사운드 퀄리티 상향, OpenGL과의 3D 연동 등 게임플레이가 훨씬 부드러워졌다. 컨트롤 이슈도 많이 해결된 편.

2016년 9월, 버전 5.0-540에서 MMU(Memory Management Unit) 에뮬레이션 문제를 해결함에 따라, 부팅이 불가능하던 마지막 게임큐브 게임인 " 스타워즈: 클론전쟁"이 부팅되었다. 이로써 돌핀은 모든 게임큐브 게임을 부팅할 수 있게 되었다.

5.0-748 빌드부터 Vulkan을 지원한다. 돌핀 개발진들의 내부 테스트 결과에 따르면 DirectX 11/12와의 성능과는 큰 차이가 없고, 이는 AMD GPU 리눅스를 쓰는 경우에 사용할 것을 권장하며, NVIDIA GPU 리눅스를 쓰는 경우에는 Vulkan보다는 OpenGL을 쓸 것을 권장한다. Windows는 GPU의 지원 수준에 따라 DirectX 11/12를 권장하지만 슈퍼 마리오 선샤인 같은 일부 게임에는 Vulkan API쪽의 프레임 성능이 다른 것들에 비해 더 향상됐다고도 전한다.

2017년 7월 셰이더 컴파일링으로 인해 생기는 스터터링 문제를 해결할 Ubershader가 도입되었다. 이하 내용은 Dolphin 블로그 글을 요약한 것이고, 원문은 길지만 휠씬 이해하기 쉽게 잘 쓴 글이니 한 번 읽어보면 좋다. 원문

Wii와 게임큐브의 GPU에는 TEV(Texture EnVironment) 유닛이라는, 제한적으로나마 프로그래밍이 가능한 장치가 들어 있다. TEV는 마치 현대 GPU가 셰이더를 불러오듯 다양한 설정이 가능한데, 이들 설정은 게임별로 다르다. 게임은 하고 싶은 작업이 있을 때마다 이들 설정을 불러오며, Dolphin은 이때마다 TEV를 에뮬레이트하기 위한 셰이더를 컴파일해 사용한다.
문제는 당연히 게임큐브용 게임은 게임큐브라는 하나의 디바이스만을 타겟으로 개발되기 때문에, TEV 유닛을 제어할 셰이더 코드를 소스 코드로 넣을 이유가 전혀 없고, 용량과 시간 절약을 위해 미리 컴파일해두고 아무 때나 읽으면 된다. 따라서 게임큐브 실기에서는 이 작업에 시간이 걸리지 않으나, PC 게임은 다양한 GPU를 지원해야 하고 각 GPU 들은 내부적으로 다른 셰이더 인스트럭션을 사용하므로 실행하는 컴퓨터마다 셰이더 컴파일을 해주어야 한다. 따라서 TEV 를 현대의 셰이더로 에뮬레이션 할 경우 Dolphin에서는 PC의 GPU를 위한 셰이더를 컴파일하는 시간이 필요하다.[12] 셰이더를 컴파일하는 동안 Dolphin은 아무 것도 하지 못한 채 셰이더가 완성되어 GPU 에뮬레이션이 재개되기만을 기다려야 하고, 이 시간은 플레이어가 감지할 수 있는 스터터링이 된다.[13]

이 셰이더 컴필레이션 스터터링은 게임에 따라서는 플레이 도중 시시때때로 일어나 몰입을 방해할 정도의 문제로 남아 있었고, 이를 없애기 위해 다양한 안들이 제시되었다.
  • 셰이더를 컴파일하지 않은 채 다음 프레임을 렌더링하며 게임을 계속 진행한다. (비동기적 셰이더 컴파일링)
    다양한 핵 기능으로 유명한 Ishiiruka 빌드가 채택한 해결책으로, 셰이더가 컴파일되기를 기다리지 않고 게임을 계속 실행하는 방법이다. 셰이더가 컴파일되는 동안에는 화면 요소들이 누락된 채로 렌더링되고, 이는 극심한 팝인 현상으로 나타난다. 상황에 따라서는 EFB(Embedded FrameBuffer) 관련 작업이 건너뛰어지는 바람에 화면상에 보여야 할 그래픽이 영원히 빠진 채로 남는 경우도 있다.
  • 공유 가능한 셰이더 캐시
    기본적으로 게임이 컴파일한 셰이더는 지워지지 않고 "셰이더 캐시"로 남으며, 다음번에 필요할 때는 읽어들이기만 하면 된다. 공유 가능한 셰이더 캐시는 이 데이터를 서로 다른 컴퓨터 간에 호환 가능하도록 만드는 방법이다.
    Cemu Citra에서 제공하는 기능이며, Dolphin도 Vulkan 플러그인에 한해서 지원하는(이라기보다는 사용 가능한) 기능이다. 엔드 유저 입장에서는 문제를 해결해 줄 수 있는 방법이지만, 개발자들은 문제를 회피하고 숨겨버리는 방법이라 여겨 받아들이지 않았다.
    Ubershader의 개발자 phire가 셰이더 캐시 공유 기능에 대한 자신의 (부정적인) 생각을 밝힌 글 #

...이 방안들은 모두 문제를 회피하는 것으로 여겨져 정식 빌드에서는 기각되었다.

그리고 마침내 phire가[14] 완벽한 해결책을 만들어냈다. 셰이더로 그래픽 카드에서 실행할 Wii/GC 렌더링 파이프라인 호환 인터프리터를 만든다.[15] 장점은 "셰이더 컴필레이션 스터터링이 사라진다". 단점은 여느 인터프리터가 그렇듯, "느리다". iGPU로는 감당하기 힘든 수준이고, 기존의 컴파일러로는 4K 해상도까지 받쳐줄 수 있던 GPU들이 Ubershader에서는 1080p도 감당해내지 못하는 광경이 펼쳐진다.[16] 이 문제를 해결하기 위해 제공되는 기능이 바로 하이브리드 모드. 평소에는 컴파일러를 이용하다가 컴파일링을 해야 할 때가 오면 잠시 Ubershader로 전환한다. 하이브리드 모드에서는 기존 컴파일러에 비해 큰 성능 타격이 없다고 한다.

Dolphin보다 복잡한 GPU를 탑재한 기기를 에뮬레이트하는 RPCS3, Cemu는 Dolphin보다 훨씬 심한 스터터링을 안고 있지만 그렇다고 Ubershader를 도입하는 것은 실질적으로 불가능한 상황이다. Cemu는 공유 가능한 셰이더 캐시를 도입해 문제를 해결(혹은 "회피")했고, RPCS3는 "아직 개발 초창기고, 업데이트에 따라 이전의 캐시는 금세 무효화되어 나갈 것"이라는 이유로 아직은 공유 기능을 넣지 않았지만[17] 장기적으로는 Cemu와 같은 방향으로 갈 듯하다.

3. 기능

지원하는 기능이 PS2 에뮬레이터 PCSX2 드림캐스트 에뮬레이터 nullDC와 비교하면 상당히 다양한 편이다. 예를 들면,
  • 강제 세이브와 리플레이 같은 기본적인 TAS 기능 지원.[18]
  • 3D 카메라 핵 지원. 이 기능을 이용해 스크린샷을 잘 찍을 수 있다.
  • 부드러운 배속 플레이 지원. 속도에 따라 음낮이가 변경되며 음질이 끊기지 않는다.
    • VBI Skip. 랙을 능동적으로 감지하여 슬로우다운이 일어나고 있을 때만 버티컬 블랭크 인터럽트를 무시하는 방식으로 작동한다. 저성능 기기에서 게임플레이를 쾌적하게 만든다.[19][20]
  • 그래픽 강화 기능
    • 고해상도 지원. 내부 해상도를 네이티브 해상도(640×528)의 정수배로 높일 수 있다.[21]
    • 안티에일리어싱. SSAA와 MSAA 중에서 선택 가능하며,[22] OpenGL과 Vulkan 플러그인에서 제공되는 후처리 기능으로 FXAA도 추가적으로 선택 가능하다.
    • 와이드스크린 핵. 돌핀에서 자체적인 핵을 제공하긴 하지만[23] 그래픽에 말썽이 생기는 경우가 많아서 보통은 게임별로 설계된 치트를 사용하는 게 좋다. Dolphin Wiki에 나와있는 경우가 많다.[24]
    • 커스텀 텍스쳐. 텍스쳐를 덤프하는 기능과 외부 텍스쳐를 읽어들이는 기능을 제공한다. 유명 게임들은 대부분 완성도 높은 HD 텍스쳐 팩이 만들어져 있으므로 손쉽게 다운로드해 사용할 수 있다. 커스텀 텍스쳐 포럼 링크[25]
    • 스테레오스코픽 3D. 3D 디스플레이가 있다면 대부분의 게임을 문제 없이 3D로 플레이할 수 있다. 3D 디스플레이가 없다면 적청 안경으로 3D 기능을 이용할 수도 있지만 그렇게 되면 색감은...... 색감보다 입체감이 소중하다면야.
    • 치트를 이용한 그래픽 강화. 에뮬레이터 자체 기능은 아니지만, 에뮬레이터의 우월한 성능을 이용해 30fps인 게임을 60fps로 작동하도록 패치하는 등의 일이 가능하다.[26] 이곳 포럼에서 60fps 패치나 와이드스크린 패치 등에 관해 많은 정보를 찾을 수 있다. 커스텀 텍스쳐와는 달리 엄밀히 Dolphin의 고유 기능은 아니므로 이 외의 웹사이트에서도 정보를 찾을 수 있다.
  • 한글화 메뉴 제공.
  • 블루투스로 위모컨과 눈차크를 연결해서 플레이 가능. 센서바가 필요하다. 유튜브 튜토리얼
    5.0부터는 블루투스 동글을 패스 스루하여 Wii의 위모트 동작 매커니즘을 에뮬해 정밀도를 올릴 수도 있는데, 이 경우 위모컨 이외의 다른 블루투스 기기를 사용할 수 없으며 동글 제품에 따라 안 되기도 한다. 취소하고 싶으면 장치 관리자에서 해당 장치를 제거하고 동글을 뺐다가 끼우면 원상복구된다.
    2018년 5월 이전에는 하이브리드 위모컨 설정으로 키마나 일반 게임패드를 위모컨과 섞어 쓸 수 있게 하거나 센서바를 모션플러스+마우스포인팅으로 대체할 수 있었으나, 문제가 너무 많아 삭제한 대신 위모컨 입력 설정을 변경하는 기능을 추가했다.
    마찬가지로 Wii 밸런스 보드나 클래식 컨트롤러도 연결할 수 있고, Wii U용으로 발매된 게임큐브 컨트롤러 USB 어댑터를 통해 게임큐브 컨트롤러를 연결할 수도 있다.
  • BetterJoy를 사용하면 닌텐도 스위치 조이콘이나 프로콘으로도 플레이할 수 있다.

패치를 거듭해 기능들이 계속 추가되고 있다. 그래픽 수준을 높이는 기술도 발전해서 기존 콘솔로 즐기는 것보다 훨씬 높은 수준의 그래픽으로 게임을 즐길 수 있다. 하지만 버전 업을 하면서 삭제된 기능들도 있는데, 대표적으로 트라이포스 지원이 있다.[27] 오픈 소스 프로젝트이므로 잘 찾아보면 어딘가에 비공식적으로 이런 기능들을 유지하고 있는 빌드가 자주 있다.

3.1. Ishiiruka 빌드

개발자 Tino가 만드는 비공식 빌드로, 2013년 Dolphin 팀이 DirectX9의 지원을 중단해 버린 것을 계기로 갈라져나갔다. 최대한 많은 사용자에게 유용한 기능들을 제공하는 것을 목표로 하고 있으며, 공식 버전이 멀리하는 핵을 적극적으로 사용해 엔드 유저에게 친화적인 기능을 제공함으로써 호응을 받고 있다.

저사양 PC라면 DX9, DX12 지원으로 속도면에서 혜택을 볼 수 있고, 고사양 PC라면 폭넓은 그래픽 강화 기능을 즐길 수 있다. 커스텀 텍스쳐 로딩 기능과 지금은 도태된 비동기적 셰이더 컴파일링은 모든 엔드 유저에게 도움이 될 수 있는 기능이다.
  • 비동기적 셰이더 컴파일링
    셰이더 컴파일링을 나머지 코어 에뮬레이션과 비동기적으로 수행해 팝인 현상을 일으키는 대신 컴파일 시간에서 오는 스터터링을 없애는 기능이었다. 심각한 스터터링을 겪는 메트로이드 프라임 3 등의 게임을 플레이할 때 유용한 기능으로 Ishiiruka 빌드의 최대 인기 요인 중 하나였지만 공식 빌드에 Ubershader가 추가된 이후로 경쟁력을 잃었다.
  • DirectX 9, DirectX 12 지원 유지
    공식 버전에서 퇴출된 이후에도 몇몇 버그 수정을 하며 지원을 유지하고 있다.
  • 커스텀 텍스쳐 로딩 개선
    공식 버전은 텍스쳐를 미리 램에 올려두거나 실시간으로 읽어오는 옵션을 주는데, 전자는 텍스쳐 팩의 압축을 해제한 용량만큼의 RAM이 필요하고 후자는 로딩으로 인해 스터터링이 발생한다. Ishiiruka 버전은 적은 RAM으로 스터터링 없이 커스텀 텍스쳐를 사용할 수 있다.
  • 그래픽 강화 기능
    • DolphinFX
      SweetFX를 Dolphin과 호환 가능하게 고친 버전이다.
    • SSAO, DoF
    • 텍스처 스케일링
    • 테셀레이션

Android 버전은 MMJ, MOD 빌드와 같이 Exynos 단말기에서도 빠르게 구동된다.

3.2. 트라이포스 빌드

Dolphin은 한때 트라이포스 아케이드 기판 에뮬레이션을 공식적으로 지원했지만 해당 기능이 핵으로 가득한 조잡한 상태이며, 그 상태를 개선할 사람이 없다는 이유로 제거되었다. 공식 빌드에서 지원이 종료된 이후에도 비공식 빌드에서 약간의 발전이 있었다.

3.3. MMJ/MMJR 빌드

Android용 빌드 중 끝판왕으로 Exynos 계열 단말기에서도 원활한 구동률을 보여준다. 적절한 세팅을 맞춰야 하며 안 그러면 기본 빌드와 다를 게 없다.

4. 호환성

Dolphin(에뮬레이터)/호환성 리스트 문서 참조.
[1] https://dolphin-emulator.com/이라는 버려진 비공식 사이트도 있다. 헷갈리지 않도록 주의. [2] 페이지 상단의 "개발 버전"이 가장 최신으로 업데이트되는 버전이므로 권장된다. 아래쪽의 "안정된 버전"은 누락된 최신 기능들이 많다. 보통은 "개발 버전"도 충분히 안정적이니 걱정할 필요 없다. [3] 사람들 사이에 PCSX2가 Dolphin보다 심하게 무겁다는 인식이 널리 퍼져 있는 것과 달리 실제로 요구 사양의 차이가 그렇게 크지는 않다. 이런 인식이 생긴 데에는 게임큐브/Wii의 인기작들인 닌텐도 퍼스트 파티 타이틀들이 대체로 Dolphin에서 요구사양이 낮은 편에 속한다는 점이 일조했다. 퍼스트 파티 중에서 가장 무거운 편에 드는 게 슈퍼 마리오 갤럭시 정도. 반면 PS2의 인기작들 중에는 갓 오브 워 시리즈, 라쳇 & 클랭크 시리즈, 그리고 극악의 완다와 거상 등등 무겁기로 소문난 게임들이 포진해 있다. Dolphin도 제노블레이드 크로니클스라스트 스토리를 해보면 어지간한 PCSX2 게임들은 가뿐히 뛰어넘는 부담이 걸린다. [4] Windows Vista SP2와 리눅스 이외의 유닉스 계열 운영 체제는 공식적으로 미지원이나 작동할 수도 있다. [5] 그래픽 백엔드로 DX11, OpenGL, Vulkan과 2019년 새롭게 추가된 DX 12를 지원한다. [6] 4.0-8933 버전부터 5.0-3774 버전 이전까지 DX 12를 지원했던 적도 있다. 이 때는 개발자 한 명이 혼자 개발하다시피 했는데, 해당 개발자가 잠적하면서 자연스레 퇴출되었다. 이후 부활한 DX 12는 거의 새로 만들다시피 한 것. [7] 2017년에 RPCS3의 호환성이 약진했다. 2018년 말부터는 Xenia도 몇몇 게임을 플레이할 만한 수준까지 치고 올라왔다. [8] 스냅드래곤 AP에서 퍼포먼스가 좋고, 엑시노스에서는 느리다. 덕분에 지역별로 탑재 AP가 다른 갤럭시 S8은 성능이 천지차이다. [9] 별도의 엑시노스 빌드도 있다. [10] 구하기만 한다면 사용할 수는 있다. 실용적인 쓸모는 없고, 부팅 화면을 감상하는 정도. [11] 게임큐브용 게임 세이브 데이터는 그냥 SD 카드에 저장되는데, 이 이미지만 가져오면 되기에 상당히 간단하다. 그래도 귀찮은 건 매한가지. [12] 이는 현대의 PC 게임들은 모두 동일하다. 게임을 배포할 때 미리 컴파일 된 셰이더 바이너리를 배포할 수가 없다. 단 소스 코드 상태로 배포할 필요는 없으며, 바이트 코드 형태로 만들어서 배포할 수는 있다. 물론 이건 눈으로 보기엔 그냥 바이너리 데이터 같지만 컴파일된 것이 아니며 결국 컴파일 과정을 거쳐야 한다.(어차피 바이트 코드 형태는 이론적으로 완벽에 가까운 디컴파일도 가능하다) [13] PC 게임의 경우 애초에 개발자가 가령 시작할 때 로딩하는 과정에서 필요한 셰이더를 미리 다 컴파일해둬도 되고, 중간 중간에 별도의 로딩 화면이 있을 때 컴파일 해도 되고 어떻게 해도 상관이 없다. 그러나 문제는 Dolphin은 "에뮬레이터"이기 때문에, 게임들이 어떤 셰이더를 어느 위치에 저장해놨고 언제 쓸지 원칙적으로 알 수 없다. 물론 억지로 현재까지 개발된 게임들에 대해서 일일이 핵(hack) 형태로 하는 건 이론적으로 문제가 없겠지만 에뮬레이터로써는 좋은 방식이라 할 수 없다.(셰이더 캐시와 별 차이도 없다) [14] 과거 Zfreeze 기능 구현 등 많은 공헌을 한 개발자. [15] 너무 짧아서 무슨 말인지 이해가 잘 안 되는 사람들을 위해 조금 더 풀어서 설명하자면, 셰이더라는 것은 CPU의 프로그램에 대응되는 개념이고 CPU에 고유의 명령어가 있듯이 GPU도 고유의 명령어가 있다. 이 명령어 집합은 GPU마다 다른데, Wii 의 TEV는 범용적인 명령어를 지원하지는 않으나 일종의 설정 세트를 지원한다. 게임을 실행하면 Wii/GC의 TEV는 필요할 때 이러한 설정을 읽어서 셰이더에 가까운 변형 처리를 하는데, 보통 이런 셰이더를 에뮬레이션하는 방식은 우선 컴파일된 데이터를 CPU로 파싱해서 명령어 하나하나를 현대의 GPU 셰이더 소스로(백엔드에 따라 GLSL, HLSL 등) 변환하고 이를 다시 사용자 컴퓨터의 GPU에 맞게 컴파일을 하고 나서 렌더링하는 방식을 사용한다.(인터프리팅은 보통 CPU 레벨에서 하므로 이것은 매우 상식적인 방식이다.) 그런데 Ubershader의 방식은 앞에서 언급한 "TEV 데이터를 우선 CPU로 파싱해서 현대의 GPU 셰이더 소스 코드로 변환하는" 단계를 없애고, TEV 데이터를 거의 그대로 셰이더로 넘겨받고 이를 GPU에서 파싱까지 하고 처리하는 코드를 모두 합쳐서 하나의 거대한 셰이더로 구현하고 처음 한 번만 컴파일 하는 것이다. 이렇게 되면 매번 TEV가 사용되려고 할 때마다 일일이 변환하고 새로 컴파일 할 필요 없이 TEV가 쓰이려고 하면 그 데이터를 이미 컴파일한 거대한 셰이더에 그대로 넘겨주기만 하면 GPU에서 알아서 처리하므로 매번 셰이더 컴파일을 할 필요가 없어지고 시작할 때 한 번만 하면 된다. 따라서 스터터링이 없어지는 것이다. [16] 이 정도 속도만 해도 예상보다 훨씬 빠른 것이라고 한다. 개발자들이 Ubershader에 보냈던 가장 큰 회의는 개발의 어려움보다도 "쓸만한 속도가 나오겠느냐"였다. Ubershader를 처음 완성했을 때 플레이 가능한 속도로 작동한다는 사실은 phire 본인에게도 놀라웠다고 한다. [17] 셰이더 캐시를 옮기는 것 자체는 가능하지만 다른 컴퓨터에서 최적화된 형태로 작동하지 않기 때문에 좋은 행동은 아니다. [18] 다만 TAS 기능은 갈리는 경우가 많아서 좀 불안정한 편. 참고로 Rachel Bryk 씨가 가장 크게 기여한 부분이 TAS 기능의 강화 및 안정화이다. [19] 게임이 VI 인터럽트를 처리하는 방식에 따라 효과가 달라지는데, 대부분의 게임에서 프레임 드롭에도 오디오 재생 속도가 유지되는 "비동기적 오디오" 효과를 볼 수 있고, 일부 게임은 프레임 드롭에도 게임플레이 속도가 유지되는 "프레임 스킵" 효과를 볼 수 있다. 오류가 나거나, 아예 아무런 효과도 없는 게임도 일부 있다. [20] 사실상 과거 삭제되었던 비동기적 오디오와 프레임 스킵 기능의 화려한 부활인데, 개발자들은 왜 옛날 비동기 오디오와 프레임 스킵은 엉망이었는데 이 핵은 잘 작동하는지 모르겠다는 반응이고, 옆 동네 PCSX2에 이 핵을 베껴다 적용했더니 곧바로 프리징이 발생해 의아함을 증폭시켰다. 어쨌든 코드 관리가 어렵지 않고, 저성능 환경에서의 경험을 크게 개선해 주는 것이 확실함에 따라 공식 빌드에 머지되었다. [21] 5.0 버전 초기까지만 해도 성능이 낮은 사용자를 위해 1.5배와 2.5배 해상도를 지원했다. 하지만 원래부터 비정수배 해상도는 문제가 많아서 권장되지 않는 옵션이었고 결국은 삭제되었다.(지원되던 시절에도 720p 디스플레이에서는 1.5배 742p가 아닌 2배 1056p, 1080p 이용자는 2.5배 1320p가 아닌 3배 1584p를 사용하는 것이 공식적인 권고사항이었다.) 커스텀 빌드는 아직까지 지원하지만 BUG라고 표시되어 있어 불안정할 수 있다. [22] 이들 기능들은 생각보다 무겁다. 내부 해상도를 높여 다운샘플링을 하는 편이 이득일 수도 있다. [23] "Forced 16:9"이나 streched window로 설정 후 Widescreen Hack을 활성화해야 한다. [24] PCSX2는 글로벌한 와이드스크린 핵은 없고, 아예 와이드스크린 치트 라이브러리를 통째로 에뮬레이터에 동봉해 배포한다... 사용자 입장에선 편리하긴 하다. [25] N64 에뮬레이터들과 PSP 에뮬레이터 중 PPSSPP가 동일한 기능을 제공하며, 다른 비슷한 기능으로 PCSX2는 텍스쳐에 바이리니어 필터링을 강제로 가하는 기능, PPSSPP는 xBRZ 필터링을 가하는 기능이 있다. Ishiiruka Dolphin도 텍스쳐 필터링을 지원한다. [26] 정반대로, 몇몇 게임은 저사양 기기에서의 구동을 쉽게 해 주는 30fps 패치가 있다. 마리오 카트 Wii의 경우, 1~2인 플레이 60fps, 3~4인 플레이 30fps 모드가 되는데, 이를 30fps 모드로 강제하면 싱글 플레이에서 더 높은 속도를 얻을 수 있다. [27] 3.0 버전대에서 지원하다 삭제 후 2019년에서야 새롭게 부활한 모션 플러스 에뮬레이션, 5.0 버전 초기에 지원하다가 삭제 후 완전히 새로운 코드로 다시 돌아온 DX12 백엔드 같은 사례도 있다.