Files
2025-11-22 22:38:54 +01:00

100 lines
4.7 KiB
Markdown

The Legend of Zelda: Skyward Sword
[![Build Status]][actions] ![Progress] ![DOL Progress] ![RELs Progress] [![Discord Badge]][discord]
=============
[Build Status]: https://github.com/zeldaret/ss/actions/workflows/build.yml/badge.svg
[actions]: https://github.com/zeldaret/ss/actions/workflows/build.yml
[Progress]: https://decomp.dev/zeldaret/ss.svg?mode=shield&measure=code&label=Code
[DOL Progress]: https://decomp.dev/zeldaret/ss.svg?mode=shield&measure=code&category=dol&label=DOL
[RELs Progress]: https://decomp.dev/zeldaret/ss.svg?mode=shield&measure=code&category=modules&label=RELs
[Discord Badge]: https://img.shields.io/discord/688807550715560050?color=%237289DA&logo=discord&logoColor=%23FFFFFF
[discord]: https://discord.zelda.deco.mp
This repository contains a work-in-progress decompilation of *The Legend of Zelda: Skyward Sword*
for the Nintendo Wii system.
This repository does **NOT** contain any game assets or assembly. An existing copy of the game is
required in order to contribute.
Currently, the only supported version of the game is `SOUE01`: the NTSC-U 1.0 version (USA).
## 🔗 Dependencies
If the following steps don't work for you, please refer to the
[dtk dependencies documentation](https://github.com/encounter/dtk-template/blob/main/docs/dependencies.md).
### Windows
On Windows, it's **highly recommended** to use native tooling. WSL or msys2 are **not** required.
When running under WSL, [objdiff](https://github.com/encounter/objdiff) is unable to get filesystem
notifications for automatic rebuilds.
- Install [Python](https://www.python.org/downloads/) and add it to `%PATH%`.
- Download [ninja](https://github.com/ninja-build/ninja/releases) and add it to `%PATH%`.
- Quick install via pip: `pip install ninja`
### macOS
- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages):
```sh
brew install ninja
```
[wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.
### Linux
- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages).
[wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.
## 🔧 Building
- Clone the repository:
```
git clone https://github.com/zeldaret/ss.git
```
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your `SOUE01` game ISO to `orig/SOUE01`.
- Right-click The Legend of Zelda: Skyward Sword game in Dolphin and select `Properties` to open
a new window containing various game properties
![The Legend of Zelda: Skyward Sword is selected in the Dolphin Emulator. The "right-click" context menu has been opened and the "Properties" option is highlighted.](assets/dolphin-game-properties.png)
- Select the `Filesystem` tab at the top of this new window (it should be the rightmost tab)
- Right-click the entry labelled `Data Partition` and select `Extract Entire Partition...`
![The Legend of Zelda: Skyward Sword's properties window in Dolphin with the "Filesystem" tab open. The entry named "Data Partition" is selected and the "right-click" context menu has been opened with the "Extract Entire Partition..." option highlighted.](assets/dolphin-extract-entire-partition.png)
- Extract the partition to `orig/SOUE01`
- To save space, the only necessary files are the following. Any others can be deleted:
- `sys/main.dol`
- `files/rels.arc`
- Run the configure script:
```
python configure.py
```
- Build the project with ninja:
```
ninja
```
## 🔬 Diffing
Once the initial build succeeds, an `objdiff.json` should exist in the root of this project.
Download the latest release of the object diffing tool, `objdiff`, from
[encounter/objdiff](https://github.com/encounter/objdiff).
Once `objdiff` is opened, set the `Project directory` by clicking on the `Settings` button near the
`Project` heading.
![The top-right of the "objdiff" program with the "Settings" button highlighted next to the "Project" heading.](assets/objdiff-project-settings.png)
The project settings window should have opened. At the top of this window, click the `Select`
button next to the `Project directory` heading.
![The top of the project settings window with the "Select" button highlighted next to the "Project directory" heading.](assets/objdiff-project-directory.png)
Select the root of this project and `objdiff` should now be fully setup. The configuration should be loaded automatically.
Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, `configure.py`, `splits.txt` or `symbols.txt`.
![An example of the "objdiff" program showing the diff of the "d_base" file from this project.](assets/objdiff-example.png)