본문 바로가기
게임/추가 정보

돌핀 에뮬레이터 11월 진행 보고서

by 사과향잉크 2019. 12. 10.

에뮬레이션의 가장 즐거운 부분 중 하나는 고전 게임 커뮤니티가 우리가 제공하는 도구로 다른 방식으로 도달할 수 없는 숨겨진 즐거움을 찾아내는 걸 보는 겁니다.

프리룩은 화면 밖에 숨겨진 비밀의 비밀을 찾게하고, 이에 중점을 둔 유튜브 시리즈도 있습니다!

상태 저장(강제 저장)은 기본적으로 스피드런과 TAS를 가능하게 했습니다. 빠른 길을 찾고 게임 순서를 박살내며 한계까지 몰아붙이죠.

하지만 커뮤니티는 그보다 더 나아갈 수 있습니다. 이제 직접 게임 파일을 들여다보고 공개되지 않은 희귀한 유물을 찾을 수 있는 도구가 있습니다.

지난 몇 개월 동안 정말 놀라운 2개의 유출이 있었는데요.

젤다의 전설: 바람의 지휘봉 사전 공개핀이 포함된 스토어 프리뷰 디스크에서 리핑힌 TGC 파일과 출시하지 않은 스파이더맨 4의 극초기 시제품입니다.

 

정식판은 시작 화면의 배경이 낮이지만 사전 공개판은 밤이다
스파이더맨 3 영화 떄문에 스파이더맨 4 게임이 엎어졌다고 확신할 수는 없지만 아마 그럴 것이다

게임의 발전을 매우 구체적으로 볼 수 있는데요.

바람의 지휘봉 사전 공개판은 정식 출시판이랑 거의 비슷하고 시간 제한 없이 끝까지 플레이할 수 있습니다.

이걸 살펴본 사람들은 이것과 몇 주 후 일본에서 보게 되었을 정식판 사이에 작은 차이점과 버그가 많다는 것을 발견했습니다.

한편 스파이더맨 4는 출시를 하지 않았기 때문에 모두가 처음으로 게임을 봤습니다.

최신 개발 빌드에서 에뮬레이션은 잘 되지만, 돌핀 5.0은 암호화하지 않은 위 디스크를 지원하지 못해서 실행할 수 없습니다.

만약 여러분이 이 게임을 실행한다면 많은 텍스처가 없고, 자리를 대체한 그래픽과 불와전한 충돌이 있는 정말 극초기 게임을 보게 될 겁니다.

그럼에도 돌핀은 이 특별한 시제품을 시험하기 위한 플랫폼으로 선택되었고 수정할 필요 없이 잘 실행되었습니다.

흥미로운 소식은 여기까지하고 돌핀의 주목할 만한 변화를 살펴봅시다.

 

5.0-11129 위 프리로더를 실행해도 꺼지지 않음

미공개 시제품에서 무허가 출시로 바로 뛰어들어 우리는 다시 한번 오랜 친구를 환영합니다.

무허가 게임큐브, 위 소프트웨어라면 데이텔(Datel) 이외의 이름을 떠올리기는 어렵죠.

두 게임기의 수명 동안 데이텔은 많은 애플리케이션, 게임, 심지어 GBA 에뮬레이터까지 출시했습니다.

이런 특별한 날에 우리는 위 소유자가 다른 지역에 출시한 게임을 실행할 수 있게 해주는 유용한 해킹인 데이텔의 프리로더의 위 출시에 관해 얘기해보지요.

 

정식 위 게임과 같은 하늘색

돌핀은 어느 지역이든 될 수 있기 때문에 프리로더는 우리 사용자에게는 별 유용성이 없습니다.

하지만 우리가 에뮬레이션하기 어려운 여러 취약점과 이상한 게임기 작동에 의존한다는 점에서 우리의 호기심을 꽤나 일으킵니다.

사실 데이텔의 위 프리로더는 JosJuice에 의해 해결될 때까지 돌핀으로 실행할 수가 없었습니다.

어떤 이유로든 프리로더는 프레임버퍼 폭을 0으로 설정합니다.

