From e42b18cf71c828cbab9b2dca4d74c3c554b2acc7 Mon Sep 17 00:00:00 2001 From: David Chavez Date: Wed, 22 Jun 2022 20:59:21 +0200 Subject: [PATCH] Add Support for macOS (#441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 and 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 Co-authored-by: BountyChocolate123456 <101743444+BountyChocolate123456@users.noreply.github.com> --- .gitignore | 7 +- BUILDING.md | 21 ++++ Jenkinsfile | 34 ++++++ OTRExporter/OTRExporter/Makefile | 6 +- StormLib/src/SFileAddFile.cpp | 2 +- ZAPDTR/Makefile | 25 ++--- ZAPDTR/ZAPD/ZRom.cpp | 6 +- ZAPDTR/ZAPDUtils/Makefile | 3 +- ZAPDTR/lib/libgfxd/Makefile | 1 + libultraship/Makefile | 17 ++- libultraship/libultraship/Audio.cpp | 36 +++--- libultraship/libultraship/Audio.h | 4 +- .../libultraship/Lib/Fast3D/gfx_opengl.cpp | 88 ++++++++++++++- libultraship/libultraship/Lib/Fast3D/gfx_pc.h | 1 + .../libultraship/Lib/Fast3D/gfx_sdl2.cpp | 15 ++- .../Lib/ImGui/backends/imgui_impl_sdl.cpp | 12 +- libultraship/libultraship/SDLAudioPlayer.h | 4 + libultraship/libultraship/SDLController.h | 4 + libultraship/libultraship/SohImGuiImpl.cpp | 6 + libultraship/libultraship/Window.cpp | 4 + soh/.gitignore | 9 +- soh/Makefile | 106 ++++++++++++++++-- soh/include/functions.h | 2 + soh/include/z64item.h | 2 +- soh/macosx/Info.plist | 35 ++++++ soh/macosx/PkgInfo | 1 + soh/macosx/appsupport.m | 26 +++++ soh/macosx/launcher.sh | 9 ++ soh/macosx/sohIcon.png | Bin 0 -> 142622 bytes soh/soh/OTRGlobals.cpp | 5 + soh/src/buffers/heaps.c | 2 + soh/src/code/code_800EC960.c | 17 ++- 32 files changed, 441 insertions(+), 69 deletions(-) create mode 100644 soh/macosx/Info.plist create mode 100644 soh/macosx/PkgInfo create mode 100644 soh/macosx/appsupport.m create mode 100755 soh/macosx/launcher.sh create mode 100644 soh/macosx/sohIcon.png diff --git a/.gitignore b/.gitignore index 5fb41fae4..5769df64d 100644 --- a/.gitignore +++ b/.gitignore @@ -399,4 +399,9 @@ ZAPDUtils/build/ ZAPD/BuildInfo.h DebugObj/* -ReleaseObj/* \ No newline at end of file +ReleaseObj/* +.tags +tags +oot.otr +oot_save.sav +shipofharkinian.ini diff --git a/BUILDING.md b/BUILDING.md index 1f9d9fcc5..d6ffb26bf 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -46,6 +46,27 @@ make setup -j$(nproc) OPTFLAGS=-O2 DEBUG=0 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 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 diff --git a/Jenkinsfile b/Jenkinsfile index 0134b2b5d..a2c4203cc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -122,5 +122,39 @@ pipeline { } } } + stage ('Build macOS') { + agent { + label "SoH-Mac-Builders" + } + steps { + checkout([ + $class: 'GitSCM', + branches: scm.branches, + doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations, + extensions: scm.extensions, + userRemoteConfigs: scm.userRemoteConfigs + ]) + catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { + sh ''' + cp ../../ZELOOTD.z64 OTRExporter/baserom_non_mq.z64 + + cd soh + make setup -j4 DEBUG=0 CC=gcc-12 CXX=g++-12 + make -j4 DEBUG=0 CC=gcc-12 CXX=g++-12 + + make -j4 appbundle + + mv ../README.md readme.txt + 7z a soh-mac.7z soh.app readme.txt + ''' + } + archiveArtifacts artifacts: 'soh/soh-mac.7z', followSymlinks: false, onlyIfSuccessful: true + } + post { + always { + step([$class: 'WsCleanup']) // Clean workspace + } + } + } } } \ No newline at end of file diff --git a/OTRExporter/OTRExporter/Makefile b/OTRExporter/OTRExporter/Makefile index 0046df18e..c3882b5e3 100644 --- a/OTRExporter/OTRExporter/Makefile +++ b/OTRExporter/OTRExporter/Makefile @@ -1,6 +1,6 @@ # Only used for standalone compilation, usually inherits these from the main makefile -CXX := g++ +CXX ?= g++ AR := ar FORMAT := clang-format-11 @@ -31,7 +31,7 @@ ifneq ($(LTO),0) CXXFLAGS += -flto endif -SRC_DIRS := $(shell find -type d -not -path "*build*") +SRC_DIRS := $(shell find . -type d -not -path "*build*") CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp)) H_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.h)) @@ -69,4 +69,4 @@ build/%.o: %.cpp $(LIB): $(O_FILES) $(AR) rcs $@ $^ --include $(D_FILES) \ No newline at end of file +-include $(D_FILES) diff --git a/StormLib/src/SFileAddFile.cpp b/StormLib/src/SFileAddFile.cpp index 1f7156e99..638037a1e 100644 --- a/StormLib/src/SFileAddFile.cpp +++ b/StormLib/src/SFileAddFile.cpp @@ -100,7 +100,7 @@ static int FillWritableHandle( pFileEntry->dwFlags = dwFlags | MPQ_FILE_EXISTS; // Initialize the file time, CRC32 and MD5 - assert(sizeof(hf->hctx) >= sizeof(hash_state)); + //assert(sizeof(hf->hctx) >= sizeof(hash_state)); memset(pFileEntry->md5, 0, MD5_DIGEST_SIZE); md5_init((hash_state *)hf->hctx); pFileEntry->dwCrc32 = crc32(0, Z_NULL, 0); diff --git a/ZAPDTR/Makefile b/ZAPDTR/Makefile index 9ff869f89..2e871b32f 100644 --- a/ZAPDTR/Makefile +++ b/ZAPDTR/Makefile @@ -7,12 +7,13 @@ DEBUG ?= 0 COPYCHECK_ARGS ?= LLD ?= 0 WERROR ?= 0 +UNAME := $(shell uname) # Use clang++ if available, else use g++ ifeq ($(shell command -v clang++ >/dev/null 2>&1; echo $$?),0) - CXX := clang++ + CXX ?= clang++ else - CXX := g++ + CXX ?= g++ endif INC := -I ZAPD -I lib/elfio -I lib/libgfxd -I lib/tinyxml2 -I ZAPDUtils @@ -44,8 +45,15 @@ ifneq ($(DEPRECATION_ON),0) endif # CXXFLAGS += -DTEXTURE_DEBUG -LDFLAGS := -lm -ldl -lpng \ - -L../StormLib/build -L../libultraship -lz -lbz2 -pthread -lpulse -lultraship -lstorm -lSDL2 -lGLEW -lGL -lX11 +LDFLAGS := -lm -ldl \ + -L../StormLib/build -L../libultraship -lbz2 -pthread -lultraship -lstorm + +ifeq ($(UNAME), Darwin) + LDFLAGS += $(shell pkg-config --libs glew libpng zlib) $(shell sdl2-config --libs) -framework OpenGL + INC += $(shell pkg-config --cflags libpng) +else + LDFLAGS += -lpng -lGL -lGLEW -lX11 -lz -lSDL2 -lpulse +endif # Use LLD if available. Set LLD=0 to not use it ifeq ($(shell command -v ld.lld >/dev/null 2>&1; echo $$?),0) @@ -56,21 +64,12 @@ ifneq ($(LLD),0) LDFLAGS += -fuse-ld=lld endif -UNAME := $(shell uname) UNAMEM := $(shell uname -m) ifneq ($(UNAME), Darwin) LDFLAGS += -Wl,-export-dynamic -lstdc++fs EXPORTERS := -Wl,--whole-archive ../OTRExporter/OTRExporter/OTRExporter.a -Wl,--no-whole-archive else EXPORTERS := -Wl,-force_load ../OTRExporter/OTRExporter/OTRExporter.a - ifeq ($(UNAMEM),arm64) - ifeq ($(shell brew list libpng > /dev/null 2>&1; echo $$?),0) - LDFLAGS += -L $(shell brew --prefix)/lib - INC += -I $(shell brew --prefix)/include - else - $(error Please install libpng via Homebrew) - endif - endif endif diff --git a/ZAPDTR/ZAPD/ZRom.cpp b/ZAPDTR/ZAPD/ZRom.cpp index 111888e86..f13a6e2f8 100644 --- a/ZAPDTR/ZAPD/ZRom.cpp +++ b/ZAPDTR/ZAPD/ZRom.cpp @@ -4,7 +4,7 @@ #include "Utils/Directory.h" #include "yaz0/yaz0.h" -#ifndef _MSC_VER +#ifdef __linux__ #include #endif #include @@ -17,6 +17,10 @@ namespace fs = std::filesystem; #define __bswap_32 _byteswap_ulong #define bswap_32 _byteswap_ulong #endif +#if defined __APPLE__ +#define __bswap32 __builtin_bswap32 +#define bswap32 __builtin_bswap32 +#endif // ROM DMA Table Start #define OOT_OFF_NTSC_10_RC 0x7430 diff --git a/ZAPDTR/ZAPDUtils/Makefile b/ZAPDTR/ZAPDUtils/Makefile index aef678031..b9c4e29ad 100644 --- a/ZAPDTR/ZAPDUtils/Makefile +++ b/ZAPDTR/ZAPDUtils/Makefile @@ -1,7 +1,8 @@ # Only used for standalone compilation, usually inherits these from the main makefile +CXX ?= g++ CXXFLAGS ?= -Wall -Wextra -O2 -g -std=c++17 -SRC_DIRS := $(shell find -type d -not -path "*build*") +SRC_DIRS := $(shell find . -type d -not -path "*build*") CPP_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp)) H_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.h)) diff --git a/ZAPDTR/lib/libgfxd/Makefile b/ZAPDTR/lib/libgfxd/Makefile index b340ff5c0..5c3edbef4 100644 --- a/ZAPDTR/lib/libgfxd/Makefile +++ b/ZAPDTR/lib/libgfxd/Makefile @@ -1,3 +1,4 @@ +CC ?= gcc CFLAGS = -Wall -O2 -g UC_OBJ = uc_f3d.o uc_f3db.o uc_f3dex.o uc_f3dexb.o uc_f3dex2.o OBJ = gfxd.o $(UC_OBJ) diff --git a/libultraship/Makefile b/libultraship/Makefile index d5879e026..d894514b6 100644 --- a/libultraship/Makefile +++ b/libultraship/Makefile @@ -1,9 +1,10 @@ # Only used for standalone compilation, usually inherits these from the main makefile -CXX := g++ -CC := gcc +CXX ?= g++ +CC ?= gcc AR := ar FORMAT := clang-format-11 +UNAME := $(shell uname) ASAN ?= 0 DEBUG ?= 1 @@ -16,7 +17,8 @@ WARN := -Wall -Wextra -Werror \ -Wno-unused-function \ -Wno-parentheses \ -Wno-narrowing \ - -Wno-missing-field-initializers + -Wno-missing-field-initializers \ + -Wno-error=multichar CWARN := CXXWARN := -Wno-deprecated-enum-enum-conversion @@ -25,6 +27,10 @@ CXXFLAGS := $(WARN) $(CXXWARN) -std=c++20 -D_GNU_SOURCE -DENABLE_OPENGL -DSPDLOG CFLAGS := $(WARN) $(CWARN) -std=c99 -D_GNU_SOURCE -DENABLE_OPENGL -DSPDLOG_ACTIVE_LEVEL=0 CPPFLAGS := -MMD +ifeq ($(UNAME), Darwin) #APPLE + CPPFLAGS += $(shell pkg-config --cflags sdl2 glew) -framework OpenGL +endif + ifneq ($(DEBUG),0) CXXFLAGS += -g -D_DEBUG CFLAGS += -g -D_DEBUG @@ -40,7 +46,7 @@ ifneq ($(LTO),0) CFLAGS += -flto endif -SRC_DIRS := $(shell find -type d -not -path "*build*") +SRC_DIRS := $(shell find . -type d -not -path "*build*") CXX_FILES := \ $(shell find libultraship/Factories -name "*.cpp") \ @@ -71,6 +77,7 @@ INC_DIRS := $(addprefix -I, \ libultraship/Lib/Fast3D/U64 \ libultraship/Lib/spdlog \ libultraship/Lib/spdlog/include \ + libultraship/Lib/ImGui \ libultraship \ ../StormLib/src \ ) @@ -97,4 +104,4 @@ build/%.o: %.c $(LIB): $(O_FILES) $(AR) rcs $@ $^ --include $(D_FILES) \ No newline at end of file +-include $(D_FILES) diff --git a/libultraship/libultraship/Audio.cpp b/libultraship/libultraship/Audio.cpp index 6510a471e..6afe90c53 100644 --- a/libultraship/libultraship/Audio.cpp +++ b/libultraship/libultraship/Audio.cpp @@ -8,20 +8,20 @@ namespace Ship ResourceFile::ParseFileBinary(reader, res); - int seqDataSize = reader->ReadInt32(); + uint32_t seqDataSize = reader->ReadInt32(); seq->seqData.reserve(seqDataSize); - for (int i = 0; i < seqDataSize; i++) + for (uint32_t i = 0; i < seqDataSize; i++) seq->seqData.push_back(reader->ReadUByte()); seq->seqNumber = reader->ReadUByte(); seq->medium = reader->ReadUByte(); seq->cachePolicy = reader->ReadUByte(); - int numFonts = reader->ReadInt32(); + uint32_t numFonts = reader->ReadInt32(); - for (int i = 0; i < numFonts; i++) + for (uint32_t i = 0; i < numFonts; i++) seq->fonts.push_back(reader->ReadUByte()); } @@ -36,26 +36,26 @@ namespace Ship entry->unk_bit26 = reader->ReadByte(); entry->unk_bit25 = reader->ReadByte(); - int dataSize = reader->ReadInt32(); + uint32_t dataSize = reader->ReadInt32(); - for (int i = 0; i < dataSize; i++) + for (uint32_t i = 0; i < dataSize; i++) entry->data.push_back(reader->ReadUByte()); entry->loop.start = reader->ReadUInt32(); entry->loop.end = reader->ReadUInt32(); entry->loop.count = reader->ReadUInt32(); - int loopStateCnt = reader->ReadUInt32(); + uint32_t loopStateCnt = reader->ReadUInt32(); - for (int i = 0; i < loopStateCnt; i++) + for (uint32_t i = 0; i < loopStateCnt; i++) entry->loop.states.push_back(reader->ReadInt16()); entry->book.order = reader->ReadInt32(); entry->book.npredictors = reader->ReadInt32(); - int bookSize = reader->ReadInt32(); + uint32_t bookSize = reader->ReadInt32(); - for (int i = 0; i < bookSize; i++) + for (uint32_t i = 0; i < bookSize; i++) entry->book.books.push_back(reader->ReadInt16()); } @@ -72,11 +72,11 @@ namespace Ship soundFont->data2 = reader->ReadInt16(); soundFont->data3 = reader->ReadInt16(); - int drumCnt = reader->ReadInt32(); - int instrumentCnt = reader->ReadInt32(); - int sfxCnt = reader->ReadInt32(); + uint32_t drumCnt = reader->ReadInt32(); + uint32_t instrumentCnt = reader->ReadInt32(); + uint32_t sfxCnt = reader->ReadInt32(); - for (int i = 0; i < drumCnt; i++) + for (uint32_t i = 0; i < drumCnt; i++) { DrumEntry drum; drum.releaseRate = reader->ReadUByte(); @@ -92,7 +92,7 @@ namespace Ship soundFont->drums.push_back(drum); } - for (int i = 0; i < instrumentCnt; i++) + for (uint32_t i = 0; i < instrumentCnt; i++) { InstrumentEntry entry; @@ -143,7 +143,7 @@ namespace Ship soundFont->instruments.push_back(entry); } - for (int i = 0; i < sfxCnt; i++) + for (uint32_t i = 0; i < sfxCnt; i++) { SoundFontEntry* entry = new SoundFontEntry(); @@ -164,9 +164,9 @@ namespace Ship { std::vector envelopes; - int envelopeCnt = reader->ReadInt32(); + uint32_t envelopeCnt = reader->ReadInt32(); - for (int i = 0; i < envelopeCnt; i++) + for (uint32_t i = 0; i < envelopeCnt; i++) { AdsrEnvelope* env = new AdsrEnvelope(); env->delay = reader->ReadInt16(); diff --git a/libultraship/libultraship/Audio.h b/libultraship/libultraship/Audio.h index a63035e50..8c32af744 100644 --- a/libultraship/libultraship/Audio.h +++ b/libultraship/libultraship/Audio.h @@ -15,8 +15,8 @@ namespace Ship struct AdpcmBook { - /* 0x00 */ int32_t order; - /* 0x04 */ int32_t npredictors; + /* 0x00 */ uint32_t order; + /* 0x04 */ uint32_t npredictors; /* 0x08 */ std::vector books; // size 8 * order * npredictors. 8-byte aligned }; diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp index b2db3186a..83f4904f6 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp +++ b/libultraship/libultraship/Lib/Fast3D/gfx_opengl.cpp @@ -27,6 +27,9 @@ #include "SDL.h" #define GL_GLEXT_PROTOTYPES 1 #include "SDL_opengl.h" +#elif __APPLE__ +#include +#include #else #include #include @@ -67,6 +70,9 @@ struct Framebuffer { static map, struct ShaderProgram> shader_program_pool; static GLuint opengl_vbo; +#ifdef __APPLE__ +static GLuint opengl_vao; +#endif static bool current_depth_mask; static uint32_t frame_count; @@ -220,37 +226,67 @@ static struct ShaderProgram* gfx_opengl_create_and_load_new_shader(uint64_t shad size_t num_floats = 4; // Vertex shader +#ifdef __APPLE__ + append_line(vs_buf, &vs_len, "#version 410 core"); + append_line(vs_buf, &vs_len, "in vec4 aVtxPos;"); +#else append_line(vs_buf, &vs_len, "#version 110"); append_line(vs_buf, &vs_len, "attribute vec4 aVtxPos;"); +#endif for (int i = 0; i < 2; i++) { if (cc_features.used_textures[i]) { + #ifdef __APPLE__ + vs_len += sprintf(vs_buf + vs_len, "in vec2 aTexCoord%d;\n", i); + vs_len += sprintf(vs_buf + vs_len, "out vec2 vTexCoord%d;\n", i); + #else vs_len += sprintf(vs_buf + vs_len, "attribute vec2 aTexCoord%d;\n", i); vs_len += sprintf(vs_buf + vs_len, "varying vec2 vTexCoord%d;\n", i); + #endif num_floats += 2; for (int j = 0; j < 2; j++) { if (cc_features.clamp[i][j]) { + #ifdef __APPLE__ + vs_len += sprintf(vs_buf + vs_len, "in float aTexClamp%s%d;\n", j == 0 ? "S" : "T", i); + vs_len += sprintf(vs_buf + vs_len, "out float vTexClamp%s%d;\n", j == 0 ? "S" : "T", i); + #else vs_len += sprintf(vs_buf + vs_len, "attribute float aTexClamp%s%d;\n", j == 0 ? "S" : "T", i); vs_len += sprintf(vs_buf + vs_len, "varying float vTexClamp%s%d;\n", j == 0 ? "S" : "T", i); + #endif num_floats += 1; } } } } if (cc_features.opt_fog) { + #ifdef __APPLE__ + append_line(vs_buf, &vs_len, "in vec4 aFog;"); + append_line(vs_buf, &vs_len, "out vec4 vFog;"); + #else append_line(vs_buf, &vs_len, "attribute vec4 aFog;"); append_line(vs_buf, &vs_len, "varying vec4 vFog;"); + #endif num_floats += 4; } if (cc_features.opt_grayscale) { + #ifdef __APPLE__ + append_line(vs_buf, &vs_len, "in vec4 aGrayscaleColor;"); + append_line(vs_buf, &vs_len, "out vec4 vGrayscaleColor;"); + #else append_line(vs_buf, &vs_len, "attribute vec4 aGrayscaleColor;"); append_line(vs_buf, &vs_len, "varying vec4 vGrayscaleColor;"); + #endif num_floats += 4; } for (int i = 0; i < cc_features.num_inputs; i++) { + #ifdef __APPLE__ + vs_len += sprintf(vs_buf + vs_len, "in vec%d aInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); + vs_len += sprintf(vs_buf + vs_len, "out vec%d vInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); + #else vs_len += sprintf(vs_buf + vs_len, "attribute vec%d aInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); vs_len += sprintf(vs_buf + vs_len, "varying vec%d vInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); + #endif num_floats += cc_features.opt_alpha ? 4 : 3; } append_line(vs_buf, &vs_len, "void main() {"); @@ -277,26 +313,50 @@ static struct ShaderProgram* gfx_opengl_create_and_load_new_shader(uint64_t shad append_line(vs_buf, &vs_len, "}"); // Fragment shader - append_line(fs_buf, &fs_len, "#version 130"); +#ifdef __APPLE__ + append_line(fs_buf, &fs_len, "#version 410 core"); +#else + append_line(fs_buf, &fs_len, "#version 120"); +#endif //append_line(fs_buf, &fs_len, "precision mediump float;"); for (int i = 0; i < 2; i++) { if (cc_features.used_textures[i]) { + #ifdef __APPLE__ + fs_len += sprintf(fs_buf + fs_len, "in vec2 vTexCoord%d;\n", i); + #else fs_len += sprintf(fs_buf + fs_len, "varying vec2 vTexCoord%d;\n", i); + #endif for (int j = 0; j < 2; j++) { if (cc_features.clamp[i][j]) { + #ifdef __APPLE__ + fs_len += sprintf(fs_buf + fs_len, "in float vTexClamp%s%d;\n", j == 0 ? "S" : "T", i); + #else fs_len += sprintf(fs_buf + fs_len, "varying float vTexClamp%s%d;\n", j == 0 ? "S" : "T", i); + #endif } } } } if (cc_features.opt_fog) { + #ifdef __APPLE__ + append_line(fs_buf, &fs_len, "in vec4 vFog;"); + #else append_line(fs_buf, &fs_len, "varying vec4 vFog;"); + #endif } if (cc_features.opt_grayscale) { + #ifdef __APPLE__ + append_line(fs_buf, &fs_len, "in vec4 vGrayscaleColor;"); + #else append_line(fs_buf, &fs_len, "varying vec4 vGrayscaleColor;"); + #endif } for (int i = 0; i < cc_features.num_inputs; i++) { + #ifdef __APPLE__ + fs_len += sprintf(fs_buf + fs_len, "in vec%d vInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); + #else fs_len += sprintf(fs_buf + fs_len, "varying vec%d vInput%d;\n", cc_features.opt_alpha ? 4 : 3, i + 1); + #endif } if (cc_features.used_textures[0]) { append_line(fs_buf, &fs_len, "uniform sampler2D uTex0;"); @@ -316,7 +376,11 @@ static struct ShaderProgram* gfx_opengl_create_and_load_new_shader(uint64_t shad } if (current_filter_mode == THREE_POINT) { + #if __APPLE__ + append_line(fs_buf, &fs_len, "#define TEX_OFFSET(off) texture(tex, texCoord - (off)/texSize)"); + #else append_line(fs_buf, &fs_len, "#define TEX_OFFSET(off) texture2D(tex, texCoord - (off)/texSize)"); + #endif append_line(fs_buf, &fs_len, "vec4 filter3point(in sampler2D tex, in vec2 texCoord, in vec2 texSize) {"); append_line(fs_buf, &fs_len, " vec2 offset = fract(texCoord*texSize - vec2(0.5));"); append_line(fs_buf, &fs_len, " offset -= step(1.0, offset.x + offset.y);"); @@ -330,10 +394,18 @@ static struct ShaderProgram* gfx_opengl_create_and_load_new_shader(uint64_t shad append_line(fs_buf, &fs_len, "}"); } else { append_line(fs_buf, &fs_len, "vec4 hookTexture2D(in sampler2D tex, in vec2 uv, in vec2 texSize) {"); + #if __APPLE__ + append_line(fs_buf, &fs_len, " return texture(tex, uv);"); + #else append_line(fs_buf, &fs_len, " return texture2D(tex, uv);"); + #endif append_line(fs_buf, &fs_len, "}"); } +#if __APPLE__ + append_line(fs_buf, &fs_len, "out vec4 outColor;"); +#endif + append_line(fs_buf, &fs_len, "void main() {"); for (int i = 0; i < 2; i++) { @@ -405,9 +477,17 @@ static struct ShaderProgram* gfx_opengl_create_and_load_new_shader(uint64_t shad if (cc_features.opt_invisible) { append_line(fs_buf, &fs_len, "texel.a = 0.0;"); } + #if __APPLE__ + append_line(fs_buf, &fs_len, "outColor = texel;"); + #else append_line(fs_buf, &fs_len, "gl_FragColor = texel;"); + #endif } else { + #if __APPLE__ + append_line(fs_buf, &fs_len, "outColor = vec4(texel, 1.0);"); + #else append_line(fs_buf, &fs_len, "gl_FragColor = vec4(texel, 1.0);"); + #endif } append_line(fs_buf, &fs_len, "}"); @@ -557,7 +637,6 @@ static void gfx_opengl_select_texture(int tile, GLuint texture_id) { glActiveTexture(GL_TEXTURE0 + tile); glBindTexture(GL_TEXTURE_2D, texture_id); } - static void gfx_opengl_upload_texture(const uint8_t *rgba32_buf, uint32_t width, uint32_t height) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, rgba32_buf); } @@ -636,6 +715,11 @@ static void gfx_opengl_init(void) { glGenBuffers(1, &opengl_vbo); glBindBuffer(GL_ARRAY_BUFFER, opengl_vbo); +#ifdef __APPLE__ + glGenVertexArrays(1, &opengl_vao); + glBindVertexArray(opengl_vao); +#endif + glEnable(GL_DEPTH_CLAMP); glDepthFunc(GL_LEQUAL); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h index 3be10a016..34fc4fcc4 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.h +++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.h @@ -2,6 +2,7 @@ #define GFX_PC_H #include +#include #include #include #include diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_sdl2.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_sdl2.cpp index 42ffd69eb..87940a1a3 100644 --- a/libultraship/libultraship/Lib/Fast3D/gfx_sdl2.cpp +++ b/libultraship/libultraship/Lib/Fast3D/gfx_sdl2.cpp @@ -13,6 +13,8 @@ #include "SDL.h" #define GL_GLEXT_PROTOTYPES 1 #include "SDL_opengl.h" +#elif __APPLE__ +#include #else #include #define GL_GLEXT_PROTOTYPES 1 @@ -119,7 +121,7 @@ static void set_fullscreen(bool on, bool call_callback) { } static uint64_t previous_time; -#ifndef __linux__ +#ifdef _WIN32 static HANDLE timer; #endif @@ -134,7 +136,14 @@ static void gfx_sdl_init(const char *game_name, bool start_in_fullscreen) { SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); -#ifndef __linux +#if defined(__APPLE__) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); // Always required on Mac + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); +#endif + +#ifdef _WIN32 timer = CreateWaitableTimer(nullptr, false, nullptr); #endif @@ -271,7 +280,7 @@ static inline void sync_framerate_with_timer(void) { const int64_t next = previous_time + 10 * FRAME_INTERVAL_US_NUMERATOR / FRAME_INTERVAL_US_DENOMINATOR; const int64_t left = next - t; if (left > 0) { -#ifdef __linux__ +#if defined __linux__ || defined __APPLE__ const timespec spec = { 0, left * 100 }; nanosleep(&spec, nullptr); #else diff --git a/libultraship/libultraship/Lib/ImGui/backends/imgui_impl_sdl.cpp b/libultraship/libultraship/Lib/ImGui/backends/imgui_impl_sdl.cpp index 61e6d99ac..0681a268b 100644 --- a/libultraship/libultraship/Lib/ImGui/backends/imgui_impl_sdl.cpp +++ b/libultraship/libultraship/Lib/ImGui/backends/imgui_impl_sdl.cpp @@ -66,11 +66,15 @@ // SDL // (the multi-viewports feature requires SDL features supported from SDL 2.0.4+. SDL 2.0.5+ is highly recommended) +#if defined(__APPLE__) +#include "SDL.h" +#include "SDL_syswm.h" +#include "SDL_stdinc.h" +#include +#else #include #include #include -#if defined(__APPLE__) -#include #endif #if SDL_VERSION_ATLEAST(2,0,4) && !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) && !(defined(__APPLE__) && TARGET_OS_IOS) @@ -865,7 +869,11 @@ static void ImGui_ImplSDL2_SwapBuffers(ImGuiViewport* viewport, void*) // Vulkan support (the Vulkan renderer needs to call a platform-side support function to create the surface) // SDL is graceful enough to _not_ need so we can safely include this. #if SDL_HAS_VULKAN +#if defined(__APPLE__) +#include "SDL_vulkan.h" +#else #include +#endif static int ImGui_ImplSDL2_CreateVkSurface(ImGuiViewport* viewport, ImU64 vk_instance, const void* vk_allocator, ImU64* out_vk_surface) { ImGui_ImplSDL2_ViewportData* vd = (ImGui_ImplSDL2_ViewportData*)viewport->PlatformUserData; diff --git a/libultraship/libultraship/SDLAudioPlayer.h b/libultraship/libultraship/SDLAudioPlayer.h index 05e4befd3..0bb6d3665 100644 --- a/libultraship/libultraship/SDLAudioPlayer.h +++ b/libultraship/libultraship/SDLAudioPlayer.h @@ -1,6 +1,10 @@ #pragma once #include "AudioPlayer.h" +#if __APPLE__ +#include +#else #include +#endif namespace Ship { class SDLAudioPlayer : public AudioPlayer { diff --git a/libultraship/libultraship/SDLController.h b/libultraship/libultraship/SDLController.h index fbffa478f..2493efbbc 100644 --- a/libultraship/libultraship/SDLController.h +++ b/libultraship/libultraship/SDLController.h @@ -1,6 +1,10 @@ #pragma once #include "Controller.h" +#if __APPLE__ +#include +#else #include +#endif #define INVALID_SDL_CONTROLLER_GUID (std::string("00000000000000000000000000000000")) diff --git a/libultraship/libultraship/SohImGuiImpl.cpp b/libultraship/libultraship/SohImGuiImpl.cpp index 674d4970d..41e8b9a81 100644 --- a/libultraship/libultraship/SohImGuiImpl.cpp +++ b/libultraship/libultraship/SohImGuiImpl.cpp @@ -137,7 +137,11 @@ namespace SohImGui { void ImGuiBackendInit() { switch (impl.backend) { case Backend::SDL: + #if defined(__APPLE__) + ImGui_ImplOpenGL3_Init("#version 410 core"); + #else ImGui_ImplOpenGL3_Init("#version 120"); + #endif break; #if defined(ENABLE_DX11) || defined(ENABLE_DX12) @@ -1327,6 +1331,8 @@ namespace SohImGui { #ifdef _WIN32 ImGui::Text("Platform: Windows"); +#elif __APPLE__ + ImGui::Text("Platform: macOS"); #else ImGui::Text("Platform: Linux"); #endif diff --git a/libultraship/libultraship/Window.cpp b/libultraship/libultraship/Window.cpp index d82f25e56..82506bd1e 100644 --- a/libultraship/libultraship/Window.cpp +++ b/libultraship/libultraship/Window.cpp @@ -18,7 +18,11 @@ #include "Lib/Fast3D/gfx_sdl.h" #include "Lib/Fast3D/gfx_opengl.h" #include "stox.h" +#if __APPLE__ +#include +#else #include +#endif #include #include #include diff --git a/soh/.gitignore b/soh/.gitignore index 5920cfba7..3c7bcce33 100644 --- a/soh/.gitignore +++ b/soh/.gitignore @@ -18,12 +18,16 @@ notes/ baserom/ docs/doxygen/ *.elf +*-arm64 +*-x86_64 *.sra *.z64 *.n64 *.v64 *.map *.dump +*.app/ +*.icns out.txt shipofharkinian.ini imgui.ini @@ -404,4 +408,7 @@ ZAPD/BuildInfo.h cvars.cfg DebugObj/* -ReleaseObj/* \ No newline at end of file +ReleaseObj/* + +# Junk from App Bundle +appsupport diff --git a/soh/Makefile b/soh/Makefile index 70670f201..43140dc95 100644 --- a/soh/Makefile +++ b/soh/Makefile @@ -1,9 +1,11 @@ -CXX := g++ -CC := gcc +CXX ?= g++ +CC ?= gcc LD := lld AR := ar FORMAT := clang-format-11 ZAPD := ../ZAPDTR/ZAPD.out +UNAME := $(shell uname) +UNAMEM := $(shell uname -m) LIBULTRASHIP := ../libultraship/libultraship.a ZAPDUTILS := ../ZAPDTR/ZAPDUtils/ZAPDUtils.a @@ -17,11 +19,22 @@ LTO ?= 0 WARN := \ -Wno-return-type \ -funsigned-char \ - -mhard-float -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-strict-aliasing -fno-inline-functions -fno-inline-small-functions -fno-toplevel-reorder -ffreestanding -fwrapv \ + -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-strict-aliasing -fno-inline-functions -fno-inline-small-functions -fno-toplevel-reorder -ffreestanding -fwrapv \ -CXXFLAGS := $(WARN) -std=c++20 -D_GNU_SOURCE -fpermissive -no-pie -nostdlib -msse2 -mfpmath=sse -CFLAGS := $(WARN) -std=c99 -D_GNU_SOURCE -no-pie -nostdlib -msse2 -mfpmath=sse +CXXFLAGS := $(WARN) -std=c++20 -D_GNU_SOURCE -fpermissive -no-pie -nostdlib +CFLAGS := $(WARN) -std=c99 -D_GNU_SOURCE -no-pie -nostdlib LDFLAGS := + +ifeq ($(UNAME), Linux) #LINUX + CXXFLAGS += -mhard-float -msse2 -mfpmath=sse + CFLAGS += -mhard-float -msse2 -mfpmath=sse +endif + +ifeq ($(UNAME), Darwin) #APPLE + CXXFLAGS += $(shell pkg-config --cflags sdl2) $(shell sdl2-config --cflags) $(shell pkg-config --cflags glew) -framework OpenGL + CFLAGS += $(shell pkg-config --cflags sdl2) $(shell sdl2-config --cflags) $(shell pkg-config --cflags glew) -framework OpenGL +endif + CPPFLAGS := -MMD ifneq ($(DEBUG),0) @@ -41,7 +54,13 @@ ifneq ($(LTO),0) LDFLAGS += -flto endif +ifeq ($(UNAME), Linux) #LINUX TARGET := soh.elf +endif + +ifeq ($(UNAME), Darwin) #APPLE +TARGET := soh-$(UNAMEM) +endif INC_DIRS := $(addprefix -I, \ . \ @@ -56,26 +75,52 @@ INC_DIRS := $(addprefix -I, \ ../libultraship/libultraship/Lib/Fast3D/U64/PR \ ) +ifeq ($(UNAME), Linux) #LINUX + INC_DIRS += $(addprefix -I, \ + /opt/X11/include \ +) +endif + LDDIRS := $(addprefix -L, \ ../libultraship/ \ ) +ifeq ($(UNAME), Linux) #LINUX + LDDIRS += $(addprefix -L, \ + /opt/X11/lib \ +) +endif + LDLIBS := \ $(ZAPDUTILS) \ $(LIBSTORM) \ $(addprefix -l, \ - X11 \ dl \ bz2 \ z \ pthread \ atomic \ + ultraship \ +) + +ifeq ($(UNAME), Linux) #LINUX +LDLIBS += \ + $(addprefix -l, \ + X11 \ SDL2 \ GL \ GLEW \ - pulse\ - ultraship \ + pulse \ +) +endif + +ifeq ($(UNAME), Darwin) #APPLE +LDLIBS += \ + $(addprefix -framework, \ + OpenGL \ ) \ + $(shell sdl2-config --libs) $(shell pkg-config --libs glew) +endif ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*") ASSET_FILES_XML := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.xml)) @@ -114,6 +159,14 @@ O_FILES := \ $(CXX_FILES:%.cpp=build/%.o) D_FILES := $(O_FILES:%.o=%.d) +# Apple App Bundle +APPNAME=soh +APPBUNDLE=$(APPNAME).app +APPBUNDLECONTENTS=$(APPBUNDLE)/Contents +APPBUNDLEEXE=$(APPBUNDLECONTENTS)/MacOS +APPBUNDLERESOURCES=$(APPBUNDLECONTENTS)/Resources +APPBUNDLEICON=$(APPBUNDLECONTENTS)/Resources + # create build directory SRC_DIRS := $(shell find . -type d -a -not -path "*build*") $(shell mkdir -p $(SRC_DIRS:%=build/%)) @@ -157,4 +210,39 @@ $(TARGET): $(LIBULTRASHIP) $(TARGET): $(O_FILES) $(CXX) $^ -o $@ $(LDFLAGS) -fuse-ld=$(LD) $(LDDIRS) $(LDLIBS) --include $(D_FILES) \ No newline at end of file +-include $(D_FILES) + +appbundle: macosx/$(APPNAME).icns + rm -rf $(APPBUNDLE) + mkdir $(APPBUNDLE) + mkdir $(APPBUNDLE)/Contents + mkdir $(APPBUNDLE)/Contents/MacOS + mkdir $(APPBUNDLE)/Contents/Resources + cp macosx/Info.plist $(APPBUNDLECONTENTS)/ + cp macosx/PkgInfo $(APPBUNDLECONTENTS)/ + cp macosx/$(APPNAME).icns $(APPBUNDLEICON)/ + cp $(TARGET) $(APPBUNDLEEXE)/soh + cp macosx/launcher.sh $(APPBUNDLEEXE)/launcher.sh + clang -ObjC macosx/appsupport.m -arch arm64 -arch x86_64 -framework Foundation -o macosx/appsupport + cp macosx/appsupport $(APPBUNDLEEXE)/appsupport + otool -l $(TARGET) | grep -A 2 LC_RPATH | tail -n 1 | awk '{print $2}' | dylibbundler -od -b -x $(APPBUNDLEEXE)/soh -d $(APPBUNDLECONTENTS)/libs + +macosx/$(APPNAME).icns: macosx/$(APPNAME)Icon.png + rm -rf macosx/$(APPNAME).iconset + mkdir macosx/$(APPNAME).iconset + sips -z 16 16 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_16x16.png + sips -z 32 32 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_16x16@2x.png + sips -z 32 32 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_32x32.png + sips -z 64 64 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_32x32@2x.png + sips -z 128 128 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_128x128.png + sips -z 256 256 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_128x128@2x.png + sips -z 256 256 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_256x256.png + sips -z 512 512 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_256x256@2x.png + sips -z 512 512 macosx/$(APPNAME)Icon.png --out macosx/$(APPNAME).iconset/icon_512x512.png + cp macosx/$(APPNAME)Icon.png macosx/$(APPNAME).iconset/icon_512x512@2x.png + iconutil -c icns -o macosx/$(APPNAME).icns macosx/$(APPNAME).iconset + rm -r macosx/$(APPNAME).iconset + +filledappbundle: appbundle + cp ./oot.otr $(APPBUNDLEEXE)/oot.otr + diff --git a/soh/include/functions.h b/soh/include/functions.h index 955a47a58..78986cc85 100644 --- a/soh/include/functions.h +++ b/soh/include/functions.h @@ -60,7 +60,9 @@ void Locale_ResetRegion(void); u32 func_80001F48(void); u32 func_80001F8C(void); u32 Locale_IsRegionNative(void); +#ifndef __APPLE__ void __assert(const char* exp, const char* file, s32 line); +#endif void isPrintfInit(void); void osSyncPrintfUnused(const char* fmt, ...); //void osSyncPrintf(const char* fmt, ...); diff --git a/soh/include/z64item.h b/soh/include/z64item.h index 6cb5ec2a4..b42a2efc9 100644 --- a/soh/include/z64item.h +++ b/soh/include/z64item.h @@ -501,7 +501,7 @@ typedef enum { /* 0x72 */ GID_BULLET_BAG_50, /* 0x73 */ GID_SWORD_KOKIRI, /* 0x74 */ GID_SKULL_TOKEN_2, - /* 0x75 */ GID_MAX + /* 0x75 */ GID_MAXIMUM } GetItemDrawID; typedef enum { diff --git a/soh/macosx/Info.plist b/soh/macosx/Info.plist new file mode 100644 index 000000000..af3ea4de5 --- /dev/null +++ b/soh/macosx/Info.plist @@ -0,0 +1,35 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleName + Ship of Harkinian + CFBundleExecutable + launcher.sh + CFBundleGetInfoString + 2.0.0 + CFBundleIconFile + soh.icns + CFBundleIdentifier + com.shipofharkinian.ShipOfHarkinian + CFBundleDocumentTypes + + + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0.0 + CFBundleSignature + ZOoT + CFBundleVersion + 2.0.0 + NSHumanReadableCopyright + Copyright 2022 HarbourMasters. + LSMinimumSystemVersion + 10.3 + + diff --git a/soh/macosx/PkgInfo b/soh/macosx/PkgInfo new file mode 100644 index 000000000..8f7d36643 --- /dev/null +++ b/soh/macosx/PkgInfo @@ -0,0 +1 @@ +APPLZOoT diff --git a/soh/macosx/appsupport.m b/soh/macosx/appsupport.m new file mode 100644 index 000000000..a7df45e67 --- /dev/null +++ b/soh/macosx/appsupport.m @@ -0,0 +1,26 @@ +#import +int main(void) { + NSString *appSupportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) lastObject]; + //If there isn't an App Support Directory yet ... + if (![[NSFileManager defaultManager] fileExistsAtPath:appSupportDir isDirectory:NULL]) { + NSError *error = nil; + //Create one + if (![[NSFileManager defaultManager] createDirectoryAtPath:appSupportDir withIntermediateDirectories:YES attributes:nil error:&error]) { + NSLog(@"%@", error.localizedDescription); + } + else { + // *** OPTIONAL *** Mark the directory as excluded from iCloud backups + NSURL *url = [NSURL fileURLWithPath:appSupportDir]; + if (![url setResourceValue:@YES + forKey:NSURLIsExcludedFromBackupKey + error:&error]) + { + NSLog(@"Error excluding %@ from backup %@", url.lastPathComponent, error.localizedDescription); + } + else { + NSLog(@"Yay"); + } + } + } + printf("%s\n", [appSupportDir UTF8String]); +} diff --git a/soh/macosx/launcher.sh b/soh/macosx/launcher.sh new file mode 100755 index 000000000..ef22983de --- /dev/null +++ b/soh/macosx/launcher.sh @@ -0,0 +1,9 @@ +#!/bin/bash +APPPATH="${0%/*}" +cd "${APPPATH}" +APPPATH=$(pwd) +APPSUPPORT=$(./appsupport) +mkdir -p "${APPSUPPORT}/com.shipofharkinian.soh" +cd "${APPSUPPORT}/com.shipofharkinian.soh" +cp "${APPPATH}/oot.otr" . +${APPPATH}/soh diff --git a/soh/macosx/sohIcon.png b/soh/macosx/sohIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..736334dc91356a9af09b4f32907da2c593745fab GIT binary patch literal 142622 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 z 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 +#ifdef __APPLE__ +#include +#else #include +#endif + #include OTRGlobals* OTRGlobals::Instance; diff --git a/soh/src/buffers/heaps.c b/soh/src/buffers/heaps.c index b6f16ab11..410c843a5 100644 --- a/soh/src/buffers/heaps.c +++ b/soh/src/buffers/heaps.c @@ -1,6 +1,8 @@ #include "z64.h" #include +#ifndef __APPLE__ #include +#endif #ifndef _MSC_VER #include diff --git a/soh/src/code/code_800EC960.c b/soh/src/code/code_800EC960.c index 9a67981ea..8e1694b7c 100644 --- a/soh/src/code/code_800EC960.c +++ b/soh/src/code/code_800EC960.c @@ -4527,12 +4527,17 @@ void Audio_PlayFanfare(u16 seqId) sp26 = func_800FA0B4(SEQ_PLAYER_FANFARE); sp1C = func_800E5E84(sp26 & 0xFF, &sp20); sp18 = func_800E5E84(seqId & 0xFF, &sp20); - if ((sp26 == NA_BGM_DISABLED) || (*sp1C == *sp18)) { - D_8016B9F4 = 1; - } else { - D_8016B9F4 = 5; - Audio_SeqCmd1(SEQ_PLAYER_FANFARE, 0); - } + if (!sp1C || !sp18) { + // disable BGM, we're about to null deref! + D_8016B9F4 = 1; + } else { + if ((sp26 == NA_BGM_DISABLED) || (*sp1C == *sp18)) { + D_8016B9F4 = 1; + } else { + D_8016B9F4 = 5; + Audio_SeqCmd1(SEQ_PLAYER_FANFARE, 0); + } + } D_8016B9F6 = seqId; }