Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion OTRExporter
Submodule OTRExporter updated 139 files
62 changes: 49 additions & 13 deletions docs/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,30 @@
## Windows

Requires:
* At least 8GB of RAM (machines with 4GB have seen compiler failures)
* Visual Studio 2022 Community Edition with the C++ feature set
* One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
* The `MSVC v143 - VS 2022 C++ build tools` component of Visual Studio
* Python 3 (can be installed manually or as part of Visual Studio)
* Git (can be installed manually or as part of Visual Studio)
* Cmake (can be installed via chocolatey or manually)

- At least 8GB of RAM (machines with 4GB have seen compiler failures)
- Visual Studio 2022 Community Edition with the C++ feature set
- One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
- The `MSVC v143 - VS 2022 C++ build tools` component of Visual Studio
- Python 3 (can be installed manually or as part of Visual Studio)
- Git (can be installed manually or as part of Visual Studio)
- Cmake (can be installed via chocolatey or manually)

During installation, check the "Desktop development with C++" feature set:

![image](https://user-images.githubusercontent.com/30329717/183511274-d11aceea-7900-46ec-acb6-3f2cc110021a.png)
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v143 toolset. This is often done by default.
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v143 toolset. This is often done by default.

It is recommended that you install Python and Git standalone, the install process in VS Installer has given some issues in the past.

1. Clone the Ship of Harkinian repository

_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule update --init`` after cloning to pull in the libultraship submodule!_
_Note: Be sure to either clone with the `--recursive` flag or do `git submodule update --init` after cloning to pull in the libultraship submodule!_

2. After setup and initial build, use the built-in OTR extraction to make your oot.otr/oot-mq.otr files.

_Note: Instructions assume using powershell_

```powershell
# Navigate to the Shipwright repo within powershell. ie: cd "C:\yourpath\Shipwright"
cd Shipwright
Expand All @@ -45,26 +47,31 @@ cd Shipwright
```

### Developing SoH

With the cmake build system you have two options for working on the project:

#### Visual Studio

To develop using Visual Studio you only need to use cmake to generate the solution file:

```powershell
# Generates Ship.sln at `build/x64` for Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64
```

#### Visual Studio Code or another editor

To develop using Visual Studio Code or another editor you only need to open the repository in it.
To build you'll need to follow the instructions from the building section.

_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._

_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._


### Generating the distributable

After compiling the project you can generate the distributable by running:

```powershell
# Go to build folder
cd "build/x64"
Expand All @@ -73,45 +80,57 @@ cd "build/x64"
```

### Additional CMake Targets

#### Clean

```powershell
# If you need to clean the project you can run
C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target clean
```

#### Regenerate Asset Headers

```powershell
# If you need to regenerate the asset headers to check them into source
C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target ExtractAssetHeaders
```

## Linux

### Install dependencies

#### Debian/Ubuntu

```sh
# using gcc
apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev

# or using clang
apt-get install clang git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev
```

#### Arch

```sh
# using gcc
pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost

# or using clang
pacman -S clang git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost
```

#### Fedora

```sh
# using gcc
dnf install gcc gcc-c++ git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel boost-devel

# or using clang
dnf install clang git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel boost-devel
```

#### openSUSE

```sh
# using gcc
zypper in gcc gcc-c++ git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
Expand Down Expand Up @@ -150,7 +169,9 @@ cmake --build build-cmake
```

### Generate a distributable

After compiling the project you can generate a distributable by running of the following:

```bash
# Go to build folder
cd build-cmake
Expand All @@ -161,18 +182,23 @@ cpack -G External (creates appimage)
```

### Additional CMake Targets

#### Clean

```bash
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```

#### Regenerate Asset Headers

```bash
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
```

## macOS

Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake, tinyxml2, nlohmann-json, libzip` (can be installed via [homebrew](https://brew.sh/), macports, etc)

**Important: For maximum performance make sure you have ninja build tools installed!**
Expand Down Expand Up @@ -208,7 +234,9 @@ cmake --build build-cmake
```

### Generating a distributable

After compiling the project you can generate a distributable by running of the following:

```bash
# Go to build folder
cd build-cmake
Expand All @@ -217,21 +245,25 @@ cpack
```

### Additional CMake Targets

#### Clean

```bash
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```

#### Regenerate Asset Headers

```bash
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
```

## Switch

1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the switch build tools installed
2. Requires that you have the switch build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice

Expand All @@ -251,8 +283,9 @@ cmake --build build-switch --target soh_nro
```

## Wii U

1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the Wii U build tools installed
2. Requires that you have the Wii U build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice

Expand All @@ -265,13 +298,14 @@ cmake --build build-cmake --target ExtractAssets
# Setup cmake project for building for Wii U
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# Build project and generate rpx
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)

# Now you can run the executable in ./build-wiiu/soh/soh.rpx or the Wii U Homebrew Bundle in ./build-wiiu/soh/soh.wuhb
# To develop the project open the repository in VSCode (or your preferred editor)
```

# Compatible Roms

See [`supportedHashes.json`](supportedHashes.json)

## Getting CI to work on your fork
Expand All @@ -281,7 +315,9 @@ The CI works via [Github Actions](https://github.com/features/actions) where we
To get this step working on your fork, you'll need to add a machine to your own repository as a self-hosted runner via "Settings > Actions > Runners" in your repository settings. Make sure to add the 'asset-builder' tag to your newly added runner to assign it to run this step. To setup your runner as a service read the docs [here](https://docs.github.com/en/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service?platform=linux).

### Runner on Windows

You'll have to enable the ability to run unsigned scripts through PowerShell. To do this, open Powershell as administrator and run `set-executionpolicy remotesigned`. Most dependencies get installed as part of the CI process. You will also need to separately install 7z and add it to the PATH so `7z` can be run as a command. [Chocolatey](https://chocolatey.org/) or other package managers can be used to install it easily.

### Runner on UNIX systems

If you're on macOS or Linux take a look at `macports-deps.txt` or `apt-deps.txt` to see the dependencies expected to be on your machine.
Empty file.
8 changes: 5 additions & 3 deletions soh/assets/custom/accessibility/texts/kaleidoscope_eng.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"continue_game": "Continue playing?",
"assigned_to": "Assigned to $0",
"0": "Deku Stick - $0",
"1": "Deku Nut - $0",
"1": "Deez Nuts - $0",
"2": "Bomb - $0",
"3": "Fairy Bow - $0",
"4": "Fire Arrow",
Expand All @@ -30,7 +30,7 @@
"12": "Ice Arrow",
"13": "Farore's Wind",
"14": "Boomerang",
"15": "Lens of Truth",
"15": "Lens of Truthz",
"16": "Magic Beans - $0",
"17": "Megaton Hammer",
"18": "Light Arrow",
Expand Down Expand Up @@ -171,6 +171,8 @@
"153": "STICK UPGRADE 30",
"154": "NUT UPGRADE 30",
"155": "NUT UPGRADE 40",
"156": "Glider",
"161": "Glider",
"255": "",
"256": "Haunted Wasteland",
"257": "Gerudos Fortress",
Expand Down Expand Up @@ -230,4 +232,4 @@
"311": "Lon Lon Ranch",
"312": "Question Mark",
"313": "Ganon's Castle"
}
}
3 changes: 2 additions & 1 deletion soh/assets/custom/accessibility/texts/kaleidoscope_fra.json
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@
"153": "AMÉLIORATION BÂTON MOJO 30",
"154": "AMÉLIORATION NOIX MOJO 30",
"155": "AMÉLIORATION NOIX MOJO 40",
"161": "Planeur",
"255": "",
"256": "Désert Hanté",
"257": "Forteresse Gerudo",
Expand Down Expand Up @@ -230,4 +231,4 @@
"311": "Ranch Lon Lon",
"312": "Point d'interrogation",
"313": "Château de Ganon"
}
}
3 changes: 2 additions & 1 deletion soh/assets/custom/accessibility/texts/kaleidoscope_ger.json
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@
"153": "STAB UPGRADE 30",
"154": "NUß UPGRADE 30",
"155": "NUß UPGRADE 40",
"161": "Gleiter",
"255": "",
"256": "Gespensterwüste",
"257": "Gerudo-Festung",
Expand Down Expand Up @@ -230,4 +231,4 @@
"311": "Lon Lon-Farm",
"312": "Fragezeichen",
"313": "Teufelsturm"
}
}
Binary file not shown.
14 changes: 14 additions & 0 deletions soh/assets/custom/customitems/glider/gGliderDL
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="customitems/glider/gGliderDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="customitems/glider/mat_gGliderDL_m_Wing_f3d_002"/>
<CallDisplayList Path="customitems/glider/gGliderDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>

Loading
Loading