1P by GN⁺ 5시간전 | ★ favorite | 댓글 1개
  • 2003년 GameCube 에뮬레이터로 시작한 Dolphin이 2026년 Triforce 아케이드 시스템 지원을 추가하며 새로운 플랫폼 영역으로 확장됨
  • MMU Fastmem 최적화로 페이지 테이블 기반 메모리 접근을 가속화, 특히 Rogue Squadron III가 처음으로 풀 스피드로 실행 가능해짐
  • Mario Strikers Charged의 온라인 동기화 버그가 5년 만에 해결되어, 실제 Wii와의 네트워크 플레이가 정확히 동작함
  • Triforce 에뮬레이션에서는 The Key of Avalon의 터치스크린 프로토콜과 IC 카드 기능 복원이 진행 중이며, F-Zero AXVirtua Striker 4 관련 기능도 개선 예정
  • 게임 로딩을 RAM에 캐시하는 기능, SDL 컨트롤러 힌트 설정, Wii 메뉴 타이밍 조정 등 사용자 경험과 성능을 향상시키는 다수의 기능이 추가됨

Triforce 지원 추가

  • Dolphin이 Sega·Namco·Nintendo의 공동 아케이드 시스템 Triforce를 공식 지원
    • Magnetic Card 자동 삽입, 지역 설정, 멀티캐비닛 에뮬레이션 버그 수정 등 초기 개선 포함
  • The Key of Avalon터치스크린 프로토콜이 Elo SmartSet과 유사함이 확인되어, 게임 시작까지 성공했으나 IC 카드 초기화 문제로 중단됨
  • IC 카드 기능 복원을 통해 Virtua Striker 4, Gekitou Pro Yakyuu 등에서 팀 빌드·캐릭터 생성 모드가 다시 작동 예정

MMU Fastmem 및 Rogue Squadron 최적화

  • 페이지 테이블 Fastmem 매핑 구현으로 Rogue Squadron II·III의 성능이 최대 두 배 향상
    • tlbie 명령 추적을 통해 페이지 테이블 변경을 실시간 반영
  • Branch Following 비활성화, 코드 무효화 최적화, CPU Vertex Culling 활성화 등으로 프레임 드롭과 스터터링 감소
  • Rogue Squadron III는 고성능 하드웨어에서 처음으로 완전한 속도로 실행 가능

Mario Strikers Charged 버그 해결

  • Dolphin과 실제 Wii 간 물리 동기화 오류의 원인이 fmadds 명령의 부정확한 부동소수 연산으로 확인
  • 2Sum 알고리듬을 이용한 정밀한 반올림 보정으로 문제 해결, 온라인 매치가 완전 동기화됨
  • 이 수정은 Inazuma Eleven GO: Strikers 2013의 유사 문제 해결 경험을 기반으로 발전

기타 주요 개선

  • Wii 메뉴 데이터 관리 타이밍을 실제 하드웨어에 가깝게 조정해, NAND 접근 시 과도한 CPU 부하 완화
  • Load Whole Game into Memory 기능 추가로 NAS 등 네트워크 저장소에서 실행 시 디스크 대기 지연 제거
  • SDL 힌트 GUI 설정 도입으로 Joy-Con 분리, DualSense 핫플러그 문제 등 컨트롤러 호환성 개선
  • Need for Speed: Hot Pursuit 2, Rabbids Go Home 등 일부 게임에 VBI 동기화 패치 적용으로 프레임 제한 정상화

성능 및 커뮤니티 기여

  • 이번 릴리스는 465개의 커밋이 병합되었으며, 다수의 커뮤니티 테스트와 하드웨어 리서치가 반영
  • Rogue Squadron 시리즈, Mario Strikers Charged, Triforce장기 난제 해결 사례가 포함되어 Dolphin의 정확성과 성능이 크게 향상됨