돌핀은 인터레이싱을 감지하기 위해 폭에서 나온 수로 나누는데, 프리로더 같이 특이한 경우에는 안전장치가 없어 꺼져버릴 겁니다.

프리로더가 하는 일의 결과를 완전히 시험해보지는 않았지만, 돌핀은 이제 인터레이싱을 감지할 때 0으로 나누지 않는 안전장치를 갖추고 있습니다.

 

이제 실행은 되니 돌핀에서 프리로더의 취약점을 시험해보는 게 주요 과제였습니다.

닌텐도가 시스템 메뉴 4.x 버전에서 모두 패치해버렸기에 취약한 시스템 메뉴 버전을 얻는 게 좀 까다로웠습니다.

목적을 위해서 프리로더로 작동한다고 알려진 3.2U(BTSC)와 3.1E(PAL)을 시험했습니다.

우리가 원하는 걸 정확히 파악하는데 꽤 오랜 시간이 걸렸지만, 프리로더가 돌핀에서 작동하는지 시험하고 검증할 수 있었습니다.

 

게임큐브는 좀 더 간단했습니다.

프리로더 디스크를 넣고 디스크 채널을 보면서 위가 멈추길 기라리고, 위가 디스크를 거부하면 외부 디스크로 바꾸기만 하면 잘 자동합니다

위는 이 방법이 통하자 읺아 어리둥절했습니다.

시행착오를 거치면서 시험하는 사람 중 한 명이 프리로더가 거부된 뒤에 유효 지역 디스크를 넣어야한다는 걸 알았습니다.

 

흥미롭게도 프리로더는 돌핀이 과거에 다양한 지역 작동과 씨름하던 그때의 문제와 싸우고 있었습니다.

돌핀이 처음 MIOS 지원을 추가했을 때, MIOS 패치가 필요한 게임은 실행할 수 없었고 프리로더도 동일한 일이 일어납니다.

프리로더는 BIOS에서 제공하는 서체가 필요한 경우, 다른 지역 게임의 문자를 처리할 방법이 없습니다.

위에서는 돌핀에서 테일즈 오브 그레이세스 같이 잘못된 언어로 구성된 게임은 멈추었는데 프리로더도 그럽니다.

 

우리가 설명할 수 있고 이해할 수 있는 것들이지만, 우연히 마주친 한 가지는 아직도 알 수 없습니다.

위 동영상의 취약점을 이용하는 동안 위 메뉴가 멈추는 걸 증명했지만, 같은 빌드와 설정으로 돌핀을 실핼한 한 사람은 그동안 다르게 작동했습니다.

위 시스템 메뉴가 멈추는 대신, 프리로더 로고가 떠서 이게 성공했다는 걸 확실히 알 수 있었죠.

데이텔의 설명을 보면 성공 도중 깜빡이는 바만 얘기하고 있기에 취약점이 있는 시스템 메뉴로 돌아가는 게임기에서 실제로 이렇게 작동하는게 올바른 건지 확인해봐야합니다.

 

원래 프리로더가 띄우는 걸까? 아니면 매우 특정한 조건에서 뜨는 걸까?

 

 

5.0-11160 고급 입력 창에 현재 입력 상황 표시

지난 달부터 Billiard는 고급 입력 창을 계속 개선하고 있습니다. 이는 사진으로 설명하는 게 쉽습니다.

 

이제 오른쪽처럼 많은 일이 일어나는 걸 볼 수 있다

상황을 명확히 보여주어 사용자가 고급 설정 창에서 무슨 일이 일어나는지 이해하는데 도움이 될 수 있게 컨트롤러 버튼 상태를 보여주고 업데이트합니다.

수많은 버튼이 나열되어 있어도 어떤 버튼이 무엇을 하는지 훨씬 쉽게 알아볼 수 있죠.

Billiard가 이전에 개선한 것에 더해 고급 입력 설정 창은 전보다 훨씬 더 좋아졌습니다!

 

 

5.0-11165 로드와 리소스 팩 위치를 바꾸는 기능 추가

