From d8a1dd1da452b0fca4def6b130fa55d5a4bea1f9 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Sat, 9 May 2026 09:15:10 -0400 Subject: [PATCH 1/6] Recording Mode - Mute streams & Fix 1 note playing --- src/f_ap/f_ap_game.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index dc14933b50..2c6cb0a925 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -745,7 +745,8 @@ static void duskExecute() { updateAutoSave(); if (dusk::getSettings().game.recordingMode) { - Z2GetSeqMgr()->bgmAllMute(0, 0); + Z2GetSoundMgr()->getSeqMgr()->getParams()->moveVolume(0.0f, 0); + Z2GetSoundMgr()->getStreamMgr()->getParams()->moveVolume(0.0f, 0); } if (mDoCPd_c::getHoldR(PAD_1) && mDoCPd_c::getTrigX(PAD_1)) { From 80dd5ff2780a15c29af2eea61c254ed09c8053dc Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 9 May 2026 07:32:29 -0700 Subject: [PATCH 2/6] revert mirror mode message override for now --- src/d/d_msg_object.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index 7e3be2cb08..44b5c66571 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -427,14 +427,15 @@ static void dummyStrings() { dMsgObject_HIO_c g_MsgObject_HIO_c; int dMsgObject_c::_execute() { -#if TARGET_PC +// TODO: enabling wii message overrides fixes direction text, but gives wrong item control text +/*#if TARGET_PC if (dusk::getSettings().game.enableMirrorMode) { // enable wii message index override g_MsgObject_HIO_c.mMessageDisplay = 1; } else if (!dusk::getSettings().game.enableMirrorMode && g_MsgObject_HIO_c.mMessageDisplay == 1) { g_MsgObject_HIO_c.mMessageDisplay = 0; } -#endif +#endif*/ field_0x4c7 = 0; From 4290726691b9818878e9fa76614dff6f84b5a841 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 9 May 2026 07:38:19 -0700 Subject: [PATCH 3/6] update setup instructions --- README.md | 17 ++++++++++--- docs/ios-install-altstore.md | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 docs/ios-install-altstore.md diff --git a/README.md b/README.md index 5e7412e6aa..b5275e6bdc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

Official Website • - Discord + Discord

@@ -28,13 +28,24 @@ First, make sure your dump of the game is clean and supported by Dusk. You can d | GameCube USA | `75edd3ddff41f125d1b4ce1a40378f1b565519e7` | | GameCube EUR | `2601822a488eeb86fb89db16ca8f29c2c953e1ca` | +*Support for other versions of the game is planned in the future. + ### 2. Download [Dusk](https://github.com/TwilitRealm/dusk/releases) ### 3. Setup the game - +**Windows / macOS / Linux** - Extract the .zip file - Launch Dusk -- Press **Select Disc Image** and provide the path to your supported game dump. +- Press **Select Disc Image** and provide the path to your supported game dump +- Press **Play**! + +**iOS** +- Follow the [iOS setup guide](docs/ios-install-altstore.md) + +**Android** +- Install the Dusk apk +- Launch Dusk +- Press **Select Disc Image** and provide the path to your supported game dump - Press **Play**! # Building diff --git a/docs/ios-install-altstore.md b/docs/ios-install-altstore.md new file mode 100644 index 0000000000..fdfc7689d6 --- /dev/null +++ b/docs/ios-install-altstore.md @@ -0,0 +1,46 @@ +# Installing Dusk on iOS via AltStore + +## Prerequisites + +- Mac with Homebrew installed +- iPhone connected via USB +- Dusk IPA file (download the latest `Dusk-vX.X.X-ios-arm64.ipa` from the [releases page](https://github.com/TwilitRealm/dusk/releases)) +- Game disc - `GZ2E01` (Gamecube USA) or `GZ2PE01` (Gamecube PAL) + +## 1. Install AltServer + +```sh +brew install altserver +open -a AltServer +``` + +AltServer will appear in your menu bar. + +## 2. Enable Developer Mode (iOS 16+) + +- On your iPhone, go to **Settings > Privacy & Security > Developer Mode** +- Toggle it on and restart when prompted + +## 3. Install AltStore on Your iPhone + +- Click AltServer in the menu bar +- Click **Install AltStore > [Your iPhone]** +- Enter your Apple ID credentials when prompted +- On your iPhone, go to **Settings > General > VPN & Device Management** +- Tap your Apple ID under "Developer App" and tap **Trust** + +## 4. Copy Files to Your iPhone + +Transfer the IPA and game disc to your iPhone so they're accessible in the Files app. A few ways to do this: + +- **AirDrop** - Right-click the files on your Mac and choose Share > AirDrop +- **iCloud Drive** - Place files in iCloud Drive on your Mac and they'll sync to Files on your iPhone +- **USB transfer** - Connect your iPhone and drag files via Finder's sidebar +- **Cloud storage** - Upload to Google Drive, Dropbox, etc. and download on your iPhone + +## 5. Install via AltStore + +- Open **AltStore** on your iPhone +- Go to the **My Apps** tab +- Tap the **+** button (top left) +- Open the **Files** app and select the `.ipa` file \ No newline at end of file From 594cadcf7d0c49ec379e79ad6bc18ac056158130 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 9 May 2026 09:55:18 -0600 Subject: [PATCH 4/6] Update Android app ID to dev.twilitrealm.dusk --- extern/aurora | 2 +- platforms/android/README.md | 5 ++--- platforms/android/app/build.gradle | 4 ++-- platforms/android/app/proguard-rules.pro | 4 ++-- platforms/android/app/src/main/AndroidManifest.xml | 2 +- .../src/main/java/com/twilitrealm/dusk/DuskActivity.java | 7 +------ .../src/main/java/com/twilitrealm/dusk/DuskHttpClient.java | 2 +- src/dusk/http/android.cpp | 2 +- 8 files changed, 11 insertions(+), 17 deletions(-) diff --git a/extern/aurora b/extern/aurora index 1eeff98783..9413f24f65 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 1eeff98783c36fba83970c011783a4fd9deac018 +Subproject commit 9413f24f65e20969b8320e651af306a2fd0798c8 diff --git a/platforms/android/README.md b/platforms/android/README.md index c7ecd684c1..f51b37db73 100644 --- a/platforms/android/README.md +++ b/platforms/android/README.md @@ -66,12 +66,11 @@ Output APK: You can pass command-line args through the activity intent: ```bash -adb shell am start -n com.twilitrealm.dusk/.DuskActivity \ - --es dusk_args "'/sdcard/Download/The Legend of Zelda: Twilight Princess (USA).iso'" +adb shell am start -n dev.twilitrealm.dusk/.DuskActivity \ + --es dusk_args "--backend vulkan" ``` Supported extras: - `dusk_args`: single shell-like argument string - `dusk_argv`: string-array argv -- `dusk_disc`: compatibility shortcut (single ISO path) diff --git a/platforms/android/app/build.gradle b/platforms/android/app/build.gradle index 01e706a382..9cf56899df 100644 --- a/platforms/android/app/build.gradle +++ b/platforms/android/app/build.gradle @@ -13,11 +13,11 @@ def syncDuskAssets = tasks.register('syncDuskAssets', Sync) { } android { - namespace 'com.twilitrealm.dusk' + namespace 'dev.twilitrealm.dusk' compileSdk 36 defaultConfig { - applicationId 'com.twilitrealm.dusk' + applicationId 'dev.twilitrealm.dusk' minSdk 26 targetSdk 36 versionCode 1 diff --git a/platforms/android/app/proguard-rules.pro b/platforms/android/app/proguard-rules.pro index 8f2cf4a4e2..72b7ca16fa 100644 --- a/platforms/android/app/proguard-rules.pro +++ b/platforms/android/app/proguard-rules.pro @@ -1,4 +1,4 @@ # Keep SDL activity and related JNI bridge methods. -keep class org.libsdl.app.** { *; } --keep class com.twilitrealm.dusk.DuskHttpClient { *; } --keep class com.twilitrealm.dusk.DuskHttpClient$Response { *; } +-keep class dev.twilitrealm.dusk.DuskHttpClient { *; } +-keep class dev.twilitrealm.dusk.DuskHttpClient$Response { *; } diff --git a/platforms/android/app/src/main/AndroidManifest.xml b/platforms/android/app/src/main/AndroidManifest.xml index a902065475..f3e11030ca 100644 --- a/platforms/android/app/src/main/AndroidManifest.xml +++ b/platforms/android/app/src/main/AndroidManifest.xml @@ -25,7 +25,7 @@ android:resource="@xml/game_mode_config" /> DeleteLocalRef(activity); if (clientClass == nullptr) { return { From eeb0ad77a4e4f4fee6b464407e2c98937d6c8ee6 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 9 May 2026 10:03:05 -0600 Subject: [PATCH 5/6] Missed a spot --- src/dusk/http/android.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dusk/http/android.cpp b/src/dusk/http/android.cpp index 125ddf6808..3f4eef8d84 100644 --- a/src/dusk/http/android.cpp +++ b/src/dusk/http/android.cpp @@ -348,7 +348,7 @@ Result get(const Request& request) { jmethodID getMethod = env->GetStaticMethodID(clientClass, "get", "(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;IJ)" - "Lcom/twilitrealm/dusk/DuskHttpClient$Response;"); + "Ldev/twilitrealm/dusk/DuskHttpClient$Response;"); if (getMethod == nullptr || clear_pending_exception(env)) { env->DeleteLocalRef(clientClass); return { From 2f83753260760c7bde6ca8326215ac950b89d7be Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 9 May 2026 10:13:59 -0600 Subject: [PATCH 6/6] Fix Android release gradle build --- platforms/android/app/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platforms/android/app/build.gradle b/platforms/android/app/build.gradle index 9cf56899df..b7775df8e0 100644 --- a/platforms/android/app/build.gradle +++ b/platforms/android/app/build.gradle @@ -60,7 +60,8 @@ dependencies { } tasks.configureEach { task -> - if (task.name.startsWith('merge') && task.name.endsWith('Assets')) { + if ((task.name.startsWith('merge') && task.name.endsWith('Assets')) || + task.name.toLowerCase().contains('lint')) { task.dependsOn(syncDuskAssets) } }