mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-14 21:45:16 -05:00
e42b18cf71
* Fixed soh filters * add more makefile changes * almost ready * more updates * update * update * Update Makefiles to handle both platforms * Allow for overriding the CXX and CC executables * Restore original structure while supporting custom CXX flags * Remove some platform specific libs * Dynamic target name * Make X11 paths package-agnostic * Remove changes to `gfx_opengl.cpp` * Use OpenGL2 on MacOS instead of OpenGL3 * make it actually render something * render at least the first texture, still need to figure out the second one * Let’s use OpenGL 3 again * maybe this works to get the right texture? link's eyes still look off a bit * did this work? * set the platform to macos * actual numbers are right, but logic is ugly XXX/TODO, i know * add zlib to ldflags for ZAPDUtils * A bit of cleanup * Revert unneeded changes * Remove GL_CHECK * Fix issues with z64 branch * use an std::map instead of a giant array * three point filter fix (#2) * Fix mac compilation * fix audio for 64 bit * revert audio heap size, keep bigger pools * Add more Apple specific checks to our modifications * Add building instructions for macOS * Remove unecessary step from building instructions * Add missing SDL2 & GLEW to Linux LDLIBS * Update BUILDING.md Co-authored-by: BountyChocolate123456 <101743444+BountyChocolate123456@users.noreply.github.com> * Update soh/.gitignore to include other arch binaries Co-authored-by: BountyChocolate123456 <101743444+BountyChocolate123456@users.noreply.github.com> * Use right platform name for debugging window Co-authored-by: BountyChocolate123456 <101743444+BountyChocolate123456@users.noreply.github.com> * Fix stormlib on macos (arm64) * Simplify some of the ifdef checks * Revert an older no longer necessary fix * Remove remaining unecessary deviations * Update building instructions after StormLib changes * Feature: Use OpenGL 4.1 (#1) * Further tweak the BUILDING * Tidy up * reword -j message * Add Jenkins CI Support (#2) * Fix type issues * add target <appbundle> and <filledappbundle> add makefile targets to create an .app `filledappbundle` creates the target with the .otr included this should perhaps be moved to Application Support though * pull gcc's rpath from otool output * move make target to the end so it's not default * Add Jenkins and make exe in par with other platforms * Actually save build artefacts * Fix artefact path * Remove x11 mentions and linking (not used) * Update building instructions for generating app * use appsupport directory * Add new app icon * Update target to match macOS types * Update more audio types * fix null deref in Audio_PlayFanfare * Remove old import from z64 * address final nit with apple ifdefs Co-authored-by: KiritoDev <36680385+KiritoDv@users.noreply.github.com> Co-authored-by: Jeffrey Crowell <github@crowell.biz> Co-authored-by: BountyChocolate123456 <101743444+BountyChocolate123456@users.noreply.github.com>
88 lines
3.0 KiB
Markdown
88 lines
3.0 KiB
Markdown
# Building Ship of Harkinian
|
|
|
|
## Windows
|
|
|
|
1. Requires [Python](https://www.python.org/downloads/) >= 3.6.
|
|
2. Install [Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/vs/community/)
|
|
3. In the Visual Studio Installer, install `MSVC v142 - VS 2019 C++`.
|
|
4. Clone the Ship of Harkinian repository.
|
|
5. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice.
|
|
6. Run `OTRExporter/OTRExporter.sln`.
|
|
7. Switch the solution to `Release x64`.
|
|
8. Build the solution.
|
|
9. Launching `OTRExporter/extract_assets.py` will generate an `oot.otr` archive file in `OTRExporter/oot.otr`.
|
|
10. Run `soh/soh.sln`
|
|
11. Switch the solution to `Release x86`.
|
|
12. Build the solution.
|
|
13. Copy the `OTRExporter/oot.otr` archive file to `soh/Release`.
|
|
14. Launch `soh.exe`.
|
|
|
|
## Linux
|
|
|
|
```bash
|
|
# Clone the repo
|
|
git clone https://github.com/HarbourMasters/Shipwright.git
|
|
cd ShipWright
|
|
# Copy the baserom to the OTRExporter folder
|
|
cp <path to your ROM> OTRExporter
|
|
# Build the docker image
|
|
sudo docker build . -t soh
|
|
# Run the docker image with the working directory mounted to /soh
|
|
sudo docker run --rm -it -v $(pwd):/soh soh /bin/bash
|
|
```
|
|
Inside the Docker container:
|
|
```bash
|
|
# Clone and build StormLib
|
|
git clone https://github.com/ladislav-zezula/StormLib external/StormLib
|
|
cmake -B external/StormLib/build -S external/StormLib
|
|
cmake --build external/StormLib/build
|
|
cp external/StormLib/build/libstorm.a external
|
|
cp /usr/local/lib/libGLEW.a external
|
|
|
|
cd soh
|
|
# Extract the assets/Compile the exporter/Run the exporter
|
|
make setup -j$(nproc) OPTFLAGS=-O2 DEBUG=0
|
|
# Compile the code
|
|
make -j $(nproc) OPTFLAGS=-O2 DEBUG=0
|
|
```
|
|
|
|
## macOS
|
|
|
|
1. Requires `gcc@12, sdl2, libpng, glew, dylibbundler` (can be installed via brew, etc)
|
|
```bash
|
|
# Clone the repo
|
|
git clone https://github.com/HarbourMasters/Shipwright.git
|
|
cd ShipWright
|
|
# Copy the baserom to the OTRExporter folder
|
|
cp <path to your ROM> OTRExporter
|
|
|
|
cd soh
|
|
# Extract the assets/Compile the exporter/Run the exporter
|
|
# -jX defines number of cores to use for compilation - lower or remove entirely if having issues
|
|
make setup -j8 DEBUG=0 CC=gcc-12 CXX=g++-12
|
|
# Compile the code (watch the -j parameter as above)
|
|
make -j8 DEBUG=0 CC=gcc-12 CXX=g++-12
|
|
# Create macOS app bundle
|
|
make filledappbundle
|
|
```
|
|
9. Launch soh app in the soh folder!
|
|
|
|
# Compatible Roms
|
|
```
|
|
OOT_PAL_GC checksum 0x09465AC3
|
|
OOT_PAL_GC_DBG1 checksum 0x871E1C92 (debug non-master quest)
|
|
```
|
|
|
|
# OTRExporter Usage
|
|
|
|
The OTRExporter exports an `oot.otr` archive file which Ship of Harkinian requires to play.
|
|
|
|
Use the `extract_assets.py` script file to run the exporter using any of the following methods:
|
|
1) Double click on the script after placing one or more roms in the directory.
|
|
2) Drag & Drop a rom onto the script.
|
|
3) In a terminal run `python3 extract_assets.py` after placing one or more roms in the directory.
|
|
4) In a terminal run `python3 extract_assets.py <path_to_rom>`
|
|
|
|
If the script finds multiple roms the user is prompted which to use. Selection is done using the number keys and then pressing the carriage return key.
|
|
|