Hacker News 의견들
  • 오래전에 종료된 공식 서버 대신, Dolphin이 실제 Wii 콘솔과 온라인으로 연결되게 만든다는 점이 놀라움
    이런 열정적인 헌신을 가진 사람들이 있다는 게 정말 기쁨임

    • 인류가 이렇게 협력한다면 얼마나 많은 걸 이룰 수 있을지 상상함
      하지만 단기적으로는 이런 기술 발전이 불평등을 더 심화시킬 수도 있음
    • 이런 노력은 게임 보존을 위해 꼭 필요함
      에뮬레이터의 버그로 인해 게임이 완전히 혹은 부분적으로 실행되지 않는다면, 미래 세대가 이 게임을 경험할 기회를 잃게 됨
      사람들이 이렇게까지 신경 써주는 게 정말 멋짐
  • 내가 가장 흥미롭게 느끼는 부분은, 에뮬레이터 개발이 종종 원래 게임이 이상하지만 의도된 동작을 하고 있었다는 걸 발견하게 된다는 점임

    • 거의 2년 동안 디컴파일 작업을 해왔는데, 컴파일러의 특이한 동작이나 오래된 GCC 버전의 한계, 그리고 당시 프로그래머들의 미신 같은 코드를 보는 게 재미있음
      90년대 중반의 GCC가 이미 내가 2000년대 초에 수동으로 최적화하려 했던 걸 자동으로 처리하고 있었다는 걸 알고 놀랐음
    • 오늘 9front 커뮤니티 덕분에 일부 GB 게임이 카트리지의 SRAM을 스왑 메모리처럼 사용했다는 걸 알게 됨
      에뮬레이터가 SRAM을 저장하지 않아 세이브 불일치가 생겼는데, 빠르게 수정됨
      Plan9 기반의 단순한 C 코드라 수정이 쉬웠음
  • 나는 항상 Dolphin 개발 보고서를 읽는 걸 좋아함
    기술적인 내용을 이해하기 쉽게 잘 풀어줌

    • 나도 프로그래머가 되기 전부터 그 보고서를 읽었는데, 프로그램의 내부 동작을 논리적으로 생각하는 법을 배우는 데 큰 도움이 되었음
    • 특히 단순히 “무엇이 바뀌었는가”가 아니라 “왜 어려웠는가”를 설명해주는 점이 인상적임
  • Dolphin 보고서와 관련해, 작성자 중 한 명이 오픈소스 에뮬레이터 커뮤니티의 문제를 다룬 흥미로운 글을 올렸음
    Rethinking Open Source
    요약하자면, 커뮤니티 기반과 정체성이 확립되기 전에 하이프가 큰 프로젝트를 오픈소스로 공개하면, 비현실적인 요구를 하는 사용자들로 인해 문제가 생길 수 있음
    또한 미완성 브랜치를 다른 이가 가져가서 자신이 만든 것처럼 배포하는 경우도 있음
    Dolphin 팀은 이런 어려움 속에서도 높은 수준의 전문성으로 프로젝트를 운영하고 있음

    • 공격적이거나 감사하지 않는 사용자들 속에서 동기부여를 유지하는 건 정말 힘든 일임
      돈을 받는 상황에서도 어렵지만, 무료 프로젝트라면 더 힘들 것 같음
    • 예전에 여러 개의 비호환 브랜치를 써야 했는데, 이제 메인라인에 Triforce 지원이 들어간 것 같아 기쁨
      예전 포크는 완성도가 낮았음
  • 글쓴이가 자신이 쓴 내용에 대해 진심으로 신나 있는 모습이 보기 좋음

    • JMC는 정말 최고임
      예전에 Melee 네트플레이 버그를 보고했을 때, 그는 모든 것에 호기심을 가지고 깊이 파고드는 사람이었음
  • Dolphin은 정말 똑똑한 개발의 모범 사례
    예전에는 내 구형 머신의 4코어를 모두 써야 Metroid Prime이 돌아갔는데, 몇 년 뒤엔 같은 게임이 코어의 25%만 사용함
    JIT와 에뮬레이션 효율화 덕분에 성능이 비약적으로 향상된 것임
    이런 최적화는 진짜 대단한 성취였음

  • Triforce 아케이드 호환성 논의 중에 “IC 카드 지원”이 언급되었는데, 이게 구현되면 많은 기능이 열릴 거라고 함
    일본의 교통카드처럼 보이지만, Triforce 기판에서는 게임 진행 데이터를 저장하는 데 사용된다고 함
    미국 아케이드에서는 본 적이 없는 멋진 기능임

    • Triforce 게임은 자기식 카드(magcard)IC 카드 두 종류를 지원함
      magcard는 저렴하지만 내구성이 약하고, 인쇄가 가능함
      IC 카드는 더 두껍고 튼튼하지만 인쇄는 불가능함
      사진과 함께 설명된 출처: Rise of the Triforce
    • 사실 이건 메모리 카드를 의미함
      거의 모든 Triforce 게임이 세이브를 위해 카드를 사용함
      아마 미국에서도 Mario Kart Arcade GP 버전을 본 적이 있을 것임
    • 미국 아케이드에도 존재함
      maimai, chunithm, DDR 등에서 사용하는 AIME 카드와 비슷한 개념임
      다만 Triforce의 IC 카드는 인증뿐 아니라 데이터 저장 기능도 있음
  • fnmsubs CPU 명령이 JIT에서는 잘못 구현되어 있었지만 인터프리터에서는 올바르게 작동했다는 사례가 흥미로움
    이런 경우 differential fuzzing을 적용하기 좋은 기회라고 생각함

  • 이번 글의 핵심은 Dolphin이 Triforce 아케이드 캐비닛 지원을 복원했다는 점임
    Triforce는 Nintendo, Sega, Namco가 공동 개발한 하드웨어로, Dolphin이 2016년에 지원을 중단했었음
    이제 F-Zero AX, Mario Kart Arcade GP 1·2 같은 게임이 다시 돌아옴
    자세한 내용: The Return of the Triforce

    • 몇 주 전에도 관련 스레드가 있었음
      이전 토론 링크
      기사 첫 문단이 이미 이 내용을 다루고 있어서 “묻힌 주제”라고 하긴 어려움
  • 혹시 기부를 받는지 궁금했는데, 공식 사이트에서는 찾을 수 없었음