HD 텍스처 팩은 오랫동안 돌핀의 주요 특징이었습니다. 커뮤니티는 오래된 게임을 공식 HD 리마스터만큼 멋지게 만드는 대단한 팩을 만들며 놀라운 결과를 냈지요.

충실도가 늘어난 대가는 크기입니다. 많은 HD 텍스처 팩은 원래의 게임 자체보다도 용량이 큽니다!

 

3개의 텍스처 팩이 담긴 폴더

기본적으로 돌핀의 사용자 글로벌 디렉토리는 사용자의 부팅 드라이브, OS가 프로그램을 설치하라고 권장하는 위치에 놓입니다.

바보 같은 동작 제한이 없고, 기본 OS 백업 위치이며 파일을 저장해야하는 곳에서 자료를 비교적 쉽게 찾을 수 있는 등의 이유로 그곳에 두었죠.

그래서 모든 HD 텍스처 팩은 부팅 드라이브에 들어갔지만, 그 당시에는 문제가 없었습니다.

그때도 작고 빠른 SSD를 부팅 드라이브로 쓰고, 크고 느린 HDD를 섞어 쓰는 조합은 있었지만 텍스처 팩이 지금보다 훨씬 작았고, SSD 가격이 빠르게 내려갈 것으로 생각되어 별 걱정을 하지 않아도 될 것 같았습니다.

 

하지만 낸드 공급 문제 때문에 SSD 가격은 몇 년간 상승했습니다.

HD 텍스처 팩이 점점 커지면서 사용자 부트 드라이브는 그대로거나 HDD 사용자가 작은 SSD 부트 드라이브로 업그레이드하며 비교적 더 작아졌습니다.

돌핀이 사용자에게 HD 텍스처팬이 어디로 갈지 정하지 못하게 하는 게 좀 이상해졌죠.

품질을 희생하지 않고 텍스처 팩 크기를 줄이는 BC7 텍스처를 지원해 문제를 해결하려고 했지만, 팩 제작자는 이를 이용하며 더 큰 텍스처를 만들어서 생각대로 되지 않았습니다.

사람들은 텍스처 팩 저장 위치를 바꿔달라고 계속 요청했죠.

다행히 iwubcode가 나서서 경로 탭에서 사용자가 로드와 리소스 팩 경로를 지정하는 설정을 추가했습니다.

SSD 가격이 드디어 안정되고 사용자는 이제 속도와 용량 중 선택할 필요가 없는 만큼 좀 늦은 조치긴 하지만, 작은 SSD 부팅 드라이브가 빨간색인 사람에게는 약간 도움이 될 겁니다.

 

옵션 - 환경설정 - 경로 탭에서 볼 수 있다

많은 리소스 팩을 HDD로 옮기면 텍스처를 로드할 때 게임이 끊길지 걱정되나요?

램이 충분하다면 옵션 - 그래픽 설정 - 고급 - 커스텀 텍스처 프리패치 기능을 쓰면 해결될 겁니다.

 

 

5.0-11170 윈도우 10의 긴 경로 지원, 5.011195 잘못된 매니페스트 수정

돌핀은 변경 사항이 완료되기 전에 세심히 살펴보는 것에 자부심을 느낍니다.

철저한 점검과 커뮤니티 피드백으로 우리의 실수 때문에 사람들이 문제를 겪기 전에 해결하는 걸 꽤 잘하거든요.

그렇지만 우리도 그저 인간일 뿐, 여러 명이 살피며 아주 철저히 검증해도 보지 못한 문제가 있을 수 있죠.

이번에도 그랬습니다.

 

예상치 못한 문제로 5.0-11170에서 5.0-11195 빌드까지의 업데이트 프로그램은 실행되지 않았습니다.

'달마다 업데이트'로 설정한 사람들에게 영향이 없게 빨리 찾아 해결해 많은 사람이 영향을 받지는 않았습니다.

하지만 '하루에 여러번 업데이트'으로 설정한 사람들은 업데이트 기능을 쓸 수 없어 수동으로 업데이트하는 수모를 당했습니다. 아이고.

 

