Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Branch with all my mods that aren't overhauls #8

Open
wants to merge 54 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
517e37d
Add arrow switching with customizable button
lilDavid Sep 28, 2022
6b981f1
Ask to Continue After Saving
lilDavid Aug 23, 2022
5222bcf
Enhancement: Catch Poes with bottles
lilDavid Nov 25, 2022
29d3056
Visual Small Key display
lilDavid Jun 22, 2023
5f0519d
Enhanced Iron Boots
lilDavid Aug 5, 2023
812d1d3
Overhaul item menu layout
lilDavid Nov 26, 2022
f0ed065
Update some graphics items
lilDavid Nov 26, 2023
b9c0ad3
Fix save file init with new layout
lilDavid Dec 21, 2023
6054697
S&Q: Restore save confirmation
lilDavid Dec 23, 2023
607928e
S&Q: Don't switch back to confirmation screen
lilDavid Dec 23, 2023
9f455c2
Use quest item cycle for magic arrows
lilDavid Dec 23, 2023
572b87b
Overhaul item menu rearrangement to be toggleable
lilDavid Dec 27, 2023
1d4a405
Make alt slot conversion arrays extern
lilDavid Dec 28, 2023
dccd4ef
Account for new item menu in presets
lilDavid Dec 28, 2023
d03471d
Re-add four-directional arrow selection
lilDavid Dec 28, 2023
f9bf9a3
Merge branches 'arrow_switch' and 'new_item_menu' into enhancement_mods
lilDavid Dec 28, 2023
07e18ee
Merge branches 'save_and_quit', 'poe_bottle_swing', 'visual_keys' and…
lilDavid Dec 28, 2023
fa8a0e2
[Rando] Fix Check Tracker Area Totals (#3758)
Malkierian Dec 31, 2023
96abadd
Update Boost download URL (#3776)
xoascf Dec 31, 2023
6cb3a83
Restore previous Boost download URL (#3809)
xoascf Jan 5, 2024
37b2fc0
Make noclip only effect player (#3788)
garrettjoecox Jan 6, 2024
02938cf
Fix Starting Triforce Piece Count (#3797)
Malkierian Jan 6, 2024
321c258
Fix Fire Temple Boss Door Logic (#3774)
inspectredc Jan 6, 2024
2179636
Use temporary mirror for Boost download URL (#3822)
xoascf Jan 8, 2024
8426cc9
Fix: Tektite texture not loading for death animation (#3808)
Archez Jan 15, 2024
861bd09
Adds a log statement to show the SoH version at startup, in case cras…
Malkierian Jan 15, 2024
db02870
Restore Original Scene Command Object List Behaviour (MacReady) (#3827)
inspectredc Jan 15, 2024
1da1b1a
Tweak: Improve pause menu dungeon map performance (#3773)
Archez Jan 15, 2024
dd5d808
Revert actor uncullZone related checks back to match decomp (#3828)
inspectredc Jan 15, 2024
63cf361
Fix: Move Ruto earring fix to graphic patch and fix Ganon fight rubbl…
Archez Jan 15, 2024
cb82e77
fix bombchu logic bugs (#3720)
Pepper0ni Feb 2, 2024
e3825ec
Unify defaults for reward count sliders with Greg As Reward so they n…
Malkierian Feb 2, 2024
7ef6a43
fix timestamp truncation (#3874)
Archez Feb 2, 2024
16ee20c
Renames Freecam to Free Look. (#3771)
Malkierian Feb 2, 2024
61cf2bd
No Magic Numbers for Preset Location Exclusions (#3801)
Malkierian Feb 2, 2024
2529dc5
Increase Door Cull range (#3888)
inspectredc Feb 2, 2024
bb1078e
Account for removed object dependency in Deku Scrub Leader (#3878)
Rozelette Feb 2, 2024
107a365
Add safety measure to Scene_CommandObjectList to prevent crash (#3904)
inspectredc Feb 16, 2024
11a0a00
Add `CVarClear` to appropriate sections of randomizer Locations and T…
Malkierian Feb 16, 2024
43fed2d
ci: pin switch docker image to known working version (#3917)
briaguya-ai Feb 16, 2024
0cb4cd1
Adds reset function to z_en_si (GS Token) to set getItemId to vanilla…
Malkierian Feb 16, 2024
3d3b8bf
Allow IsSaveLoaded to consider debug saves (#3929)
Archez Feb 16, 2024
cf6101f
Logic bug: child cannot climb forest temple to the straight hallway e…
Pepper0ni Feb 16, 2024
30a063b
[Tweak] Move Personal Notes to Save File (#3909)
Malkierian Feb 16, 2024
19af448
fix object unload using wrong index (#3949)
Archez Feb 20, 2024
ef9fc0a
fix endianess issue with camera setting data (#3950)
Archez Feb 20, 2024
ea1ffdd
Adds messageboxes to `no_ui` handling so they don't show if you have …
Malkierian Feb 29, 2024
358dd47
remove zapd extraction from mac launch script (#3981)
Archez Feb 29, 2024
b26f2b2
[UX Improvement] Catch save loading errors and notify user (#3979)
Malkierian Feb 29, 2024
fb6ea42
prevent remember save location in dungeons/boss rooms (#3983)
Archez Feb 29, 2024
ed9cb1d
Fix CVar evaluation for scummed checks being hidden. (#3985)
Malkierian Feb 29, 2024
368a901
Add Unix timestamp to renamed corrupted file to prevent trying to cop…
Malkierian Feb 29, 2024
612da02
Bump version to MacReady Foxtrot 8.0.5 (#3982)
garrettjoecox Feb 29, 2024
f6bc149
Merge tag 'tags/8.0.5' into enhancement_mods
lilDavid May 14, 2024
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 .github/workflows/generate-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ jobs:
needs: generate-soh-otr
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
container:
image: devkitpro/devkita64:latest
image: devkitpro/devkita64:20240120
steps:
- name: Install dependencies
run: |
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")

set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")

project(Ship VERSION 8.0.4 LANGUAGES C CXX)
set(PROJECT_BUILD_NAME "MacReady Echo" CACHE STRING "")
project(Ship VERSION 8.0.5 LANGUAGES C CXX)
set(PROJECT_BUILD_NAME "MacReady Foxtrot" CACHE STRING "")
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")

set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
Expand Down
2 changes: 1 addition & 1 deletion soh/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ endif()
include(FetchContent)
FetchContent_Declare(
Boost
URL https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.gz
URL https://archives.boost.io/release/1.81.0/source/boost_1_81_0.tar.gz
URL_HASH SHA256=205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6
SOURCE_SUBDIR "null" # Set to a nonexistent directory so boost is not built (we don't need to build it)
DOWNLOAD_EXTRACT_TIMESTAMP false # supress timestamp warning, not needed since the url wont change
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions soh/assets/soh_assets.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@ static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCo
static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx;

// textures
#define dgArrowIconTex "__OTR__textures/icon_item_static/gArrowIconTex"
static const ALIGN_ASSET(2) char gArrowIconTex[] = dgArrowIconTex;

#define dgFireArrowPower "__OTR__textures/icon_item_static/gFireArrowPower"
static const ALIGN_ASSET(2) char gFireArrowPowerTex[] = dgFireArrowPower;

#define dgIceArrowPower "__OTR__textures/icon_item_static/gIceArrowPower"
static const ALIGN_ASSET(2) char gIceArrowPowerTex[] = dgIceArrowPower;

#define dgLightArrowPower "__OTR__textures/icon_item_static/gLightArrowPower"
static const ALIGN_ASSET(2) char gLightArrowPowerTex[] = dgLightArrowPower;

#define dgDPad "__OTR__textures/parameter_static/gDPad"
static const ALIGN_ASSET(2) char gDPadTex[] = dgDPad;

Expand Down
1 change: 1 addition & 0 deletions soh/include/functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,7 @@ s32 Player_ActionToBottle(Player* player, s32 actionParam);
s32 Player_GetBottleHeld(Player* player);
s32 Player_ActionToExplosive(Player* player, s32 actionParam);
s32 Player_GetExplosiveHeld(Player* player);
bool Player_CanSwitchArrows(Player* player);
s32 func_8008F2BC(Player* player, s32 actionParam);
s32 Player_GetEnvironmentalHazard(PlayState* play);
void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic,
Expand Down
5 changes: 4 additions & 1 deletion soh/include/z64.h
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,6 @@ typedef struct {
/* 0x0134 */ char** doActionSegment;
/* 0x0138 */ u8* iconItemSegment;
/* 0x013C */ char** mapSegment;
char** mapSegmentName;
/* 0x0140 */ u8 mapPalette[32];
/* 0x0160 */ DmaRequest dmaRequest_160;
/* 0x0180 */ DmaRequest dmaRequest_180;
Expand Down Expand Up @@ -815,6 +814,10 @@ typedef struct {
/* 0x026C */ u8 dinsNayrus; // "m_magic"; din's fire and nayru's love
/* 0x026D */ u8 all; // "another"; enables all item restrictions
} restrictions;
// #region SOH [General]
/* */ char* mapSegmentName[2]; // Tracks the map segment texture by OTR sig name
/* */ u8 mapPalettesPulse[40][32]; // Used to have unique pointers per map pulse color for the shader backend. 40 for map pulse timer x2
// #endregion
} InterfaceContext; // size = 0x270

typedef struct {
Expand Down
234 changes: 0 additions & 234 deletions soh/macosx/soh-macos.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,247 +7,13 @@ export RESPATH="${SNAME%/MacOS*}/Resources"
export LIBPATH="${SNAME%/MacOS*}/Frameworks"
export DYLD_FALLBACK_LIBRARY_PATH="$LIBPATH"

remap_hashes ()
{
# Remap v64 and n64 hashes to their z64 hash equivalent
# ZAPD will handle converting the data into z64 format
case "$ROMHASH" in
a9059b56e761c9034fbe02fe4c24985aaa835dac) # v64
ROMHASH=cee6bc3c2a634b41728f2af8da54d9bf8cc14099
;;
24708102dc504d3f375a37f4ae4e149c167dc515) # n64
ROMHASH=cee6bc3c2a634b41728f2af8da54d9bf8cc14099
;;
580dd0bd1b6d2c51cc20a764eece84dba558964c) # v64
ROMHASH=0227d7c0074f2d0ac935631990da8ec5914597b4
;;
d6342c59007e57c1194661ec6880b2f078403f4e) # n64
ROMHASH=0227d7c0074f2d0ac935631990da8ec5914597b4
;;
d0bdc2eb320668b4ba6893b9aefe4040a73123ff) # v64
ROMHASH=328a1f1beba30ce5e178f031662019eb32c5f3b5
;;
4946ab250f6ac9b32d76b21f309ebb8ebc8103d2) # n64
ROMHASH=328a1f1beba30ce5e178f031662019eb32c5f3b5
;;
663c34f1b2c05a09e5beffe4d0dcd440f7d49dc7) # v64
ROMHASH=cfbb98d392e4a9d39da8285d10cbef3974c2f012
;;
24c73d378b0620a380ce5ef9f2b186c6c157a68b) # n64
ROMHASH=cfbb98d392e4a9d39da8285d10cbef3974c2f012
;;
8ebf2e29313f44f2d49e5b4191971d09919e8e48) # v64
ROMHASH=f46239439f59a2a594ef83cf68ef65043b1bffe2
;;
4264bf7b875737b8fae77d52322a5099d051fc11) # n64
ROMHASH=f46239439f59a2a594ef83cf68ef65043b1bffe2
;;
973bc6fe56010a8d646166a1182a81b4f13b8cf9) # v64
ROMHASH=50bebedad9e0f10746a52b07239e47fa6c284d03
;;
d327752c46edc70ff3668b9514083dbbee08927c) # v64
ROMHASH=50bebedad9e0f10746a52b07239e47fa6c284d03
;;
ecdeb1747560834e079c22243febea7f6f26ba3b) # v64
ROMHASH=079b855b943d6ad8bd1eb026c0ed169ecbdac7da
;;
f19f8662ec7abee29484a272a6fda53e39efe0f1) # n64
ROMHASH=079b855b943d6ad8bd1eb026c0ed169ecbdac7da
;;
ab519ce04a33818ce2c39b3c514a751d807a494a) # v64
ROMHASH=cfecfdc58d650e71a200c81f033de4e6d617a9f6
;;
c19a34f7646305e1755249fca2071e178bd7cd00) # n64
ROMHASH=cfecfdc58d650e71a200c81f033de4e6d617a9f6
;;
25e8ae79ea0839ca5c984473f7460d8040c36f9c) # v64
ROMHASH=517bd9714c73cb96c21e7c2ef640d7b55186102f
;;
166c02770d67fcc3954c443eb400a6a3573d3fc0) # n64
ROMHASH=517bd9714c73cb96c21e7c2ef640d7b55186102f
;;
esac
}

if [ ! -e "$SHIP_HOME" ]; then mkdir "$SHIP_HOME"; fi

if [ ! -e "$SHIP_HOME"/mods ]; then
mkdir -p "$SHIP_HOME"/mods
touch "$SHIP_HOME"/mods/custom_otr_files_go_here.txt
fi

# If either OTR doesn't exist kick off the OTR gen process
if [ ! -e "$SHIP_HOME"/oot.otr ] || [ ! -e "$SHIP_HOME"/oot-mq.otr ]; then

# If no ROMs exist kick off the file selection prompts
while [ ! -e "$SHIP_HOME"/*.*64 ] && [ ! -e "$SHIP_HOME"/oot*.otr ]; do

SHOULD_PROMPT_FOR_ROM=1
while [ $SHOULD_PROMPT_FOR_ROM -eq 1 ]; do
SHOULD_PROMPT_FOR_ROM=0
# Use osascript to prompt the user to chose a file
DROPROM=`osascript <<-EOF
set romFile to choose file of type {"b64","n64","v64","z64"} with prompt "Please select your ROM:"
return POSIX path of romFile
EOF`

# If no rom was selected, the user cancelled, so exit
if [[ -z $DROPROM ]] && [[ -z "$UPLOAD_ANOTHER_RESULT" ]]; then
echo "No ROM selected. Exiting..."
exit 1
elif [[ -z $DROPROM ]]; then
break;
fi

# If an invalid rom was selected, let the user know and ask to try again
ROMHASH="$(shasum "$DROPROM" | awk '{ print $1 }')"

remap_hashes

case "$ROMHASH" in
cee6bc3c2a634b41728f2af8da54d9bf8cc14099)
ROM_TYPE=0;;
0227d7c0074f2d0ac935631990da8ec5914597b4)
ROM_TYPE=0;;
328a1f1beba30ce5e178f031662019eb32c5f3b5)
ROM_TYPE=0;;
cfbb98d392e4a9d39da8285d10cbef3974c2f012)
ROM_TYPE=0;;
f46239439f59a2a594ef83cf68ef65043b1bffe2)
ROM_TYPE=1;;
50bebedad9e0f10746a52b07239e47fa6c284d03)
ROM_TYPE=1;;
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
ROM_TYPE=1;;
cfecfdc58d650e71a200c81f033de4e6d617a9f6)
ROM_TYPE=1;;
517bd9714c73cb96c21e7c2ef640d7b55186102f)
ROM_TYPE=1;;
*)
TRY_AGAIN_RESULT=`osascript <<-EOF
set alertText to "Incompatible ROM hash"
set alertMessage to "Incompatible ROM provided, would you like to try again?"
return display alert alertText \
message alertMessage \
as critical \
buttons {"Cancel", "Try Again"}
EOF`
if [[ "$TRY_AGAIN_RESULT" == "button returned:Try Again" ]]; then
SHOULD_PROMPT_FOR_ROM=1
continue;
else
echo "No ROM selected. Exiting..."
exit 1
fi
esac

cp "$DROPROM" "$SHIP_HOME"

# Ask user if they would also like to select the other variant (MQ/Vanilla)
if [ $ROM_TYPE -eq 0 ] && [[ -z "$UPLOAD_ANOTHER_RESULT" ]]; then
UPLOAD_ANOTHER_RESULT=`osascript <<-EOF
set alertText to "Success"
set alertMessage to "Would you also like to provide a Master Quest ROM?"
return display alert alertText \
message alertMessage \
buttons {"No", "Yes"}
EOF`
elif [[ -z "$UPLOAD_ANOTHER_RESULT" ]]; then
UPLOAD_ANOTHER_RESULT=`osascript <<-EOF
set alertText to "Success"
set alertMessage to "Would you also like to provide a Vanilla (Non Master Quest) ROM?"
return display alert alertText \
message alertMessage \
buttons {"No", "Yes"}
EOF`
fi

if [[ "$UPLOAD_ANOTHER_RESULT" == "button returned:Yes" ]]; then
UPLOAD_ANOTHER_RESULT="button returned:No"
SHOULD_PROMPT_FOR_ROM=1
continue;
fi
break
done
done

# At this point we should now have 1 or more valid roms in $SHIP_HOME directory

# Prepare tmp dir
for ROMPATH in "$SHIP_HOME"/*.*64
do
ASSETDIR="$(mktemp -d /tmp/assets-XXXXX)"
export ASSETDIR
cp -r "$RESPATH/assets" "$ASSETDIR"
mkdir -p "$ASSETDIR"/tmp
cp "$ROMPATH" "$ASSETDIR"/tmp/rom.z64
cd "$ASSETDIR" || return

# If an invalid rom was detected, let the user know
ROMHASH="$(shasum "$ASSETDIR"/tmp/rom.z64 | awk '{ print $1 }')"

remap_hashes

case "$ROMHASH" in
cee6bc3c2a634b41728f2af8da54d9bf8cc14099)
ROM=GC_NMQ_D
OTRNAME="oot.otr";;
0227d7c0074f2d0ac935631990da8ec5914597b4)
ROM=GC_NMQ_PAL_F
OTRNAME="oot.otr";;
328a1f1beba30ce5e178f031662019eb32c5f3b5)
ROM=N64_PAL_10
OTRNAME="oot.otr";;
cfbb98d392e4a9d39da8285d10cbef3974c2f012)
ROM=N64_PAL_11
OTRNAME="oot.otr";;
f46239439f59a2a594ef83cf68ef65043b1bffe2)
ROM=GC_MQ_PAL_F
OTRNAME="oot-mq.otr";;
50bebedad9e0f10746a52b07239e47fa6c284d03)
ROM=GC_MQ_D
OTRNAME="oot-mq.otr";;
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
ROM=GC_MQ_D
OTRNAME="oot-mq.otr";;
cfecfdc58d650e71a200c81f033de4e6d617a9f6)
ROM=GC_MQ_D
OTRNAME="oot-mq.otr";;
517bd9714c73cb96c21e7c2ef640d7b55186102f)
ROM=GC_MQ_D
OTRNAME="oot-mq.otr";;
*)
osascript -e 'display notification "One or more invalid ROM provided" with title "Ship Of Harkinian"'
rm -r "$ASSETDIR"
cd "$SNAME"
continue;
esac

# Only generate OTR if we don't have on of this type yet
if [ -e "$SHIP_HOME"/"$OTRNAME" ]; then
rm -r "$ASSETDIR"
cd "$SNAME"
continue;
fi

osascript -e 'display notification "Generating OTR..." with title "Ship Of Harkinian"'
assets/extractor/ZAPD.out ed -i assets/extractor/xmls/"${ROM}" -b tmp/rom.z64 -fl assets/extractor/filelists -o placeholder -osf placeholder -gsf 1 -rconf assets/extractor/Config_"${ROM}".xml -se OTR --portVer "@CMAKE_PROJECT_VERSION@"
if [ -e "$ASSETDIR"/oot.otr ]; then
osascript -e 'display notification "OTR successfully generated" with title "Ship Of Harkinian"'
cp "$ASSETDIR"/oot.otr "$SHIP_HOME"/"$OTRNAME"
rm -r "$ASSETDIR"
cd "$SNAME"
fi
done

if [ ! -e "$SHIP_HOME"/oot*.otr ]; then
osascript -e 'display notification "OTR failed to generate" with title "Ship Of Harkinian"'
exit 1;
fi
fi

cd "$SNAME"

arch_name="$(uname -m)"
launch_arch="arm64"
if [ "${arch_name}" = "x86_64" ] && [ "$(sysctl -in sysctl.proc_translated)" != "1" ]; then
Expand Down
Loading
Loading