Compare commits

..

222 commits

Author SHA1 Message Date
Pepe20129
7b4df9bdb2
Boss Rush cleanup (#5652)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Reduce stuff in the `.h`s & use `COND_HOOK` + variants

* Move some boss rush stuff from `z_file_choose.c`

* clang

* Update BossRush.cpp
2025-08-13 12:08:32 -07:00
Philip Dubé
fadae49977
shipinit bonk damage (#5653)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* shipinit bonk damage

* no initFunc
2025-08-13 09:46:36 -07:00
Pepe20129
ee20f7f762
Fix max count for TH keys (#5670)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-08-12 20:39:31 -07:00
nclok1405
ce38e03562
Allow console commands in debug save (#5675) 2025-08-12 20:38:44 -07:00
Philip Dubé
9cdffc080b
small typo fixes (#5680)
incorrect RR was tripping up my code generator
2025-08-12 20:36:51 -07:00
PurpleHato
c597e1c4ce
TWEAK: SoT Time Travel - Allow Swordless (#5716)
* Magic number + more modular

* tweak + switch

* forgot basic oot

* linebreak

* c-lang
2025-08-12 19:57:19 -07:00
Pepe20129
526d221c56
Add timestamps for remaining custom rando items (#5713) 2025-08-12 19:57:02 -07:00
Pepe20129
3e39a94083
Turn song text into a notification (#5712) 2025-08-12 19:56:52 -07:00
Pepe20129
6d4c6f8ea6
Rando: Remove ice trap effect from vanilla ice trap chests (#5711)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
2025-08-05 20:43:41 -07:00
Malkierian
429021d434
Add THRescuedAllCarpenters to reset list to prevent seed bleed of bridge. (#5725) 2025-08-05 18:28:19 -07:00
Malkierian
1d20000411
MPQ Support LUS Bump (#5570)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Adapt to changes to LUS regarding including MPQ support.

* CMake compile definitions are stupid.

* Don't manually close O2RArchive.

* Finish LUS bump, including SoH-side fix for font free crash.
2025-07-28 08:54:31 -07:00
aMannus
73209fcf2c
Merge pull request #5697 from Malkierian/blair-foxtrot-dev
Blair Foxtrot -> Develop
2025-07-25 11:56:33 +02:00
Malkierian
27d88c80b1 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into blair-foxtrot-dev 2025-07-24 10:04:06 -07:00
Malkierian
7d7072f717
Bump version to 9.0.5 (#5694) 2025-07-23 21:31:13 -07:00
Jordan Longstaff
ccf3d4b6a0
Add playing icon to improve Audio Editor indicator (#5686) 2025-07-23 20:48:01 -07:00
AltoXorg
d06cf6bf10
timesplitdata.json obey app directory (#5693) 2025-07-23 20:45:46 -07:00
Malkierian
d51e88b972
Rando Versioning (Again) (#5691)
* Adds Sulu/Spock rando block check (data not empty, but all sub-entries null), and put that and data being empty to the old file flow.
Also moves the `SaveFile` call to after everything else is loaded to preserve sohStats block.

* Add check for blank buildVersion in sohStats block for determining old saves.

* clang
2025-07-23 20:45:22 -07:00
Malkierian
c588d48672
Bump version to Blair Echo. (#5690) 2025-07-21 22:21:59 -07:00
Malkierian
35ad68578e
Prevent empty randomizer blocks from triggering the rando version flow. (#5689)
Clear SpoilerLog CVar when unsupported spoiler log is discovered on load.
2025-07-21 22:19:04 -07:00
Malkierian
5066fbf82c
Fix old file deletion. (#5688) 2025-07-21 17:57:40 -07:00
Malkierian
47c5a7f308
Bump version to Blair Delta 9.0.3, and fix a typo. (#5687) 2025-07-21 14:31:48 -07:00
Pepper0ni
37fb25d2b3
Fix logic for items given at run start due to settings (#5665)
* initial changes

* submodules

* fix master sword, skip zelda and skip epona logic

* I for one welcome our new clang overlords...
2025-07-21 11:00:39 -07:00
Shishu the Dragon
681e8dda26
Ivan: collect deku seeds (#5654) 2025-07-21 10:47:03 -07:00
Malkierian
a93b484cf3
Add Clear Devices button that will erase the controllers block. (#5683) 2025-07-21 10:44:53 -07:00
OtherBlue
dfa10383e4
Split Skip Pickup Messages (#5648)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Split Skip Pickup Messages

following ZFG's comment https://youtube.com/clip/UgkxF-LDaR-zyTkqSkqtP3dkLrCca_KGScIw?si=RJY9SIG8QKSiWgVl

splits the Skip Pickup Messages time saver for consumables and bottle pickups

* CVar updates I missed

* another cvar I missed
2025-07-02 21:35:49 -07:00
Malkierian
237dcfec74
Move all maps from Menu.h to the source files that use them. (#5644)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
2025-07-01 17:40:42 -07:00
Philip Dubé
ec54d02c0c
Spirit Flags (#5631)
1. skip cutscene delay for sun on floor & sun on block
2. persist sun on floor temp flag
3. persist big mirror being solved before platform lowered

2 removes need for weird bomb key logic
3 needed for shuffle doors
2025-07-01 12:04:26 -07:00
Philip Dubé
cddc7353af
tts: replace rupee count with key count in dungeons (except first 3 child dungeons) (#5642) 2025-07-01 10:54:39 -07:00
aMannus
48d2193fec
CrowdControl additions & improvements (#5104)
* CrowdControl additions & improvements

* Update after dev merge

* clang format

* Revert "clang format"

This reverts commit 1be5ad18f5.

* clang format
2025-07-01 10:54:26 -07:00
Philip Dubé
05a7f728e7
dev tools save editor: change dungeon drop down to current dungeon (#5635)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-07-01 10:30:02 -07:00
aMannus
db58c3a029
Fix clang-format ps1 script (#5637)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* Fix clang-format ps1 script

* use path variable
2025-06-30 16:56:55 -07:00
Philip Dubé
f80836d8b7
Enemy Randomizer: all the invis (#5621)
Fire Keese, Floormaster, Ice Keese, Keese, Redead, Stalfos
2025-06-30 14:52:45 -07:00
Philip Dubé
928bb7767b
reduce logical implications of closed forest (#5626)
* reduce logical implications of closed forest

closed forest should only be about kokiri blocking the way,
no need to try plug alternate forest escapes out

* revert adult deku being unlocked in forest without showing mido sword/shield
2025-06-30 14:52:02 -07:00
Malkierian
96d3b480b1
Merge pull request #5638 from Malkierian/blair-dev-6-30
Blair->Dev 6/30
2025-06-30 14:31:30 -07:00
Malkierian
7f3d2adc63 Fix whitespacing in presets. 2025-06-30 13:04:51 -07:00
Malkierian
015dcf2af1 Fix typo. 2025-06-30 10:58:49 -07:00
Malkierian
30d1932354 Re-add new preset items to new preset files. 2025-06-30 09:37:02 -07:00
Malkierian
002e8e9f09 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into develop 2025-06-30 09:28:11 -07:00
Malkierian
32683e2a74
Change early return in CheckTrackerLoadGame to check specifically for Boss Rush instead of Not Rando. (#5634)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
2025-06-29 19:12:04 -07:00
Philip Dubé
063fb2577f
cleanup, trying to speed up build (#5627)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-29 18:21:47 -07:00
Malkierian
16c3cb1adf
Tracker circle (#5632)
* Fix item tracker circle display.

* Add .o2r to .gitignore.

* clang
2025-06-29 18:06:21 -07:00
Philip Dubé
112fbc5a4b
trick: ledge clip into gtg (#5618)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* trick: ledge clip into gtg

* fix
2025-06-29 13:57:57 -07:00
Malkierian
a9b857469e
Fix Boss Rush scene/cutscene setup after Bongo/Twinrova. (#5623)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
Also prevent check tracker crash loading Boss Rush.
2025-06-28 17:48:21 -07:00
Eblo
9924ebbd05
Enhancement to double pause menu animation speed (#5615)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Add enhancement to speed up pause menu animation

* Rename CVar to FasterPauseMenu

* Rename kaleido to pause menu

* Rename register func to InitFasterPauseMenu
2025-06-28 07:50:28 -07:00
Malkierian
1161ce3546
Expand tooltip for Free Look to explain camera locks and scene reload. (#5624)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-28 07:50:06 -07:00
louist103
e15f8d395b
Backport 2ship streamed audio (#5457)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* Bring over changes from 2ship

# Conflicts:
#	.github/workflows/apt-deps.txt
#	soh/CMakeLists.txt
#	soh/soh/resource/importer/AudioSampleFactory.h
#	soh/soh/resource/importer/AudioSequenceFactory.cpp
#	soh/soh/resource/importer/AudioSequenceFactory.h
#	soh/soh/resource/importer/AudioSoundFontFactory.h

* Update xml format

* Format and fix mixer for Windows

* Fixes for new LUS

* Good ole clang-format
2025-06-27 17:15:02 -07:00
Philip Dubé
9e686ae6f6
Shuffles: use ObjectExtension system for rando object identity (#5603)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-25 22:00:53 -07:00
Eric Hoey
8b616c8709
first person to first-person (#5616)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-25 21:54:57 -07:00
Pepper0ni
1d24edaa92
Split Gerudo Fortress and fix break room logic errors (#5338)
* Separate HBA range

* Separate 4 rooftop regions

* Rest of rooftops

* Small cleanup

* Whoops

* Create `thieves_hideout.cpp` & move `gerudo_fortress.cpp`

* Ground and some inside

* More outside cleanup and more inside

* Kitchen

* Final tweaks

* Use `TH_` prefix for Thieves' Hideout locations

* Add clarifying images (+ `.xcf` source)

* Thieves' Hideout is overworld

* Fix `RC_GF_GS_TOP_FLOOR` & blue -> violet entrance

* Address review

* Update gerudo_fortress.cpp

* Address review

* Split "CarpenterRescue"

* Rename events

* Update logic.cpp

* Move from function to event

* Rename most of the regions

* Address review

* Add new conections

* update logic, get it working

* apply clang format

* undo clang format in logic files

* final reordering

* remove additions to .gitIgnore

* Fix some jump trick logic

* clean up ShufflePots

* fix submodules

* update for review and talk to jail and always gate PRs

* change thieves hideout to scene handling

* final fixes and update enum names and hint text

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-06-25 21:54:48 -07:00
Eric Hoey
63bd4ed565
cast to signed 16-bit to stop truncation (#5617) 2025-06-25 21:42:27 -07:00
Philip Dubé
c2e7adf915
more tricks (#4866)
* more tricks

1. big poe without epona
2. king dodongo with chu
3. morpha without hookshot
4. open underwater chests (ignore water temple usage for now because water logic is weird)
5. DC MQ stairs without stick, also bring over vanilla alternatives for stairs

rename RT_DC_STAIRCASE to RT_DC_STAIRS_WITH_BOW

* consistency
2025-06-25 09:33:47 -07:00
Jordan Longstaff
3b82b8eeff
Ruto no longer targetable with sitting down skip (#5611) 2025-06-25 09:27:45 -07:00
Eric Hoey
74560a360d
fix pot param (#5610) 2025-06-23 18:32:35 -07:00
louist103
040e0e1921
Tools update (#5454)
* Bump ZAPDTR & OTRExporter.
Changes to use o2r by default
Changes to the new player animation format

# Conflicts:
#	OTRExporter
#	ZAPDTR
#	soh/soh/OTRGlobals.cpp
#	soh/src/code/z_skelanime.c

* Fix actions

* Format

* Cherry pick ZAPDTR

* Update exporter

* Move configs to port

* Remove copy

* Remove more XML copies

* Remove extractor directory from actions builds.

* Fix OTRExporter for linux

* FIx ZAPD volatile

* Format

* Fix extractor?

* Fix linux

* Fix

* Remove appimage stuff

* Screnity now

* Remove ZAPD from install paths

* Remove soh.sh.in

* Fix linux

* Cleanups and use a thread for message box
2025-06-23 21:29:40 -04:00
Malkierian
4676242086
Fix dpad navigation on Quest Status pause screen. (#5607) 2025-06-23 16:02:04 -07:00
xxAtrain223
afde504a0f
Updated SpoilerFileExists to cache the results. (#5606) 2025-06-23 16:01:49 -07:00
xxAtrain223
17613d1f50
Fix Available Checks On Load (#5599)
* Setup call to RecalculateAvailableChecks instead of direct call.

* Remove RecalculateAvailableChecks from CheckTrackerSettingsWindow::DrawElement.
2025-06-23 15:52:17 -07:00
Philip Dubé
64f9e433da
Tag navi dive tricks as glitches (#5598) 2025-06-22 21:35:17 -07:00
Malkierian
e0ebc115ce
Initialize OTRGlobals' Context early to prevent non-portable crash during asset archive lookup. (#5605) 2025-06-22 16:32:37 -07:00
Malkierian
cf0ea3033e
Fix warning for euro symbol in CustomMessageManager.h. (#5604) 2025-06-22 12:41:13 -07:00
Malkierian
2d59721b7a
Small fixes to allow running and seed generation. (#5600)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
2025-06-19 22:10:06 -07:00
nclok1405
7ecefa8f90
Converted "Passage of Time on File Select" to ShipInit Hook (#5595) 2025-06-19 18:59:46 -07:00
nclok1405
7514bdc08b
Convert enemy-specific cheats "No ReDead/Gibdo Freeze" and "Keese/Guay don't Target You" to hooks (#5597)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-19 15:06:10 -07:00
Sirius902
3943242cb2
Dynamically construct weird frame data (#5195) 2025-06-19 15:05:57 -07:00
Schicksal88
517b52176c
German translation cleanup (#5471)
* German translation cleanup

- German ice trap names and code for it to show up. Changed the order of translations to english/french/german to make it consistent with item_list.cpp.
- German shops as those are now complete.
- German translation for ingame fileselect rando menu.
- Added function to mark an item as plural. This is necessary to have proper grammar in most german sentences. If an item has a € at the end of it and the sentence it get's inserted into has |singular|plural| forms defined, the singular part get's removed.
- Added the plural markers & |singular|plural| parts to the entire german script where it was necessary.
- Fixed grammar, typos, inconsistencies and now everything uses official Zelda-game names.
- Fixed vanilla/master quest map text

* ice trap fix

accidentally commented out french twice instead of spanish. fixed.

* German Randomizer

Some fix for Schicksal

* Fix number 2

Fix number 2 for Schicksal

* Update soh/soh/Enhancements/custom-message/CustomMessageManager.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* clang format

---------

Co-authored-by: amafresh <arminamayeh@gmail.com>
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-06-19 14:53:50 -07:00
Philip Dubé
7f3aac36b2
ShuffleFreestanding: ShipInit (#5583) 2025-06-19 14:53:15 -07:00
Philip Dubé
1e60c48e3a
a11y: linux tts with espeak-ng (#5428)
* a11y: linux tts with espeak-ng

* dlopen

* Show setting on Linux
2025-06-19 14:27:56 -07:00
Philip Dubé
4c31f2bc88
Extend RT_BLUE_FIRE_MUD_WALLS (#5215)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2025-06-19 13:43:39 -07:00
Philip Dubé
180d6a1b90
FasterShadowShip.cpp (#5114)
Makes boat 25x faster
2025-06-19 13:42:53 -07:00
Philip Dubé
561f151615
a11y: tts integration with randomizer start menu (#5414) 2025-06-19 13:42:00 -07:00
nclok1405
565d57112e
Japanese translation for Better Debug Warp Screen (#5491)
* Japanese translation for Better Debug Warp Screen

* Incorporate fixes by balloondude2 (except Shield/Treasure Chest Grave inconsistencies which I'm unsure how to handle that)

* Localize "Scene Selection" header for each language

* Added/Restored the ability to render Hiragana characters using GFXP_HIRAGANA macro
2025-06-19 13:41:41 -07:00
Philip Dubé
7f4c570a47
ShuffleFairies: ShipInit (#5582)
* ShuffleFairies: ShipInit

* fix big fairy items
2025-06-19 13:40:37 -07:00
Philip Dubé
073205c862
ShufflePots: ShipInit (#5584) 2025-06-19 13:40:24 -07:00
nclok1405
4f95ab3f46
Add/Restore the option to automatically boot into Debug Warp Screen (#5485)
* Added/Restored the option to automatically boot into Debug Warp Screen

* clang-formated

* Added a new hook and moved Boot To Debug Warp Screen to it

* clang

* Added DebugEnabled to initFunc's CVar list. This should prevent Debug Warp from being triggered when Boot to Debug Warp option is enabled but Debug Mode option is disabled.

* No longer hijacks CustomLogoTitle

* Disable "Boot Sequence" dropdown when Boot to Debug Warp Screen is enabled
2025-06-19 13:39:03 -07:00
Philip Dubé
c0ea595fa5
rando: always spawn gerudo guard behind gate (also fix gaurd typos) (#5399)
* rando: always spawn guard behind gate (also fix gaurd typos)

someone had seed where they had card so couldn't be caught to pass gate in reverse wasteland

* move guard spawn logic to hook
2025-06-19 13:38:11 -07:00
Philip Dubé
a9ede7d46e
SwitchTimerMultiplier: fix crash due to missing actor param (#5593) 2025-06-19 13:37:48 -07:00
Malkierian
be22c02d00
Reapply "Set Sample Rate to 32000 hz (#4780)" (#5234) (#5508)
This reverts commit feea299291.

Also applies rupee screech fix LL provided to 2ship.
2025-06-19 13:34:47 -07:00
Philip Dubé
81b3123586
timesavers: shipinit (#5416)
* timesavers: shipinit

* feedback

* intro skip not unconditional
2025-06-19 13:34:11 -07:00
Pepe20129
87c971372d
Change Region's scene string with a SceneId (#5398)
* Change region scene from string to sceneid

* Deduce `timePass` from scene

* Deduce `areas` from scene where possible

No possible for `RR_CASTLE_GROUNDS` & "link's pocket" areas

* Update zoras_fountain.cpp

* Applied clang format

* Address review

* Address review

* Clang format

* Fix pseudo regions

* Format

* Address review

* Address review
2025-06-19 13:32:39 -07:00
Philip Dubé
4c547416cc
replace MT RNG with PCG (#4973)
replace boost hashing with FNV-1a
removes boost as a dependency
2025-06-19 13:31:35 -07:00
Pepper0ni
b564148380
Add wallet to mask logic, clean up mask logic (#5567)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
2025-06-19 13:28:50 -07:00
Malkierian
a9a49ccbe6
Adds saving and loading for location exclusion, and hooks the check tracker up to return false from IsVisibleInCheckTracker if a location was excluded. (#5594) 2025-06-19 13:26:43 -07:00
Pepper0ni
2daf343755
Change excluded checks to have junk instead of non-advancment. (#5592)
* Change excluded checks to have junk instead of non-advancment

* loud frying pan noises
2025-06-19 13:26:30 -07:00
Malkierian
081338b9f9
Merge pull request #5577 from Malkierian/dev-blair-6-12
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
Blair -> Develop 6/12
2025-06-18 13:01:13 -07:00
Pepper0ni
b932b8f6c9
Clarify hint text for pots in interiors (#5591)
Some checks are pending
generate-builds / build-windows (push) Blocked by required conditions
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
* Clarify hint text for pots in interors

* Make dampe's pots text less like a naming error
2025-06-18 08:39:09 -07:00
Pepper0ni
19e9f39a9a
Hardcode spirit hands to be dungeon checks (#5590)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Hardcode spirit hands to be dungeon checks

* CLANG CLANG CLANG!
2025-06-16 15:29:46 -07:00
Pepper0ni
aa7693a103
fix various oversights with altar hint off (#5589) 2025-06-16 15:29:22 -07:00
Pepper0ni
f2bc7cd1dc
Fix rare crash in randomiser generation (#5585)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
2025-06-15 10:22:36 -07:00
xxAtrain223
620d08002c
RecalculateAvailableChecks Fix - IsSaveLoaded Guard (#5587)
* Added IsSaveLoaded guard clause to RecalculateAvailableChecks.

* Combined RecalculateAvailableChecks guard clauses.
2025-06-15 10:22:03 -07:00
Malkierian
35361c9e8d
Create macro to make All and None buttons for cutscene skips trigger ShipInit for each CVar changed. (#5576) 2025-06-15 10:20:09 -07:00
Philip Dubé
330e64180c
Difficulty: SwitchTimerMultiplier (#5555)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Difficulty: FireTimerMultiplier

Introduces slider to adjust timer on fire walls resetting switches

* rename, add more timers

* also shadow trial, dampe race, deku water

* avoid decrementing timer to 0, which with BgMizu can cause timer to go below 0 & break

* gtg eye statue

* also scale torches

* tooltip

* Limit difficulty: torches stop at -3 & shadow temple torch puzzle stops at -4

* put timer condition as should when convenient
2025-06-15 10:19:58 -07:00
Jordan Longstaff
b600836e4f
New options that affect feeding Jabu-Jabu (#5397)
* New options that affect feeding Jabu-Jabu

* Add hints for what Jabu-Jabu wants

* Roll back "key" settings to just closed/open, finish rando logic

* Revert "Add hints for what Jabu-Jabu wants"

This reverts commit 2a1974a669.

* Fix vanilla enhancement disabler
2025-06-15 10:19:52 -07:00
Pepper0ni
eefe7729ab
CanUse instead of HasItem for Hover Boots to reach jabu switch ledge (#5581)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* CanUse instead of HasItem for Hover Boots to reach jabu switch

* also fix a similar issue in fountain
2025-06-14 07:51:33 -07:00
Jordan Longstaff
ab9af742fa
Finish hint translations for fish by waterfall (#5466)
Some checks are pending
generate-builds / generate-soh-otr (push) Waiting to run
generate-builds / build-macos (push) Blocked by required conditions
generate-builds / build-linux (push) Blocked by required conditions
generate-builds / build-windows (push) Blocked by required conditions
* Finish hint translations for fish by waterfall

* Revise
2025-06-13 22:43:31 -07:00
Philip Dubé
213ea742eb
Gerudo Guards: offer to throw you in jail (#5390)
Some checks failed
generate-builds / generate-soh-otr (push) Has been cancelled
generate-builds / build-macos (push) Has been cancelled
generate-builds / build-linux (push) Has been cancelled
generate-builds / build-windows (push) Has been cancelled
* Gerudo Guards: offer to throw you in jail

Necessary for logic to use being captured in routing

* don't intercept Ge3

* TODO_TRANSLATE

* cleanup
2025-06-13 22:43:25 -07:00
Malkierian
cd32181415 Fix incorrect merge conflict resolution. 2025-06-12 22:41:19 -07:00
Malkierian
c2b6942282 clang 2025-06-12 17:57:29 -07:00
Malkierian
2b1322d723 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into develop 2025-06-12 17:46:47 -07:00
Jason
62c03abfd4
Updates docs/MODDING.md example to reflect current codebase (#5558)
* Update docs/MODDING.md change example to reflect current codebase

* Changes to MODDING.md (#5558): fixes slight typo

* Changes to MODDING.md (#5558): fix typo and remove uneeded explanation that minimum and maximum are floats
2025-06-12 13:39:21 -07:00
Malkierian
bf3add7a72
Re-add ShipInit::InitAll() to the end of applyPreset(). (#5574) 2025-06-12 13:24:19 -07:00
Philip Dubé
9432b3420b
tts: only announce timer at 10s intervals (#5559)
* tts: only announce timer at 30s

1. reading out every second doesn't have enough time to even say more than a number
2. tts is hard to hear the rest of the game over while it's counting non stop

* under a minute announce every 10s
2025-06-12 13:23:47 -07:00
Pepper0ni
c7e3e08f8d
Fix club moblins moving out of bounds and remove them from the no-clear-room list (#5569) 2025-06-12 13:23:42 -07:00
Philip Dubé
52debea44b
Difficulty: CuccosToReturn (#5552)
* Difficulty: CuccosToReturn

Mirrors rando option

* remove RSK_CUCCO_COUNT

* revert forcing rando to at least 1
2025-06-11 14:41:54 -07:00
Malkierian
69792e9717
Save and Randomizer Version Control (#5557)
* Add version control for Rachael saves and old rando saves.

* Change spoiler drop success sound to puzzle success chime.
Add spoiler drop fail sound (sys_error).
Improve path sanitizer operation.
Add check for a spoiler having a version and it equaling running version. Deletes spoiler CVar if spoiler becomes unusuable while running, and prevents loading dropped spoilers that don't match.

* clang

* Remove backslash escaping from Sanitize.
Remove duplicate Sanitize from Context and make it use SohUtils.
Fix typo.
2025-06-11 14:39:15 -07:00
Philip Dubé
07328a0ecb
remove leftover No Dampe Fire checkbox (#5561)
got moved to difficulty dropdown
2025-06-11 14:38:34 -07:00
Philip Dubé
af99ef8e07
Hookify TreesDropSticks (#5566)
* Hookify TreesDropSticks

* fix off by one
2025-06-11 14:38:12 -07:00
Rozelette
dbc2ff09b5
Convert actor health bars to use ObjectExtension (#5565) 2025-06-11 14:37:34 -07:00
Malkierian
0b9fe2d9b9
Fix Search Crash from Scrolling (#5571)
* Fix search crashing when section child scrolled too far.

* clang
2025-06-11 14:35:57 -07:00
Eric Hoey
ad850e50b1
prevent OOB write for BGM fix in grotto mixed pools (#5572) 2025-06-11 14:35:49 -07:00
Pepe20129
abb0a93945
Add Anubis, Flare Dancer, Skull Kid & Spear Moblin to enemy randomizer (#5483)
* Add Anubis, Flare Dancer, Skull Kid & Spear Moblin

* Include spear moblins and exclude flare dancer in clear rooms

* Exclude anubis from clear rooms

* Fix skull kill issues

* Clang format

* Address review

* Use hook

* Update z_en_mb.c
2025-06-04 18:07:57 -07:00
Philip Dubé
5b2c30edb0
Faster water temple gate (#5556)
* rando: faster water temple gate

* move to time saver
2025-06-04 17:09:06 -07:00
nclok1405
3377dc636a
Default to Hiragana keyboard when playing in Japanese (#5543)
* Default to Hiragana keyboard in Name Entry screen when playing in Japanese (NTSC behavior)

* clang-formated
2025-06-04 17:08:50 -07:00
Philip Dubé
3a60c3f651
SkipAmyPuzzle (#5550) 2025-06-04 17:08:36 -07:00
Philip Dubé
56a53e9fac
consolidate RAND_GET_OPTION (#5553) 2025-06-04 17:08:27 -07:00
Pepe20129
f5d8f1eece
Add ShuffleSongs.cpp & RO_SONG_SHUFFLE_OFF (#5534)
* ShuffleSongs.cpp

* Address review and fix build

* Update soh/soh/Enhancements/randomizer/settings.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* Change back to "Off"

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-05-30 12:51:21 -07:00
Malkierian
40fa3c8d64
Convert RandomizerInf to the dynamic #define model to allow for automatic string names. (#5537) 2025-05-29 19:14:32 -07:00
Pepe20129
40da9997c5
Fix some dark link issues (#5532) 2025-05-29 07:51:35 -07:00
Philip Dubé
2b360d4bbe
Rebottle Blue Fire (#5375)
* Rebottle Blue Fire

* hookify
2025-05-29 07:06:53 -07:00
Hunter Marshall
fc10e36cdb
Fix minor mistakes in region table (#5545)
* Fix minor mistakes in region table

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/ice_cavern.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-05-27 14:34:36 -07:00
Pepper0ni
f0e36c2694
Fix failure to assign areas to regions on initial spoiler load (#5540) 2025-05-27 13:19:30 -07:00
Malkierian
fa6f45bde5
Fix Preset List with no customs available (#5535)
* Surround preset file processing with the fs::exists check rather than returning early.

* clang
2025-05-27 13:19:14 -07:00
xxAtrain223
de96f3cd0a
Typo Fixes (#5533)
* Fixed a couple typos.

* Ran clang format.
2025-05-24 10:39:53 -07:00
Jordan Longstaff
4e8e6d2313
Move Rupee Dash Mode hook to its own file (#5178)
* Move Rupee Dash Mode hook to its own file

* Rename initFunc
2025-05-23 20:29:43 -07:00
Rozelette
8b4cad1710
Rework ActorViewer to use hooks (#5474)
* Rework ActorViewer to use hooks

* Rework ActorViewer to use hooks

* Remove ResetData
2025-05-23 18:47:08 -07:00
xxAtrain223
d330f22071
Available Checks Entrance Shuffle (#5363)
* EntranceShuffler ApplyEntranceOverrides.

* Updated ApplyEntranceOverrides.

* Updated ApplyEntranceOverrides.

* Initial Entrance Discovery.

* Added Randomizer_EntranceDiscovered.

* Updated Randomizer_DiscoverRegion to discover unshuffled connected regions.

* Removed extra semi-colon.

* Update to latest entranceShuffleTable.

* Format fixes.

* Updated EntranceDiscovered to account for entrances not in the entranceShuffleTable.

* Rediscover regions when loading a game.

* Rediscover entrances when enabling Available Checks.

* Added Rando::Context::ParseTricksJson.

* Updated ApplyEntranceOverrides to skip default (unset) overrides.

* Fix clang-format failed check.

* Set mLACSCondition when loading a Randomizer game.

* Updated rediscover loop to use MAX_ENTRANCE_RANDO_USED_INDEX.

* Move entrance discovered into ProcessExits.

* Discover spawns when pulling/placing the master sword.

* Discover adult/child spawn when using Song of Time to switch age.

* Reset logic and ApplyOrStoreItems without applying the item effects to the save when calculating available checks.

* Removed !itemLoc->IsAddedToPool() from the check tracker.

* Remove region discovery as its not needed anymore.

* Cleanup changed files for PR.

* Added Available Checks - Process Undiscovered Exits DebugConsole command.

* Added initial Available Checks - Recalculate DebugConsole command.

* ACPUE, recalculate only if save loaded. ACR, set age and times for the starting region.
2025-05-23 17:49:01 -07:00
TheLynk
f2298c6a8e
Add Two New Tricks "Navi dive" (#5477)
* add navi dive bottom of the well

* add kokiri sword logic for botw

* Optimisation Logic

* Add Navi Dive Lost Wood

* Update Logic

* Move IsChild in logic trick

* Add brackets

* Clang-Format

* Tweak Text

Tweak Text

* Final Push ?

* It's really the last push
2025-05-23 15:37:30 -07:00
Malkierian
99c3fa6006
Preset Manager (#5459)
* Add presets sidebar, proof of concept row-based listing.

* Complete and unify section check/x drawing.

* Add error state to InputString, and corresponding members and builders to InputOptions.
Implement saving and loading of preset files.

* Implement `Config::SetBlock()`.
Implement Apply.
Implement Delete.
Some json structure changes.

* Apply `CVarClear()` calls in CVar-prefixed widget functions.

* Comment out satellite preset pickers for now.

* clang

* Fix ButtonOptions initializer list.

* I hate clang...

* Loop new preset checkbox creation.
Restore auto-resizing to new preset popup.
Remove errant BeginDisabled in randomizer (merge artifact?).

* Add BlockInfo struct to make array with all info for each block.
Setup loops for all other same-ish situations (applying presets, setting up columns, etc) based on blockInfo.

* Save tracker windows info for later restoration.
Lay the groundwork for said restoration.

* Complete tracker window restoration on preset application.

* Fix RadioButtonsOptions builder parameter type.
Add race lockout to new and apply buttons.

* Revert application of CVarClear on UIWidgets widgets (need to preserve manually-set default states).

* Remove enhancements satellite picker.
Swap randomizer satellite picker to use the manager presets, only displays presets with randomizer section included.
Move built-in presets to the asset archive, and remove delete button on them.
Remove PresetEntries.cpp.

* Fix locations and tricks tabs not updating live when applying preset with new system.

* Apply RandoGenerating lockout to rando preset Apply button.

* Fix new presets not being properly filtered in satellite selectors.

* Fix currently selected presets getting deleted still being selected in satellite selectors.

* Change BigPoeTargetCount in preset files to 1.
2025-05-23 14:57:49 -07:00
Philip Dubé
3a069e621e
Fix warnings (#5516)
* use size_t instead of uint8_t for hint ids

* va_arg int instead of s16

warning: second argument to 'va_arg' is of promotable type 's16' (aka 'short'); this va_arg has undefined behavior because arguments will be promoted to 'int' [-Wvarargs]

* more issues like #5443
2025-05-23 14:21:25 -07:00
Malkierian
d69a45674f
Adds a check for "OneDrive" in the execution path to the startup errors that prevent running. (#5522) 2025-05-23 14:06:25 -07:00
Rozelette
a2541fded8
Exclude build dependencies from clang format (#5490) 2025-05-23 14:06:19 -07:00
nclok1405
150029fa49
Set default player name to "リンク" ("Link" in Katakana) when playing in Japanese (#5487) 2025-05-23 14:05:59 -07:00
Rozelette
e4448f491e
Add ObjectExtension system (#5429) 2025-05-23 14:05:33 -07:00
Jordan Longstaff
db8440e744
Move Shadow Tag Mode hook to its own file (#5179)
* Move Shadow Tag Mode hook to its own file

* Rename initFunc
2025-05-23 14:04:43 -07:00
Jordan Longstaff
d8acc32876
Move Daytime Gold Skulltulas mod hook to its own file (#5174)
* Move Daytime Gold Skulltulas mod hook to its own file

* Fix externs?

* Rename initFunc
2025-05-23 14:04:20 -07:00
Malkierian
ae480e107e
Implement Log Level selector setting (#5263)
* Implement Log Level selector setting.

* run clang

* Enum for default value.

* PR feedback: use CVAR_DEVELOPER_TOOLS in CVar builder.

* Slight change to try to force a PR update.

* screw you clang
2025-05-23 14:03:30 -07:00
Philip Dubé
ca32dfd246
Dampe Fire (#5521)
* No Dampe Fire

* spicy

* bikeshed
2025-05-23 14:03:20 -07:00
Philip Dubé
24013e2e5c
skip bottling big poes (#5247)
* setting to skip bottling big poes

empty bottle still required to collect

avoids logic needing to work around player soft locking by filling bottles without poe collector access

* No option, zero option

* TEXT_BIG_POE_COLLECTED_RANDO

* update preset

* fix talking to poe collector after receiving item
2025-05-23 14:00:35 -07:00
Pepper0ni
a9fc317a5a
Fix crash when no valid enemies are selected (#5519)
* fix crash when no valid enemies are selected

* Clanged
2025-05-22 15:23:14 -07:00
Philip Dubé
1d716a5975
ShuffleBeehives.cpp (#5511) 2025-05-22 15:18:03 -07:00
Pepper0ni
2511275b8b
Fix getting heart containers on pocket and skipped impas song (#5518)
* fix getting heart containers on pocket and skipped impas song

* curse you clang! CURSE YOU!
2025-05-21 15:01:54 -07:00
Malkierian
79b6719db3
Change soh.otr loading to use LocateFileAcrossAppDirs() instead of just the app bundle path. (#5525) 2025-05-21 11:30:16 -07:00
Pepper0ni
01ce1eeac8
Fix oversight in lab boots trick, you need to be able to swim back up (#5524) 2025-05-21 08:51:43 -07:00
Pepper0ni
5bf3761a18
Fix Boss and Tower entryways skipping requirements in decoupled (#5484)
* Fix boss and tower entryways in decoupled

* Add patches to child boss room entryways

* Apply fixes

* remember to set ALL the new exits
2025-05-21 08:51:34 -07:00
Philip Dubé
4216776cd6
Fix entrance optimization (#5520)
I'm an idiot
2025-05-19 22:47:04 -07:00
Malkierian
e1f6297807
Merge pull request #5517 from HarbourMasters/develop-blair
Develop blair
2025-05-19 09:19:44 -07:00
briaguya
081f82875a
fix link voice missing when hanging off ledges (#5506)
* fix link voice missing when hanging off ledges

* remove unused bitrate var

* hardcoded but justified

* format
2025-05-18 21:24:57 -07:00
Pepper0ni
4334a132e3
fix the wrong codepath being used in CanBuy when generating seeds (#5514) 2025-05-18 14:28:55 -07:00
briaguya
f0e40fd1dc
fix incorrect token count in messages when tokensanity is off (#5503)
* fix incorrect token count in messages when tokensanity is off

* Update OTRGlobals.cpp
2025-05-18 14:26:10 -07:00
Pepper0ni
f16e34e8b8
fix and rename IsKeysanity to IsFireLoopLocked (#5515)
* c

* fix and rename IsKeysanity

* add comment
2025-05-18 14:25:18 -07:00
briaguya
53566c9a73
fix incorrect __VA_ARGS__ use in lusprintf version of osSyncPrintf (#5510) 2025-05-18 16:25:24 -04:00
briaguya
50f42b93fe
fix "is valid for C/ObjC but not for C++" warnings (#5512) 2025-05-18 16:25:00 -04:00
Malkierian
ecad59e31f
Add tooltip to Generate Seed button when disabled indicating the need to be on File Select. (#5509) 2025-05-17 18:52:45 -07:00
Pepper0ni
8e34942924
Toggle the vanilla flags instead of the rando flags when removing one time scrubs (#5504) 2025-05-17 18:06:24 -07:00
xxAtrain223
e0d5fbec42
Available Checks Prices (#5446)
* Improved the item location price availability.

* Moved the available checks price logic into location_access.cpp.

* Fixed typo and clarified check status identified.
2025-05-17 18:05:20 -07:00
Eric Hoey
b30fff5d57
Skip Forest Temple Basement Pillars Cutscene (#5473)
* vb forest pillar cs skip

* change to one point cutscene skip

* rm whitespace
2025-05-17 17:56:57 -07:00
xxAtrain223
66351fa4e4
Remove freestanding key from Bottom of the Well Perimeter. (#5496) 2025-05-17 17:30:01 -07:00
xxAtrain223
9cb6530858
Fix Enable Available Checks from title screen. (#5502) 2025-05-17 17:29:53 -07:00
briaguya
3c0e7bcf72
bump lus (to bump imgui) (#5501) 2025-05-17 17:12:05 -04:00
briaguya
b418db7792
bump lus (#5500) 2025-05-17 15:35:51 -04:00
briaguya
4f0ed2949e
fix seed gen underflow (#5499) 2025-05-17 07:55:21 -07:00
briaguya
026c7619da
set soh c standard to 23 (#5498) 2025-05-17 02:16:59 -04:00
Christopher Leggett
6acabae38f
Prevent another use of gSaveContext during Seed Generation (#5458)
* Prevent BeanPlanted using gSaveContext for seed gen

* address malk's comment about extern

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-05-16 23:11:04 -07:00
Archez
9010b8c540
port over nametag improvements from 2ship (#5160) 2025-05-17 01:09:23 -04:00
Malkierian
e673eaefb6
Warnings Round 2 (mostly Rando) (#5486)
* Handle virtually all warnings in `soh/Enhancements/randomizer`.
Handle order of operations warning in FasterHeavyBlockLift.

* Missed a few.

* Add float-specific versions of some M_PI and M_SQRT defines, and swap them in for the static casts in draw.cpp.

* Swap a static cast for M_PIf in check tracker code.
2025-05-16 21:54:36 -07:00
Malkierian
23a5198986
Merge pull request #5497 from HarbourMasters/develop-blair
blair -> dev
2025-05-16 21:46:00 -07:00
Pepper0ni
5b6844ccd8
reapply changes needed for C23 build on develop (#5467) 2025-05-17 00:41:14 -04:00
Malkierian
b900f8599a
Bump LUS to latest, and handle tinyxml and gfx_pc changes. (#5470) 2025-05-16 21:14:55 -07:00
briaguya
4fd0bf402e
set c standard to 17 (#5492) 2025-05-16 15:07:52 -07:00
Pepper0ni
e8c2db8151
remove all refernces to Doge (#5488) 2025-05-15 19:51:14 -07:00
Malkierian
45d9fe54d2
Warnings Squashing Round 1 (#5469)
* Fix truncation warning in `entrance.h`.

* Fix type warning in fishsanity.cpp

* Fix implicit conversion warnings in BossRush, Mouse, and UIWidgets.hpp.

* Add Random_Float and use it in GameInteractor_RawAction.cpp.
Make non-specified seed init a separate function.

* clang after type change

* Fix truncation and conversion warnings in ExtraTraps.cpp.

* Resolve type conversion warnings in InputViewer.cpp.

* Resolve some type conversion warnings in hook_handlers.cpp.

* Remove `Random_Float`, and apply `RandomDouble` where it was being used instead.
Add proper range notation to `RandomDouble` to denote the lack of inclusivity for the max part of the range.

* Convert c-style casts to static_cast.
2025-05-13 19:30:04 -07:00
Philip Dubé
afc52f07d2
location_access: don't short circuit event access logic (#5216)
event logic is only run while event isn't set
2025-05-13 12:30:22 -07:00
Philip Dubé
eb95f9060f
Faster empty bottle, faster bean skulltula (#5355)
* Faster empty bottle, faster bean skulltula

* shipinit
2025-05-13 12:30:04 -07:00
Philip Dubé
f9cde383b7
ignore out of bounds entrance overrides in json (#5253)
was causing segfault when using settings from door shuffle on develop
2025-05-12 20:33:21 -07:00
Pepper0ni
f72085b6ca
fix oversight in dragon room of MQ water (#5482) 2025-05-12 20:31:40 -07:00
Eric Hoey
804a24861b
add option description to LACS reward options (#5472) 2025-05-07 14:45:42 -07:00
Jordan Longstaff
6cbb298f76
Skip Kakariko and Hyrule Castle gate cutscenes (#5314)
* Skip Kakariko gate cutscenes

* Simplify a bit

* Revert "Simplify a bit"

This reverts commit ffa68c130fede6962bb4488b85c9ec61ccc60170.

* Add Hyrule Castle gate skip

* Add missing backtick

* Redo simplifications

* Run clang-format

* Proper casting of clearCamera argument

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2025-05-06 17:01:36 -07:00
Eric Hoey
6a93625f5c
VBify Crawl Speed Enhancement and Add Exlcude Glitch-Aiding Crawlspace Option (#5465)
* add menu option

* VBify + add conditions

* oops wrong func

* clean up includes + casting

* move z_player externed functions

* better name

* correct menu text

* one last name final final

* maintain glitch-aiding selection
2025-05-06 17:00:33 -07:00
Jordan Longstaff
19eb4f39ab
Skip trial barrier dispel cutscenes (#5464) 2025-05-01 20:27:20 -07:00
Philip Dubé
a0e49f9960
a11y: read out changes in action button (#5421)
* a11y: read out changes in action button

* remove drop & throw & putaway

* down when on horse

* typos
2025-05-01 20:26:15 -07:00
Philip Dubé
626511ffb1
CheckBeatable: move clearing ctx->playthroughBeatable into function (#5408) 2025-05-01 20:11:55 -07:00
Philip Dubé
1a322c3eb5
OTRGlobals: use SohUtils::CopyStringToCharBuffer (#5328)
* OTRGlobals: use SohUtils::CopyStringToCharBuffer

* size_t

* fix issues when max buffer size is 0
2025-05-01 20:11:01 -07:00
Philip Dubé
3c33185d1a
optimize GetEntrance (#5257) 2025-05-01 19:36:03 -07:00
Philip Dubé
d790ea4bce
use LOGIC_BUY_STICKS / LOGIC_BUY_NUTS in logic (#5251) 2025-05-01 19:34:56 -07:00
Jordan Longstaff
bc3b17f4ab
Add coloured text as current BGM indicator in Audio Editor (#5392) 2025-05-01 19:00:43 -07:00
Pepper0ni
4c9063caa7
Remove redundent entrance logic check when adding a region to the pool. (#5413)
* remove redundent entrance logic check when adding a region to the pool.

* how did this trigger clang...
2025-05-01 19:00:31 -07:00
Pepper0ni
baa91cbadb
Format map GI text (#5417)
* Format map GI text

* dum
2025-05-01 19:00:22 -07:00
Philip Dubé
4debe6829a
Apply final specifier to classes inheriting from Ship::GuiWindow (#5443)
Was getting infamous c++ style warnings:
```
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:8:
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.hpp:12:
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohMenuBar.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/include/libultraship/libultraship.h:5:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/include/libultraship/bridge.h:4:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/public/bridge/resourcebridge.h:9:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/type/Texture.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/Resource.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/File.h:3:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/string:42:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/char_traits.h:57:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohGui::SohMenu' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohGui::SohMenu>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohGui::SohMenu>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohGui::SohMenu>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohGui::SohMenu, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohGui::SohMenu, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[18], const char (&)[10]>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohGui::SohMenu, std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohGui::SohMenu>::__shared_ptr<std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohGui::SohMenu>::shared_ptr<std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:121:21: note: in instantiation of function template specialization 'std::make_shared<SohGui::SohMenu, const char (&)[18], const char (&)[10]>' requested here
  121 |     mSohMenu = std::make_shared<SohMenu>(CVAR_WINDOW("Menu"), "Port Menu");
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohConsoleWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohConsoleWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohConsoleWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohConsoleWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohConsoleWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohConsoleWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[24], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohConsoleWindow, std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohConsoleWindow>::__shared_ptr<std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohConsoleWindow>::shared_ptr<std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:124:27: note: in instantiation of function template specialization 'std::make_shared<SohConsoleWindow, const char (&)[24], const char (&)[13], ImVec2>' requested here
  124 |     mConsoleWindow = std::make_shared<SohConsoleWindow>(CVAR_WINDOW("SohConsole"), "Console##SoH", ImVec2(820, 630));
      |                           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohGfxDebuggerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohGfxDebuggerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohGfxDebuggerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohGfxDebuggerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohGfxDebuggerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohGfxDebuggerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[28], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohGfxDebuggerWindow, std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohGfxDebuggerWindow>::__shared_ptr<std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohGfxDebuggerWindow>::shared_ptr<std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:128:14: note: in instantiation of function template specialization 'std::make_shared<SohGfxDebuggerWindow, const char (&)[28], const char (&)[17], ImVec2>' requested here
  128 |         std::make_shared<SohGfxDebuggerWindow>(CVAR_WINDOW("SohGfxDebugger"), "GfxDebugger##SoH", ImVec2(820, 630));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohStatsWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohStatsWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohStatsWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohStatsWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohStatsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohStatsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[22], const char (&)[11], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohStatsWindow, std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohStatsWindow>::__shared_ptr<std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohStatsWindow>::shared_ptr<std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:131:25: note: in instantiation of function template specialization 'std::make_shared<SohStatsWindow, const char (&)[22], const char (&)[11], ImVec2>' requested here
  131 |     mStatsWindow = std::make_shared<SohStatsWindow>(CVAR_WINDOW("SohStats"), "Stats##Soh", ImVec2(400, 100));
      |                         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'AudioEditor' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<AudioEditor>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<AudioEditor>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<AudioEditor>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<AudioEditor, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<AudioEditor, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<AudioEditor, std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<AudioEditor>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<AudioEditor>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:139:31: note: in instantiation of function template specialization 'std::make_shared<AudioEditor, const char (&)[25], const char (&)[13], ImVec2>' requested here
  139 |     mAudioEditorWindow = std::make_shared<AudioEditor>(CVAR_WINDOW("AudioEditor"), "Audio Editor", ImVec2(820, 630));
      |                               ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'InputViewer' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<InputViewer>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<InputViewer>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<InputViewer>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<InputViewer, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<InputViewer, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13]>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<InputViewer, std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<InputViewer>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<InputViewer>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:141:25: note: in instantiation of function template specialization 'std::make_shared<InputViewer, const char (&)[25], const char (&)[13]>' requested here
  141 |     mInputViewer = std::make_shared<InputViewer>(CVAR_WINDOW("InputViewer"), "Input Viewer");
      |                         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'InputViewerSettingsWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<InputViewerSettingsWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<InputViewerSettingsWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<InputViewerSettingsWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<InputViewerSettingsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<InputViewerSettingsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[33], const char (&)[22], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<InputViewerSettingsWindow, std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<InputViewerSettingsWindow>::__shared_ptr<std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<InputViewerSettingsWindow>::shared_ptr<std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:143:33: note: in instantiation of function template specialization 'std::make_shared<InputViewerSettingsWindow, const char (&)[33], const char (&)[22], ImVec2>' requested here
  143 |     mInputViewerSettings = std::make_shared<InputViewerSettingsWindow>(CVAR_WINDOW("InputViewerSettings"),
      |                                 ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'CosmeticsEditorWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<CosmeticsEditorWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<CosmeticsEditorWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<CosmeticsEditorWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<CosmeticsEditorWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<CosmeticsEditorWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[29], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<CosmeticsEditorWindow, std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<CosmeticsEditorWindow>::__shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<CosmeticsEditorWindow>::shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:147:14: note: in instantiation of function template specialization 'std::make_shared<CosmeticsEditorWindow, const char (&)[29], const char (&)[17], ImVec2>' requested here
  147 |         std::make_shared<CosmeticsEditorWindow>(CVAR_WINDOW("CosmeticsEditor"), "Cosmetics Editor", ImVec2(550, 520));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'ActorViewerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<ActorViewerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<ActorViewerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<ActorViewerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<ActorViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<ActorViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<ActorViewerWindow, std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<ActorViewerWindow>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<ActorViewerWindow>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:150:14: note: in instantiation of function template specialization 'std::make_shared<ActorViewerWindow, const char (&)[25], const char (&)[13], ImVec2>' requested here
  150 |         std::make_shared<ActorViewerWindow>(CVAR_WINDOW("ActorViewer"), "Actor Viewer", ImVec2(520, 600));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'ColViewerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<ColViewerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<ColViewerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<ColViewerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<ColViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<ColViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[29], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<ColViewerWindow, std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<ColViewerWindow>::__shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<ColViewerWindow>::shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:153:14: note: in instantiation of function template specialization 'std::make_shared<ColViewerWindow, const char (&)[29], const char (&)[17], ImVec2>' requested here
  153 |         std::make_shared<ColViewerWindow>(CVAR_WINDOW("CollisionViewer"), "Collision Viewer", ImVec2(520, 600));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SaveEditorWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SaveEditorWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SaveEditorWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SaveEditorWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^

...
```
2025-05-01 19:00:10 -07:00
Eric Hoey
6c14311b66
add dragon room CS (#5461) 2025-05-01 18:59:47 -07:00
Jordan Longstaff
a016453042
Ganon's Tower barrier dispelled if cutscene is skipped (#5462)
* Ganon's Tower barrier dispelled if cutscene is skipped

* More format-compliant comment
2025-05-01 18:59:37 -07:00
Eric Hoey
7cbb0d4d61
Add Missing MQ Jabu Small Crates (#5452)
* also change grass to match

* add crates back
2025-04-29 17:40:01 -04:00
xxAtrain223
e13714e88d
Added missing comma. (#5450) 2025-04-29 14:23:40 -07:00
Eric Hoey
17ed54dbc5
add DC boss switch exception + tooltip (#5447) 2025-04-29 17:20:04 -04:00
Eric Hoey
fec676bbf8
Fix C-Down Position with Anchor Left (#5423) 2025-04-23 17:29:44 -04:00
briaguya
3d3d9c5226
add some imgui ids in input editor (#5439)
* add some imgui ids in input editor

* clang format
2025-04-22 20:39:10 -07:00
Malkierian
8a8ea676ba
Prevents hidden button combo setting from hiding the personal notes window when window type is Window. (#5441) 2025-04-22 20:38:45 -07:00
Pepper0ni
103a36e5fe
fix MQGTG right side resetting (#5442) 2025-04-22 20:38:14 -07:00
Pepper0ni
3c4f38e2f0
make sure adult is spawned for big poe check (#5431) 2025-04-22 17:16:16 -07:00
Pepper0ni
fbbfc07ff1
port over autoFunc punctuation changes and translations (#5426)
---

Co-authored-by: PurpleHato <47987542+PurpleHato@users.noreply.github.com>
Co-authored-by: amafresh <arminamayeh@gmail.com>
2025-04-21 14:21:42 -07:00
Pepper0ni
29af294b0c
fix TODO_TRANSLATE language replacement in cases where the text is already formatted (#5415)
* fix TODO_TRANSLATE language replacement in cases where the text is already formatted

* oops
2025-04-17 10:22:12 -04:00
Malkierian
52a3058926
Merge pull request #5409 from Malkierian/blair-charlie-dev-merge
Blair Charlie to Develop
2025-04-15 16:15:51 -07:00
Malkierian
14907a24b0 Merge branch 'develop-blair' of github.com:HarbourMasters/Shipwright into develop 2025-04-15 15:44:16 -07:00
Christopher Leggett
1b6dc13491
Blair Charlie version bump (#5407) 2025-04-15 14:27:55 -04:00
Malkierian
02ef33393a
Implements a rand inf for Ruto's letter to apply to logic to track it separate from the underwater item check. (#5405) 2025-04-15 13:13:30 -04:00
Archez
5ae8ce4eac
Fix Entrance Rando weather override behavior (#5403)
* Add AfterSceneCommands hook

* move ER weather override to AfterSceneCommands
2025-04-14 19:11:36 -04:00
Malkierian
5e399fe7a2
Race Lockout (#5364)
* Implement race lockout on the new menu, with option for opt-out.

* Cal's requests.
2025-04-13 19:29:29 -04:00
Jordan Longstaff
46b40b0220
Fix misspelling of Broken Giant's Knife fix CVar (#5395) 2025-04-12 12:12:48 -04:00
Malkierian
1416b2490a
Change the Reset All callback back to CosmeticsEditor_ResetAll, because it's already set up to not reset HUD position stuff. (#5385) 2025-04-12 09:14:13 -04:00
Pepper0ni
f304de2eb1
fix oversight in forest trial first room (#5381) 2025-04-11 22:56:47 -04:00
Malkierian
fc0cbbe9e7
Improve tracker dock bgs (#5383)
* Modify the flow for applying opacity to docked tracker windows only when they are docked to the "Main - Deck" dockspace.

* Add opacity clamping for check tracker.
2025-04-11 22:54:52 -04:00
Archez
824c203b97
Merge pull request #5374 from Malkierian/blair-bravo-dev-merge
Blair Bravo -> develop 4-9
2025-04-11 17:20:08 -04:00
Malkierian
f0f2157a4c
Move processing for RAND_INF_WEIRD_EGG to trade item processing so it happens whenever you get the egg. (#5382)
Remove RSK check for garden entrance because access is still handled by `CanUse(RG_WEIRD_EGG)`.
2025-04-11 15:49:34 -04:00
Proloe
698fca8862
Fixed right stick aiming being significantly less precise than left stick aiming. (#5388) 2025-04-11 15:44:40 -04:00
Archez
86e1e8e3aa
Fix boss key kaleido text for NTSC (#5389) 2025-04-11 13:42:08 -04:00
Christopher Leggett
05e96f310d
Fix Fishing-related checks location pool (again) (#5378) 2025-04-11 10:15:31 -04:00
Eric Hoey
a93917bb4a
Fix Adult Fishing as Child Softlock (#5377)
* pass a pointer not a pointer to a pointer

* update GIVanillaBehavior comment

* also drop this
2025-04-10 17:14:25 -04:00
Malkierian
9783f918d2
Add ImGuiWindowFlags_NoSavedSettings to notification windows to prevent cluttering the imgui.ini (#5380) 2025-04-10 09:50:35 -04:00
Malkierian
1791a0c52c
Fix input viewer's first-open position calculation. (#5376) 2025-04-10 09:49:21 -04:00
Malkierian
7e78694aee Merge branch 'develop-blair' of github.com:HarbourMasters/Shipwright into develop 2025-04-09 16:12:46 -07:00
Archez
f37c3aa228
clang-format .hpp files (#5307)
* Add hpp files to clang-format script

* clang-format hpp files
2025-04-03 23:33:35 -04:00
Archez
2deea6e105
Better verbose output for clang-format (#5306) 2025-04-03 15:23:47 -04:00
Philip Dubé
ef8fa17e7c
simplify clang-format script (#5274)
checked that -print0 & -0 also exist in apple's manpages
2025-04-03 00:36:10 -04:00
Philip Dubé
1e51f1e162
Cleanup whitespace (#5281) 2025-04-03 00:16:52 -04:00
515 changed files with 35385 additions and 35411 deletions

View file

@ -1 +1 @@
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev

View file

@ -62,16 +62,16 @@ jobs:
cmake .. cmake ..
make make
sudo make install sudo make install
- name: Generate soh.otr - name: Generate soh.o2r
run: | run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
cmake --build build-cmake --config Release --target GenerateSohOtr -j3 cmake --build build-cmake --config Release --target GenerateSohOtr -j3
- name: Upload soh.otr - name: Upload soh.o2r
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: soh.otr name: soh.o2r
path: soh.otr path: soh.o2r
retention-days: 3 retention-days: 3
build-macos: build-macos:
@ -122,10 +122,10 @@ jobs:
brew uninstall --ignore-dependencies libpng brew uninstall --ignore-dependencies libpng
sudo port install $(cat .github/workflows/macports-deps.txt) sudo port install $(cat .github/workflows/macports-deps.txt)
brew install ninja brew install ninja
- name: Download soh.otr - name: Download soh.o2r
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: soh.otr name: soh.o2r
path: build-cmake/soh path: build-cmake/soh
- name: Build SoH - name: Build SoH
run: | run: |
@ -233,10 +233,10 @@ jobs:
make make
sudo make install sudo make install
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/ sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
- name: Download soh.otr - name: Download soh.o2r
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: soh.otr name: soh.o2r
path: build-cmake/soh path: build-cmake/soh
- name: Build SoH - name: Build SoH
run: | run: |
@ -298,10 +298,10 @@ jobs:
path: vcpkg path: vcpkg
- name: Configure Developer Command Prompt - name: Configure Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1 uses: ilammy/msvc-dev-cmd@v1
- name: Download soh.otr - name: Download soh.o2r
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: soh.otr name: soh.o2r
path: build-windows/soh path: build-windows/soh
- name: Build SoH - name: Build SoH
env: env:

View file

@ -1 +1 @@
libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal

View file

@ -48,7 +48,7 @@ jobs:
}); });
return allArtifacts.data.artifacts.reduce((acc, item) => { return allArtifacts.data.artifacts.reduce((acc, item) => {
if (item.name === "soh.otr") return acc; if (item.name === "soh.o2r") return acc;
acc += ` acc += `
- [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`; - [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`;
return acc; return acc;

View file

@ -23,24 +23,24 @@ jobs:
if: ${{ matrix.image == 'archlinux:base' }} if: ${{ matrix.image == 'archlinux:base' }}
run: | run: |
echo arch echo arch
echo pacman -S ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost echo pacman -S ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
pacman -Syu --noconfirm pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
- name: Install dependencies (dnf) - name: Install dependencies (dnf)
if: ${{ matrix.image == 'fedora:39' }} if: ${{ matrix.image == 'fedora:39' }}
run: | run: |
echo fedora echo fedora
echo dnf install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel boost-devel echo dnf install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
dnf -y upgrade dnf -y upgrade
dnf -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel boost-devel dnf -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
- name: Install dependencies (apt) - name: Install dependencies (apt)
if: ${{ matrix.image == 'ubuntu:mantic' || matrix.image == 'debian:bookworm' }} if: ${{ matrix.image == 'ubuntu:mantic' || matrix.image == 'debian:bookworm' }}
run: | run: |
echo debian based echo debian based
echo apt-get install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && '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 echo apt-get install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && '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 libopengl-dev
apt-get update apt-get update
apt-get -y full-upgrade apt-get -y full-upgrade
apt-get -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && '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 apt-get -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && '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 libopengl-dev
- name: Install dependencies (zypper) - name: Install dependencies (zypper)
if: ${{ matrix.image == 'opensuse/tumbleweed:latest' }} if: ${{ matrix.image == 'opensuse/tumbleweed:latest' }}
run: | run: |

2
.gitignore vendored
View file

@ -412,6 +412,7 @@ ReleaseObj/*
.tags .tags
tags tags
*.otr *.otr
*.o2r
*.sav *.sav
shipofharkinian.ini shipofharkinian.ini
shipofharkinian.json shipofharkinian.json
@ -456,3 +457,4 @@ soh/properties.h
# Tools # Tools
/clang-format /clang-format
/clang-format.exe /clang-format.exe
*.o2r

61
CMake/FindOgg.cmake Normal file
View file

@ -0,0 +1,61 @@
# - Find ogg
# Find the native ogg includes and libraries
#
# OGG_INCLUDE_DIRS - where to find ogg.h, etc.
# OGG_LIBRARIES - List of libraries when using ogg.
# OGG_FOUND - True if ogg found.
if (OGG_INCLUDE_DIR)
# Already in cache, be silent
set(OGG_FIND_QUIETLY TRUE)
endif ()
find_package (PkgConfig QUIET)
pkg_check_modules (PC_OGG QUIET ogg>=1.3.0)
set (OGG_VERSION ${PC_OGG_VERSION})
find_path (OGG_INCLUDE_DIR ogg/ogg.h
HINTS
${PC_OGG_INCLUDEDIR}
${PC_OGG_INCLUDE_DIRS}
${OGG_ROOT}
)
# MSVC built ogg may be named ogg_static.
# The provided project files name the library with the lib prefix.
find_library (OGG_LIBRARY
NAMES
ogg
ogg_static
libogg
libogg_static
HINTS
${PC_OGG_LIBDIR}
${PC_OGG_LIBRARY_DIRS}
${OGG_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set OGG_FOUND
# to TRUE if all listed variables are TRUE.
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (Ogg
REQUIRED_VARS
OGG_LIBRARY
OGG_INCLUDE_DIR
VERSION_VAR
OGG_VERSION
)
if (OGG_FOUND)
set (OGG_LIBRARIES ${OGG_LIBRARY})
set (OGG_INCLUDE_DIRS ${OGG_INCLUDE_DIR})
if(NOT TARGET Ogg::ogg)
add_library(Ogg::ogg UNKNOWN IMPORTED)
set_target_properties(Ogg::ogg PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OGG_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OGG_LIBRARIES}"
)
endif ()
endif ()
mark_as_advanced (OGG_INCLUDE_DIR OGG_LIBRARY)

44
CMake/FindOpus.cmake Normal file
View file

@ -0,0 +1,44 @@
# - FindOpus.cmake
# Find the native opus includes and libraries
#
# OPUS_INCLUDE_DIRS - where to find opus/opus.h, etc.
# OPUS_LIBRARIES - List of libraries when using libopus(file).
# OPUS_FOUND - True if libopus found.
if(OPUS_INCLUDE_DIR AND OPUS_LIBRARY AND OPUSFILE_LIBRARY)
# Already in cache, be silent
set(OPUS_FIND_QUIETLY TRUE)
endif(OPUS_INCLUDE_DIR AND OPUS_LIBRARY AND OPUSFILE_LIBRARY)
find_path(OPUS_INCLUDE_DIR
NAMES opusfile.h
PATH_SUFFIXES opus
)
# MSVC built opus may be named opus_static
# The provided project files name the library with the lib prefix.
find_library(OPUS_LIBRARY
NAMES opus opus_static libopus libopus_static
)
#find_library(OPUSFILE_LIBRARY
# NAMES opusfile opusfile_static libopusfile libopusfile_static
#)
# Handle the QUIETLY and REQUIRED arguments and set OPUS_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Opus DEFAULT_MSG
OPUS_LIBRARY OPUS_INCLUDE_DIR
)
if(OPUS_FOUND)
set(OPUS_LIBRARIES ${OPUS_LIBRARY})
set(OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIR})
if(NOT TARGET Opus::opus)
add_library(Opus::opus UNKNOWN IMPORTED)
set_target_properties(Opus::opus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUS_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OPUS_LIBRARIES}"
)
endif()
endif(OPUS_FOUND)

55
CMake/FindOpusFile.cmake Normal file
View file

@ -0,0 +1,55 @@
# FindOpusFile.cmake
# Locate the libopusfile library and its dependencies (libopus and libogg).
# Defines the following variables on success:
# OPUSFILE_FOUND - Indicates if opusfile was found
# OPUSFILE_INCLUDE_DIR - Directory containing opusfile.h
# OPUSFILE_LIBRARY - Path to the opusfile library
# OPUSFILE_LIBRARIES - Full list of libraries to link (opusfile, opus, ogg)
# Search for the OpusFile header
find_path(OPUSFILE_INCLUDE_DIR
NAMES opusfile.h
PATHS /usr/include/opus /usr/local/include/opus /opt/local/include/opus /opt/homebrew/include/opus
DOC "Directory where opusfile.h is located"
)
# Search for the OpusFile library
find_library(OPUSFILE_LIBRARY
NAMES opusfile
DOC "Path to the libopusfile library"
)
# Search for the Opus library (dependency of OpusFile)
find_library(OPUS_LIBRARY
NAMES opus
DOC "Path to the libopus library (dependency of libopusfile)"
)
# Search for the Ogg library (dependency of OpusFile)
find_library(OGG_LIBRARY
NAMES ogg
DOC "Path to the libogg library (dependency of libopusfile)"
)
# Check if all required components are found
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpusFile
REQUIRED_VARS OPUSFILE_LIBRARY OPUSFILE_INCLUDE_DIR OPUS_LIBRARY OGG_LIBRARY
VERSION_VAR OPUSFILE_VERSION
)
# Define an imported target if everything is found
if (OPUSFILE_FOUND)
add_library(Opusfile::Opusfile INTERFACE IMPORTED)
set_target_properties(Opusfile::Opusfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUSFILE_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${OPUSFILE_LIBRARY};${OPUS_LIBRARY};${OGG_LIBRARY}"
)
# Optionally expose the include and libraries separately
set(OPUSFILE_LIBRARIES ${OPUSFILE_LIBRARY} ${OPUS_LIBRARY} ${OGG_LIBRARY})
set(OPUSFILE_INCLUDE_DIRS ${OPUSFILE_INCLUDE_DIR})
else()
set(OPUSFILE_FOUND FALSE)
endif()

210
CMake/FindVorbis.cmake Normal file
View file

@ -0,0 +1,210 @@
#[=======================================================================[.rst:
FindVorbis
----------
Finds the native vorbis, vorbisenc amd vorbisfile includes and libraries.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``Vorbis::vorbis``
The Vorbis library
``Vorbis::vorbisenc``
The VorbisEnc library
``Vorbis::vorbisfile``
The VorbisFile library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``Vorbis_Vorbis_INCLUDE_DIRS``
List of include directories when using vorbis.
``Vorbis_Enc_INCLUDE_DIRS``
List of include directories when using vorbisenc.
``Vorbis_File_INCLUDE_DIRS``
List of include directories when using vorbisfile.
``Vorbis_Vorbis_LIBRARIES``
List of libraries when using vorbis.
``Vorbis_Enc_LIBRARIES``
List of libraries when using vorbisenc.
``Vorbis_File_LIBRARIES``
List of libraries when using vorbisfile.
``Vorbis_FOUND``
True if vorbis and requested components found.
``Vorbis_Vorbis_FOUND``
True if vorbis found.
``Vorbis_Enc_FOUND``
True if vorbisenc found.
``Vorbis_Enc_FOUND``
True if vorbisfile found.
Cache variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``Vorbis_Vorbis_INCLUDE_DIR``
The directory containing ``vorbis/vorbis.h``.
``Vorbis_Enc_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_File_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_Vorbis_LIBRARY``
The path to the vorbis library.
``Vorbis_Enc_LIBRARY``
The path to the vorbisenc library.
``Vorbis_File_LIBRARY``
The path to the vorbisfile library.
Hints
^^^^^
A user may set ``Vorbis_ROOT`` to a vorbis installation root to tell this module where to look.
#]=======================================================================]
if (Vorbis_Vorbis_INCLUDE_DIR)
# Already in cache, be silent
set (Vorbis_FIND_QUIETLY TRUE)
endif ()
set (Vorbis_Vorbis_FIND_QUIETLY TRUE)
set (Vorbis_Enc_FIND_QUIETLY TRUE)
set (Vorbis_File_FIND_QUIETLY TRUE)
find_package (Ogg QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules (PC_Vorbis_Vorbis QUIET vorbis)
pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc)
pkg_check_modules (PC_Vorbis_File QUIET vorbisfile)
set (Vorbis_VERSION ${PC_Vorbis_Vorbis_VERSION})
find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h
HINTS
${PC_Vorbis_Vorbis_INCLUDEDIR}
${PC_Vorbis_Vorbis_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_Enc_INCLUDE_DIR vorbis/vorbisenc.h
HINTS
${PC_Vorbis_Enc_INCLUDEDIR}
${PC_Vorbis_Enc_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_File_INCLUDE_DIR vorbis/vorbisfile.h
HINTS
${PC_Vorbis_File_INCLUDEDIR}
${PC_Vorbis_File_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Vorbis_LIBRARY
NAMES
vorbis
vorbis_static
libvorbis
libvorbis_static
HINTS
${PC_Vorbis_Vorbis_LIBDIR}
${PC_Vorbis_Vorbis_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Enc_LIBRARY
NAMES
vorbisenc
vorbisenc_static
libvorbisenc
libvorbisenc_static
HINTS
${PC_Vorbis_Enc_LIBDIR}
${PC_Vorbis_Enc_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_File_LIBRARY
NAMES
vorbisfile
vorbisfile_static
libvorbisfile
libvorbisfile_static
HINTS
${PC_Vorbis_File_LIBDIR}
${PC_Vorbis_File_LIBRARY_DIRS}
${Vorbis_ROOT}
)
include (FindPackageHandleStandardArgs)
if (Vorbis_Vorbis_LIBRARY AND Vorbis_Vorbis_INCLUDE_DIR AND Ogg_FOUND)
set (Vorbis_Vorbis_FOUND TRUE)
endif ()
if (Vorbis_Enc_LIBRARY AND Vorbis_Enc_INCLUDE_DIR AND Vorbis_Vorbis_FOUND)
set (Vorbis_Enc_FOUND TRUE)
endif ()
if (Vorbis_Vorbis_FOUND AND Vorbis_File_LIBRARY AND Vorbis_File_INCLUDE_DIR)
set (Vorbis_File_FOUND TRUE)
endif ()
find_package_handle_standard_args (Vorbis
REQUIRED_VARS
Vorbis_Vorbis_LIBRARY
Vorbis_Vorbis_INCLUDE_DIR
Ogg_FOUND
HANDLE_COMPONENTS
VERSION_VAR Vorbis_VERSION)
if (Vorbis_Vorbis_FOUND)
set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR})
set (Vorbis_Vorbis_LIBRARIES ${VORBIS_LIBRARY} ${OGG_LIBRARIES})
if (NOT TARGET Vorbis::vorbis)
add_library (Vorbis::vorbis UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbis PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Vorbis_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Vorbis_LIBRARY}"
INTERFACE_LINK_LIBRARIES Ogg::ogg
)
endif ()
if (Vorbis_Enc_FOUND)
set (Vorbis_Enc_INCLUDE_DIRS ${Vorbis_Enc_INCLUDE_DIR})
set (Vorbis_Enc_LIBRARIES ${Vorbis_Enc_LIBRARY} ${Vorbis_Enc_LIBRARIES})
if (NOT TARGET Vorbis::vorbisenc)
add_library (Vorbis::vorbisenc UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisenc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Enc_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Enc_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
if (Vorbis_File_FOUND)
set (Vorbis_File_INCLUDE_DIRS ${Vorbis_File_INCLUDE_DIR})
set (Vorbis_File_LIBRARIES ${Vorbis_File_LIBRARY} ${Vorbis_File_LIBRARIES})
if (NOT TARGET Vorbis::vorbisfile)
add_library (Vorbis::vorbisfile UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_File_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_File_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
endif ()
mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY)
mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY)
mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY)

View file

@ -1,7 +1,5 @@
set(CVAR_VSYNC_ENABLED "${CVAR_PREFIX_SETTING}.VsyncEnabled" CACHE STRING "") set(CVAR_VSYNC_ENABLED "${CVAR_PREFIX_SETTING}.VsyncEnabled" CACHE STRING "")
set(CVAR_Z_FIGHTING_MODE "${CVAR_PREFIX_SETTING}.ZFightingMode" CACHE STRING "") set(CVAR_Z_FIGHTING_MODE "${CVAR_PREFIX_SETTING}.ZFightingMode" CACHE STRING "")
set(CVAR_NEW_FILE_DROPPED "${CVAR_PREFIX_GENERAL}.NewFileDropped" CACHE STRING "")
set(CVAR_DROPPED_FILE "${CVAR_PREFIX_GENERAL}.DroppedFile" CACHE STRING "")
set(CVAR_INTERNAL_RESOLUTION "${CVAR_PREFIX_SETTING}.InternalResolution" CACHE STRING "") set(CVAR_INTERNAL_RESOLUTION "${CVAR_PREFIX_SETTING}.InternalResolution" CACHE STRING "")
set(CVAR_MSAA_VALUE "${CVAR_PREFIX_SETTING}.MSAAValue" CACHE STRING "") set(CVAR_MSAA_VALUE "${CVAR_PREFIX_SETTING}.MSAAValue" CACHE STRING "")
set(CVAR_SDL_WINDOWED_FULLSCREEN "${CVAR_PREFIX_SETTING}.SdlWindowedFullscreen" CACHE STRING "") set(CVAR_SDL_WINDOWED_FULLSCREEN "${CVAR_PREFIX_SETTING}.SdlWindowedFullscreen" CACHE STRING "")

View file

@ -2,10 +2,11 @@ cmake_minimum_required(VERSION 3.26.0 FATAL_ERROR)
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE) set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use") set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
set(CMAKE_C_STANDARD 23 CACHE STRING "The C standard to use")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
project(Ship VERSION 9.0.1 LANGUAGES C CXX) project(Ship VERSION 9.0.5 LANGUAGES C CXX)
include(CMake/soh-cvars.cmake) include(CMake/soh-cvars.cmake)
include(CMake/lus-cvars.cmake) include(CMake/lus-cvars.cmake)
@ -82,8 +83,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(VCPKG_TARGET_TRIPLET x64-windows-static) set(VCPKG_TARGET_TRIPLET x64-windows-static)
vcpkg_bootstrap() vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog) vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog libogg libvorbis opus opusfile)
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache") if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif() endif()
@ -153,6 +153,10 @@ set(GFX_DEBUG_DISASSEMBLER ON)
# Tell LUS we're using F3DEX_GBI_2 (in a way that doesn't break libgfxd) # Tell LUS we're using F3DEX_GBI_2 (in a way that doesn't break libgfxd)
set(GBI_UCODE F3DEX_GBI_2) set(GBI_UCODE F3DEX_GBI_2)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
# Enable MPQ and OTR support
set(INCLUDE_MPQ_SUPPORT ON)
################################################################################ ################################################################################
# Set CONTROLLERBUTTONS_T # Set CONTROLLERBUTTONS_T
@ -164,6 +168,7 @@ add_compile_definitions(CONTROLLERBUTTONS_T=uint32_t)
################################################################################ ################################################################################
add_subdirectory(libultraship ${CMAKE_BINARY_DIR}/libultraship) add_subdirectory(libultraship ${CMAKE_BINARY_DIR}/libultraship)
target_compile_options(libultraship PRIVATE "${WARNING_OVERRIDE}") target_compile_options(libultraship PRIVATE "${WARNING_OVERRIDE}")
target_compile_definitions(libultraship PUBLIC INCLUDE_MPQ_SUPPORT)
add_subdirectory(ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD) add_subdirectory(ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
add_subdirectory(OTRExporter) add_subdirectory(OTRExporter)
add_subdirectory(soh) add_subdirectory(soh)
@ -173,24 +178,15 @@ set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/scri
set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon.png") set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon.png")
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
install(PROGRAMS "${CMAKE_BINARY_DIR}/linux/soh.sh" DESTINATION . COMPONENT appimage) install(FILES "${CMAKE_BINARY_DIR}/soh/soh.o2r" DESTINATION . COMPONENT ship)
install(FILES "${CMAKE_BINARY_DIR}/soh/soh.otr" DESTINATION . COMPONENT ship)
install(TARGETS ZAPD DESTINATION ./assets/extractor COMPONENT extractor) install(TARGETS ZAPD DESTINATION ./assets/extractor COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor COMPONENT extractor) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls COMPONENT extractor) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
endif() endif()
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor COMPONENT ship) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/ COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls COMPONENT ship) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
endif() endif()
find_package(Python3 COMPONENTS Interpreter) find_package(Python3 COMPONENTS Interpreter)
@ -198,42 +194,42 @@ find_package(Python3 COMPONENTS Interpreter)
# Target to generate OTRs # Target to generate OTRs
add_custom_target( add_custom_target(
ExtractAssets ExtractAssets
COMMAND ${CMAKE_COMMAND} -E rm -f oot.otr oot-mq.otr soh.otr COMMAND ${CMAKE_COMMAND} -E rm -f oot.o2r oot-mq.o2r soh.o2r
# copy LUS default shaders into assets/custom # copy LUS default shaders into assets/custom
COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/ COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic/Fast3D/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic/Fast3D/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root ../soh/assets/xml --custom-otr-file soh.otr "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}" COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root assets/xml --custom-otr-file soh.o2r "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Running asset extraction..." COMMENT "Running asset extraction..."
DEPENDS ZAPD DEPENDS ZAPD
BYPRODUCTS oot.otr ${CMAKE_SOURCE_DIR}/oot.otr oot-mq.otr ${CMAKE_SOURCE_DIR}/oot-mq.otr ${CMAKE_SOURCE_DIR}/soh.otr BYPRODUCTS oot.o2r ${CMAKE_SOURCE_DIR}/oot.o2r oot-mq.o2r ${CMAKE_SOURCE_DIR}/oot-mq.o2r ${CMAKE_SOURCE_DIR}/soh.o2r
) )
# Target to generate headers # Target to generate headers
add_custom_target( add_custom_target(
ExtractAssetHeaders ExtractAssetHeaders
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root ../soh/assets/xml --gen-headers COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root assets/xml --gen-headers
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Generating asset headers..." COMMENT "Generating asset headers..."
DEPENDS ZAPD DEPENDS ZAPD
) )
# Target to generate only soh.otr # Target to generate only soh.o2r
add_custom_target( add_custom_target(
GenerateSohOtr GenerateSohOtr
COMMAND ${CMAKE_COMMAND} -E rm -f soh.otr COMMAND ${CMAKE_COMMAND} -E rm -f soh.o2r
# copy LUS default shaders into assets/custom # copy LUS default shaders into assets/custom
COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/ COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic/Fast3D/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic/Fast3D/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --norom --custom-otr-file soh.otr "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}" COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --norom --custom-otr-file soh.o2r "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -DONLYSOHOTR=On -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -DONLYSOHOTR=On -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Generating soh.otr..." COMMENT "Generating soh.o2r..."
DEPENDS ZAPD DEPENDS ZAPD
) )
@ -266,22 +262,12 @@ add_custom_target(CreateOSXIcons
) )
add_dependencies(soh CreateOSXIcons) add_dependencies(soh CreateOSXIcons)
install(TARGETS ZAPD DESTINATION ${CMAKE_BINARY_DIR}/assets/extractor) install(TARGETS ZAPD DESTINATION ${CMAKE_BINARY_DIR}/assets)
set(PROGRAM_PERMISSIONS_EXECUTE OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ) set(PROGRAM_PERMISSIONS_EXECUTE OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls) install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
DESTINATION .
PATTERN ZAPD.out
PERMISSIONS ${PROGRAM_PERMISSIONS_EXECUTE}
)
# Rename the installed soh binary to drop the macos suffix # Rename the installed soh binary to drop the macos suffix
INSTALL(CODE "FILE(RENAME \${CMAKE_INSTALL_PREFIX}/../MacOS/soh-macos \${CMAKE_INSTALL_PREFIX}/../MacOS/soh)") INSTALL(CODE "FILE(RENAME \${CMAKE_INSTALL_PREFIX}/../MacOS/soh-macos \${CMAKE_INSTALL_PREFIX}/../MacOS/soh)")

@ -1 +1 @@
Subproject commit 41052efcdf8df8e67517cc93da8975fcd4e14af9 Subproject commit 461ab19a36cde807591543397e136cae19aa6e7c

2
ZAPDTR

@ -1 +1 @@
Subproject commit 2aeababbfb81b00d34673406453e8e8e2deaa27b Subproject commit 684f21a475dcfeee89938ae1f4afc42768a3e7ef

View file

@ -1,37 +1,37 @@
message(STATUS "Copying otr files...") message(STATUS "Copying otr files...")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot.otr) if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${SOURCE_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${BINARY_DIR}/soh/) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied oot.otr") message(STATUS "Copied oot.o2r")
endif() endif()
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot-mq.otr) if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot-mq.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${SOURCE_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${BINARY_DIR}/soh/) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied oot-mq.otr") message(STATUS "Copied oot-mq.o2r")
endif() endif()
if(EXISTS ${SOURCE_DIR}/OTRExporter/soh.otr) if(EXISTS ${SOURCE_DIR}/soh/soh.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${SOURCE_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${BINARY_DIR}/soh/) execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied soh.otr") message(STATUS "Copied soh.o2r")
endif() endif()
# Additionally for Windows, copy the otrs to the target dir, side by side with soh.exe # Additionally for Windows, copy the otrs to the target dir, side by side with soh.exe
if(SYSTEM_NAME MATCHES "Windows") if(SYSTEM_NAME MATCHES "Windows")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot.otr) if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${TARGET_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${TARGET_DIR})
endif() endif()
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot-mq.otr) if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot-mq.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${TARGET_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${TARGET_DIR})
endif() endif()
if(EXISTS ${SOURCE_DIR}/OTRExporter/soh.otr) if(EXISTS ${SOURCE_DIR}/soh/soh.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${TARGET_DIR}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${TARGET_DIR})
endif() endif()
endif() endif()
if(NOT ONLYSOHOTR AND (NOT EXISTS ${SOURCE_DIR}/oot.otr AND NOT EXISTS ${SOURCE_DIR}/oot-mq.otr)) if(NOT ONLYSOHOTR AND (NOT EXISTS ${SOURCE_DIR}/oot.o2r AND NOT EXISTS ${SOURCE_DIR}/oot-mq.o2r))
message(FATAL_ERROR "Failed to copy. No OTR files found.") message(FATAL_ERROR "Failed to copy. No OTR files found.")
endif() endif()
if(NOT EXISTS ${SOURCE_DIR}/soh.otr) if(NOT EXISTS ${SOURCE_DIR}/soh.o2r)
message(FATAL_ERROR "Failed to copy. No soh OTR found.") message(FATAL_ERROR "Failed to copy. No soh OTR found.")
endif() endif()

View file

@ -90,26 +90,26 @@ C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target ExtractAssetHe
#### Debian/Ubuntu #### Debian/Ubuntu
```sh ```sh
# using gcc # 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 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 libopengl-dev
# or using clang # 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 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 libopengl-dev
``` ```
#### Arch #### Arch
```sh ```sh
# using gcc # using gcc
pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
# or using clang # or using clang
pacman -S clang git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost pacman -S clang git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
``` ```
#### Fedora #### Fedora
```sh ```sh
# using gcc # 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 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
# or using clang # 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 dnf install clang git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel
``` ```
#### openSUSE #### openSUSE
```sh ```sh

View file

@ -41,15 +41,28 @@ You can name your branch whatever you want, but it's recommended to name it some
The limit is your imagination. You can add new features, fix bugs, add new mods, or even change the way the game works. We will demonstrate this by creating a mod that changes the speed of the day/night cycle. The limit is your imagination. You can add new features, fix bugs, add new mods, or even change the way the game works. We will demonstrate this by creating a mod that changes the speed of the day/night cycle.
Let's being by finding where the time is updated. Thankfully in the save editor we have a slider already hooked up to the time of day so we can check there for reference. The save editor file is at `soh/soh/Enhancements/debugger/debugSaveEditor.cpp`, if we do a quick search within that file for time we will find the following at line 400: Let's begin by finding where the time is updated. Thankfully in the save editor we have a slider already hooked up to the time of day so we can check there for reference. The save editor file is at `soh/soh/Enhancements/debugger/debugSaveEditor.cpp`, if we do a quick search within that file for time we will find the following at around line 217:
```cpp ```cpp
const uint16_t dayTimeMin = 0; SliderInt("Time", (int32_t*)&gSaveContext.dayTime, intSliderOptionsBase.Min(0).Max(0xFFFF).Tooltip("Time of day"));
const uint16_t dayTimeMax = 0xFFFF; if (Button("Dawn", buttonOptionsBase)) {
ImGui::SliderScalar("Time", ImGuiDataType_U16, &gSaveContext.dayTime, &dayTimeMin, &dayTimeMax); gSaveContext.dayTime = 0x4000;
}
ImGui::SameLine();
if (Button("Noon", buttonOptionsBase)) {
gSaveContext.dayTime = 0x8000;
}
ImGui::SameLine();
if (Button("Sunset", buttonOptionsBase)) {
gSaveContext.dayTime = 0xC001;
}
ImGui::SameLine();
if (Button("Midnight", buttonOptionsBase)) {
gSaveContext.dayTime = 0;
}
``` ```
So this tells us that `gSaveContext.dayTime` is what we're looking for. Let's now do a global search for this to see if we can find where it is updated. We find the following in `soh/src/code/z_kankyo.c` line 925: So this tells us that `gSaveContext.dayTime` is what we're looking for. Let's now do a global search for this to see if we can find where it is updated. We find the following in `soh/src/code/z_kankyo.c` around line 925:
```cpp ```cpp
if (IS_DAY || gTimeIncrement >= 0x190) { if (IS_DAY || gTimeIncrement >= 0x190) {
@ -71,16 +84,19 @@ if (IS_DAY || gTimeIncrement >= 0x190) {
} }
``` ```
Rebuild the game and launch it, then load a save file. You should see that the time of day is now moving much faster. Terrific! While we could wrap this up and call it a day, we could make this user configurable by making a few more changes. I think a slider would be good for this, there's a slider in the cheat menu that we can use as a reference. Let's find it in `soh/soh/SohMenuBar.cpp` around line 1120: Rebuild the game and launch it, then load a save file. You should see that the time of day is now moving much faster. Terrific! While we could wrap this up and call it a day, we could make this user configurable by making a few more changes. I think a slider would be good for this, there's a slider in the cheat menu that we can use as a reference. Let's find it in `soh/soh/SohGui/SohMenuEnhancements.cpp` around line 1565:
```cpp ```cpp
UIWidgets::EnhancementSliderFloat("Hookshot Reach Multiplier: %.1fx", "##gCheatHookshotReachMultiplier", "gCheatHookshotReachMultiplier", 1.0f, 5.0f, "", 1.0f, false); AddWidget(path, "Hookshot Reach Multiplier: %.2fx", WIDGET_CVAR_SLIDER_FLOAT)
.CVar(CVAR_CHEAT("HookshotReachMultiplier"))
.Options(FloatSliderOptions().Format("%.2f").Min(1.0f).Max(5.0f));
``` ```
This adds a `Widget` which sets a CVar, which then sets the options of the slider. We'll make our minimum 0.2 to allow it to move slower, and our maximum 5.0 to allow it to move up to 5x faster. We'll also set the default to 1.0 so that it doesn't change the behavior by default. Copy this line and paste it below, then make the relevant changes:
The float values being passed in here are `minimum`, `maximum`, and `default` respectively. We'll make our minimum 0.2 to allow it to move slower, and our maximum 5.0 to allow it to move up to 5x faster. We'll also set the default to 1.0 so that it doesn't change the behavior by default. Copy this line and paste it below, then make the relevant changes:
```cpp ```cpp
UIWidgets::EnhancementSliderFloat("Time Multiplier: %.1fx", "##gCheatTimeMultiplier", "gCheatTimeMultiplier", 0.2f, 5.0f, "", 1.0f, false); AddWidget(path, "Time Multiplier: %.2fx", WIDGET_CVAR_SLIDER_FLOAT)
.CVar(CVAR_CHEAT("TimeOfDayMultiplier"))
.Options(FloatSliderOptions().Format("%.2f").Min(0.2f).Max(5.0f).DefaultValue(1.0f));
``` ```
Now we need to replace our hard coded values with the new variable. We can do this by replacing the `10` with a cvar call Now we need to replace our hard coded values with the new variable. We can do this by replacing the `10` with a cvar call
@ -88,10 +104,10 @@ Now we need to replace our hard coded values with the new variable. We can do th
```diff ```diff
if (IS_DAY || gTimeIncrement >= 0x190) { if (IS_DAY || gTimeIncrement >= 0x190) {
- gSaveContext.dayTime += gTimeIncrement * 10; - gSaveContext.dayTime += gTimeIncrement * 10;
+ gSaveContext.dayTime += gTimeIncrement * CVarGetFloat("gCheatTimeMultiplier", 1.0f); + gSaveContext.dayTime += gTimeIncrement * CVarGetFloat(CVAR_CHEAT("TimeOfDayMultiplier"),1.0f);
} else { } else {
- gSaveContext.dayTime += gTimeIncrement * 2 * 10; - gSaveContext.dayTime += gTimeIncrement * 2 * 10;
+ gSaveContext.dayTime += gTimeIncrement * 2 * CVarGetFloat("gCheatTimeMultiplier", 1.0f); + gSaveContext.dayTime += gTimeIncrement * 2 * CVarGetFloat(CVAR_CHEAT("TimeOfDayMultiplier"),1.0f);
} }
``` ```

@ -1 +1 @@
Subproject commit ffc062cbf44ce8dc07ac9fc0185224010bd78cc5 Subproject commit 7f737f8be9580980f5a1fe7784d6e1045f0309da

View file

@ -25,7 +25,7 @@ if (-not (Test-Path $clangFormatFilePath) -or ($currentVersion -ne $requiredVers
} }
$wc = New-Object net.webclient $wc = New-Object net.webclient
$wc.Downloadfile($url, $llvmInstallerPath) $wc.Downloadfile($url, $PSScriptRoot + $llvmInstallerPath)
$sevenZipPath = "C:\Program Files\7-Zip\7z.exe" $sevenZipPath = "C:\Program Files\7-Zip\7z.exe"
$specificFileInArchive = "bin\clang-format.exe" $specificFileInArchive = "bin\clang-format.exe"
@ -37,12 +37,13 @@ if (-not (Test-Path $clangFormatFilePath) -or ($currentVersion -ne $requiredVers
$basePath = (Resolve-Path .).Path $basePath = (Resolve-Path .).Path
$files = Get-ChildItem -Path $basePath\soh -Recurse -File ` $files = Get-ChildItem -Path $basePath\soh -Recurse -File `
| Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or ` | Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or `
($_.Extension -eq '.h' -and ` (($_.Extension -eq '.h' -or $_.Extension -eq '.hpp') -and `
(-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and ` (-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and `
(-not ($_.FullName -like "*\soh\assets\*")) } (-not ($_.FullName -like "*\soh\assets\*" -or $_.FullName -like "*\soh\build\*")) }
foreach ($file in $files) { for ($i = 0; $i -lt $files.Length; $i++) {
$file = $files[$i]
$relativePath = $file.FullName.Substring($basePath.Length + 1) $relativePath = $file.FullName.Substring($basePath.Length + 1)
Write-Host "Formatting $relativePath" Write-Host "Formatting [$($i+1)/$($files.Length)] $relativePath"
.\clang-format.exe -i $file.FullName .\clang-format.exe -i $file.FullName
} }

View file

@ -10,20 +10,20 @@
# -name "*.c" -o -name "*.cpp" # -name "*.c" -o -name "*.cpp"
# find all .c and .cpp files # find all .c and .cpp files
# #
# -name "*.h" ! -path "soh/src/**.h" ! -path "soh/include/**.h" # ( -name "*.h" -o -name "*.hpp" ) ! -path "soh/src/**.h" ! -path "soh/include/**.h"
# find all .h files that aren't in soh/src or soh/include # find all .h and .hpp files that aren't in soh/src or soh/include
# this is because zret decomp only runs clang-format on c files # this is because zret decomp only runs clang-format on c files
# https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182 # https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182
# #
# ! -path "soh/assets/*" # ! -path "soh/assets/*"
# asset headers are autogenerated, don't fight them # asset headers are autogenerated, don't fight them
# #
# | sed 's| |\\ |g' # -print0
# pipe the result of find into sed to # separate paths with NUL bytes, avoiding issues with spaces in paths
# ensure all the paths returned by find have spaces escaped
# #
# | xargs clang-format-14 -i # | xargs -0 clang-format-14 -i -verbose
# use xargs to take each path we've found # use xargs to take each path we've found
# and pass it as an argument to clang-format # and pass it as an argument to clang-format
# verbose to print files being formatted and X out of Y status
find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( -name "*.h" ! -path "soh/src/**.h" ! -path "soh/include/**.h" \) \) ! -path "soh/assets/*" | sed 's| |\\ |g' | xargs clang-format-14 -i find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | xargs -0 clang-format-14 -i --verbose

View file

@ -1,7 +1,7 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Name=SOH Name=SOH
Exec=soh.sh Exec=soh.elf
Terminal=false Terminal=false
Icon=sohIcon Icon=sohIcon
Type=Application Type=Application

View file

@ -1,338 +0,0 @@
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"/../..
export PATH="$HERE"/bin:"$HERE"/usr/bin:"$PATH"
export LD_LIBRARY_PATH="$HERE"/usr/lib:"$LD_LIBRARY_PATH"
export ZENITY=$(command -v zenity)
if [ -z ${SHIP_HOME+x} ]; then
export SHIP_HOME=$PWD
fi
if [ -z ${SHIP_BIN_DIR+x} ]; then
export SHIP_BIN_DIR="$HERE/usr/bin"
fi
if [[ ! -e "$SHIP_HOME"/mods ]]; then
mkdir -p "$SHIP_HOME"/mods
touch "$SHIP_HOME"/mods/custom_otr_files_go_here.txt
fi
while [[ (! -e "$SHIP_HOME"/oot.otr) || (! -e "$SHIP_HOME"/oot-mq.otr) ]]; do
for romfile in "$SHIP_HOME"/*.*64
do
if [[ -e "$romfile" ]] || [[ -L "$romfile" ]]; then
export ASSETDIR="$(mktemp -d /tmp/assets-XXXXX)"
ln -s "$SHIP_BIN_DIR"/{assets,soh.elf,ZAPD} "$ASSETDIR"
export OLDPWD="$PWD"
mkdir -p "$ASSETDIR"/tmp
if [[ -e "$romfile" ]]; then
ln -s "$romfile" "$ASSETDIR"/tmp/rom.z64
else
ORIG_ROM_PATH=$(readlink "$romfile")
ln -s "$ORIG_ROM_PATH" "$ASSETDIR"/tmp/rom.z64
fi
cd "$ASSETDIR"
ROMHASH=$(sha1sum -b "$ASSETDIR"/tmp/rom.z64 | awk '{ print $1 }')
# 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
;;
79a4f053d34018e59279e6d4b83c7daccd985c87) # v64
ROMHASH=ad69c91157f6705e8ab06c79fe08aad47bb57ba7
;;
82fafee9c6ac7946739282958364ce606077ac65) # n64
ROMHASH=ad69c91157f6705e8ab06c79fe08aad47bb57ba7
;;
18cd0eb65914a21d8fa08dfe71c29d865e9d728a) # v64
ROMHASH=d3ecb253776cd847a5aa63d859d8c89a2f37b364
;;
07940d5609e04b7caac63570731e01189129212e) # n64
ROMHASH=d3ecb253776cd847a5aa63d859d8c89a2f37b364
;;
3ac86253e0c0d55486d212e647350c1527b9c92d) # v64
ROMHASH=41b3bdc48d98c48529219919015a1af22f5057c2
;;
70bf30a9980026e615a1ae8d2735a773cf9fcc94) # n64
ROMHASH=41b3bdc48d98c48529219919015a1af22f5057c2
;;
f9e2b6840b9103e9707ea390089a7b6943592a98) # v64
ROMHASH=c892bbda3993e66bd0d56a10ecd30b1ee612210f
;;
2fae1601aa7ae8d3e03ba3f4dcdfca3a36002ac5) # n64
ROMHASH=c892bbda3993e66bd0d56a10ecd30b1ee612210f
;;
1181034d5f9533f53ebe8e1c781badbee115f5aa) # v64
ROMHASH=dbfc81f655187dc6fefd93fa6798face770d579d
;;
07477067943abe8d0c50285eb4a6cb9ece99e79b) # n64
ROMHASH=dbfc81f655187dc6fefd93fa6798face770d579d
;;
2d8fb7140a9c5d11ce614561e5a36ffef0c17540) # v64
ROMHASH=fa5f5942b27480d60243c2d52c0e93e26b9e6b86
;;
d90bbe422ac728ac54ac6a2c9fec942f7ff04df9) # n64
ROMHASH=fa5f5942b27480d60243c2d52c0e93e26b9e6b86
;;
44c75962911e13bdfdc31b35e0b8e3be6a6a49ab) # v64
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b
;;
5d47025581060af5ba19e6719c25fea7398e87cf) # n64
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b
;;
e1d070ad7b017de9f992b362164dcd9d7f820f7e) # v64
8b5d13aac69bfbf989861cfdc50b1d840945fc1d
;;
a8c04cd5aa94a6a32198f36ff2069d43342d18a8) # n64
8b5d13aac69bfbf989861cfdc50b1d840945fc1d
;;
245410280d152f28d5b1c0c0fc37f384db0020cd) # v64
0769c84615422d60f16925cd859593cdfa597f84
;;
fbdc9e444807f9b881e3432cedf66f38746b81d8) # n64
0769c84615422d60f16925cd859593cdfa597f84
;;
b6d33d6bf5d6700c64b6a873ab8b06ff039619bc) # v64
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73
;;
2c7113d20044f93c82ec888c19aa09ea7797396d) # n64
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73
;;
06c3c098f0e14ed61811dfaf0e8e4519d7d7a826) # v64
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f
;;
bb3f85bfaad9ae7a20afbf618fc9fe126c8c1b4f) # n64
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f
;;
esac
case "$ROMHASH" in
cee6bc3c2a634b41728f2af8da54d9bf8cc14099)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_D
OTRNAME="oot.otr"
fi
;;
0227d7c0074f2d0ac935631990da8ec5914597b4)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_PAL_F
OTRNAME="oot.otr"
else
continue
fi
;;
328a1f1beba30ce5e178f031662019eb32c5f3b5)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_PAL_10
OTRNAME="oot.otr"
else
continue
fi
;;
cfbb98d392e4a9d39da8285d10cbef3974c2f012)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_PAL_11
OTRNAME="oot.otr"
else
continue
fi
;;
ad69c91157f6705e8ab06c79fe08aad47bb57ba7|c892bbda3993e66bd0d56a10ecd30b1ee612210f)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_10
OTRNAME="oot.otr"
else
continue
fi
;;
d3ecb253776cd847a5aa63d859d8c89a2f37b364|dbfc81f655187dc6fefd93fa6798face770d579d)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_11
OTRNAME="oot.otr"
else
continue
fi
;;
41b3bdc48d98c48529219919015a1af22f5057c2|fa5f5942b27480d60243c2d52c0e93e26b9e6b86)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_12
OTRNAME="oot.otr"
else
continue
fi
;;
f46239439f59a2a594ef83cf68ef65043b1bffe2)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_PAL_F
OTRNAME="oot-mq.otr"
else
continue
fi
;;
50bebedad9e0f10746a52b07239e47fa6c284d03)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
cfecfdc58d650e71a200c81f033de4e6d617a9f6)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
517bd9714c73cb96c21e7c2ef640d7b55186102f)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_U
OTRNAME="oot.otr"
else
continue
fi
;;
8b5d13aac69bfbf989861cfdc50b1d840945fc1d)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_NTSC_U
OTRNAME="oot-mq.otr"
else
continue
fi
;;
0769c84615422d60f16925cd859593cdfa597f84)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_J
OTRNAME="oot.otr"
else
continue
fi
;;
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_J_CE
OTRNAME="oot.otr"
else
continue
fi
;;
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_NTSC_J
OTRNAME="oot-mq.otr"
else
continue
fi
;;
*)
echo -e "\n$romfile - $ROMHASH rom hash does not match\n"
continue;;
esac
if [[ ! -e "$SHIP_HOME"/"$OTRNAME" ]]; then
if [ -n "$ZENITY" ]; then
(echo "# 25%"; echo "25"; sleep 2; echo "# 50%"; echo "50"; sleep 3; echo "# 75%"; echo "75"; sleep 2; echo "# 100%"; echo "100"; sleep 3) |
zenity --progress --title="OTR Generating..." --timeout=10 --percentage=0 --icon-name=soh --window-icon=soh.png --height=80 --width=400 &
else
echo "Processing..."
fi
assets/extractor/ZAPD.out ed -eh -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 --otrfile "${OTRNAME}" --portVer "@CMAKE_PROJECT_VERSION@" > /dev/null 2>&1
cp "$ASSETDIR"/"$OTRNAME" "$SHIP_HOME"
fi
else
if [[ (! -e "$SHIP_HOME"/oot.otr) && (! -e "$SHIP_HOME"/oot-mq.otr) ]]; then
if [ -n "$ZENITY" ]; then
zenity --error --timeout=5 --text="Place ROM in $SHIP_HOME" --title="Missing ROM file" --width=500 --width=200
else
echo -e "\nPlace ROM in this folder\n"
fi
exit
fi
fi
done
if [[ (! -e "$SHIP_HOME"/oot.otr) && (! -e "$SHIP_HOME"/oot-mq.otr) ]]; then
if [ -n "$ZENITY" ]; then
zenity --error --timeout=10 --text="No valid ROMs were provided, No OTR was generated." --title="Incorrect ROM file" --width=500 --width=200
else
echo "No valid roms provided, no OTR was generated."
fi
rm -r "$ASSETDIR"
exit
else
(cd "$SHIP_BIN_DIR"; ./soh.elf)
exit
fi
rm -r "$ASSETDIR"
done
(cd "$SHIP_BIN_DIR"; ./soh.elf)
exit

View file

@ -4,6 +4,7 @@ set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
project(soh LANGUAGES C CXX) project(soh LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use") set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
set(CMAKE_C_STANDARD 23 CACHE STRING "The C standard to use")
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
enable_language(OBJCXX) enable_language(OBJCXX)
@ -137,20 +138,27 @@ endforeach()
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(soh/OTRGlobals.cpp PROPERTIES COMPILE_FLAGS "/utf-8") set_source_files_properties(soh/OTRGlobals.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/tts/tts.cpp PROPERTIES COMPILE_FLAGS "/utf-8") set_source_files_properties(soh/Enhancements/tts/tts.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.h PROPERTIES COMPILE_FLAGS "/utf-8")
endif() endif()
# handle Network removals # handle Network removals
if (!BUILD_REMOTE_CONTROL) if (!BUILD_REMOTE_CONTROL)
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/crowd-control/*") list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/crowd-control/")
endif() endif()
# handle speechsynthesizer removals # handle speechsynthesizer removals
if (CMAKE_SYSTEM_NAME STREQUAL "Windows") if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/Darwin*") list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/Darwin")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/SAPI*") list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/SAPI")
else() else()
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/(Darwin|SAPI).*") list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/(Darwin|SAPI)")
endif()
find_library(ESPEAK espeak-ng)
if (NOT ESPEAK)
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/ESpeak")
endif() endif()
# soh/Extractor {{{ # soh/Extractor {{{
@ -176,12 +184,12 @@ file(GLOB_RECURSE src__ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.c" "src/*.h"
set_source_files_properties(${src__} PROPERTIES COMPILE_OPTIONS "${WARNING_OVERRIDE}") set_source_files_properties(${src__} PROPERTIES COMPILE_OPTIONS "${WARNING_OVERRIDE}")
list(APPEND src__ ${CMAKE_CURRENT_SOURCE_DIR}/Resource.rc) list(APPEND src__ ${CMAKE_CURRENT_SOURCE_DIR}/Resource.rc)
list(FILTER src__ EXCLUDE REGEX "src/dmadata/*") list(FILTER src__ EXCLUDE REGEX "src/dmadata/")
list(FILTER src__ EXCLUDE REGEX "src/elf_message/*") list(FILTER src__ EXCLUDE REGEX "src/elf_message/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/io/*") list(FILTER src__ EXCLUDE REGEX "src/libultra/io/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/libc/*") list(FILTER src__ EXCLUDE REGEX "src/libultra/libc/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/os/*") list(FILTER src__ EXCLUDE REGEX "src/libultra/os/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/rmon/*") list(FILTER src__ EXCLUDE REGEX "src/libultra/rmon/")
list(APPEND src__ "src/libultra/libc/sprintf.c") list(APPEND src__ "src/libultra/libc/sprintf.c")
list(REMOVE_ITEM src__ "src/libultra/gu/cosf.c") list(REMOVE_ITEM src__ "src/libultra/gu/cosf.c")
list(REMOVE_ITEM src__ "src/libultra/gu/lookat.c") list(REMOVE_ITEM src__ "src/libultra/gu/lookat.c")
@ -275,34 +283,17 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR}) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif() endif()
################################################################################ ################################################################################
# Find/download Boost # Find/download Dr Libs (For custom audio)
################################################################################ ################################################################################
include(FetchContent) include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
Boost dr_libs
URL https://archives.boost.io/release/1.81.0/source/boost_1_81_0.tar.gz GIT_REPOSITORY https://github.com/mackron/dr_libs.git
URL_HASH SHA256=205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6 GIT_TAG da35f9d6c7374a95353fd1df1d394d44ab66cf01
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
) )
FetchContent_MakeAvailable(dr_libs)
set(Boost_NO_BOOST_CMAKE false)
set(BOOST_INCLUDEDIR ${FETCHCONTENT_BASE_DIR}/boost-src) # Location where FetchContent stores the source
message("Searching for Boost installation")
find_package(Boost)
if (NOT ${Boost_FOUND})
message("Boost not found. Downloading now...")
FetchContent_MakeAvailable(Boost)
message("Boost downloaded to " ${FETCHCONTENT_BASE_DIR}/boost-src)
set(BOOST-INCLUDE ${FETCHCONTENT_BASE_DIR}/boost-src)
else()
message("Boost found in " ${Boost_INCLUDE_DIRS})
set(BOOST-INCLUDE ${Boost_INCLUDE_DIRS})
endif()
################################################################################
# Compile definitions
################################################################################
find_package(SDL2) find_package(SDL2)
set(SDL2-INCLUDE ${SDL2_INCLUDE_DIRS}) set(SDL2-INCLUDE ${SDL2_INCLUDE_DIRS})
@ -317,6 +308,14 @@ if (BUILD_REMOTE_CONTROL)
endif() endif()
endif() endif()
if (ESPEAK)
add_compile_definitions(ESPEAK=1)
endif()
################################################################################
# Compile definitions
################################################################################
target_include_directories(${PROJECT_NAME} PRIVATE assets target_include_directories(${PROJECT_NAME} PRIVATE assets
${CMAKE_CURRENT_SOURCE_DIR}/include/ ${CMAKE_CURRENT_SOURCE_DIR}/include/
${CMAKE_CURRENT_SOURCE_DIR}/src/ ${CMAKE_CURRENT_SOURCE_DIR}/src/
@ -348,8 +347,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE assets
${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD/resource/type ${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD/resource/type
${SDL2-INCLUDE} ${SDL2-INCLUDE}
${SDL2-NET-INCLUDE} ${SDL2-NET-INCLUDE}
${BOOST-INCLUDE}
${CMAKE_CURRENT_SOURCE_DIR}/assets/ ${CMAKE_CURRENT_SOURCE_DIR}/assets/
${dr_libs_SOURCE_DIR}
. .
) )
@ -511,10 +510,10 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-Wno-parentheses -Wno-parentheses
-Wno-narrowing -Wno-narrowing
-Wno-missing-braces -Wno-missing-braces
-Wno-int-conversion
$<$<COMPILE_LANGUAGE:C>: $<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration -Werror-implicit-function-declaration
-Wno-incompatible-pointer-types -Wno-incompatible-pointer-types
-Wno-int-conversion
> >
$<$<COMPILE_LANGUAGE:CXX>:-fpermissive> $<$<COMPILE_LANGUAGE:CXX>:-fpermissive>
$<$<COMPILE_LANGUAGE:CXX>: $<$<COMPILE_LANGUAGE:CXX>:
@ -587,11 +586,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-Wno-parentheses -Wno-parentheses
-Wno-narrowing -Wno-narrowing
-Wno-missing-braces -Wno-missing-braces
-Wno-int-conversion
-Wno-implicit-int
$<$<COMPILE_LANGUAGE:C>: $<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration -Werror-implicit-function-declaration
-Wno-implicit-int
-Wno-incompatible-pointer-types -Wno-incompatible-pointer-types
-Wno-int-conversion
> >
$<$<COMPILE_LANGUAGE:CXX>:-fpermissive> $<$<COMPILE_LANGUAGE:CXX>:-fpermissive>
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion> $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
@ -601,6 +600,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
target_link_options(${PROJECT_NAME} PRIVATE target_link_options(${PROJECT_NAME} PRIVATE
-pthread -pthread
#-fsanitize=address
-Wl,-export-dynamic -Wl,-export-dynamic
) )
endif() endif()
@ -609,21 +609,22 @@ endif()
# Pre build events # Pre build events
################################################################################ ################################################################################
if (CMAKE_GENERATOR MATCHES "Visual Studio") if (CMAKE_GENERATOR MATCHES "Visual Studio")
set(VS_COPY_ASSETS_CMD ${CMAKE_COMMAND} -E copy_directory_if_different $<TARGET_FILE_DIR:soh>/assets ${CMAKE_BINARY_DIR}/soh/assets) add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor ${CMAKE_BINARY_DIR}/soh/assets
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml ${CMAKE_BINARY_DIR}/soh/assets/xml
)
endif() endif()
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS") if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
add_custom_command( add_custom_command(
TARGET ${PROJECT_NAME} TARGET ${PROJECT_NAME}
POST_BUILD POST_BUILD
COMMENT "Copying asset xmls..." COMMENT "Copying asset xmls..."
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor $<TARGET_FILE_DIR:soh>/assets/extractor COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor $<TARGET_FILE_DIR:soh>/assets
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml $<TARGET_FILE_DIR:soh>/assets/extractor/xmls COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml $<TARGET_FILE_DIR:soh>/assets/xml
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists $<TARGET_FILE_DIR:soh>/assets/extractor/filelists COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:soh>/assets/symbols
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:soh>/assets/extractor/symbols # COMMAND ${VS_COPY_ASSETS_CMD}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${VS_COPY_ASSETS_CMD}
) )
endif() endif()
################################################################################ ################################################################################
@ -640,6 +641,15 @@ endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows") if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
find_package(glfw3 REQUIRED) find_package(glfw3 REQUIRED)
find_package(Ogg CONFIG REQUIRED)
link_libraries(Ogg::ogg)
find_package(Vorbis CONFIG REQUIRED)
link_libraries(Vorbis::vorbisfile)
find_package(Opus CONFIG REQUIRED)
link_libraries(Opus::opus)
find_package(OpusFile CONFIG REQUIRED)
link_libraries(OpusFile::opusfile CONFIG REQUIRED)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64") if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
set(ADDITIONAL_LIBRARY_DEPENDENCIES set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;" "libultraship;"
@ -653,6 +663,12 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"imm32;" "imm32;"
"version;" "version;"
"setupapi" "setupapi"
"Ogg::ogg"
"Opus::opus"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
"OpusFile::opusfile"
) )
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32") elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set(ADDITIONAL_LIBRARY_DEPENDENCIES set(ADDITIONAL_LIBRARY_DEPENDENCIES
@ -693,10 +709,21 @@ else()
find_package(SDL2) find_package(SDL2)
set(THREADS_PREFER_PTHREAD_FLAG ON) set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
find_package(Threads REQUIRED)
find_package(Ogg REQUIRED)
find_package(Vorbis REQUIRED)
find_package(Opus REQUIRED)
find_package(OpusFile REQUIRED)
set(ADDITIONAL_LIBRARY_DEPENDENCIES set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;" "libultraship;"
"ZAPDLib;" "ZAPDLib;"
SDL2::SDL2 SDL2::SDL2
"Ogg::ogg"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
"Opus::opus"
"Opusfile::Opusfile"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net>" "$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net>"
${CMAKE_DL_LIBS} ${CMAKE_DL_LIBS}
Threads::Threads Threads::Threads
@ -709,11 +736,7 @@ endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows") if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
INSTALL(FILES $<TARGET_PDB_FILE:soh> DESTINATION ./debug COMPONENT ship) INSTALL(FILES $<TARGET_PDB_FILE:soh> DESTINATION ./debug COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.otr DESTINATION . COMPONENT ship) INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.o2r DESTINATION . COMPONENT ship)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/appimage/soh.sh.in ${CMAKE_BINARY_DIR}/linux/soh.sh @ONLY)
endif() endif()
find_program(CURL NAMES curl DOC "Path to the curl program. Used to download files.") find_program(CURL NAMES curl DOC "Path to the curl program. Used to download files.")
@ -723,7 +746,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/Info.plist.in ${CMAKE_BINARY_DIR}/macosx/Info.plist @ONLY) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/Info.plist.in ${CMAKE_BINARY_DIR}/macosx/Info.plist @ONLY)
INSTALL(TARGETS soh DESTINATION ../MacOS COMPONENT ship) INSTALL(TARGETS soh DESTINATION ../MacOS COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship) INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.otr DESTINATION ../Resources COMPONENT ship) INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.o2r DESTINATION ../Resources COMPONENT ship)
elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS") elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS")
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship) INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship)
endif() endif()

View file

@ -2,6 +2,7 @@
"health": "Health - $0 Hearts", "health": "Health - $0 Hearts",
"magic": "Magic - $0", "magic": "Magic - $0",
"rupees": "Rupees - $0", "rupees": "Rupees - $0",
"keys": "Keys - $0",
"floor": "Floor $0", "floor": "Floor $0",
"basement": "Basement $0", "basement": "Basement $0",
"item_menu": "Select Item", "item_menu": "Select Item",

View file

@ -2,6 +2,7 @@
"health": "Vie - $0 Coeurs", "health": "Vie - $0 Coeurs",
"magic": "Magie - $0", "magic": "Magie - $0",
"rupees": "Rubis - $0", "rupees": "Rubis - $0",
"keys": "Clés - $0",
"floor": "Étage $0", "floor": "Étage $0",
"basement": "Sous-sol $0", "basement": "Sous-sol $0",
"item_menu": "Inventaire", "item_menu": "Inventaire",

View file

@ -2,6 +2,7 @@
"health": "Energie - $0 Herzen", "health": "Energie - $0 Herzen",
"magic": "Magie - $0", "magic": "Magie - $0",
"rupees": "Rubine - $0", "rupees": "Rubine - $0",
"keys": "Schlüssel - $0",
"floor": "Etage $0", "floor": "Etage $0",
"basement": "Keller $0", "basement": "Keller $0",
"item_menu": "Gegenstände", "item_menu": "Gegenstände",

View file

@ -0,0 +1,11 @@
{
"blocks": {
"enhancements": {
"gCheats": null,
"gEnhancements": null,
"gRandoEnhancements": null
}
},
"presetName": "Main Default",
"isBuiltIn": true
}

View file

@ -0,0 +1,59 @@
{
"blocks": {
"enhancements": {
"gCheats": null,
"gEnhancements": {
"AssignableTunicsAndBoots": 1,
"Autosave": 1,
"BetterOwl": 1,
"CreditsFix": 1,
"CustomizeFrogsOcarinaGame": 1,
"DekuNutUpgradeFix": 1,
"DisableLOD": 1,
"DpadEquips": 1,
"DpadNoDropOcarinaInput": 1,
"DynamicWalletIcon": 1,
"EnemySpawnsOverWaterboxes": 1,
"FasterRupeeAccumulator": 1,
"FixBrokenGiantsKnife": 1,
"FixDaruniaDanceSpeed": 1,
"FixDungeonMinimapIcon": 1,
"FixEyesOpenWhileSleeping": 1,
"FixFloorSwitches": 1,
"FixHammerHand": 1,
"FixMenuLR": 1,
"FixSawSoftlock": 1,
"FixTexturesOOB": 1,
"FixVineFall": 1,
"FixZoraHintDialogue": 1,
"FrogsModifyFailTime": 2,
"GerudoWarriorClothingFix": 1,
"GravediggingTourFix": 1,
"InjectItemCounts": {
"GoldSkulltula": 1,
"HeartContainer": 1,
"HeartPiece": 1
},
"NaviTextFix": 1,
"PulsateBossIcon": 1,
"RedGanonBlood": 1,
"RememberMapToggleState": 1,
"SceneSpecificDirtPathFix": 1,
"SilverRupeeJingleExtend": 1,
"SkipSaveConfirmation": 1,
"SkipText": 1,
"TextSpeed": 5,
"TimeFlowFileSelect": 1,
"TimeSavers": {
"SkipJabuJabuFish": 1
},
"TwoHandedIdle": 1,
"VisualAgony": 1,
"WidescreenActorCulling": 1
},
"gRandoEnhancements": null
}
},
"presetName": "Main Enhanced",
"isBuiltIn": true
}

View file

@ -0,0 +1,136 @@
{
"blocks": {
"enhancements": {
"gCheats": {
"EasyFrameAdvance": 1
},
"gEnhancements": {
"AdultMasks": 1,
"AssignableTunicsAndBoots": 1,
"Autosave": 1,
"BetterAmmoRendering": 1,
"BetterBombchuShopping": 1,
"BetterFarore": 1,
"BetterOwl": 1,
"BombchusOOB": 1,
"ClimbSpeed": 3,
"CrawlSpeed": 2,
"CreditsFix": 1,
"CustomizeFishing": 1,
"CustomizeFrogsOcarinaGame": 1,
"CustomizeOcarinaGame": 1,
"DampeAllNight": 1,
"DampeWin": 1,
"DayGravePull": 1,
"DekuNutUpgradeFix": 1,
"DisableCritWiggle": 1,
"DisableFirstPersonChus": 1,
"DisableLOD": 1,
"DpadEquips": 1,
"DpadNoDropOcarinaInput": 1,
"DynamicWalletIcon": 1,
"EarlyEyeballFrog": 1,
"EnemySpawnsOverWaterboxes": 1,
"EquipmentCanBeRemoved": 1,
"ExtendedCullingExcludeGlitchActors": 1,
"FastBoomerang": 1,
"FastChests": 1,
"FastDrops": 1,
"FastFarores": 1,
"FastOcarinaPlayback": 1,
"FasterBlockPush": 5,
"FasterHeavyBlockLift": 1,
"FasterRupeeAccumulator": 1,
"FileSelectMoreInfo": 1,
"FishNeverEscape": 1,
"FixBrokenGiantsKnife": 1,
"FixDaruniaDanceSpeed": 1,
"FixDungeonMinimapIcon": 1,
"FixFloorSwitches": 1,
"FixHammerHand": 1,
"FixMenuLR": 1,
"FixSawSoftlock": 1,
"FixTexturesOOB": 1,
"FixVineFall": 1,
"FixZoraHintDialogue": 1,
"ForgeTime": 0,
"FrogsModifyFailTime": 2,
"GerudoWarriorClothingFix": 1,
"GoronPot": 1,
"GravediggingTourFix": 1,
"GuaranteeFishingBite": 1,
"HoverFishing": 1,
"IncludeHeldInputsBufferWindow": 1,
"InjectItemCounts": {
"GoldSkulltula": 1,
"HeartContainer": 1,
"HeartPiece": 1
},
"InstantPutaway": 1,
"InstantScarecrow": 1,
"MMBunnyHood": 1,
"MarketSneak": 1,
"MaskSelect": 1,
"MinimumFishWeightAdult": 6,
"MinimumFishWeightChild": 3,
"MweepSpeed": 5.0,
"N64WeirdFrames": 1,
"NaviTextFix": 1,
"NewDrops": 1,
"NoInputForCredits": 1,
"NutsExplodeBombs": 1,
"OcarinaGame": {
"StartingNotes": 5
},
"PauseMenuAnimatedLink": 1,
"PauseWarp": 1,
"PersistentMasks": 1,
"PulsateBossIcon": 1,
"QuickBongoKill": 1,
"QuickPutaway": 1,
"QuitFishingAtDoor": 1,
"RedGanonBlood": 1,
"RememberMapToggleState": 1,
"SceneSpecificDirtPathFix": 1,
"SeparateArrows": 1,
"ShowDoorLocksOnBothSides": 1,
"SilverRupeeJingleExtend": 1,
"SkipArrowAnimation": 1,
"SkipSaveConfirmation": 1,
"SkipSwimDeepEndAnim": 1,
"SkipText": 1,
"SlowTextSpeed": 5,
"SwordToggle": 1,
"TextSpeed": 5,
"TimeFlowFileSelect": 1,
"TimeSavers": {
"DisableTitleCard": 1,
"SkipChildStealth": 1,
"SkipCutscene": {
"BossIntro": 1,
"Entrances": 1,
"Intro": 1,
"LearnSong": 1,
"OnePoint": 1,
"QuickBossDeaths": 1,
"Story": 1
},
"SkipForcedDialog": 3,
"SkipJabuJabuFish": 1,
"SkipMiscInteractions": 1,
"SkipOwlInteractions": 1,
"SkipTowerEscape": 1,
"SleepingWaterfall": 1
},
"ToTMedallionsColors": 1,
"ToggleStrength": 1,
"TwoHandedIdle": 1,
"VisualAgony": 1,
"WidescreenActorCulling": 1
},
"gRandoEnhancements": null
}
},
"presetName": "Main Randomizer",
"isBuiltIn": true
}

View file

@ -0,0 +1,56 @@
{
"blocks": {
"enhancements": {
"gCheats": null,
"gEnhancements": {
"AssignableTunicsAndBoots": 1,
"Autosave": 1,
"BetterOwl": 1,
"CreditsFix": 1,
"CustomizeFrogsOcarinaGame": 1,
"DekuNutUpgradeFix": 1,
"DisableLOD": 1,
"DpadEquips": 1,
"DpadNoDropOcarinaInput": 1,
"DynamicWalletIcon": 1,
"EnemySpawnsOverWaterboxes": 1,
"FasterRupeeAccumulator": 1,
"FixBrokenGiantsKnife": 1,
"FixDaruniaDanceSpeed": 1,
"FixDungeonMinimapIcon": 1,
"FixEyesOpenWhileSleeping": 1,
"FixFloorSwitches": 1,
"FixHammerHand": 1,
"FixMenuLR": 1,
"FixSawSoftlock": 1,
"FixTexturesOOB": 1,
"FixVineFall": 1,
"FixZoraHintDialogue": 1,
"FrogsModifyFailTime": 2,
"GerudoWarriorClothingFix": 1,
"GravediggingTourFix": 1,
"InjectItemCounts": {
"GoldSkulltula": 1,
"HeartContainer": 1,
"HeartPiece": 1
},
"NaviTextFix": 1,
"PulsateBossIcon": 1,
"RedGanonBlood": 1,
"RememberMapToggleState": 1,
"SceneSpecificDirtPathFix": 1,
"SilverRupeeJingleExtend": 1,
"SkipSaveConfirmation": 1,
"SkipText": 1,
"TextSpeed": 5,
"TimeFlowFileSelect": 1,
"TwoHandedIdle": 1,
"VisualAgony": 1,
"WidescreenActorCulling": 1
},
"gRandoEnhancements": null
}
},
"presetName": "Main Vanilla+",
"isBuiltIn": true
}

View file

@ -0,0 +1,69 @@
{
"blocks": {
"rando": {
"gRandoSettings": {
"40GSHint": 1,
"50GSHint": 1,
"BigPoeTargetCount": 1,
"BlueFireArrows": 1,
"BombchuBag": 1,
"BossKeysanity": 5,
"ClosedForest": 2,
"CompleteMaskQuest": 1,
"CuccosToReturn": 1,
"DampeHint": 1,
"DoorOfTime": 2,
"EnableBombchuDrops": 1,
"FortressCarpenters": 1,
"FrogsHint": 1,
"FullWallets": 1,
"GanonTrial": 0,
"GerudoKeys": 3,
"GregHint": 1,
"HBAHint": 1,
"IncludeTycoonWallet": 1,
"KakarikoGate": 1,
"Keysanity": 5,
"LacsRewardCount": 8,
"MalonHint": 1,
"MerchantText": 1,
"RainbowBridge": 7,
"SariaHint": 1,
"ScrubsFixedPrice": 2,
"ScrubsPrices": 3,
"SheikLAHint": 0,
"Shopsanity": 1,
"ShopsanityCount": 7,
"ShopsanityPrices": 2,
"ShuffleAdultTrade": 1,
"ShuffleBossEntrances": 2,
"ShuffleCows": 1,
"ShuffleDekuNutBag": 1,
"ShuffleDekuStickBag": 1,
"ShuffleDungeonsEntrances": 2,
"ShuffleFrogSongRupees": 1,
"ShuffleGanonBossKey": 9,
"ShuffleGerudoToken": 1,
"ShuffleKeyRings": 2,
"ShuffleKeyRingsRandomCount": 4,
"ShuffleKokiriSword": 1,
"ShuffleMasterSword": 1,
"ShuffleMerchants": 3,
"ShuffleOcarinas": 1,
"ShuffleOverworldSpawns": 1,
"ShuffleScrubs": 2,
"ShuffleSongs": 2,
"ShuffleSwim": 1,
"ShuffleTokens": 3,
"SkipChildZelda": 1,
"SkipEponaRace": 1,
"SkipScarecrowsSong": 1,
"StartingAge": 2,
"StartingMapsCompasses": 0,
"SunlightArrows": 1
}
}
},
"presetName": "Rando Advanced",
"isBuiltIn": true
}

View file

@ -0,0 +1,51 @@
{
"blocks": {
"rando": {
"gRandoSettings": {
"10GSHint": 1,
"20GSHint": 1,
"30GSHint": 1,
"40GSHint": 1,
"50GSHint": 1,
"BigPoeTargetCount": 1,
"BiggoronHint": 1,
"BlueFireArrows": 1,
"BossKeysanity": 2,
"ClosedForest": 2,
"CompleteMaskQuest": 1,
"CuccosToReturn": 1,
"DampeHint": 1,
"DoorOfTime": 2,
"EnableBombchuDrops": 1,
"ExcludedLocations": "147,148,233,323,",
"FortressCarpenters": 1,
"FrogsHint": 1,
"FullWallets": 1,
"GanonTrial": 0,
"GregHint": 1,
"HBAHint": 1,
"IncludeTycoonWallet": 1,
"KakarikoGate": 1,
"Keysanity": 2,
"LacsRewardCount": 6,
"MalonHint": 1,
"MerchantText": 1,
"RainbowBridge": 7,
"SariaHint": 1,
"SheikLAHint": 0,
"ShuffleGanonBossKey": 9,
"ShuffleOcarinas": 1,
"SkipChildZelda": 1,
"SkipEponaRace": 1,
"SkipScarecrowsSong": 1,
"StartingKokiriSword": 1,
"StartingMapsCompasses": 0,
"StartingOcarina": 1,
"SunlightArrows": 1,
"ZorasFountain": 1
}
}
},
"presetName": "Rando Beginner",
"isBuiltIn": true
}

View file

@ -0,0 +1,9 @@
{
"blocks": {
"rando": {
"gRandoSettings": null
}
},
"presetName": "Rando Default",
"isBuiltIn": true
}

View file

@ -0,0 +1,80 @@
{
"blocks": {
"rando": {
"gRandoSettings": {
"BigPoeTargetCount": 1,
"BlueFireArrows": 1,
"BombchuBag": 1,
"BossKeysanity": 5,
"ClosedForest": 2,
"CuccosToReturn": 1,
"DecoupleEntrances": 1,
"DoorOfTime": 2,
"EnableBombchuDrops": 1,
"Fishsanity": 4,
"FishsanityAgeSplit": 1,
"FishsanityPondCount": 17,
"GerudoKeys": 3,
"IncludeTycoonWallet": 1,
"KakarikoGate": 1,
"Keysanity": 5,
"LacsRewardCount": 10,
"LacsRewardOptions": 1,
"LockOverworldDoors": 1,
"MixBosses": 1,
"MixDungeons": 1,
"MixGrottos": 1,
"MixInteriors": 1,
"MixOverworld": 1,
"MixedEntrances": 1,
"RainbowBridge": 7,
"ScrubsPrices": 2,
"Shopsanity": 1,
"ShopsanityCount": 7,
"ShopsanityPrices": 2,
"Shuffle100GSReward": 1,
"ShuffleAdultTrade": 1,
"ShuffleBeehives": 1,
"ShuffleBossEntrances": 2,
"ShuffleBossSouls": 2,
"ShuffleChildWallet": 1,
"ShuffleCows": 1,
"ShuffleCrates": 3,
"ShuffleDekuNutBag": 1,
"ShuffleDekuStickBag": 1,
"ShuffleDungeonsEntrances": 2,
"ShuffleFairies": 1,
"ShuffleFishingPole": 1,
"ShuffleFreestanding": 3,
"ShuffleFrogSongRupees": 1,
"ShuffleGanonBossKey": 9,
"ShuffleGerudoToken": 1,
"ShuffleGrass": 3,
"ShuffleGrottosEntrances": 1,
"ShuffleInteriorsEntrances": 2,
"ShuffleKokiriSword": 1,
"ShuffleMasterSword": 1,
"ShuffleMerchants": 3,
"ShuffleOcarinaButtons": 1,
"ShuffleOcarinas": 1,
"ShuffleOverworldEntrances": 1,
"ShuffleOverworldSpawns": 1,
"ShuffleOwlDrops": 1,
"ShufflePots": 3,
"ShuffleScrubs": 2,
"ShuffleSongs": 2,
"ShuffleSwim": 1,
"ShuffleTokens": 3,
"ShuffleWarpSongs": 1,
"ShuffleWeirdEgg": 1,
"SkipEponaRace": 1,
"StartingAge": 2,
"StartingHearts": 0,
"StartingMapsCompasses": 5,
"SunlightArrows": 1
}
}
},
"presetName": "Rando Hell Mode",
"isBuiltIn": true
}

View file

@ -0,0 +1,63 @@
{
"blocks": {
"rando": {
"gRandoSettings": {
"10GSHint": 1,
"20GSHint": 1,
"30GSHint": 1,
"40GSHint": 1,
"50GSHint": 1,
"BigPoeTargetCount": 1,
"BiggoronHint": 1,
"BlueFireArrows": 1,
"BombchuBag": 1,
"BossKeysanity": 2,
"ClosedForest": 2,
"CompleteMaskQuest": 1,
"CuccosToReturn": 1,
"DampeHint": 1,
"DoorOfTime": 2,
"EnableBombchuDrops": 1,
"FortressCarpenters": 1,
"FrogsHint": 1,
"FullWallets": 1,
"GanonTrial": 0,
"GregHint": 1,
"HBAHint": 1,
"IncludeTycoonWallet": 1,
"KakarikoGate": 1,
"Keysanity": 5,
"LacsRewardCount": 7,
"MalonHint": 1,
"MerchantText": 1,
"RainbowBridge": 7,
"SariaHint": 1,
"ScrubsFixedPrice": 2,
"ScrubsPrices": 3,
"SheikLAHint": 0,
"Shopsanity": 1,
"ShopsanityCount": 4,
"ShopsanityPrices": 2,
"ShuffleGanonBossKey": 9,
"ShuffleGerudoToken": 1,
"ShuffleKeyRings": 2,
"ShuffleKeyRingsRandomCount": 8,
"ShuffleKokiriSword": 1,
"ShuffleMerchants": 1,
"ShuffleOcarinas": 1,
"ShuffleScrubs": 2,
"ShuffleSongs": 2,
"ShuffleTokens": 3,
"SkipChildZelda": 1,
"SkipEponaRace": 1,
"SkipScarecrowsSong": 1,
"StartingMapsCompasses": 0,
"StartingOcarina": 1,
"SunlightArrows": 1,
"ZorasFountain": 1
}
}
},
"presetName": "Rando Standard",
"isBuiltIn": true
}

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_MQ_D/"/> <ExternalXMLFolder Path="assets/xml/GC_MQ_D/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_MQ_NTSC_J/"/> <ExternalXMLFolder Path="assets/xml/GC_MQ_NTSC_J/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_MQ_NTSC_U/"/> <ExternalXMLFolder Path="assets/xml/GC_MQ_NTSC_U/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_MQ_PAL_F/"/> <ExternalXMLFolder Path="assets/xml/GC_MQ_PAL_F/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_D/"/> <ExternalXMLFolder Path="assets/xml/GC_NMQ_D/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_NTSC_J/"/> <ExternalXMLFolder Path="assets/xml/GC_NMQ_NTSC_J/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_NTSC_J_CE/"/> <ExternalXMLFolder Path="assets/xml/GC_NMQ_NTSC_J_CE/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_NTSC_U/"/> <ExternalXMLFolder Path="assets/xml/GC_NMQ_NTSC_U/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_PAL_F/"/> <ExternalXMLFolder Path="assets/xml/GC_NMQ_PAL_F/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/N64_NTSC_10/"/> <ExternalXMLFolder Path="assets/xml/N64_NTSC_10/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/N64_NTSC_11/"/> <ExternalXMLFolder Path="assets/xml/N64_NTSC_11/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/N64_NTSC_12/"/> <ExternalXMLFolder Path="assets/xml/N64_NTSC_12/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/N64_PAL_10/"/> <ExternalXMLFolder Path="assets/xml/N64_PAL_10/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

View file

@ -2,7 +2,7 @@
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/> <SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/> <ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/> <ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="assets/extractor/xmls/N64_PAL_11/"/> <ExternalXMLFolder Path="assets/xml/N64_PAL_11/"/>
<TexturePool File="TexturePool.xml"/> <TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root> </Root>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,472 @@
ACTOR_PLAYER
ACTOR_UNSET_1
ACTOR_EN_TEST
ACTOR_UNSET_3
ACTOR_EN_GIRLA
ACTOR_UNSET_5
ACTOR_UNSET_6
ACTOR_EN_PART
ACTOR_EN_LIGHT
ACTOR_EN_DOOR
ACTOR_EN_BOX
ACTOR_BG_DY_YOSEIZO
ACTOR_BG_HIDAN_FIREWALL
ACTOR_EN_POH
ACTOR_EN_OKUTA
ACTOR_BG_YDAN_SP
ACTOR_EN_BOM
ACTOR_EN_WALLMAS
ACTOR_EN_DODONGO
ACTOR_EN_FIREFLY
ACTOR_EN_HORSE
ACTOR_EN_ITEM00
ACTOR_EN_ARROW
ACTOR_UNSET_17
ACTOR_EN_ELF
ACTOR_EN_NIW
ACTOR_UNSET_1A
ACTOR_EN_TITE
ACTOR_EN_REEBA
ACTOR_EN_PEEHAT
ACTOR_EN_BUTTE
ACTOR_UNSET_1F
ACTOR_EN_INSECT
ACTOR_EN_FISH
ACTOR_UNSET_22
ACTOR_EN_HOLL
ACTOR_EN_SCENE_CHANGE
ACTOR_EN_ZF
ACTOR_EN_HATA
ACTOR_BOSS_DODONGO
ACTOR_BOSS_GOMA
ACTOR_EN_ZL1
ACTOR_EN_VIEWER
ACTOR_EN_GOMA
ACTOR_BG_PUSHBOX
ACTOR_EN_BUBBLE
ACTOR_DOOR_SHUTTER
ACTOR_EN_DODOJR
ACTOR_EN_BDFIRE
ACTOR_UNSET_31
ACTOR_EN_BOOM
ACTOR_EN_TORCH2
ACTOR_EN_BILI
ACTOR_EN_TP
ACTOR_UNSET_36
ACTOR_EN_ST
ACTOR_EN_BW
ACTOR_EN_A_OBJ
ACTOR_EN_EIYER
ACTOR_EN_RIVER_SOUND
ACTOR_EN_HORSE_NORMAL
ACTOR_EN_OSSAN
ACTOR_BG_TREEMOUTH
ACTOR_BG_DODOAGO
ACTOR_BG_HIDAN_DALM
ACTOR_BG_HIDAN_HROCK
ACTOR_EN_HORSE_GANON
ACTOR_BG_HIDAN_ROCK
ACTOR_BG_HIDAN_RSEKIZOU
ACTOR_BG_HIDAN_SEKIZOU
ACTOR_BG_HIDAN_SIMA
ACTOR_BG_HIDAN_SYOKU
ACTOR_EN_XC
ACTOR_BG_HIDAN_CURTAIN
ACTOR_BG_SPOT00_HANEBASI
ACTOR_EN_MB
ACTOR_EN_BOMBF
ACTOR_EN_ZL2
ACTOR_BG_HIDAN_FSLIFT
ACTOR_EN_OE2
ACTOR_BG_YDAN_HASI
ACTOR_BG_YDAN_MARUTA
ACTOR_BOSS_GANONDROF
ACTOR_UNSET_53
ACTOR_EN_AM
ACTOR_EN_DEKUBABA
ACTOR_EN_M_FIRE1
ACTOR_EN_M_THUNDER
ACTOR_BG_DDAN_JD
ACTOR_BG_BREAKWALL
ACTOR_EN_JJ
ACTOR_EN_HORSE_ZELDA
ACTOR_BG_DDAN_KD
ACTOR_DOOR_WARP1
ACTOR_OBJ_SYOKUDAI
ACTOR_ITEM_B_HEART
ACTOR_EN_DEKUNUTS
ACTOR_BG_MENKURI_KAITEN
ACTOR_BG_MENKURI_EYE
ACTOR_EN_VALI
ACTOR_BG_MIZU_MOVEBG
ACTOR_BG_MIZU_WATER
ACTOR_ARMS_HOOK
ACTOR_EN_FHG
ACTOR_BG_MORI_HINERI
ACTOR_EN_BB
ACTOR_BG_TOKI_HIKARI
ACTOR_EN_YUKABYUN
ACTOR_BG_TOKI_SWD
ACTOR_EN_FHG_FIRE
ACTOR_BG_MJIN
ACTOR_BG_HIDAN_KOUSI
ACTOR_DOOR_TOKI
ACTOR_BG_HIDAN_HAMSTEP
ACTOR_EN_BIRD
ACTOR_UNSET_73
ACTOR_UNSET_74
ACTOR_UNSET_75
ACTOR_UNSET_76
ACTOR_EN_WOOD02
ACTOR_UNSET_78
ACTOR_UNSET_79
ACTOR_UNSET_7A
ACTOR_UNSET_7B
ACTOR_EN_LIGHTBOX
ACTOR_EN_PU_BOX
ACTOR_UNSET_7E
ACTOR_UNSET_7F
ACTOR_EN_TRAP
ACTOR_EN_AROW_TRAP
ACTOR_EN_VASE
ACTOR_UNSET_83
ACTOR_EN_TA
ACTOR_EN_TK
ACTOR_BG_MORI_BIGST
ACTOR_BG_MORI_ELEVATOR
ACTOR_BG_MORI_KAITENKABE
ACTOR_BG_MORI_RAKKATENJO
ACTOR_EN_VM
ACTOR_DEMO_EFFECT
ACTOR_DEMO_KANKYO
ACTOR_BG_HIDAN_FWBIG
ACTOR_EN_FLOORMAS
ACTOR_EN_HEISHI1
ACTOR_EN_RD
ACTOR_EN_PO_SISTERS
ACTOR_BG_HEAVY_BLOCK
ACTOR_BG_PO_EVENT
ACTOR_OBJ_MURE
ACTOR_EN_SW
ACTOR_BOSS_FD
ACTOR_OBJECT_KANKYO
ACTOR_EN_DU
ACTOR_EN_FD
ACTOR_EN_HORSE_LINK_CHILD
ACTOR_DOOR_ANA
ACTOR_BG_SPOT02_OBJECTS
ACTOR_BG_HAKA
ACTOR_MAGIC_WIND
ACTOR_MAGIC_FIRE
ACTOR_UNSET_A0
ACTOR_EN_RU1
ACTOR_BOSS_FD2
ACTOR_EN_FD_FIRE
ACTOR_EN_DH
ACTOR_EN_DHA
ACTOR_EN_RL
ACTOR_EN_ENCOUNT1
ACTOR_DEMO_DU
ACTOR_DEMO_IM
ACTOR_DEMO_TRE_LGT
ACTOR_EN_FW
ACTOR_BG_VB_SIMA
ACTOR_EN_VB_BALL
ACTOR_BG_HAKA_MEGANE
ACTOR_BG_HAKA_MEGANEBG
ACTOR_BG_HAKA_SHIP
ACTOR_BG_HAKA_SGAMI
ACTOR_UNSET_B2
ACTOR_EN_HEISHI2
ACTOR_EN_ENCOUNT2
ACTOR_EN_FIRE_ROCK
ACTOR_EN_BROB
ACTOR_MIR_RAY
ACTOR_BG_SPOT09_OBJ
ACTOR_BG_SPOT18_OBJ
ACTOR_BOSS_VA
ACTOR_BG_HAKA_TUBO
ACTOR_BG_HAKA_TRAP
ACTOR_BG_HAKA_HUTA
ACTOR_BG_HAKA_ZOU
ACTOR_BG_SPOT17_FUNEN
ACTOR_EN_SYATEKI_ITM
ACTOR_EN_SYATEKI_MAN
ACTOR_EN_TANA
ACTOR_EN_NB
ACTOR_BOSS_MO
ACTOR_EN_SB
ACTOR_EN_BIGOKUTA
ACTOR_EN_KAREBABA
ACTOR_BG_BDAN_OBJECTS
ACTOR_DEMO_SA
ACTOR_DEMO_GO
ACTOR_EN_IN
ACTOR_EN_TR
ACTOR_BG_SPOT16_BOMBSTONE
ACTOR_UNSET_CE
ACTOR_BG_HIDAN_KOWARERUKABE
ACTOR_BG_BOMBWALL
ACTOR_BG_SPOT08_ICEBLOCK
ACTOR_EN_RU2
ACTOR_OBJ_DEKUJR
ACTOR_BG_MIZU_UZU
ACTOR_BG_SPOT06_OBJECTS
ACTOR_BG_ICE_OBJECTS
ACTOR_BG_HAKA_WATER
ACTOR_UNSET_D8
ACTOR_EN_MA2
ACTOR_EN_BOM_CHU
ACTOR_EN_HORSE_GAME_CHECK
ACTOR_BOSS_TW
ACTOR_EN_RR
ACTOR_EN_BA
ACTOR_EN_BX
ACTOR_EN_ANUBICE
ACTOR_EN_ANUBICE_FIRE
ACTOR_BG_MORI_HASHIGO
ACTOR_BG_MORI_HASHIRA4
ACTOR_BG_MORI_IDOMIZU
ACTOR_BG_SPOT16_DOUGHNUT
ACTOR_BG_BDAN_SWITCH
ACTOR_EN_MA1
ACTOR_BOSS_GANON
ACTOR_BOSS_SST
ACTOR_UNSET_EA
ACTOR_UNSET_EB
ACTOR_EN_NY
ACTOR_EN_FR
ACTOR_ITEM_SHIELD
ACTOR_BG_ICE_SHELTER
ACTOR_EN_ICE_HONO
ACTOR_ITEM_OCARINA
ACTOR_UNSET_F2
ACTOR_UNSET_F3
ACTOR_MAGIC_DARK
ACTOR_DEMO_6K
ACTOR_EN_ANUBICE_TAG
ACTOR_BG_HAKA_GATE
ACTOR_BG_SPOT15_SAKU
ACTOR_BG_JYA_GOROIWA
ACTOR_BG_JYA_ZURERUKABE
ACTOR_UNSET_FB
ACTOR_BG_JYA_COBRA
ACTOR_BG_JYA_KANAAMI
ACTOR_FISHING
ACTOR_OBJ_OSHIHIKI
ACTOR_BG_GATE_SHUTTER
ACTOR_EFF_DUST
ACTOR_BG_SPOT01_FUSYA
ACTOR_BG_SPOT01_IDOHASHIRA
ACTOR_BG_SPOT01_IDOMIZU
ACTOR_BG_PO_SYOKUDAI
ACTOR_BG_GANON_OTYUKA
ACTOR_BG_SPOT15_RRBOX
ACTOR_BG_UMAJUMP
ACTOR_UNSET_109
ACTOR_ARROW_FIRE
ACTOR_ARROW_ICE
ACTOR_ARROW_LIGHT
ACTOR_UNSET_10D
ACTOR_UNSET_10E
ACTOR_ITEM_ETCETERA
ACTOR_OBJ_KIBAKO
ACTOR_OBJ_TSUBO
ACTOR_EN_WONDER_ITEM
ACTOR_EN_IK
ACTOR_DEMO_IK
ACTOR_EN_SKJ
ACTOR_EN_SKJNEEDLE
ACTOR_EN_G_SWITCH
ACTOR_DEMO_EXT
ACTOR_DEMO_SHD
ACTOR_EN_DNS
ACTOR_ELF_MSG
ACTOR_EN_HONOTRAP
ACTOR_EN_TUBO_TRAP
ACTOR_OBJ_ICE_POLY
ACTOR_BG_SPOT03_TAKI
ACTOR_BG_SPOT07_TAKI
ACTOR_EN_FZ
ACTOR_EN_PO_RELAY
ACTOR_BG_RELAY_OBJECTS
ACTOR_EN_DIVING_GAME
ACTOR_EN_KUSA
ACTOR_OBJ_BEAN
ACTOR_OBJ_BOMBIWA
ACTOR_UNSET_128
ACTOR_UNSET_129
ACTOR_OBJ_SWITCH
ACTOR_OBJ_ELEVATOR
ACTOR_OBJ_LIFT
ACTOR_OBJ_HSBLOCK
ACTOR_EN_OKARINA_TAG
ACTOR_EN_YABUSAME_MARK
ACTOR_EN_GOROIWA
ACTOR_EN_EX_RUPPY
ACTOR_EN_TORYO
ACTOR_EN_DAIKU
ACTOR_UNSET_134
ACTOR_EN_NWC
ACTOR_EN_BLKOBJ
ACTOR_ITEM_INBOX
ACTOR_EN_GE1
ACTOR_OBJ_BLOCKSTOP
ACTOR_EN_SDA
ACTOR_EN_CLEAR_TAG
ACTOR_EN_NIW_LADY
ACTOR_EN_GM
ACTOR_EN_MS
ACTOR_EN_HS
ACTOR_BG_INGATE
ACTOR_EN_KANBAN
ACTOR_EN_HEISHI3
ACTOR_EN_SYATEKI_NIW
ACTOR_EN_ATTACK_NIW
ACTOR_BG_SPOT01_IDOSOKO
ACTOR_EN_SA
ACTOR_EN_WONDER_TALK
ACTOR_BG_GJYO_BRIDGE
ACTOR_EN_DS
ACTOR_EN_MK
ACTOR_EN_BOM_BOWL_MAN
ACTOR_EN_BOM_BOWL_PIT
ACTOR_EN_OWL
ACTOR_EN_ISHI
ACTOR_OBJ_HANA
ACTOR_OBJ_LIGHTSWITCH
ACTOR_OBJ_MURE2
ACTOR_EN_GO
ACTOR_EN_FU
ACTOR_UNSET_154
ACTOR_EN_CHANGER
ACTOR_BG_JYA_MEGAMI
ACTOR_BG_JYA_LIFT
ACTOR_BG_JYA_BIGMIRROR
ACTOR_BG_JYA_BOMBCHUIWA
ACTOR_BG_JYA_AMISHUTTER
ACTOR_BG_JYA_BOMBIWA
ACTOR_BG_SPOT18_BASKET
ACTOR_UNSET_15D
ACTOR_EN_GANON_ORGAN
ACTOR_EN_SIOFUKI
ACTOR_EN_STREAM
ACTOR_UNSET_161
ACTOR_EN_MM
ACTOR_EN_KO
ACTOR_EN_KZ
ACTOR_EN_WEATHER_TAG
ACTOR_BG_SST_FLOOR
ACTOR_EN_ANI
ACTOR_EN_EX_ITEM
ACTOR_BG_JYA_IRONOBJ
ACTOR_EN_JS
ACTOR_EN_JSJUTAN
ACTOR_EN_CS
ACTOR_EN_MD
ACTOR_EN_HY
ACTOR_EN_GANON_MANT
ACTOR_EN_OKARINA_EFFECT
ACTOR_EN_MAG
ACTOR_DOOR_GERUDO
ACTOR_ELF_MSG2
ACTOR_DEMO_GT
ACTOR_EN_PO_FIELD
ACTOR_EFC_ERUPC
ACTOR_BG_ZG
ACTOR_EN_HEISHI4
ACTOR_EN_ZL3
ACTOR_BOSS_GANON2
ACTOR_EN_KAKASI
ACTOR_EN_TAKARA_MAN
ACTOR_OBJ_MAKEOSHIHIKI
ACTOR_OCEFF_SPOT
ACTOR_END_TITLE
ACTOR_UNSET_180
ACTOR_EN_TORCH
ACTOR_DEMO_EC
ACTOR_SHOT_SUN
ACTOR_EN_DY_EXTRA
ACTOR_EN_WONDER_TALK2
ACTOR_EN_GE2
ACTOR_OBJ_ROOMTIMER
ACTOR_EN_SSH
ACTOR_EN_STH
ACTOR_OCEFF_WIPE
ACTOR_OCEFF_STORM
ACTOR_EN_WEIYER
ACTOR_BG_SPOT05_SOKO
ACTOR_BG_JYA_1FLIFT
ACTOR_BG_JYA_HAHENIRON
ACTOR_BG_SPOT12_GATE
ACTOR_BG_SPOT12_SAKU
ACTOR_EN_HINTNUTS
ACTOR_EN_NUTSBALL
ACTOR_BG_SPOT00_BREAK
ACTOR_EN_SHOPNUTS
ACTOR_EN_IT
ACTOR_EN_GELDB
ACTOR_OCEFF_WIPE2
ACTOR_OCEFF_WIPE3
ACTOR_EN_NIW_GIRL
ACTOR_EN_DOG
ACTOR_EN_SI
ACTOR_BG_SPOT01_OBJECTS2
ACTOR_OBJ_COMB
ACTOR_BG_SPOT11_BAKUDANKABE
ACTOR_OBJ_KIBAKO2
ACTOR_EN_DNT_DEMO
ACTOR_EN_DNT_JIJI
ACTOR_EN_DNT_NOMAL
ACTOR_EN_GUEST
ACTOR_BG_BOM_GUARD
ACTOR_EN_HS2
ACTOR_DEMO_KEKKAI
ACTOR_BG_SPOT08_BAKUDANKABE
ACTOR_BG_SPOT17_BAKUDANKABE
ACTOR_UNSET_1AA
ACTOR_OBJ_MURE3
ACTOR_EN_TG
ACTOR_EN_MU
ACTOR_EN_GO2
ACTOR_EN_WF
ACTOR_EN_SKB
ACTOR_DEMO_GJ
ACTOR_DEMO_GEFF
ACTOR_BG_GND_FIREMEIRO
ACTOR_BG_GND_DARKMEIRO
ACTOR_BG_GND_SOULMEIRO
ACTOR_BG_GND_NISEKABE
ACTOR_BG_GND_ICEBLOCK
ACTOR_EN_GB
ACTOR_EN_GS
ACTOR_BG_MIZU_BWALL
ACTOR_BG_MIZU_SHUTTER
ACTOR_EN_DAIKU_KAKARIKO
ACTOR_BG_BOWL_WALL
ACTOR_EN_WALL_TUBO
ACTOR_EN_PO_DESERT
ACTOR_EN_CROW
ACTOR_DOOR_KILLER
ACTOR_BG_SPOT11_OASIS
ACTOR_BG_SPOT18_FUTA
ACTOR_BG_SPOT18_SHUTTER
ACTOR_EN_MA3
ACTOR_EN_COW
ACTOR_BG_ICE_TURARA
ACTOR_BG_ICE_SHUTTER
ACTOR_EN_KAKASI2
ACTOR_EN_KAKASI3
ACTOR_OCEFF_WIPE4
ACTOR_EN_EG
ACTOR_BG_MENKURI_NISEKABE
ACTOR_EN_ZO
ACTOR_OBJ_MAKEKINSUTA
ACTOR_EN_GE3
ACTOR_OBJ_TIMEBLOCK
ACTOR_OBJ_HAMISHI
ACTOR_EN_ZL4
ACTOR_EN_MM2
ACTOR_BG_JYA_BLOCK
ACTOR_OBJ_WARP2BLOCK
ACTOR_ID_MAX

View file

@ -0,0 +1,402 @@
OBJECT_INVALID
OBJECT_GAMEPLAY_KEEP
OBJECT_GAMEPLAY_FIELD_KEEP
OBJECT_GAMEPLAY_DANGEON_KEEP
OBJECT_UNSET_4
OBJECT_UNSET_5
OBJECT_HUMAN
OBJECT_OKUTA
OBJECT_CROW
OBJECT_POH
OBJECT_DY_OBJ
OBJECT_WALLMASTER
OBJECT_DODONGO
OBJECT_FIREFLY
OBJECT_BOX
OBJECT_FIRE
OBJECT_UNSET_10
OBJECT_UNSET_11
OBJECT_BUBBLE
OBJECT_NIW
OBJECT_LINK_BOY
OBJECT_LINK_CHILD
OBJECT_TITE
OBJECT_REEBA
OBJECT_PEEHAT
OBJECT_KINGDODONGO
OBJECT_HORSE
OBJECT_ZF
OBJECT_GOMA
OBJECT_ZL1
OBJECT_GOL
OBJECT_DODOJR
OBJECT_TORCH2
OBJECT_BL
OBJECT_TP
OBJECT_OA1
OBJECT_ST
OBJECT_BW
OBJECT_EI
OBJECT_HORSE_NORMAL
OBJECT_OB1
OBJECT_O_ANIME
OBJECT_SPOT04_OBJECTS
OBJECT_DDAN_OBJECTS
OBJECT_HIDAN_OBJECTS
OBJECT_HORSE_GANON
OBJECT_OA2
OBJECT_SPOT00_OBJECTS
OBJECT_MB
OBJECT_BOMBF
OBJECT_SK2
OBJECT_OE1
OBJECT_OE_ANIME
OBJECT_OE2
OBJECT_YDAN_OBJECTS
OBJECT_GND
OBJECT_AM
OBJECT_DEKUBABA
OBJECT_UNSET_3A
OBJECT_OA3
OBJECT_OA4
OBJECT_OA5
OBJECT_OA6
OBJECT_OA7
OBJECT_JJ
OBJECT_OA8
OBJECT_OA9
OBJECT_OB2
OBJECT_OB3
OBJECT_OB4
OBJECT_HORSE_ZELDA
OBJECT_OPENING_DEMO1
OBJECT_WARP1
OBJECT_B_HEART
OBJECT_DEKUNUTS
OBJECT_OE3
OBJECT_OE4
OBJECT_MENKURI_OBJECTS
OBJECT_OE5
OBJECT_OE6
OBJECT_OE7
OBJECT_OE8
OBJECT_OE9
OBJECT_OE10
OBJECT_OE11
OBJECT_OE12
OBJECT_VALI
OBJECT_OA10
OBJECT_OA11
OBJECT_MIZU_OBJECTS
OBJECT_FHG
OBJECT_OSSAN
OBJECT_MORI_HINERI1
OBJECT_BB
OBJECT_TOKI_OBJECTS
OBJECT_YUKABYUN
OBJECT_ZL2
OBJECT_MJIN
OBJECT_MJIN_FLASH
OBJECT_MJIN_DARK
OBJECT_MJIN_FLAME
OBJECT_MJIN_ICE
OBJECT_MJIN_SOUL
OBJECT_MJIN_WIND
OBJECT_MJIN_OKA
OBJECT_HAKA_OBJECTS
OBJECT_SPOT06_OBJECTS
OBJECT_ICE_OBJECTS
OBJECT_RELAY_OBJECTS
OBJECT_PO_FIELD
OBJECT_PO_COMPOSER
OBJECT_MORI_HINERI1A
OBJECT_MORI_HINERI2
OBJECT_MORI_HINERI2A
OBJECT_MORI_OBJECTS
OBJECT_MORI_TEX
OBJECT_SPOT08_OBJ
OBJECT_WARP2
OBJECT_HATA
OBJECT_BIRD
OBJECT_UNSET_78
OBJECT_UNSET_79
OBJECT_UNSET_7A
OBJECT_UNSET_7B
OBJECT_WOOD02
OBJECT_UNSET_7D
OBJECT_UNSET_7E
OBJECT_UNSET_7F
OBJECT_UNSET_80
OBJECT_LIGHTBOX
OBJECT_PU_BOX
OBJECT_UNSET_83
OBJECT_UNSET_84
OBJECT_TRAP
OBJECT_VASE
OBJECT_IM
OBJECT_TA
OBJECT_TK
OBJECT_XC
OBJECT_VM
OBJECT_BV
OBJECT_HAKACH_OBJECTS
OBJECT_EFC_CRYSTAL_LIGHT
OBJECT_EFC_FIRE_BALL
OBJECT_EFC_FLASH
OBJECT_EFC_LGT_SHOWER
OBJECT_EFC_STAR_FIELD
OBJECT_GOD_LGT
OBJECT_LIGHT_RING
OBJECT_TRIFORCE_SPOT
OBJECT_BDAN_OBJECTS
OBJECT_SD
OBJECT_RD
OBJECT_PO_SISTERS
OBJECT_HEAVY_OBJECT
OBJECT_GNDD
OBJECT_FD
OBJECT_DU
OBJECT_FW
OBJECT_MEDAL
OBJECT_HORSE_LINK_CHILD
OBJECT_SPOT02_OBJECTS
OBJECT_HAKA
OBJECT_RU1
OBJECT_SYOKUDAI
OBJECT_FD2
OBJECT_DH
OBJECT_RL
OBJECT_EFC_TW
OBJECT_DEMO_TRE_LGT
OBJECT_GI_KEY
OBJECT_MIR_RAY
OBJECT_BROB
OBJECT_GI_JEWEL
OBJECT_SPOT09_OBJ
OBJECT_SPOT18_OBJ
OBJECT_BDOOR
OBJECT_SPOT17_OBJ
OBJECT_SHOP_DUNGEN
OBJECT_NB
OBJECT_MO
OBJECT_SB
OBJECT_GI_MELODY
OBJECT_GI_HEART
OBJECT_GI_COMPASS
OBJECT_GI_BOSSKEY
OBJECT_GI_MEDAL
OBJECT_GI_NUTS
OBJECT_SA
OBJECT_GI_HEARTS
OBJECT_GI_ARROWCASE
OBJECT_GI_BOMBPOUCH
OBJECT_IN
OBJECT_TR
OBJECT_SPOT16_OBJ
OBJECT_OE1S
OBJECT_OE4S
OBJECT_OS_ANIME
OBJECT_GI_BOTTLE
OBJECT_GI_STICK
OBJECT_GI_MAP
OBJECT_OF1D_MAP
OBJECT_RU2
OBJECT_GI_SHIELD_1
OBJECT_DEKUJR
OBJECT_GI_MAGICPOT
OBJECT_GI_BOMB_1
OBJECT_OF1S
OBJECT_MA2
OBJECT_GI_PURSE
OBJECT_HNI
OBJECT_TW
OBJECT_RR
OBJECT_BXA
OBJECT_ANUBICE
OBJECT_GI_GERUDO
OBJECT_GI_ARROW
OBJECT_GI_BOMB_2
OBJECT_GI_EGG
OBJECT_GI_SCALE
OBJECT_GI_SHIELD_2
OBJECT_GI_HOOKSHOT
OBJECT_GI_OCARINA
OBJECT_GI_MILK
OBJECT_MA1
OBJECT_GANON
OBJECT_SST
OBJECT_NY_UNUSED
OBJECT_UNSET_E4
OBJECT_NY
OBJECT_FR
OBJECT_GI_PACHINKO
OBJECT_GI_BOOMERANG
OBJECT_GI_BOW
OBJECT_GI_GLASSES
OBJECT_GI_LIQUID
OBJECT_ANI
OBJECT_DEMO_6K
OBJECT_GI_SHIELD_3
OBJECT_GI_LETTER
OBJECT_SPOT15_OBJ
OBJECT_JYA_OBJ
OBJECT_GI_CLOTHES
OBJECT_GI_BEAN
OBJECT_GI_FISH
OBJECT_GI_SAW
OBJECT_GI_HAMMER
OBJECT_GI_GRASS
OBJECT_GI_LONGSWORD
OBJECT_SPOT01_OBJECTS
OBJECT_MD_UNUSED
OBJECT_MD
OBJECT_KM1
OBJECT_KW1
OBJECT_ZO
OBJECT_KZ
OBJECT_UMAJUMP
OBJECT_MASTERKOKIRI
OBJECT_MASTERKOKIRIHEAD
OBJECT_MASTERGOLON
OBJECT_MASTERZOORA
OBJECT_AOB
OBJECT_IK
OBJECT_AHG
OBJECT_CNE
OBJECT_GI_NIWATORI
OBJECT_SKJ
OBJECT_GI_BOTTLE_LETTER
OBJECT_BJI
OBJECT_BBA
OBJECT_GI_OCARINA_0
OBJECT_DS
OBJECT_ANE
OBJECT_BOJ
OBJECT_SPOT03_OBJECT
OBJECT_SPOT07_OBJECT
OBJECT_FZ
OBJECT_BOB
OBJECT_GE1
OBJECT_YABUSAME_POINT
OBJECT_GI_BOOTS_2
OBJECT_GI_SEED
OBJECT_GND_MAGIC
OBJECT_D_ELEVATOR
OBJECT_D_HSBLOCK
OBJECT_D_LIFT
OBJECT_MAMENOKI
OBJECT_GOROIWA
OBJECT_UNSET_120
OBJECT_TORYO
OBJECT_DAIKU
OBJECT_UNSET_123
OBJECT_NWC
OBJECT_BLKOBJ
OBJECT_GM
OBJECT_MS
OBJECT_HS
OBJECT_INGATE
OBJECT_LIGHTSWITCH
OBJECT_KUSA
OBJECT_TSUBO
OBJECT_GI_GLOVES
OBJECT_GI_COIN
OBJECT_KANBAN
OBJECT_GJYO_OBJECTS
OBJECT_OWL
OBJECT_MK
OBJECT_FU
OBJECT_GI_KI_TAN_MASK
OBJECT_GI_REDEAD_MASK
OBJECT_GI_SKJ_MASK
OBJECT_GI_RABIT_MASK
OBJECT_GI_TRUTH_MASK
OBJECT_GANON_OBJECTS
OBJECT_SIOFUKI
OBJECT_STREAM
OBJECT_MM
OBJECT_FA
OBJECT_OS
OBJECT_GI_EYE_LOTION
OBJECT_GI_POWDER
OBJECT_GI_MUSHROOM
OBJECT_GI_TICKETSTONE
OBJECT_GI_BROKENSWORD
OBJECT_JS
OBJECT_CS
OBJECT_GI_PRESCRIPTION
OBJECT_GI_BRACELET
OBJECT_GI_SOLDOUT
OBJECT_GI_FROG
OBJECT_MAG
OBJECT_DOOR_GERUDO
OBJECT_GT
OBJECT_EFC_ERUPC
OBJECT_ZL2_ANIME1
OBJECT_ZL2_ANIME2
OBJECT_GI_GOLONMASK
OBJECT_GI_ZORAMASK
OBJECT_GI_GERUDOMASK
OBJECT_GANON2
OBJECT_KA
OBJECT_TS
OBJECT_ZG
OBJECT_GI_HOVERBOOTS
OBJECT_GI_M_ARROW
OBJECT_DS2
OBJECT_EC
OBJECT_FISH
OBJECT_GI_SUTARU
OBJECT_GI_GODDESS
OBJECT_SSH
OBJECT_BIGOKUTA
OBJECT_BG
OBJECT_SPOT05_OBJECTS
OBJECT_SPOT12_OBJ
OBJECT_BOMBIWA
OBJECT_HINTNUTS
OBJECT_RS
OBJECT_SPOT00_BREAK
OBJECT_GLA
OBJECT_SHOPNUTS
OBJECT_GELDB
OBJECT_GR
OBJECT_DOG
OBJECT_JYA_IRON
OBJECT_JYA_DOOR
OBJECT_UNSET_16E
OBJECT_SPOT11_OBJ
OBJECT_KIBAKO2
OBJECT_DNS
OBJECT_DNK
OBJECT_GI_FIRE
OBJECT_GI_INSECT
OBJECT_GI_BUTTERFLY
OBJECT_GI_GHOST
OBJECT_GI_SOUL
OBJECT_BOWL
OBJECT_DEMO_KEKKAI
OBJECT_EFC_DOUGHNUT
OBJECT_GI_DEKUPOUCH
OBJECT_GANON_ANIME1
OBJECT_GANON_ANIME2
OBJECT_GANON_ANIME3
OBJECT_GI_RUPY
OBJECT_SPOT01_MATOYA
OBJECT_SPOT01_MATOYAB
OBJECT_MU
OBJECT_WF
OBJECT_SKB
OBJECT_GJ
OBJECT_GEFF
OBJECT_HAKA_DOOR
OBJECT_GS
OBJECT_PS
OBJECT_BWALL
OBJECT_COW
OBJECT_COB
OBJECT_GI_SWORD_1
OBJECT_DOOR_KILLER
OBJECT_OUKE_HAKA
OBJECT_TIMEBLOCK
OBJECT_ZL4

View file

@ -0,0 +1 @@
8012DB20 gMtxClear

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

View file

@ -239,7 +239,7 @@
<Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/> <Texture Name="gGoldSkulltulaItemNameENGTex" OutName="gold_skulltula_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B000"/>
<Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/> <Texture Name="gPieceOfHeartItemNameENGTex" OutName="piece_of_heart_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3B400"/>
<Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/> <Texture Name="gUnusedPieceOfHeartItemName2JPNTex" OutName="piece_of_heart_item_name_unused_jpn_2" Format="ia4" Width="128" Height="16" Offset="0x3B800"/>
<Texture Name="gBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/> <Texture Name="gUnusedBigKeyItemNameENGTex" OutName="big_key_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3BC00"/>
<Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/> <Texture Name="gCompassItemNameENGTex" OutName="compass_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C000"/>
<Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/> <Texture Name="gDungeonMapItemNameENGTex" OutName="dungeon_map_item_name_eng" Format="ia4" Width="128" Height="16" Offset="0x3C400"/>
<Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/> <Texture Name="gUnusedBossKeyItemName12JPNTex" OutName="boss_key_item_name_unused_jpn_12" Format="ia4" Width="128" Height="16" Offset="0x3C800"/>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,47 +0,0 @@
// 32 bit implementation based off of Boost hash
#ifndef BOOST_HASH_DETAIL_HASH_MIX_32_HPP
#define BOOST_HASH_DETAIL_HASH_MIX_32_HPP
#include <boost/cstdint.hpp>
#include <cstddef>
#include <climits>
namespace boost
{
namespace hash_detail
{
template<uint32_t Bits> struct hash_mix_impl_32;
// hash_mix for 32 bit
//
// We use the "best xmxmx" implementation from
// https://github.com/skeeto/hash-prospector/issues/19
template<> struct hash_mix_impl_32<32>
{
inline static boost::uint32_t fn( boost::uint32_t x )
{
boost::uint32_t const m1 = 0x21f0aaad;
boost::uint32_t const m2 = 0x735a2d97;
x ^= x >> 16;
x *= m1;
x ^= x >> 15;
x *= m2;
x ^= x >> 15;
return x;
}
};
inline uint32_t hash_mix_32( uint32_t v )
{
return hash_mix_impl_32<32>::fn( v );
}
} // namespace hash_detail
} // namespace boost
#endif // #ifndef BOOST_HASH_DETAIL_HASH_MIX_32_HPP

View file

@ -1,128 +0,0 @@
// 32 bit implementation based off of Boost hash
// Only implementing 32 bit version of char based ranges
#ifndef BOOST_HASH_DETAIL_HASH_RANGE_32_HPP
#define BOOST_HASH_DETAIL_HASH_RANGE_32_HPP
#include <boost_custom/container_hash/hash_fwd_32.hpp>
#include <boost_custom/container_hash/version.hpp>
#if BOOST_VERSION_HAS_HASH_RANGE
#include <boost/container_hash/detail/hash_range.hpp>
#else
#include <boost/type_traits/integral_constant.hpp>
#include <boost/type_traits/enable_if.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/cstdint.hpp>
#include <cstddef>
#include <climits>
#include <iterator>
#endif // #if BOOST_VERSION_HAS_HASH_RANGE
namespace boost
{
namespace hash_detail
{
#if !BOOST_VERSION_HAS_HASH_RANGE
template<class T> struct is_char_type: public boost::false_type {};
#if CHAR_BIT == 8
template<> struct is_char_type<char>: public boost::true_type {};
template<> struct is_char_type<signed char>: public boost::true_type {};
template<> struct is_char_type<unsigned char>: public boost::true_type {};
#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L
template<> struct is_char_type<char8_t>: public boost::true_type {};
#endif
#if defined(__cpp_lib_byte) && __cpp_lib_byte >= 201603L
template<> struct is_char_type<std::byte>: public boost::true_type {};
#endif
#endif
#endif // #if !BOOST_VERSION_HAS_HASH_RANGE
#if BOOST_USE_STD_TYPES
#define BOOST_ENABLE_IF std::enable_if
#define BOOST_IS_SAME std::is_same
#else
#define BOOST_ENABLE_IF boost::enable_if_
#define BOOST_IS_SAME is_same
#endif
template<class It>
inline typename BOOST_ENABLE_IF<
is_char_type<typename std::iterator_traits<It>::value_type>::value &&
BOOST_IS_SAME<typename std::iterator_traits<It>::iterator_category, std::random_access_iterator_tag>::value,
std::size_t>::type
hash_range_32( uint32_t seed, It first, It last )
{
std::size_t n = static_cast<std::size_t>( last - first );
for( ; n >= 4; first += 4, n -= 4 )
{
// clang 5+, gcc 5+ figure out this pattern and use a single mov on x86
// gcc on s390x and power BE even knows how to use load-reverse
boost::uint32_t w =
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[0] ) ) |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[1] ) ) << 8 |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[2] ) ) << 16 |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[3] ) ) << 24;
hash_combine_32( seed, w );
}
{
// add a trailing suffix byte of 0x01 because otherwise sequences of
// trailing zeroes are indistinguishable from end of string
boost::uint32_t w = 0x01u;
switch( n )
{
case 1:
w =
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[0] ) ) |
0x0100u;
break;
case 2:
w =
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[0] ) ) |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[1] ) ) << 8 |
0x010000u;
break;
case 3:
w =
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[0] ) ) |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[1] ) ) << 8 |
static_cast<boost::uint32_t>( static_cast<unsigned char>( first[2] ) ) << 16 |
0x01000000u;
break;
}
hash_combine_32( seed, w );
}
return seed;
}
} // namespace hash_detail
} // namespace boost
#undef BOOST_ENABLE_IF
#undef BOOST_IS_SAME
#endif // #ifndef BOOST_HASH_DETAIL_HASH_RANGE_32_HPP

View file

@ -1,188 +0,0 @@
// 32 bit implementation based off of Boost hash
// Only implementing 32 bit versions integral and string based hashes
#ifndef BOOST_FUNCTIONAL_HASH_HASH_32_HPP
#define BOOST_FUNCTIONAL_HASH_HASH_32_HPP
#include <boost/container_hash/hash.hpp>
#include <boost_custom/container_hash/hash_fwd_32.hpp>
#include <boost_custom/container_hash/detail/hash_mix_32.hpp>
#include <boost_custom/container_hash/detail/hash_range_32.hpp>
#include <boost_custom/container_hash/version.hpp>
#if !BOOST_VERSION_HAS_HASH_RANGE
#include <boost/type_traits/is_unsigned.hpp>
#include <boost/type_traits/make_unsigned.hpp>
#if BOOST_WORKAROUND(__GNUC__, < 3) \
&& !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
#define BOOST_HASH_CHAR_TRAITS string_char_traits
#else
#define BOOST_HASH_CHAR_TRAITS char_traits
#endif
#endif // #if !BOOST_VERSION_HAS_HASH_RANGE
#if BOOST_USE_STD_TYPES
#define BOOST_ENABLE_IF std::enable_if
#define BOOST_IS_INTEGRAL hash_detail::is_integral
#define BOOST_IS_UNSIGNED is_unsigned
#define BOOST_MAKE_UNSIGNED make_unsigned
#else
#define BOOST_ENABLE_IF boost::enable_if_
#define BOOST_IS_INTEGRAL boost::is_integral
#define BOOST_IS_UNSIGNED boost::is_unsigned
#define BOOST_MAKE_UNSIGNED boost::make_unsigned
#endif
namespace boost
{
//
// boost::hash_value
//
// integral types
namespace hash_detail
{
template<class T,
bool bigger_than_size_t = (sizeof(T) > sizeof(uint32_t)),
bool is_unsigned = BOOST_IS_UNSIGNED<T>::value,
std::size_t size_t_bits = sizeof(uint32_t) * CHAR_BIT,
std::size_t type_bits = sizeof(T) * CHAR_BIT>
struct hash_integral_impl_32;
template<class T, bool is_unsigned, std::size_t size_t_bits, std::size_t type_bits> struct hash_integral_impl_32<T, false, is_unsigned, size_t_bits, type_bits>
{
static uint32_t fn( T v )
{
return static_cast<uint32_t>( v );
}
};
template<class T, std::size_t size_t_bits, std::size_t type_bits> struct hash_integral_impl_32<T, true, false, size_t_bits, type_bits>
{
static uint32_t fn( T v )
{
typedef typename BOOST_MAKE_UNSIGNED<T>::type U;
if( v >= 0 )
{
return hash_integral_impl_32<U>::fn( static_cast<U>( v ) );
}
else
{
return ~hash_integral_impl_32<U>::fn( static_cast<U>( ~static_cast<U>( v ) ) );
}
}
};
template<class T> struct hash_integral_impl_32<T, true, true, 32, 64>
{
static uint32_t fn( T v )
{
uint32_t seed = 0;
seed = static_cast<uint32_t>( v >> 32 ) + hash_detail::hash_mix_32( seed );
seed = static_cast<uint32_t>( v ) + hash_detail::hash_mix_32( seed );
return seed;
}
};
template<class T> struct hash_integral_impl_32<T, true, true, 32, 128>
{
static uint32_t fn( T v )
{
uint32_t seed = 0;
seed = static_cast<uint32_t>( v >> 96 ) + hash_detail::hash_mix_32( seed );
seed = static_cast<uint32_t>( v >> 64 ) + hash_detail::hash_mix_32( seed );
seed = static_cast<uint32_t>( v >> 32 ) + hash_detail::hash_mix_32( seed );
seed = static_cast<uint32_t>( v ) + hash_detail::hash_mix_32( seed );
return seed;
}
};
} // namespace hash_detail
template <typename T>
typename BOOST_ENABLE_IF<BOOST_IS_INTEGRAL<T>::value, uint32_t>::type
hash_value_32( T v )
{
return hash_detail::hash_integral_impl_32<T>::fn( v );
}
// contiguous ranges (string, vector, array)
#if BOOST_VERSION_HAS_HASH_RANGE
template <typename T>
typename BOOST_ENABLE_IF<container_hash::is_contiguous_range<T>::value, uint32_t>::type
hash_value_32( T const& v )
{
return boost::hash_range_32( v.data(), v.data() + v.size() );
}
#else
template <class Ch, class A>
inline uint32_t hash_value_32(
std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const& v)
{
return boost::hash_range_32( v.data(), v.data() + v.size() );
}
#endif
//
// boost::hash_combine
//
template <class T>
inline void hash_combine_32( uint32_t& seed, T const& v )
{
seed = boost::hash_detail::hash_mix_32( seed + 0x9e3779b9 + boost::hash_32<T>()( v ) );
}
//
// boost::hash_range
//
template <class It>
inline void hash_range_32( uint32_t& seed, It first, It last )
{
seed = hash_detail::hash_range_32( seed, first, last );
}
template <class It>
inline uint32_t hash_range_32( It first, It last )
{
uint32_t seed = 0;
hash_range_32( seed, first, last );
return seed;
}
//
// boost::hash
//
template <class T> struct hash_32
{
typedef T argument_type;
typedef uint32_t result_type;
uint32_t operator()( T const& val ) const
{
return hash_value_32( val );
}
};
} // namespace boost
#undef BOOST_HASH_CHAR_TRAITS
#undef BOOST_ENABLE_IF
#undef BOOST_IS_INTEGRAL
#undef BOOST_IS_UNSIGNED
#undef BOOST_MAKE_UNSIGNED
#endif // #ifndef BOOST_FUNCTIONAL_HASH_HASH_32_HPP

View file

@ -1,25 +0,0 @@
// 32 bit implementation based off of Boost hash
#ifndef BOOST_FUNCTIONAL_HASH_FWD_32_HPP
#define BOOST_FUNCTIONAL_HASH_FWD_32_HPP
#include <boost/container_hash/hash_fwd.hpp>
namespace boost
{
namespace container_hash
{
} // namespace container_hash
template<class T> struct hash_32;
template<class T> void hash_combine_32( uint32_t& seed, T const& v );
template<class It> void hash_range_32( uint32_t&, It, It );
template<class It> uint32_t hash_range_32( It, It );
} // namespace boost
#endif // #ifndef BOOST_FUNCTIONAL_HASH_FWD_32_HPP

View file

@ -1,11 +0,0 @@
#ifndef BOOST_CONTAINER_HASH_VERSION_HPP
#define BOOST_CONTAINER_HASH_VERSION_HPP
#include <boost/version.hpp>
#define BOOST_VERSION_HAS_HASH_RANGE ((BOOST_VERSION / 100 % 1000) >= 81)
#define BOOST_USE_STD_TYPES ((BOOST_VERSION / 100 % 1000) >= 84)
#endif // #ifndef BOOST_CONTAINER_HASH_VERSION_HPP

View file

@ -12,10 +12,9 @@ extern "C"
#include "luslog.h" #include "luslog.h"
#include <soh/Enhancements/item-tables/ItemTableTypes.h> #include <soh/Enhancements/item-tables/ItemTableTypes.h>
#include <soh/Enhancements/randomizer/randomizer_inf.h>
#if defined(INCLUDE_GAME_PRINTF) && defined(_DEBUG) #if defined(INCLUDE_GAME_PRINTF) && defined(_DEBUG)
#define osSyncPrintf(fmt, ...) lusprintf(__FILE__, __LINE__, 0, fmt, __VA_ARGS__) #define osSyncPrintf(fmt, ...) lusprintf(__FILE__, __LINE__, 0, fmt, ##__VA_ARGS__)
#else #else
#define osSyncPrintf(fmt, ...) osSyncPrintfUnused(fmt, ##__VA_ARGS__) #define osSyncPrintf(fmt, ...) osSyncPrintfUnused(fmt, ##__VA_ARGS__)
#endif #endif
@ -1044,6 +1043,7 @@ VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec);
VecSph* OLib_Vec3fToVecSphGeo(VecSph* arg0, Vec3f* arg1); VecSph* OLib_Vec3fToVecSphGeo(VecSph* arg0, Vec3f* arg1);
VecSph* OLib_Vec3fDiffToVecSphGeo(VecSph* arg0, Vec3f* a, Vec3f* b); VecSph* OLib_Vec3fDiffToVecSphGeo(VecSph* arg0, Vec3f* a, Vec3f* b);
Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b); Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b);
void OnePointCutscene_SetCsCamPoints(Camera* camera, s16 actionParameters, s16 initTimer, CutsceneCameraPoint* atPoints, CutsceneCameraPoint* eyePoints);
s16 OnePointCutscene_Init(PlayState* play, s16 csId, s16 timer, Actor* actor, s16 camIdx); s16 OnePointCutscene_Init(PlayState* play, s16 csId, s16 timer, Actor* actor, s16 camIdx);
s16 OnePointCutscene_EndCutscene(PlayState* play, s16 camIdx); s16 OnePointCutscene_EndCutscene(PlayState* play, s16 camIdx);
s32 OnePointCutscene_Attention(PlayState* play, Actor* actor); s32 OnePointCutscene_Attention(PlayState* play, Actor* actor);
@ -1102,6 +1102,7 @@ void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx);
s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, Input* input); s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, Input* input);
u8 PlayerGrounded(Player* player); u8 PlayerGrounded(Player* player);
void Player_SetBootData(PlayState* play, Player* player); void Player_SetBootData(PlayState* play, Player* player);
void Player_StartAnimMovement(PlayState* play, Player* player, s32 flags);
s32 Player_InBlockingCsMode(PlayState* play, Player* player); s32 Player_InBlockingCsMode(PlayState* play, Player* player);
s32 Player_TryCsAction(PlayState* play, Actor* actor, s32 csAction); s32 Player_TryCsAction(PlayState* play, Actor* actor, s32 csAction);
s32 Player_InCsMode(PlayState* play); s32 Player_InCsMode(PlayState* play);
@ -1376,7 +1377,7 @@ void func_800AA0B4();
void func_800AA0F0(void); void func_800AA0F0(void);
u32 func_800AA148(); u32 func_800AA148();
void func_800AA15C(); void func_800AA15C();
void func_800AA16C(); void Rumble_ClearRequests();
void func_800AA178(u32); void func_800AA178(u32);
View* View_New(GraphicsContext* gfxCtx); View* View_New(GraphicsContext* gfxCtx);
void View_Free(View* view); void View_Free(View* view);

View file

@ -544,7 +544,7 @@ typedef enum {
LANGUAGE_MAX LANGUAGE_MAX
} Language; } Language;
#define TODO_TRANSLATE "__Translate_This__" #define TODO_TRANSLATE "TranslateThis"
// TODO get these properties from the textures themselves // TODO get these properties from the textures themselves
#define FONT_CHAR_TEX_WIDTH 16 #define FONT_CHAR_TEX_WIDTH 16
@ -1339,9 +1339,9 @@ typedef struct {
/* */ char* frenchAge; /* */ char* frenchAge;
} BetterSceneSelectAgeLabels; } BetterSceneSelectAgeLabels;
// NTSC TODO: japanese bettersceneselect
typedef struct { typedef struct {
// /* */ char* japaneseName; /* */ char* japaneseName;
/* */ char* englishName; /* */ char* englishName;
/* */ char* germanName; /* */ char* germanName;
/* */ char* frenchName; /* */ char* frenchName;
@ -1350,7 +1350,7 @@ typedef struct {
} BetterSceneSelectEntrancePair; } BetterSceneSelectEntrancePair;
typedef struct { typedef struct {
// /* */ char* japaneseName; /* */ char* japaneseName;
/* */ char* englishName; /* */ char* englishName;
/* */ char* germanName; /* */ char* germanName;
/* */ char* frenchName; /* */ char* frenchName;
@ -1522,7 +1522,7 @@ typedef struct {
/* 0x34 */ s32 isEnabled; /* 0x34 */ s32 isEnabled;
} StickDirectionPrompt; } StickDirectionPrompt;
typedef struct { typedef struct FileChooseContext {
/* 0x00000 */ GameState state; /* 0x00000 */ GameState state;
/* 0x000A4 */ Vtx* windowVtx; /* 0x000A4 */ Vtx* windowVtx;
/* 0x000A8 */ u8* staticSegment; /* 0x000A8 */ u8* staticSegment;

View file

@ -266,9 +266,6 @@ typedef struct Actor {
/* 0x134 */ ActorFunc draw; // Draw Routine. Called by `Actor_Draw` /* 0x134 */ ActorFunc draw; // Draw Routine. Called by `Actor_Draw`
/* 0x138 */ ActorResetFunc reset; /* 0x138 */ ActorResetFunc reset;
/* 0x13C */ char dbgPad[0x10]; // Padding that only exists in the debug rom /* 0x13C */ char dbgPad[0x10]; // Padding that only exists in the debug rom
// #region SOH [General]
/* */ u8 maximumHealth; // Max health value for use with health bars, set on actor init
// #endregion
} Actor; // size = 0x14C } Actor; // size = 0x14C
typedef enum { typedef enum {

View file

@ -245,27 +245,30 @@ typedef void (*PostCurveLimbDraw)(struct PlayState* play, SkelAnimeCurve* skelCu
typedef s32 (*AnimUpdateFunc)(); typedef s32 (*AnimUpdateFunc)();
typedef struct SkelAnime { typedef struct SkelAnime {
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton /* 0x00 */ u8 limbCount; // Number of limbs in the skeleton
/* 0x01 */ u8 mode; // See `AnimationMode` /* 0x01 */ u8 mode; // See `AnimationMode`
/* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton /* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton
/* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1. /* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1.
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb. /* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb.
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader. /* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
/* 0x0C */ f32 startFrame; // In mode ANIMMODE_LOOP_PARTIAL*, start of partial loop. /* 0x0C */ f32 startFrame; // In mode ANIMMODE_LOOP_PARTIAL*, start of partial loop.
/* 0x10 */ f32 endFrame; // In mode ANIMMODE_ONCE*, Update returns true when curFrame is equal to this. In mode ANIMMODE_LOOP_PARTIAL*, end of partial loop. /* 0x10 */ f32 endFrame; // In mode ANIMMODE_ONCE*, Update returns true when curFrame is equal to this. In mode ANIMMODE_LOOP_PARTIAL*, end of partial loop.
/* 0x14 */ f32 animLength; // Total number of frames in the current animation. /* 0x14 */ f32 animLength; // Total number of frames in the current animation.
/* 0x18 */ f32 curFrame; // Current frame in the animation /* 0x18 */ f32 curFrame; // Current frame in the animation
/* 0x1C */ f32 playSpeed; // Multiplied by R_UPDATE_RATE / 3 to get the animation's frame rate. /* 0x1C */ f32 playSpeed; // Multiplied by R_UPDATE_RATE / 3 to get the animation's frame rate.
/* 0x20 */ Vec3s* jointTable; // Current translation of model and rotations of all limbs /* 0x20 */ Vec3s* jointTable; // Current translation of model and rotations of all limbs
/* 0x24 */ Vec3s* morphTable; // Table of values used to morph between animations /* 0x24 */ Vec3s* morphTable; // Table of values used to morph between animations
/* 0x28 */ f32 morphWeight; // Weight of the current animation morph as a fraction in [0,1] /* 0x28 */ f32 morphWeight; // Weight of the current animation morph as a fraction in [0,1]
/* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph /* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph
/* 0x30 */ s32 (*update)(); // Can be Loop, Partial loop, Play once, Morph, or Tapered morph. Link only has Loop, Play once, and Morph. /* 0x30 */ union {
/* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton s32 (*normal)(struct SkelAnime*); // Can be Loop, Partial loop, Play once, Morph, or Tapered morph
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace. s32 (*link)(struct PlayState*, struct SkelAnime*); // Can be Loop, Play once, or Morph
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace. } update;
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation. /* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation. /* 0x35 */ u8 movementFlags; // Flags used for animations that move the actor in worldspace.
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace.
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation.
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation.
SkeletonHeader* skeletonHeader; SkeletonHeader* skeletonHeader;
} SkelAnime; // size = 0x44 } SkelAnime; // size = 0x44

View file

@ -1,6 +1,10 @@
#ifndef Z64_AUDIO_H #ifndef Z64_AUDIO_H
#define Z64_AUDIO_H #define Z64_AUDIO_H
#ifdef __cplusplus
extern "C" {
#endif
#include <endianness.h> #include <endianness.h>
#define MK_CMD(b0,b1,b2,b3) ((((b0) & 0xFF) << 0x18) | (((b1) & 0xFF) << 0x10) | (((b2) & 0xFF) << 0x8) | (((b3) & 0xFF) << 0)) #define MK_CMD(b0,b1,b2,b3) ((((b0) & 0xFF) << 0x18) | (((b1) & 0xFF) << 0x10) | (((b2) & 0xFF) << 0x8) | (((b3) & 0xFF) << 0))
@ -24,8 +28,8 @@
//#define MAX_SEQUENCES 0x800 //#define MAX_SEQUENCES 0x800
extern size_t sequenceMapSize; extern size_t sequenceMapSize;
extern size_t fontMapSize;
extern char* fontMap[256]; extern char** fontMap;
#define MAX_AUTHENTIC_SEQID 110 #define MAX_AUTHENTIC_SEQID 110
@ -54,7 +58,8 @@ typedef enum {
/* 2 */ CODEC_S16_INMEMORY, /* 2 */ CODEC_S16_INMEMORY,
/* 3 */ CODEC_SMALL_ADPCM, /* 3 */ CODEC_SMALL_ADPCM,
/* 4 */ CODEC_REVERB, /* 4 */ CODEC_REVERB,
/* 5 */ CODEC_S16 /* 5 */ CODEC_S16,
/* 6 */ CODEC_OPUS,
} SampleCodec; } SampleCodec;
typedef enum { typedef enum {
@ -117,13 +122,14 @@ typedef struct {
/* 0x2 */ s16 arg; /* 0x2 */ s16 arg;
} AdsrEnvelope; // size = 0x4 } AdsrEnvelope; // size = 0x4
typedef struct { typedef struct AdpcmLoop {
/* 0x00 */ uintptr_t start; /* 0x00 */ u32 start;
/* 0x04 */ uintptr_t end; /* 0x04 */ u32 loopEnd; // numSamples position into the sample where the loop ends
/* 0x08 */ u32 count; /* 0x08 */ u32 count; // The number of times the loop is played before the sound completes. Setting count to -1
/* 0x0C */ char unk_0C[0x4]; // indicates that the loop should play indefinitely.
/* 0x10 */ s16 state[16]; // only exists if count != 0. 8-byte aligned /* 0x0C */ u32 sampleEnd; // total number of s16-samples in the sample audio clip
} AdpcmLoop; // size = 0x30 (or 0x10) /* 0x10 */ s16 predictorState[16]; // only exists if count != 0. 8-byte aligned
} AdpcmLoop; // size = 0x30 (or 0x10)
typedef struct { typedef struct {
/* 0x00 */ s32 order; /* 0x00 */ s32 order;
@ -131,24 +137,23 @@ typedef struct {
/* 0x08 */ s16* book; // size 8 * order * npredictors. 8-byte aligned /* 0x08 */ s16* book; // size 8 * order * npredictors. 8-byte aligned
} AdpcmBook; // size >= 0x8 } AdpcmBook; // size >= 0x8
typedef struct typedef struct SoundFontSample {
{
union { union {
struct { struct {
/* 0x00 */ u32 codec : 4; ///* 0x0 */ u32 unk_0 : 1;
/* 0x00 */ u32 medium : 2; /* 0x0 */ u32 codec : 4; // The state of compression or decompression, See `SampleCodec`
/* 0x00 */ u32 unk_bit26 : 1; /* 0x0 */ u32 medium : 2; // Medium where sample is currently stored. See `SampleMedium`
/* 0x00 */ u32 unk_bit25 : 1; // this has been named isRelocated in zret /* 0x0 */ u32 unk_bit26 : 1;
/* 0x01 */ u32 size : 24; /* 0x0 */ u32 isRelocated : 1; // Has the sample header been relocated (offsets to pointers)
}; };
u32 asU32; u32 asU32;
}; };
/* 0x1 */ u32 size; // Size of the sample
/* 0x04 */ u8* sampleAddr; u32 fileSize;
/* 0x08 */ AdpcmLoop* loop; /* 0x4 */ u8* sampleAddr; // Raw sample data. Offset from the start of the sample bank or absolute address to either rom or ram
/* 0x0C */ AdpcmBook* book; /* 0x8 */ AdpcmLoop* loop; // Adpcm loop parameters used by the sample. Offset from the start of the sound font / pointer to ram
u32 sampleRateMagicValue; // For wav samples only... /* 0xC */ AdpcmBook* book; // Adpcm book parameters used by the sample. Offset from the start of the sound font / pointer to ram
s32 sampleRate; // For wav samples only...
} SoundFontSample; // size = 0x10 } SoundFontSample; // size = 0x10
typedef struct { typedef struct {
@ -465,6 +470,8 @@ typedef struct {
/* 0x00F0 */ s16 dummyResampleState[0x10]; /* 0x00F0 */ s16 dummyResampleState[0x10];
} NoteSynthesisBuffers; // size = 0x110 } NoteSynthesisBuffers; // size = 0x110
struct OggOpusFile;
typedef struct { typedef struct {
/* 0x00 */ u8 restart; /* 0x00 */ u8 restart;
/* 0x01 */ u8 sampleDmaIndex; /* 0x01 */ u8 sampleDmaIndex;
@ -483,6 +490,7 @@ typedef struct {
/* 0x1A */ u8 unk_1A; /* 0x1A */ u8 unk_1A;
/* 0x1C */ u16 unk_1C; /* 0x1C */ u16 unk_1C;
/* 0x1E */ u16 unk_1E; /* 0x1E */ u16 unk_1E;
struct OggOpusFile* opusFile; // Only for streamed opus audio
} NoteSynthesisState; // size = 0x20 } NoteSynthesisState; // size = 0x20
typedef struct { typedef struct {
@ -917,7 +925,7 @@ typedef struct {
/* 0x3420 */ AudioPoolSplit3 persistentCommonPoolSplit; /* 0x3420 */ AudioPoolSplit3 persistentCommonPoolSplit;
/* 0x342C */ AudioPoolSplit3 temporaryCommonPoolSplit; /* 0x342C */ AudioPoolSplit3 temporaryCommonPoolSplit;
/* 0x3438 */ u8 sampleFontLoadStatus[0x30]; /* 0x3438 */ u8 sampleFontLoadStatus[0x30];
/* 0x3468 */ u8 fontLoadStatus[0x30]; /* 0x3468 */ u8* fontLoadStatus;
/* 0x3498 */ u8* seqLoadStatus; /* 0x3498 */ u8* seqLoadStatus;
/* 0x3518 */ volatile u8 resetStatus; /* 0x3518 */ volatile u8 resetStatus;
/* 0x3519 */ u8 audioResetSpecIdToLoad; /* 0x3519 */ u8 audioResetSpecIdToLoad;
@ -1119,10 +1127,6 @@ typedef struct {
uint8_t fonts[16]; uint8_t fonts[16];
} SequenceData; } SequenceData;
#ifdef __cplusplus
extern "C" {
#endif
void Audio_SetGameVolume(int player_id, f32 volume); void Audio_SetGameVolume(int player_id, f32 volume);
float Audio_GetGameVolume(int player_id); float Audio_GetGameVolume(int player_id);

View file

@ -5,10 +5,9 @@
#include "z64math.h" #include "z64math.h"
#include "z64audio.h" #include "z64audio.h"
#include "soh/Enhancements/randomizer/randomizerTypes.h" #include "soh/Enhancements/randomizer/randomizerTypes.h"
#include "soh/Enhancements/randomizer/randomizer_inf.h"
#include "soh/Enhancements/gameplaystats.h" #include "soh/Enhancements/gameplaystats.h"
#include "soh/Enhancements/randomizer/randomizer_entrance.h" #include "soh/Enhancements/randomizer/randomizer_entrance.h"
#include "soh/Enhancements/boss-rush/BossRushTypes.h" #include "soh/Enhancements/boss-rush/BossRush.h"
typedef enum { typedef enum {
/* 0x0 */ MAGIC_STATE_IDLE, // Regular gameplay /* 0x0 */ MAGIC_STATE_IDLE, // Regular gameplay

View file

@ -19,7 +19,7 @@ static std::array<const char*, ACTORCAT_MAX> sCatToStrArray{
"SWITCH", "BG", "PLAYER", "EXPLOSIVE", "NPC", "ENEMY", "PROP", "ITEMACTION", "MISC", "BOSS", "DOOR", "CHEST", "SWITCH", "BG", "PLAYER", "EXPLOSIVE", "NPC", "ENEMY", "PROP", "ITEMACTION", "MISC", "BOSS", "DOOR", "CHEST",
}; };
#define DEFINE_SCENE(_1, _2, enumName, _4, _5, _6) #enumName #define DEFINE_SCENE(_1, _2, enumName, _4, _5, _6) #enumName,
static std::array<const char*, SCENE_ID_MAX> sSceneIdToStrArray{ static std::array<const char*, SCENE_ID_MAX> sSceneIdToStrArray{
#include "tables/scene_table.h" #include "tables/scene_table.h"

View file

@ -0,0 +1,51 @@
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
#include "./enhancementTypes.h"
extern "C" {
#include "functions.h"
#include "macros.h"
extern PlayState* gPlayState;
extern SaveContext gSaveContext;
}
void RegisterBonkDamage() {
COND_HOOK(OnPlayerBonk, CVarGetInteger(CVAR_ENHANCEMENT("BonkDamageMult"), BONK_DAMAGE_NONE) != BONK_DAMAGE_NONE,
[] {
uint16_t bonkDamage = 0;
switch (CVarGetInteger(CVAR_ENHANCEMENT("BonkDamageMult"), BONK_DAMAGE_NONE)) {
case BONK_DAMAGE_NONE:
return;
case BONK_DAMAGE_OHKO:
gSaveContext.health = 0;
return;
case BONK_DAMAGE_QUARTER_HEART:
bonkDamage = 4;
break;
case BONK_DAMAGE_HALF_HEART:
bonkDamage = 8;
break;
case BONK_DAMAGE_1_HEART:
bonkDamage = 16;
break;
case BONK_DAMAGE_2_HEARTS:
bonkDamage = 32;
break;
case BONK_DAMAGE_4_HEARTS:
bonkDamage = 64;
break;
case BONK_DAMAGE_8_HEARTS:
bonkDamage = 128;
break;
default:
break;
}
Health_ChangeBy(gPlayState, -bonkDamage);
// Set invincibility to make Link flash red as a visual damage indicator.
Player* player = GET_PLAYER(gPlayState);
player->invincibilityTimer = 28;
});
}
static RegisterShipInitFunc registerBonkDamage(RegisterBonkDamage, { CVAR_ENHANCEMENT("BonkDamageMult") });

View file

@ -0,0 +1,47 @@
#include <libultraship/bridge.h>
#include "soh/Enhancements/game-interactor/GameInteractor.h"
#include "soh/ShipInit.hpp"
#include "functions.h"
extern "C" {
#include "z64.h"
#include "overlays/gamestates/ovl_file_choose/file_choose.h"
}
static constexpr int32_t CVAR_DEBUG_ENABLED_DEFAULT = 0;
#define CVAR_DEBUG_ENABLED_NAME CVAR_DEVELOPER_TOOLS("DebugEnabled")
#define CVAR_DEBUG_ENABLED_VALUE CVarGetInteger(CVAR_DEBUG_ENABLED_NAME, CVAR_DEBUG_ENABLED_DEFAULT)
static constexpr int32_t CVAR_BOOT_TO_DEBUG_WARP_SCREEN_DEFAULT = 0;
#define CVAR_BOOT_TO_DEBUG_WARP_SCREEN_NAME CVAR_DEVELOPER_TOOLS("BootToDebugWarpScreen")
#define CVAR_BOOT_TO_DEBUG_WARP_SCREEN_VALUE \
CVarGetInteger(CVAR_BOOT_TO_DEBUG_WARP_SCREEN_NAME, CVAR_BOOT_TO_DEBUG_WARP_SCREEN_DEFAULT)
void OnFileChooseMainBootToDebugWarpScreen(void* gameState) {
FileChooseContext* fileChooseContext = (FileChooseContext*)gameState;
fileChooseContext->buttonIndex = 0xFF;
fileChooseContext->menuMode = FS_MENU_MODE_SELECT;
fileChooseContext->selectMode = SM_LOAD_GAME;
}
void OnZTitleUpdateBootToDebugWarpScreen(void* gameState) {
TitleContext* titleContext = (TitleContext*)gameState;
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
gSaveContext.natureAmbienceId = 0xFF;
gSaveContext.gameMode = GAMEMODE_FILE_SELECT;
titleContext->state.running = false;
SET_NEXT_GAMESTATE(&titleContext->state, FileChoose_Init, FileChooseContext);
}
void RegisterBootToDebugWarpScreen() {
COND_HOOK(OnFileChooseMain, CVAR_DEBUG_ENABLED_VALUE && CVAR_BOOT_TO_DEBUG_WARP_SCREEN_VALUE,
OnFileChooseMainBootToDebugWarpScreen);
COND_HOOK(OnZTitleUpdate, CVAR_DEBUG_ENABLED_VALUE && CVAR_BOOT_TO_DEBUG_WARP_SCREEN_VALUE,
OnZTitleUpdateBootToDebugWarpScreen);
}
static RegisterShipInitFunc initFunc_BootToDebugWarpScreen(RegisterBootToDebugWarpScreen,
{ CVAR_DEBUG_ENABLED_NAME,
CVAR_BOOT_TO_DEBUG_WARP_SCREEN_NAME });

View file

@ -1,9 +1,10 @@
#include <libultraship/bridge.h>
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp" #include "soh/ShipInit.hpp"
#include "z64save.h"
extern "C" SaveContext gSaveContext; extern "C" {
#include "z64save.h"
extern SaveContext gSaveContext;
}
#define CVAR_INFINITE_MAGIC_NAME CVAR_CHEAT("InfiniteMagic") #define CVAR_INFINITE_MAGIC_NAME CVAR_CHEAT("InfiniteMagic")
#define CVAR_INFINITE_MAGIC_DEFAULT 0 #define CVAR_INFINITE_MAGIC_DEFAULT 0

View file

@ -0,0 +1,23 @@
#include <libultraship/bridge.h>
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
extern "C" {
#include "macros.h"
}
static constexpr int32_t CVAR_NOKEESEGUAYTARGET_DEFAULT = 0;
#define CVAR_NOKEESEGUAYTARGET_NAME CVAR_CHEAT("NoKeeseGuayTarget")
#define CVAR_NOKEESEGUAYTARGET_VALUE CVarGetInteger(CVAR_NOKEESEGUAYTARGET_NAME, CVAR_NOKEESEGUAYTARGET_DEFAULT)
void RegisterNoKeeseGuayTarget() {
// Dive Attack
COND_VB_SHOULD(VB_KEESE_DO_DIVE_ATTACK, CVAR_NOKEESEGUAYTARGET_VALUE, { *should = false; });
COND_VB_SHOULD(VB_GUAY_DO_DIVE_ATTACK, CVAR_NOKEESEGUAYTARGET_VALUE, { *should = false; });
// Force Fly Away
COND_VB_SHOULD(VB_KEESE_FORCE_FLY_AWAY, CVAR_NOKEESEGUAYTARGET_VALUE, { *should = true; });
COND_VB_SHOULD(VB_GUAY_FORCE_FLY_AWAY, CVAR_NOKEESEGUAYTARGET_VALUE, { *should = true; });
}
static RegisterShipInitFunc initFunc_NoKeeseGuayTarget(RegisterNoKeeseGuayTarget, { CVAR_NOKEESEGUAYTARGET_NAME });

View file

@ -0,0 +1,17 @@
#include <libultraship/bridge.h>
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
extern "C" {
#include "macros.h"
}
static constexpr int32_t CVAR_NOREDEADFREEZE_DEFAULT = 0;
#define CVAR_NOREDEADFREEZE_NAME CVAR_CHEAT("NoRedeadFreeze")
#define CVAR_NOREDEADFREEZE_VALUE CVarGetInteger(CVAR_NOREDEADFREEZE_NAME, CVAR_NOREDEADFREEZE_DEFAULT)
void RegisterNoRedeadFreeze() {
COND_VB_SHOULD(VB_REDEAD_GIBDO_FREEZE_LINK, CVAR_NOREDEADFREEZE_VALUE, { *should = false; });
}
static RegisterShipInitFunc initFunc_NoRedeadFreeze(RegisterNoRedeadFreeze, { CVAR_NOREDEADFREEZE_NAME });

View file

@ -0,0 +1,18 @@
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
extern "C" {
extern PlayState* gPlayState;
#include "src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.h"
}
void RegisterCuccosToReturn() {
COND_VB_SHOULD(VB_SET_CUCCO_COUNT, CVarGetInteger(CVAR_ENHANCEMENT("CuccosToReturn"), 7) != 7, {
EnNiwLady* enNiwLady = va_arg(args, EnNiwLady*);
// Override starting Cucco count using setting value
enNiwLady->cuccosInPen = 7 - CVarGetInteger(CVAR_ENHANCEMENT("CuccosToReturn"), 7);
*should = false;
});
}
static RegisterShipInitFunc initFunc(RegisterCuccosToReturn, { CVAR_ENHANCEMENT("CuccosToReturn") });

View file

@ -0,0 +1,48 @@
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
#include "soh/Enhancements/enhancementTypes.h"
extern "C" {
extern PlayState* gPlayState;
#include "src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.h"
}
void RegisterDampeFire() {
COND_VB_SHOULD(VB_DAMPE_DROP_FLAME, CVarGetInteger(CVAR_ENHANCEMENT("DampeDropRate"), DAMPE_NORMAL) != DAMPE_NORMAL,
{
double chance;
int cooldown = 9;
switch (CVarGetInteger(CVAR_ENHANCEMENT("DampeDropRate"), DAMPE_NORMAL)) {
case DAMPE_NONE:
*should = false;
return;
default:
case DAMPE_NORMAL:
return;
case DAMPE_JALAPENO:
chance = 0.03;
break;
case DAMPE_CHIPOTLE:
chance = 0.1;
break;
case DAMPE_SCOTCH_BONNET:
chance = 0.2;
break;
case DAMPE_GHOST_PEPPER:
chance = 0.5;
cooldown = 4;
break;
case DAMPE_INFERNO:
*should = true;
return;
}
EnPoRelay* actor = va_arg(args, EnPoRelay*);
if (actor->actionTimer > cooldown) {
actor->actionTimer = cooldown;
}
*should = actor->actionTimer == 0 && Rand_ZeroOne() < chance;
});
}
static RegisterShipInitFunc initFunc(RegisterDampeFire, { CVAR_ENHANCEMENT("DampeDropRate") });

View file

@ -0,0 +1,43 @@
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
extern "C" {
#include "functions.h"
#include "macros.h"
#include "variables.h"
extern PlayState* gPlayState;
}
static constexpr int32_t CVAR_RUPEE_DASH_DEFAULT = 0;
#define CVAR_RUPEE_DASH_NAME CVAR_ENHANCEMENT("RupeeDash")
#define CVAR_RUPEE_DASH_VALUE CVarGetInteger(CVAR_RUPEE_DASH_NAME, CVAR_RUPEE_DASH_DEFAULT)
static constexpr int32_t CVAR_RUPEE_DASH_INTERVAL_DEFAULT = 5;
#define CVAR_RUPEE_DASH_INTERVAL_NAME CVAR_ENHANCEMENT("RupeeDashInterval")
#define CVAR_RUPEE_DASH_INTERVAL_TIME \
CVarGetInteger(CVAR_RUPEE_DASH_INTERVAL_NAME, CVAR_RUPEE_DASH_INTERVAL_DEFAULT) * 20
void UpdateRupeeDash() {
// Initialize Timer
static uint16_t rupeeDashTimer = 0;
// Did time change by DashInterval?
if (rupeeDashTimer < CVAR_RUPEE_DASH_INTERVAL_TIME) {
rupeeDashTimer++;
return;
}
rupeeDashTimer = 0;
if (gSaveContext.rupees > 0) {
uint16_t walletSize = (CUR_UPG_VALUE(UPG_WALLET) + 1) * -1;
Rupees_ChangeBy(walletSize);
} else {
Health_ChangeBy(gPlayState, -16);
}
}
void RegisterRupeeDash() {
COND_HOOK(OnPlayerUpdate, CVAR_RUPEE_DASH_VALUE, UpdateRupeeDash);
}
static RegisterShipInitFunc initFunc_RupeeDash(RegisterRupeeDash, { CVAR_RUPEE_DASH_NAME });

Some files were not shown because too many files have changed in this diff Show more