AI Neo Lab
스킬

탈옥 없이 아이폰에서 x86-64 윈도우 게임 돌리기, Madeira 설치부터 첫 실행까지

아이폰에서 PC 게임을 돌리려면 탈옥이나 클라우드 스트리밍이 필수라고 알려졌지만, Madeira는 FEX-Emu와 Wine, DXMT를 묶어 순정 iOS 위에서 x86-64 바이너리를 네이티브로 번역 실행합니다. 이 자료는 A15 칩 기준 준비물부터 사이드로드·주간 재설치·첫 게임 실행까지 전 과정을 단계별로 정리합니다.

아이폰 13 프로 같은 A15 기기만 있으면 탈옥 없이도 울트라킬이나 썸퍼 같은 x86-64 윈도우 게임을 돌릴 수 있습니다. Madeira는 Wine ARM64EC, FEX-Emu, DXMT를 단일 Mach 프로세스로 엮어 JIT 디버거 붙이기만 하면 앱스토어 없이 사이드로드로 들어갑니다.

Madeira란 무엇인가요

탈옥하지 않은 순정 아이폰에서 x86-64 윈도우 PC 게임을 구동할 수 있도록 돕는 연구 프로젝트가 바로 Madeira예요. C 언어를 주 언어로 사용하며, GPL-3.0 라이선스로 공개되어 있어요. 6개월 전(2026년 3월)에 처음 만들어져 이번 달(2026년 9월)까지 꾸준히 업데이트되었고, 현재 깃허브에서 스타 723개와 포크 152개를 기록하고 있어요.

Madeira의 핵심 기술 구조

Madeira는 세 가지 오픈소스 기술을 하나로 엮어 iOS 위에서 단일 Mach 프로세스로 실행해요. 윈도우 환경을 구현하는 wineserver를 별도 프로세스가 아닌 스레드로 띄우고, 그래픽과 CPU 명령어를 실시간으로 번역하는 구조를 취하고 있어요.

기술 요소담당 역할
Wine (ARM64EC)윈도우 실행 환경 및 API 에뮬레이션 제공
FEX-Emux86-64 명령어를 ARM64 명령어로 번역
DXMTDirect3D 11(D3D11) 그래픽 호출을 애플 Metal로 변환

실행 가능 게임과 현재 한계

Madeira는 상용 제품이 아닌 연구 목적의 프로젝트예요. 따라서 타이틀마다 예외적인 동작이 발생하거나 호환성이 깨질 수 있어요. 현재 개발은 A15 칩셋(iPhone 13 Pro) 환경을 바탕으로 진행되었어요.

  • 플레이 가능(Playable): Thumper, ULTRAKILL
  • 게임플레이 진입 확인: Marvel Cosmic Invasion (원인 불명의 강제 종료 현상이 발생한 바 있으며 조작이 아직 안정적이지 않음)
  • 기타 게임: 낮은 프레임 레이트로 게임플레이 화면까지 진입

왜 Madeira를 쓰나요

탈옥하지 않은 순정 아이폰에서 x86-64 윈도우 게임을 네이티브로 돌리는 유일한 오픈소스 경로가 Madeira예요. 클라우드 스트리밍이나 원격 데스크톱처럼 네트워크 지연·요금제·서버 종료 걱정이 없고, 아이폰 로컬 하드웨어(A15 이상 권장)만으로 FEX-Emu 번역 계층과 Wine(ARM64EC), DXMT(D3D11→Metal)를 단일 Mach 프로세스 안에서 구동하니까 세이브·프리픽스·설정이 앱 컨테이너 안에 그대로 남습니다.

