# Dolphin / Primehack - General Guide Dolphin feature rich a GameCube and Wii Emulator. Primehack is a fork of Dolphin intended just to give Metroid Prime Trilogy mouselook controls and other improvements. --- ### Dolphin Links: [Dolphin - Webpage](https://dolphin-emu.org/) [Dolphin - Wiki](https://wiki.dolphin-emu.org/index.php?title=Main_Page) [Dolphin - Game Compatibility](https://dolphin-emu.org/compat/) [Dolphin - Performance Guide](https://dolphin-emu.org/docs/guides/performance-guide/) [Dolphin - Github](https://github.com/dolphin-emu/dolphin) ### Primehack Links [Primehack - Wiki](https://github.com/shiiion/dolphin/wiki/) [Primehack - FAQ](https://github.com/shiiion/dolphin/wiki/Frequently-Asked-Questions) [Primehack - Github](https://github.com/shiiion/dolphin) --- ## Where to put the games? **Gamecube:** Should be put under the `retrodeck/roms/gc/` directory. **Wii:** Should be put under the `retrodeck/roms/wii/` directory. ## What file formats does Dolphin / Primehack support? | File Format | Description | |-------------|-------------| | .ciso | Compressed ISO image file | | .dff | Digital Forensics File | | .dol | GameCube executable file | | .elf | Executable and Linkable Format | | .gcm | GameCube disc image file | | .gcz | Compressed GameCube disc image | | .iso | Standard ISO disc image | | .json | JavaScript Object Notation file | | .m3u | Playlist file | | .rvz | Compressed GameCube/Wii disc image **(Recommended)** | | .tgc | GameCube disc image format | | .wad | WiiWare and Virtual Console game file | | .wbfs | Wii Backup File System image | | .wia | Compressed Wii disc image | | .7z | Compressed archive file | | .zip | Compressed archive file | **NOTE:** `.wbfs` and `.wad` are the original format supported by the Wii console. ## Does Dolphin require BIOS or Firmware? Optional `IPL.bin` for GameCube boot intros. ### Where to put the GameCube BIOS? Dolphin looks for the `IPL.bin` in the save folders. Put each region's `IPL.bin` in the corresponding saves folder. | Type | Folder | Flatpak Source | Emulator Folder | Comment | |:------------------:|:-----------------------------------:|:-------------------------------:|:------------------------------:|:-------:| | GameCube Saves EU | `retrodeck/saves/gc/dolphin/EU/` | `var/data/dolphin-emu/GC/EUR/` | `dolphin-emu/GC/EUR/` | | | GameCube Saves US | `retrodeck/saves/gc/dolphin/US/` | `var/data/dolphin-emu/GC/USA/` | `dolphin-emu/GC/USA/` | | | GameCube Saves JP | `retrodeck/saves/gc/dolphin/JP/` | `var/data/dolphin-emu/GC/JAP/` | `dolphin-emu/GC/JAP/` | | ## Folder structure ### Dolphin This shows what folder corresponds to each folder in the standard Dolphin structure | Type | Folder | Flatpak Source | Emulator Folder | Comment | |:------------------:|:-----------------------------------:|:-------------------------------:|:------------------------------:|:-------:| | GameCube Saves EU | `retrodeck/saves/gc/dolphin/EU/` | `var/data/dolphin-emu/GC/EUR/` | `dolphin-emu/GC/EUR/` | | | GameCube Saves JP | `retrodeck/saves/gc/dolphin/JP/` | `var/data/dolphin-emu/GC/JAP/` | `dolphin-emu/GC/JAP/` | | | GameCube Saves US | `retrodeck/saves/gc/dolphin/US/` | `var/data/dolphin-emu/GC/USA/` | `dolphin-emu/GC/USA/` | | | Mods | `retrodeck/mods/Dolphin/` | `var/data/dolphin-emu/Load/GraphicMods` | `dolphin-emu/Load/GraphicMods/` | | | ROMs Gamecube Folder | `retrodeck/roms/gc/` | | | | | ROMs Wii Folder | `retrodeck/roms/wii/` | | | | | Screenshots | `retrodeck/screenshots/` | `var/data/dolphin-emu/ScreenShots/` | `dolphin-emu/ScreenShots/` | | | States | `retrodeck/states/dolphin/` | `var/data/dolphin-emu/StateSaves/` | `dolphin-emu/StateSaves/` | | | Texture Packs | `retrodeck/mods/Dolphin/` | `var/data/dolphin-emu/Load/Textures/` | `dolphin-emu/Load/Textures/` | | | Wii Saves | `retrodeck/saves/wii/dolphin/` | `var/data/dolphin-emu/Wii/` | `dolphin-emu/Wii/` | | ### PrimeHack This shows what folder corresponds to each folder in the standard PrimeHack structure | Type | Folder | Flatpak Source | Emulator Folder | Comment | |:------------------:|:-----------------------------------:|:-------------------------------:|:------------------------------:|:-------:| | GameCube Saves EU | `retrodeck/saves/gc/primehack/EU/` | `var/data/primehack/GC/EUR/` | `primehack/GC/EUR/` | | | GameCube Saves JP | `retrodeck/saves/gc/primehack/JP/` | `var/data/primehack/GC/JAP/` | `primehack/GC/JAP/` | | | GameCube Saves US | `retrodeck/saves/gc/primehack/US/` | `var/data/primehack/GC/USA/` | `primehack/GC/USA/` | | | Mods | `retrodeck/mods/Primehack/` | `var/data/primehack/Load/GraphicMods` | `primehack/Load/GraphicMods/` | | | ROMs Gamecube Folder | `retrodeck/roms/gc/` | | | | | ROMs Wii Folder | `retrodeck/roms/wii/` | | | | | Screenshots | `retrodeck/screenshots/` | `var/data/primehack/ScreenShots/` | `primehack/ScreenShots/` | | | States | `retrodeck/states/primehack/` | `var/data/primehack/StateSaves/` | `primehack/StateSaves/` | | | Texture Packs | `retrodeck/mods/Primehack/` | `var/data/primehack/Load/Textures/` | `primehack/Load/Textures/` | | | Wii Saves | `retrodeck/saves/wii/primehack/` | `var/data/primehack/Wii/` | `primehack/Wii/` | | --- ## Where do I change the language of Dolphin / Primehack? 1. In the `Configurator` open either `Dolphin` or `Primehack`. 2. Navigate to `Options` -> `Configuration` -> `Interface` . 3. Select preferred language in the drop-down menu. 4. Close the Emulator, Configurator and return to RetroDECK. ## Gamecube Controls The controls here are described as an Xbox Layout style controller. | Action | Button | Comment | |:---------------:|:------------:|:-------:| | A | `A` | | | B | `B` | | | X | `X` | | | Y | `Y` | | | Z | `R2 or L2` | | | START | `START` | | | Control Stick | `Left Stick` | | | C Stick | `Right Stick`| | | D-Pad Up | `D-Pad Up` | | | D-Pad Down | `D-Pad Down` | | | D-Pad Left | `D-Pad Left` | | | D-Pad Right | `D-Pad Right`| | ## Wii Controls for Controllers The controls here are described as an Xbox Layout style controller. There are hotkeys in the Radial Menus to change the Wii Mote from Upright / Sidways. | Action | Button | Comment | |:-----------------:|:---------------------:|:-------:| | 1 | `Y` | | | 2 | `X` | | | A | `A` or `Left Mouse Click` | | | B | `B` | | | C | `R1` | | | D-Pad Down | `D-Pad Down` | | | D-Pad Left | `D-Pad Left` | | | D-Pad Right | `D-Pad Right` | | | D-Pad Up | `D-Pad Up` | | | Home | `R3` | | | + | `Start` | | | - | `Select` | | | Shake Nunchuck | `L1 + L2` | | | Shake Wii Mote | `L1` | | | Z | `L2` | | ### Wii Motion - Pointer Emulation - Mouse movement is the general way to to get the pointer emulation. - `Left Mouse Click` that correspons to a press of the `A` button (as that one is the one mostly used for Wii games that are based around pointing as the primary button). - [RetroDECK Hotkeys](../../wiki_rd_controls/hotkeys-retrodeck.md) features several ways to enable `Joystick as Mouse` Emulation. - You could also use a mouse / touchpad. ### Wii Motion - Tilt Emulation Tilt emulation is made possible by holding the `L2` button and moving the `Right Joystick`. | Action | Button | Comment | |:---------------:|:-------------------------:|:-------:| | Tilt Down | `L2 + Right Joystick Down`| | | Tilt Left | `L2 + Right Joystick Left`| | | Tilt Right | `L2 + Right Joystick Right`| | | Tilt Up | `L2 + Right Joystick Up` | | --- ## Information: Using Real Wii Remotes **Tip:** Sync Wiimote Button Hotkey RetroDECK has a built-in hotkey for pressing the Dolphin `Sync Wiimote` button (`Alt + W`) if you get disconnected in Steam Input. It can also be accessed from some controller's radial menu systems. ### Hardware Prerequisites - A Wii Sensor Bar alternative (wireless or wired). - A Linux compatible Bluetooth dongle or built-in Bluetooth adapter. ### On Third Party Wii Remotes Many third party Wii Remotes lack native Linux support, but several groups are working on it. - They may work with Bluetooth Passthrough mode in Dolphin. - They may or may not remember pairing with the Bluetooth adapter, requiring synchronization for each game. **Sources:** [xwiimote github](https://github.com/xwiimote/xwiimote) [xwiimote-ng github](https://github.com/dev-0x7C6/xwiimote-ng) - Fork of xwiimote **Related Issues:** [xwiimote: issue 66](https://github.com/xwiimote/xwiimote/issues/66) [xwiimote: issue 73](https://github.com/xwiimote/xwiimote/issues/73) [bluez: issue 94](https://github.com/bluez/bluez/issues/94) ### Steam Deck Tips: Real Wii Remotes - Play docked, connected to a monitor/TV, with a separate Bluetooth dongle attached to the dock. - Set a sudo password for the Steam Deck. - Connect a keyboard/mouse to the dock while setting up. - Sit close to the Steam Deck when pairing the Wiimotes. - Configure Wiimotes in `Desktop Mode` first, then switch to `Game Mode` when everything is working. - Open Dolphin from the Configurator. - Make all the settings changes to connect the Wiimotes. - Launch a game from `Desktop Mode` directly in Dolphin. - If pairing works and the Wiimotes connect and control the game fine in `Desktop Mode`, it will work in `Game Mode` when launched from RetroDECK. ### Mod: Wii bluetooth adapter to USB For hardware mod enthusiasts, you can buy a Bluetooth adapter spare part from a Wii console and wire it as a USB Bluetooth adapter for better compatibility. [How to wire a Wii's Bluetooth Module to a PC USB Port](https://forums.dolphin-emu.org/Thread-how-to-wire-a-wii-s-bluetooth-module-to-a-pc-usb-port) --- ## How-to: Use a Real Wii Remote - Method 1: Emulate Wii's Bluetooth Adapter This method works only with the Official Wii Remote controller and is the easiest method. ### Step 1: Open Dolphins Controller Settings Open `RetroDECK Configurator` -> `Open Emulator` -> `Dolphin` -> `Options` -> `Controller Settings`. ### Step 2: Change the Settings Under `Emulate the Wii's Bluetooth adapter`: - Change the values of Wii Remote dropdown lists from `Emulated Wii Remote` to `Real Wii Remote`. - Enable the following checkboxes: - `Connect Wii Remotes for Emulated Controllers` - `Continuous Scanning` ### Step 3: Syncing the Wiimotes - Connect the Wiimote by pressing the `Sync Button` when a game is launched. - Reconnect every time when launching a new game. - If everything works, re-pairing should be quick with the press of the `A` button without needing to press the `Sync Button` again. --- ## How-to: Use a Real Wii Remote - Method 2: Bluetooth Passthrough This method works with both 3rd party and official Wiimotes. It is more complex and has some downsides. **🛑 Warning 🛑** - This method makes the Bluetooth adapter unusable for other devices while playing Wii games. - No other devices can connect to it except Wiimotes, meaning all other devices will disconnect. - It is recommended to have a backup input method like a wireless keyboard or a controller with a dongle/cable. Source: [Dolphin Wiki: Bluetooth_Passthrough](https://wiki.dolphin-emu.org/index.php?title=Bluetooth_Passthrough) ### Step 1: Find Your Vendor and Product IDs First you need to find our your `Vendor ID` `Product ID` for the Bluetooth adapter you want to use. 1. Open a terminal window. 2. Type `lsusb`. 3. It will display all connected USB or BUS devices. **Example:** ``` Bus 001 Device 003: ID 0bda:5650 Realtek Semiconductor Corp. Bus 001 Device 004: ID 8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter ``` `ID 8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter` is the Bluetooth Adapter in this example. The `ID 8087:0025` left value is the `Vendor ID` while the right is `Product ID`. In this example: `Vendor ID` is `8087` and `Product ID` is `0025`. ### Step 2: Create the rules file You will need root privileges for this. 1. Open a terminal and type the following command, replacing `Vendor ID` and `Product ID` respectively: ``` sudo echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="Vendor ID", ATTRS{idProduct}=="Product ID", TAG+="uaccess"' | sudo tee -a /etc/udev/rules.d/52-dolphin.rules > /dev/null ``` From the example above, the result should look like this: ``` sudo echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0025", TAG+="uaccess"' | sudo tee -a /etc/udev/rules.d/52-dolphin.rules > /dev/null ``` 2. Reload udev rules with: sudo udevadm control --reload-rules. 3. Take out and reinsert the Bluetooth adapter or reboot if a built-in was used. ### Step 3: Enable Bluetooth Passthrough in Dolphin Open `RetroDECK Configurator` -> `Open Emulator` -> `Dolphin` -> `Options` -> `Controller Settings`. Change Bluetooth type: - From `Emulate the Wii's Bluetooth adapter` to `Passthrough a Bluetooth Adapter` Enable the following checkboxes: - `Connect Wii Remotes for Emulated Controllers` - `Continuous Scanning` ### Step 4: Syncing the Wiimotes - Connect the Wiimote when a game is launched. - Reconnect every time when launching a new game. - Press `1` and `2` together on the Wiimote or the `Sync Button` (under the backplate) when launching a game. - Sometimes, press the `Sync Button` on the Emulated Wii in the Dolphin Interface. RetroDECK has a built-in shortcut for this (`Alt + W`), accessible from the Steam Input Radial Menu system. ### Extra: Troubleshooting and Tips - Sit close to the device during initial pairing. - Pairing may take a while, especially with third-party Wiimotes. Try multiple times with the `Sync Button` + `Sync Wiimote`. - To play with normal controllers again, change back to `Emulate the Wii's Bluetooth adapter` setting and `Emulated Wii Remote`. - If the udev rules created in Step 2 are incorrect and Dolphin cannot get Bluetooth access, it will display an error message and crash. Ensure the file in `/etc/udev/rules.d/52-dolphin.rules` and its content are correct. --- ## How-to: Add Mods The `~/retrodeck/mods/dolphin/` / `~/retrodeck/mods/primehack/` that represents the `/load/GraphicMods` folder. **Note:** Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it. `GAME_ID` is different for every game. ### Enable Mods 1. Open up Dolphin or Primehack inside `RetroDECK Configurator` by pressing `Open Emulator` - `Dolphin` / `Primehack`. 2. Press `Options` -> `Graphic Settings`. 3. `Enable Graphics Mods` and set it to `On`. ### Add the mods 1. Extract any mod files from compressed `.zip` or any other format into folders. 2. Go into mods folders, they contain folders that are all named by `GAME_ID`. 3. Move the mods into the right folder: **Dolphin:** `~/retrodeck/mods/dolphin/` **Primehack:** `~/retrodeck/mods/primehack/` If all is correct the mods should be loaded on next game launch. --- ## How-to: Add Texture Packs? Primehack is based on Dolphin so the method is the same. The `~/retrodeck/texture_packs/dolphin/` & `~/retrodeck/texture_packs/primehack/` represents the `/load/Textures` folder. Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it. `GAME_ID` is different for every game. ## Enable Custom Textures 1. Open up Dolphin or Primehack inside `RetroDECK Configurator` by pressing `Open Emulator` - `Dolphin` / `Primehack`. 2. Press `Options` -> `Graphic Settings` 3. `Load Custom Textures` & `Prefetch Custom Textures` and set them to `On`. ### Add the textures 1. Extract any texture pack files from compressed `.zip` or any other format into folders. 2. Go into texture pack folders, they contain folders that are all named by `GAME_ID`. 3. Move the textures into the right folder: **Dolphin:** `~/retrodeck/texture_packs/dolphin/` **Primehack:** `~/retrodeck/texture_packs/primehack/`
If all is correct the textures should be loaded on next game launch. --- ## How-to: Enable GameCube Boot Main Menu **Prerequisite:** Place the GameCube `IPL.bin` BIOS in the save folders (see above). 1. Open Dolphin or Primehack in `RetroDECK Configurator` by selecting `Open Emulator` -> `Dolphin` / `Primehack`. 2. Go to `Options` -> `Configuration` -> `GameCube` and uncheck `Skip Main Menu`.