그럼 무엇이 문제였을까요?

지난 몇 개월 동안 CookiePLMonster는 돌핀 전체에서 드물게 일어나는 나쁜 문제를 해결하기 위해 조용한 성전을 치뤘습니다.

그 중 하나는 경로가 너무 길면 윈도우가 파일 로드를 거부할 수 있는 문제였습니다.

30년 전 옛날 컴퓨터에서나 일어날 문제처럼 들리지만, 무려 최신 윈도우 10도 이 문제가 있습니다.

윈도우 95 이후로 마이크로소프트는 파일 경로의 폴더 안 파일 이름까지 포함해서 최대 255자, 윈도우 10에서는 260자로 제한했습니다.

분명 길긴 하지만 윈도우 파일 구조의 긴 경로와 특히 길 수 있는 사용자 이름 폴더를 고려하면 순식간에 부족해집니다.

파일 경로가 그 제한을 넘어가면, 윈도우는 이유 없이 파일을 로드하는 걸 완전히 거부할 겁니다.

 

사용자 중 몇 명이 몇 년간 이 문제를 겪었고, 진단하는 건 완전 악몽이라는 걸 생각하면 마음이 타들어갔습니다.

다행히 윈도우 비스타부터는 아예 너무 긴 경로를 만들지 못하게 합니다. 하지만 막지 못하는 경우도 있어요.

가장 흔한 건 오래된 윈도우 환경에 새 걸 설치하거나, 보관했던 매우 경로가 긴 파일을 빼거나, 드라이브에서 파일을 생성/이동하기 위해 다른 방법을 사용하는 때입니다.

 

가끔 짜증나긴 하지만, 이 제한이 가장 흔한 문제의 원인를 막아준다

과거 윈도우 사용자는 레지스트리 편집기나 로컬 그룹 정책 편집기로 이를 처리하는 해커스러운 방법을 쓰기도 했지만, 우리가 할 수 있는 건 아무것도 없었습니다.

하지만 그것도 윈도우 10 1607까지입니다.

윈도우는 이제 프로그램이 매니페스트 속성을 이용해 스스로 최대 경로 제한을 해제할 수 있게 합니다.

돌핀이 긴 경로를 지원하려면 윈도우 설정 매니페스트를 v2005에서 v2016으로 바꾸면 되죠.

네, 바로 그거에요! 시험과 평가를 거쳐 통과되었고 돌핀은 커스텀 텍스처나 ISO를 로드할 때 다시는 최대 경로 제한 문제를 겪지 않을 테지요!

 

아... 그런데 좀 단순한 처리였습니다.

v2005와 v2016 사이에 마이크로소프트는 우리가 사용해온 dpiaware 매니페스트 속성을 제거했습니다.

그때는 몰랐지만, Dolphin.exe는 작동하지 않는 dpiaware 속성을 종요히 무시했기에 매니페스트 업데이트 후 모든 게 제대로 작동하는 것처럼 보였던 겁니다.

아무도 알아채지 못한채 평가는 끝났고 작동하지 않는 속성이 빌드에 들어갔습니다.

Dolphin.exe가 전혀 신경 쓰지 않는 동안 updater.exe는 터져버렸죠. 아주 크게요.

사람들과 같이 돌아와서 무슨 일이 일어난 건지 깨달았고, 꽤 빠르게 해결했습니다.

우리가 할 일은 2005 매니페스트에 관한 dpiaware 속성을 구체적으로 정의하는 것이었고 이후 모든 게 잘 작동했죠.

아주 작은 변화였지만 업데이트 프로그램에 모든 변화를 이뤄냈습니다.

 

결국, 모든 게 잘 풀렸고 성가신 작은 문제를 완전히 해결했습니다.

 

 

5.0-11186 홈브류가 돌핀과 통신할 수 있도록 /dev/dolphin 추가

Leseratte가 개발한 이건 미래에 흥미로운 방식으로 사용될 가능성이 많은 믿을 수 없을 정도로 멋진 기능입니다.