대신 JIT 실행을 위해 디버거 연결(StikDebug)이 필수라 앱스토어 배포는 불가능하고, 무료 애플 ID로 7일마다 재서명·재설치만 감수하면 됩니다. 컨테이너가 살아남아 프리픽스·세이브·레지스트리가 초기화되지 않으니 매주 5분 투자로 '내 게임기'처럼 쓸 수 있는 실사용 환경이 열리는 셈이죠.

  • 탈옥·클라우드·원격 데스크톱 불필요
  • 로컬 하드웨어로 x86-64 명령어 직접 번역(FEX-Emu)
  • Wine(ARM64EC) + DXMT로 D3D11→Metal 변환
  • 앱 컨테이너 생존 → 프리픽스/세이브 영구 보존
  • 무료 애플 ID면 충분, 7일마다 재서명만 필요

준비물과 사전 조건

Madeira를 아이폰에 올리기 전 반드시 갖춰야 할 하드웨어·계정·도구를 체크리스트로 정리해요.

  • A15 바이오닉 이상 칩을 탑재한 아이폰(개발·테스트는 아이폰 13 Pro에서 진행)
  • 무료 애플 개발자 계정(Apple ID) — 프로비저닝 프로필이 7일 만료라 매주 재빌드·재설치 필요
  • StikDebug(JIT 디버거, ​https://github.com/0-Blu/StikJIT​) — iOS에서 JIT 실행을 위해 디버거 붙이기가 필수
  • macOS + Xcode(최신 안정 버전) 및 커맨드라인 툴체인(xcode-select --install)

소스코드를 받을 땐 Git 서브모듈까지 한 번에 클론해야 해요. FEX, Wine, DXMT 포크가 서브모듈로 묶여 있어서 --recurse-submodules 옵션을 빼먹으면 빌드 스크립트가 실패합니다.

터미널에서 실행
git clone --recurse-submodules https://github.com/willfaust/Madeira.git
cd Madeira
  1. Xcode 커맨드라인 툴 설치 확인

    xcode-select -p로 경로가 뜨는지 확인, 안 뜨면 xcode-select --install 실행

  2. Apple ID로 Xcode에 로그인

    Xcode → Settings → Accounts에서 무료 계정 추가, 팀 선택 후 서명 인증서 자동 생성 대기

  3. StikDebug 앱 설치

    StikDebug 저장소 README대로 빌드해 아이폰에 사이드로드(동일 Apple ID 사용)

  4. Madeira Xcode 프로젝트 열기

    Madeira.xcodeproj 더블클릭 → Signing & Capabilities에서 Team·Bundle Identifier 지정

항목최소 버전·조건비고
Apple ID무료 개발자 계정유료 계정 있으면 1년 서명 가능
StikDebug최신 main 브랜치JIT 디버거 필수

한눈에 보는 호환성·성능표

README가 공개한 현재 호환성 현황을 A15(iPhone 13 Pro) 기준으로 정리했어요. Madeira는 연구 프로젝트라 타이틀별 편차가 크고, 같은 게임이라도 빌드마다 동작이 달라질 수 있어요.

게임플레이 가능 여부프레임·안정성 메모
Marvel Cosmic Invasion⚠️ 게임플레이 진입진입 후 불명확한 종료(unexplained termination) 발생, 조작 신뢰도 낮음

공통 제약사항도 함께 보세요. JIT 디버거 부착이 필수라 7일마다 재빌드·재설치가 필요하고, 컨테이너는 유지돼 세이브·프리픽스는 그대로 남아요. App Store 배포는 불가능하니 사이드로드 방식으로만 쓸 수 있습니다.

  • Thumper·ULTRAKILL: 데모·캐주얼 플레이 용도로 충분
  • Marvel Cosmic Invasion: 진행 도중 강제 종료 가능성 높음
  • 기타 게임: 메뉴·로고까진 뜨나 실플레이는 기대하기 어려움
  • 모든 타이틀 공통: 와인 프리픽스·세이브는 재설치 후에도 보존

주의할 점과 흔한 함정

Madeira를 순정 아이폰에서 쓰려면 7일마다 프로비저닝 프로필이 만료돼 앱을 다시 서명·설치해야 해요. 무료 애플 개발자 계정도 똑같이 적용되고, 유료 계정이라도 1년 뒤엔 갱신이 필요해요. 다행히 앱 컨테이너는 재설치해도 유지되므로 Wine 프리픽스·세이브 파일·설정은 그대로 남아요.

JIT 디버거가 필수인 이유

iOS는 메모리 실행 권한(JIT)을 기본 차단해요. Madeira는 FEX-Emu로 x86-64→ARM64 동적 번역을 하는데, 이때 디버거가 붙어 있어야만 JIT가 허용돼요. 프로젝트는 StikDebug(StikJIT)를 쓰는데, 이 디버거 없이는 앱이 시작조차 못 해요. 따라서 앱스토어 배포는 원천 불가능하고, 사이드로드 전용으로만 쓸 수 있어요.

서브모듈 포크와 빌드 체인 분리

FEX, wine, research/dxmt 서브모듈은 업스트림이 아닌 iOS 포크를 가리켜요. git clone --recurse-submodules로 받아야 올바른 커밋이 들어오고, 포크 차이로 생기는 빌드 오류를 피할 수 있어요. 빌드는 유닉스 사이드 Wine 라이브러리 · ARM64EC PE 모듈 · FEX · DXMT · iOS 앱으로 체인이 나뉘어 있고, 각각 build/*/build.sh와 최종 xcodebuild로 조립해요. 한 체인만 다시 빌드해도 전체가 다시 돌지 않으니 수정 시 해당 체인만 돌리세요.

초기 클론(서브모듈 포함)
git clone --recurse-submodules https://github.com/willfaust/Madeira.git

초보자가 놓치기 쉬운 제약 요약

  • 앱스토어 배포 불가 — JIT+디버거 요구 때문
  • 무료 계정 7일·유료 1년 프로비저닝 만료 주기
  • 재설치 시 컨테이너 유지(프리픽스·세이브 보존)
  • 서브모듈 포크 차이 → 반드시 --recurse-submodules
  • 빌드 체인 분리 → 부분 빌드 가능, 전체 재빌드 불필요
  • 연구 프로젝트라 타이틀별 호환성·안정성 변동 큼

정리: 다음 주말에 시도해 볼 체크리스트

다음 주말에 순정 아이폰에서 직접 x86-64 윈도우 게임을 띄워보고 싶다면, 필요한 준비와 빌드 순서를 빠짐없이 챙겨두는 것이 좋아요. Madeira는 FEX-Emu, Wine, DXMT 등 여러 빌드 체인이 엮여 있어 시작 전 필수 환경을 단단히 맞춰두어야 막힘없이 진행할 수 있어요.

주말 실행 전 필수 체크리스트

빌드 및 실행 단계

  1. 소스코드 및 서브모듈 내려받기1단계

    FEX, Wine, DXMT 포크가 서브모듈로 연결되어 있으므로 서브모듈까지 함께 받아와요.

  2. 네이티브 빌드 스크립트 실행2단계

    유닉스 계열 Wine 라이브러리, ARM64EC PE 모듈, FEX, DXMT 빌드를 위해 스크립트를 수행해요.

  3. iOS 앱 빌드 및 사이드로딩3단계

    xcodebuild를 이용해 앱을 빌드하고 아이폰에 사이드로딩해요.

  4. JIT 활성화 및 1순위 게임 실행4단계

    StikDebug로 디버거를 연결해 JIT를 켠 뒤 플레이 가능한 게임을 테스트해요.

저장소 복제 명령어
git clone --recurse-submodules https://github.com/willfaust/Madeira.git
네이티브 빌드 스크립트
build/*/build.sh

무료 애플 계정으로 사이드로딩할 경우 7일마다 다시 설치해야 하지만, 앱 컨테이너가 유지되므로 프리픽스와 저장 데이터는 사라지지 않고 안전하게 보존돼요. 빌드 과정에서 xcodebuild를 통한 앱 빌드까지 마무리하면 아이폰 위에서 나만의 첫 PC 게임 구동 테스트를 바로 시작할 수 있어요.


이런 글도 있어요