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

스위치 에뮬레이터 유즈, 6월의 여러 개선점 소개

by 사과향잉크 2020. 7. 3.

스위치 에뮬레이터 유즈(Yuzu) 개발진은 6월의 변경점을 소개했습니다.

대부분은 버그 수정이며 눈에 띄는 변화는 적습니다. 스크린샷은 gidoly가 제공했습니다.

 

수정 전 / 후

먼저 커비 스타 얼라이즈의 셰이더 컴파일 오류를 수정했습니다.

그리고 모여봐요 동물의 숲 등 여러 게임에서 물체가 검은색으로 깜빡이는 문제도 해결했습니다.

 

수정 전 / 후

오랫동안 존재했던 삼각형 버그 역시 수정했습니다. 단 엔비디아 GPU, OpenGL에서만 가능합니다.

이조차도 유즈와 드라이버 버그로 RTX 2000, GTX 1600 시리즈에서는 안 됩니다.

 

수정 전 / 후

제노블레이드 크로니클스 2에서 드물게 나타나는 문제도 있는데 셰이더 캐시를 개선해서 해결했습니다.

여기까지는 Rofrigo의 노력하여 해결한 겁니다.

 

ogniK는 RendererInfo를 오디오 에뮬레이션에 구현하여 동물의 숲의 크레딧, 젤다의 전설: 꿈꾸는 섬의 여러 부분에서 생기는 소프트락을 해결했습니다. 새로 들을 수 있는 음향 효과도 생겼죠.

또한 테그라 X1의 GPU 드라이버 에뮬레이션을 개선해 이전까지 패치가 없으면 제대로 실행할 수 없었던 동물의 숲이 패치 없이 실행할 수 있습니다. 업데이트 후 슈퍼 스매시 브라더스 얼티밋의 T 자세도 해결됐죠.

 

지금까지 유즈는 스위치의 그래픽 API인 NVN은 완벽히 실행했지만 원래 다이렉트3D로 개발한 PC 게임 이식작은 실행하지 못했습니다. Rodrigo는 이를 OpenGL과 Vulkan으로 변환할 수 있는 방법을 찾았고 이제 유즈에서도 이런 게임을 실행할 수 있습니다. PC를 두고 PC용 스위치 에뮬레이터에서 PC 게임 이식작을 하다니...

 

수정 전 / 후

Rodrigo는 누락된 텍스처 형식을 구현해 제노블레이드 크로니클스 디피니티브 에디션에서 모든 게 검게 보이는 문제도 수정했습니다.

 

수정 전 / 후

인텔 GPU는 OpenGL 드라이버에 버그가 있어서 컴퓨트 셰이더를 사용하는 많은 게임이 꺼지거나 잘못 렌더링되었습니다. 그래서 인텔 GPU에서는 이를 비활성화할 수 밖에 없었죠.

슈퍼 스매시 브라더스 얼티밋을 예로 들면 캐릭터 모델 애니메이션을 렌더링하는데 컴퓨터 셰이더를 사용하는데 이걸 빼면 T 자세로 나옵니다.

또, 인텔 OpenGL 지오메트리 셰이더 구현은 AMD와 엔비디아와 달리 GL_ARB_shader_viewport_layer_array라는 OpenGL 확장자가 없습니다. 그래서 유즈의 구현을 손봐야했죠.

Morph는 컴퓨터 셰이더를 다시 활성화하고 유즈가 지오메이트 셰이더를 처리하는 방식을 변경해 인텔 사용자의 큰 문제를 해결했습니다.

 

그는 언더테일 등 2D 게임에서 선명한 그래픽을 얻기 위해 기본 텍스처 필터링 방식도 변경했습니다.

2012년에 나온 AMD GPU는 OpenGL GL_EXT_texture_shadow_lod 확장자가 없어서 젤다의 전설: 브레스 오브 더 와일드에서 빌드하지 못하는 셰이더가 생겼는데 이것도 텍스처그라드 기능으로 유사한 결과를 만들어 내었습니다.

 

Volca는 마인크래프트: 닌텐도 스위치 에디션에 접속할 수 있게 했습니다.

 

Rodrigo는 Vulkan API의 성능 최적화 작업을 진행하며 프레임타임을 줄이고, 프레임을 높였습니다.

 

사용자 인터페이스 변경

사람들은 오랫동안 유즈의 내부 해상도(Internal Resolution)에 오해를 가지고 있었습니다.

3DS 에뮬레이터인 시트라의 UI에서 이어진 것인데 유즈에서는 아무 의미도 없습니다.

하지만 설정에 존재했고 많은 사람들은 해상도가 향상되길 바라면서 더 높은 해상도로 바꿨죠. 당연히 아무것도 바뀌지 않았습니다.

결국 Morph는 이 무용지물인 기능을 삭제했습니다. 스위치 게임을 더 높은 해상도로 즐기고 싶다면 다른 에뮬레이터인 류진x를 써야합니다.

 

Volca는 Help에 모드 페이지, FAQ, 빠른 시작 가이드를 추가했습니다. 이제 에뮬레이터를 켜고 바로 확인해보세요.

 

Kewlan는 음소거 단축키를 추가했고 전체하면 단축키 버그를 수정했습니다.

 

프로젝트 마에리베리 한: 꿈을 현실로

프로젝트 마에리베리 한이 나왔습니다.

이제 네이티브 32비트 스위치 게임이 작동하며 일부는 완전히 플레이할 수 있습니다.

뉴 슈퍼 마리오 브라더스 U 디럭스, 전진! 키노피오대장! 등은 거의 완벽하게 작동하지만 마리오 카트 8 디럭스 등은 여전히 더 많이 손봐야합니다.

 

오래 전부터 요청받은 기능이었지만 이를 구현하려면 커널을 대대적으로 다시 만들어야했고 ARM JIT 리컴파일러인 다이나믹에서 ARMv7 공식 지원이 필요했습니다.

Merry, Lioncache, Blinkhawk, bunnei, Rodrigo, Tobi, ogniK, Morph 등 수많은 이들이 엄청난 노력을 쏟았죠.

특히 Merry와 Lioncache은 이 프로젝트의 중심으로 그 둘이 없었다면 시작도 할 수 없었을 겁니다.

모든 일을 담으면 너무 기술적인 글이 되므로 그렇게 하진 않겠지만, 그 둘은 유즈의 주요 코드 기여자이기도 합니다.

 

4개월 전에는 bunnei와 Tobi가 유즈에서 32비트를 지원할 수 있게 초기 프레임워크를 마련했습니다.

32비트와 64비트 JIT 백엔드를 지원하게 ARM 인터페이스를 리팩토링하고, CP15 코프로세서 지원을 추가하여 시트의 ARMv6 다이나믹 배엔드에 기반한 32비트 ARM 인터페이스를 구현했으며, GetThreadPriority32와 WaitSynchronization32 등 여러 32비트 SVC를 구현해 이를 달성했습니다.

 

프로메테우스를 위해 커널을 다시 쓰는 동안 Blinkhawk와 bunnei 는 32비트 ARMv7 CPU 명령과 서비스 지원을 포함할 수 있는 절호의 기회라고 생각했습니다.

그래서 Merry와 Lioncache와 협력해 다이나믹의 VPADD, VCVT, VSHL 등 다양한 ARMv7 명령과 CreateTransferMemory32, MapSharedMemory32, CreateThread32 등의 32비트 SVC 구현을 늘려 32비트 지원의 꿈을 현실로 이뤄냈습니다.

 

이것이 그 결과물

그리고 이제 얼리 액세스가 아닌 일반 유즈에서도 멀티코어를 지원합니다.

댓글