근본적으로 게임이 기기를 통해 통신하는 것과 거의 비슷하게 IOS 기기를 통해 돌핀과 통신하고 조작할 수 있게 해줍니다.

하지만 위에는 /dev/dolphin이 없기 때문에 어떤 게임도 이렇게 접근하거나 통신할 수 없습니다.

홈브류나 게임 모드가 사용할 수도 있겠지만, 현재는 Wiimm의 마리오 카트 위 모드가 서버와 실시간 타이머 데이터를 통신하는 방법으로 쓰고 있습니다.

게임 안의 타이머는 에뮬레이션 속도나 지연 속도에 영향을 받으니까요.

돌핀과 통신하고 상황을 이해할 수 있게 되면서, 게임은 공정하게 경주하기 위해 돌핀의 목표 CPU 클럭, 에뮬레이션 속도 등의 설정을 바꿀 수 있습니다.

 

마리오 카트 위는 플레이어의 게임 내 시간으로 끝을 결정하기 때문에 이게 정말 중요합니다.

그래서 누군가 많이 뒤쳐져 30초나 늦게 들어왔더라도 전체 기록을 방해할 수 있습니다.

/dev/dolphin으로 pc에서 실시간 클럭 데이터를 얻는다면, Wiimm의 마리오 카트 위 서버는 경미한 지연과 다른 문제를 해결할 수 있어 경주를 훨씬 더 일관되게 유지할 수 있습니다.

또한 돌핀 사용자가 어떤 문제로 지연되어 잘못 금지당하는 걸 막는데 도움이 될 겁니다.

 

이 기능은 돌핀을 인식하는 홈브류에 특정한 것이지만 하드웨어 테스트, 디버그 정보 등으로 확장할 수 있으며 다른 모드에서도 유용하게 쓰일 수 있습니다. 에뮬레이터의 작동 상태를 볼 수 있으니까요.

 

5.0-11191 DolphinQt: 가속도계와 자이로스코프 표시 추가

지난 달, Billiard는 모션 입력 기능을 개선하기 위해 노력하고 있었습니다.

시간이 늦어 지난 진행 보고서에는 싣지 못했죠.

이 변화는 모션 입력 탭에 가상 위 리모컨의 3D 시각 표시를 추가합니다.

가속도계와 자이로스코프의 작동을 직접 눈으로 확인할 수 있죠.

이에 대해 할 말이 별로 없습니다. 그냥 존나 멋져요!

 

 

5.0-11271 UI가 단축키 문제에 지지 않게 수정

CookiePLMonster는 주로 뒤에서 조용한 임무를 수행해왔습니다. 무엇을 위해서?

게임 도중 설정을 바꾸면 생길 수 있는 이상하고 무작위적으로 보이는 충돌을 모두 제거하는 일입니다.

그가 어떻게 이 특별한 버그르 발견했는지 우리는 전혀 알 수 없을 겁니다.

그는 게임 도중에 음량만 바꿔도 돌핀을 꺼지게 할 수 있다는 걸 정확한 순서로 설명했죠.

무슨 의미냐구요? 게임을 하는 동안 단축키로 음량을 위/아래로 많이 바꾸면 돌핀이 교착 상태가 되어 게임이 꺼질 수 있다는 겁니다.

더 나쁜 일은 스크린샷 단축키를 마구 누르는 등의 다른 행동에서도 같은 결과가 나와서 여러 방법으로 이 문제가 일어날 수 있다는 거였죠.

다행히 돌핀은 이번 수정으로 훨씬 더 안정적이게 될 겁니다.

하지만 이 문제는 CookiePLMonster가 찾아 다닐 수많은 문제 중 그저 하나에 지나지 않음을 명심하세요.

 

 

5.0-11309 안드로이드: 기기 모션 컨트롤

여러분의 과학자 에뮬레이터 개발자들은 그들이 할 수 있는지에 몰두했고, 해야하는지에 관해 생각하는 걸 멈추지 않았다

간혹 우리는 힘에 취해서 너무 나갈 때가 있습니다.

너무 늦기 전에 우리가 하고 있는 일의 결과를 생각하지 않습니다.

