mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-15 05:55:07 -05:00
d4c1c40c1d
* hacks to align strings for clang... wow just wow
* start work to getting built with clang
* fix issues with struct constructors, all builds, doesn't link still
* fix some narrowing issues that clang complains about
* fix compliation of zapd
* fix null deref in VersionInfo
* builds with clang
* make stringbuilding use StringHelper instead of addition
* fix linking
* add CLANG SHIP overlay on clang built versions
* doesn't need to be volatile
* mark unknown strings as extern
* rename some stuff
* can't align extern
* hopefully fix compilation for everythign
* expandtab
* allow setting LD
* Revert "allow setting LD"
This reverts commit 711aba6db2
.
maybe to use lld it should be a LDFLAG?
* -Wno-deprecated-declarations is required for newer versions of clang
on macOS 13 beta sdk, the version of apple clang requires this
* Add jenkins support for clang
* Forward CXX flags to stormlib compilation
* Move GCC only flags to check
* use exports to set multiarch setup
* Fix Jenkins forever
* use make instead of cmake --build
add some flags to build with clang-11 as well
* address review coments
- rework extraction to allow multi thread
- misc readability cleanup
* update makefile to add WARN on linux+clang
Co-authored-by: David Chavez <david@dcvz.io>
3.0 KiB
3.0 KiB
Building Ship of Harkinian
Windows
- Requires Python >= 3.6.
- Install Visual Studio 2022 Community Edition
- In the Visual Studio Installer, install
MSVC v142 - VS 2019 C++
. - Clone the Ship of Harkinian repository.
- Place one or more compatible roms in the
OTRExporter
directory with namings of your choice. - Run
OTRExporter/OTRExporter.sln
. - Switch the solution to
Release x64
. - Build the solution.
- Launching
OTRExporter/extract_assets.py
will generate anoot.otr
archive file inOTRExporter/oot.otr
. - Run
soh/soh.sln
- Switch the solution to
Release x86
. - Build the solution.
- Copy the
OTRExporter/oot.otr
archive file tosoh/Release
. - Launch
soh.exe
.
Linux
# 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:
# 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
- Requires Xcode (or xcode-tools) &&
sdl2, libpng, glew, dylibbundler
(can be installed via brew, etc)
# 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
# Compile the code (watch the -j parameter as above)
make -j8 DEBUG=0
# Create macOS app bundle
make filledappbundle
- 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:
- Double click on the script after placing one or more roms in the directory.
- Drag & Drop a rom onto the script.
- In a terminal run
python3 extract_assets.py
after placing one or more roms in the directory. - 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.