TL;DR

  • Madeira는 탈옥하지 않은 iPhone에서 Windows PC 게임을 실행하며, Wine(ARM64EC), FEX-Emu, DXMT를 단일 Mach 프로세스로 통합함.
  • Thumper와 ULTRAKILL은 플레이 가능하고, Marvel Cosmic Invasion은 게임플레이에 도달하지만 예기치 않은 종료와 불안정한 조작 문제가 있음.
  • 실행에는 JIT와 디버거 연결이 필요하며, 이 때문에 App Store 배포가 불가능하고 사이드로딩이 필요함.
  • 무료 Apple ID 서명은 가능하지만 프로비저닝 프로파일이 7일 뒤 만료되어 매주 앱을 다시 빌드하고 설치해야 하며, 앱 컨테이너는 재설치 후에도 유지됨.
  • 이 프로젝트는 제품이 아닌 연구 프로젝트이며, 포크별 라이선스와 AI 지원 코드의 업스트림 기여 제한을 확인해야 함.

Madeira

  • 탈옥하지 않은 iPhone에서 Windows PC 게임을 실행하는 프로젝트임.
  • Wine(ARM64EC), FEX-Emu의 x86-64에서 ARM64로의 변환, DXMT의 D3D11에서 Metal로의 변환을 결합함.
  • iOS에서 단일 Mach 프로세스로 실행되며, 별도 프로세스 대신 스레드로 wineserver를 구동함.

상태

  • Thumper와 ULTRAKILL은 플레이 가능함.
  • Marvel Cosmic Invasion은 게임플레이 단계에 도달했지만, 예기치 않은 종료가 발생한 실행 사례가 있으며 조작도 아직 안정적이지 않음.
  • 다른 게임도 게임플레이 단계까지 도달하지만 프레임 레이트가 낮음.
  • 제품이 아닌 연구 프로젝트이므로 미완성된 부분, 타이틀별 차이, 호환성을 깨뜨리는 변경이 예상됨.

요구 사항

  • 탈옥하지 않은 iPhone이 필요함. 개발은 A15 탑재 iPhone 13 Pro에서 진행됨.
  • JIT가 필요하며, iOS에서는 디버거 연결이 요구됨. 이 프로젝트는 StikDebug를 사용함.
  • 서명용 Apple ID가 필요하며 무료 계정도 사용 가능함.
  • 무료 계정의 프로비저닝 프로파일은 7일 뒤 만료되므로 앱을 매주 다시 빌드하고 설치해야 함.
  • 앱 컨테이너는 재설치 후에도 유지되므로 접두사와 저장 데이터가 보존됨.
  • JIT에 디버거 연결이 필요하므로 App Store를 통한 배포는 불가능하며, 사이드로딩으로 설치함.

빌드

  • 빌드는 유닉스 측 Wine 라이브러리, ARM64EC PE 모듈, FEX, DXMT, iOS 앱 등 여러 빌드 체인으로 나뉨.
  • build/*/build.sh는 네이티브 구성 요소를 빌드하고, 앱은 xcodebuild로 빌드함.
  • 저장소 복제에는 하위 모듈을 함께 가져오는 git clone --recurse-submodules <this repo> 명령을 사용함.
  • FEX, wine, research/dxmt는 iOS 작업이 포함된 포크를 가리키는 하위 모듈임. 업스트림 저장소를 복제하면 이 환경에서 빌드되지 않음.

라이선스

  • 라이선스는 GPL-3.0-or-later이며 자세한 내용은 LICENSE에 있음.
  • 배포되는 파생물은 오픈소스로 유지해야 함.

업스트림 라이선스와 이 프로젝트 포크의 라이선스

  • 업스트림 프로젝트의 라이선스는 다음과 같으며, 전문은 LICENSES/에 있고 업스트림 코드는 해당 업스트림에서 원래 라이선스로 계속 제공됨.
  • Wine과 GnuTLS: LGPL-2.1-or-later
  • GMP와 Nettle: LGPL-3.0-or-later
  • FEX-Emu와 DXMT: MIT
  • rpmalloc: 0BSD
  • 이 프로젝트에서 사용하는 포크는 업스트림과 라이선스가 동일하지 않으며, 각 포크의 LICENSE-MADEIRA.md에 적용 조건이 명시됨.
  • wine: LGPL-2.1 §3에 따라 GPL-3.0-or-later로 재라이선스됨.
  • FEX, dxmt: 업스트림 MIT 라이선스는 유지되며 수정 사항에는 GPL-3.0-or-later가 적용됨.
  • rpmalloc: 업스트림 0BSD 라이선스는 유지되며 Will Faust의 수정 사항에는 GPL-3.0-or-later가 적용됨.
  • 라이선스 변경은 소급 적용되지 않음. 해당 포크는 이전부터 공개되어 있었으므로, 관대한 라이선스로 이미 취득한 자료는 그 라이선스에 따라 계속 이용 가능함.
  • 구성 요소별 내역은 THIRD-PARTY-NOTICES.md에 있음.
  • Microsoft Visual C++ 런타임 DLL은 이 프로젝트에서 배포하지 않으므로 직접 제공해야 하며, 관련 안내는 tools/fetch-vcruntime.md에 있음.

업스트림 기여 관련 참고 사항

  • 이 포크에는 AI 지원으로 작성된 작업이 상당량 포함됨.
  • FEX-Emu의 기여 정책은 해당 프로젝트 기여용 코드 생성에 AI를 사용하지 못하도록 규정함.
  • 따라서 이 포크에서 AI가 생성한 변경 사항을 업스트림에 제출하면 안 됨. MIT 라이선스는 포크 자체를 허용하지만, 기여 정책은 업스트림에 보내는 기여를 규율함.
  • 변경을 제안하기 전에 각 업스트림의 기여 정책을 확인해야 함.