하고 있는 일의 영향을 제대로 이해하지 않은 채, 눈앞에 있는 아름다운 기능을 보고 달려나갑니다.

미처 깨닫기 전에, 우리는 믿을 수 없을 정도로 무모한 힘을 사용자의 손에 쥐어주었습니다.

5.0-11309부터 안드로이드 돌핀 사용자는 이제 자기 기기의 모션 센서를 위 리모컨으로 쓸 수 있습니다.

 

이 튼튼한 전차도 위 리모컨에는 상대가 되지 않았다

닌텐도 위 리모컨은 길 앞에 있는 모든 것을 없애버리는 통제 불가능한 파괴의 힘을 가졌습니다.

이걸 TV에 던지면? 여러분은 새 TV를 살 겁니다.

바닥에 떨어뜨리면? 바닥에 구멍이 새로 뚫린 걸 축하합니다.

실수로 셔먼 MKII 전차에 던지면? 여러분도 알고 있겠죠.

여러분의 스마트폰은 위 리모컨이 아닙니다. 위 리모컨이 살아남을 수 있는 상황에서 살아남지 못할 겁니다.

하지만 이제 여러분은 안드로이드 돌핀에서 완전한 모션 컨트롤을 지원하는 위 리모컨으로 쓸 수 있습니다.

이동 중에 완전한 위 리모컨... 하지만 그 대가는...

 

위 팬 중 가장 하드코어한 팬만이 자신의 스마트폰으로 이 진정한 경험을 재현할 만큼 용감할 것이다

이 기능을 안전하게 사용할 수 있는 방법이 있습니다.

뉴 슈퍼 마리오브라더스 Wii 같은 게임은 살짝 흔들거나 기울이기만 해도 깰 수 있습니다.

하지만 여러분은 거기서 멈추지 않을 거란 걸 잘 알고 있습니다.

무모한 사용자들은 거리에서 젤다의 전설: 스카이워드 소드 같은 게임을 하며 자신과 주변의 모든 사람을 위험에 빠뜨리겠죠.

그나마 다행인 건 그 사람들은 위 리모컨만큼 치명적이지 않고 연약한 스마트폰을 휘두른다는 겁니다.

하지만 한 번 떨어뜨리면 에뮬레이션 경험은 끝날 수 있습니다. 아니면...

 

핵무기 열쇠가 그렇듯, 손목 끈이 달린 케이스는 재산과 생명 모두 지킬 수 있다

알림: 위험을 감수하고 안드로이드 모션을 사용하십시오. 돌핀은 여러분의 기기, 여러분 자신, 또는 셔면 MKII 전차에 가해진 어떠한 손상도 책임지지 않습니다.

 

5.0-11333 비주얼 스튜디오 프로젝트/솔루션을 비주얼 스튜디오 2019로 업데이트

진행 보고서를 쓰면서 비주얼 스튜디오 프로젝트를 비주얼 스튜디오 2017에서 비주얼 스튜디오 2019로 업데이트하기로 결정했습니다.

크게 특별한 일은 아니고 그저 미래에 새로운 기능과 이점을 이용할 수 있게 라이브러리를 업데이트하는 것 뿐입니다.
사용자는 아무 영향도 받지 않을 겁니다. VC2019 바이너리는 VC2017과 VC2015 런타임과 호환되므로 런타임 업데이트는 필요 없을 거에요.

간단하게 VC2017 런타임만 있는 컴퓨터에서 시험해봤는데 업데이트 후에도 문제가 없었습니다.

하지만 진행 이후에 RPCS3와 제니아(Xenia) 모두 VC2019로 업데이트한 뒤 DLL 오류 보고가 급증했다는 걸 알게 되었죠.

만약 MSVCP__.dll 혹은 vcruntime__.dll 오류가 뜨면 마이크로소프트에서 최신 x64 비주얼 스튜디오 런타임을 받아서 설치하세요. [마이크로소프트 홈페이지] [바로 받기]

 

 

https://ko.dolphin-emu.org/blog/2019/12/06/dolphin-progress-report-november-2019

댓글