Compare commits

...

2379 Commits

Author SHA1 Message Date
Pepe20129 1785a70f22 Clean OTRGlobals 2 (#6636)
The main effect of this PR is completely decoupling OTRGlobals.h from any non-std header making it so that the "everything is being rebuilt because I changed a header that at some point gets included in OTRGlobals" problem doesn't happen anymore.
2026-05-23 20:32:51 +00:00
A Green Spoon 772fe2bb92 add grotto butterflies (#6619) 2026-05-18 06:44:35 +00:00
Pepper0ni a6ceda989e Fix KF to LW sign region (#6571) 2026-04-28 20:16:49 +00:00
Pepper0ni 4b90ae48c7 Add missing hint logic, cleanup ganon's tower and mido logic, change LA rock name (#6565) 2026-04-26 14:39:01 +00:00
Philip Dubé eeca7626d8 rocksanity (#5015)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-04-22 14:50:14 +00:00
Philip Dubé f3d60e0ddd use bool over s8 (#6547) 2026-04-22 13:36:18 +00:00
Philip Dubé 92ba43d675 fix seed generation regression (#6549)
seedString is some unused variable, correct variable is seed
2026-04-22 03:11:07 +00:00
Philip Dubé 18bf4b315f RC_HF_OCARINA_OF_TIME_ITEM gated on RSK_OOT_HINT (#6546)
forgot to push in hint refactor
2026-04-21 23:07:59 +00:00
Philip Dubé 5d8c3c8883 Refactor hints (#6540)
small hint logic cleanup
share code for bridge requirements
refactor DistributeAndPlaceHints
2026-04-21 16:31:41 +00:00
Philip Dubé fa875596f2 pool_functions cleanup (#6536)
remove 3drando/rando_main
2026-04-21 15:29:36 +00:00
Philip Dubé 94a5311cba port text.hpp to custom-message as text.cpp/text.h (#6541)
remove unused logic, leaving Text pretty bare bones
2026-04-20 18:37:05 +00:00
Philip Dubé 461cc0930f don't use 3drando/random.hpp outside 3drando (#6537) 2026-04-20 17:18:48 +00:00
Philip Dubé aa5379a8e0 remove 3drando/custom_messages (#6538) 2026-04-20 17:18:25 +00:00
Philip Dubé c7ef690bc2 func_$hex renaming from upstream (#6498) 2026-04-19 18:56:01 +00:00
ProverbialPennance 80de5cc179 example flake - add missing deps, pin clang14 (#6531)
`Python3`, used for several CMake targets.
`Zenity`, a still used runtime dependency.
`xorg.libX11` -> `libx11`, packageset deprecated.
`imagemagick`, included as per @IQubic's research.
`clang_14`, clang-formatter used by decomp, thus also used by HM64
2026-04-18 13:07:10 +00:00
Philip Dubé f5e113c5aa fix Roc's translation (#6525)
feel like I've done this a few times now..

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-04-18 13:05:57 +00:00
rannek06 52a08daf04 Fix Hint translation (#6507)
Fix the inversion of french and german articles in the hints, also adds or correct a few articles in french.

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-04-17 13:31:39 +00:00
Reppan 4587ca6dbe Horseback archery settings (#6517) 2026-04-17 13:22:57 +00:00
Philip Dubé aedae12e63 Hookify DropsDontDie, NoFishDespawn, NoBugsDespawn (#6513) 2026-04-17 03:50:17 +00:00
Philip Dubé 27d35e5a92 Fix logic issues noticed while rebasing doorsanity (#6510)
These shouldn't generally matter right now
2026-04-15 15:23:33 +00:00
Sophia Caspe 12dddc5e8e Dungeon Rewards Own Dungeon + Light Medallion Handling Refactor (#6500)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-04-15 13:44:52 +00:00
Philip Dubé 17a8f460e0 Merge pull request #6504 from HarbourMasters/develop-ackbar
merge develop-ackbar 9.2.3 to develop
2026-04-14 16:48:19 +00:00
Philip Dubé cb71e22a79 9.2.3 Ackbar Delta (#6503) 2026-04-13 23:48:22 -07:00
Philip Dubé feb489cab0 Fix shopsanity soft lock (#6502)
GetForCurrentLanguage() defaults to MF_FORMATTED, appending MESSAGE_END (\x02) to output string

Revert using hint name for items in shops. Other merchants return GetHintMessage directly
2026-04-14 06:41:37 +00:00
Philip Dubé 4cae72463e Merge pull request #6497 from serprex/develop922
merge develop-ackbar 9.2.2 to develop
2026-04-14 02:31:35 +00:00
Demur Rumed a60d46141b Merge remote-tracking branch 'origin/develop-ackbar' into develop922 2026-04-14 01:10:10 +00:00
Philip Dubé adb1e46ba9 fix bad args handling in extractor (#6501) 2026-04-14 01:00:16 +00:00
Philip Dubé 13ebc31ec7 9.2.2 Ackbar Charlie (#6494) 2026-04-13 14:12:37 +00:00
Jerom Venneker ca38dba192 Add missing Hint clarities back (#6477) 2026-04-13 03:39:30 +00:00
Philip Dubé 25eb09180d Revise Arrow Cycling (#6490)
1. simplify UI, flashing buttons are unnecessary
2. change arrow without drawing a new arrow
2026-04-12 23:03:46 +00:00
Philip Dubé d855742c2f Avoid over-allocating with texture interpolation (#6489)
Also remove interpolation with all zeroes & fix one interpolation direction
2026-04-12 18:51:04 +00:00
Philip Dubé 8513fd8800 fix cosmetic/audio randomizing options being seeded when they shouldn't be (#6481) 2026-04-12 18:25:05 +00:00
Philip Dubé 568813a2a4 Remove tooltip text referencing Let It Snow chests (#6488)
Was not preserved in chest revamp
2026-04-12 18:24:53 +00:00
Philip Dubé 7b7b799fad Make Lake Hylia water level switch in rando 10x faster (#6492)
35 seconds was an eternity
2026-04-12 18:24:14 +00:00
Philip Dubé 88099e6ebe Fix generation failure for Ganon's Castle MQ Fire Trial (#6487) 2026-04-12 13:27:06 +00:00
Jordan Longstaff 68cd04175d Update ccache-action version to 1.2.22 (#6482) 2026-04-11 14:55:20 +00:00
Jordan Longstaff b2f0cae9ec Added slider for Rupee Diving Game's time limit (#6476) 2026-04-10 23:51:38 +00:00
Pepper0ni 69ef35d258 Fix malon text and make the DMC jump unintuitive (#6479) 2026-04-10 21:45:23 +00:00
Philip Dubé 06b512faa9 port over unk renaming from upstream (#6470) 2026-04-10 17:25:27 +00:00
Philip Dubé c879c97066 randomizer_check_tracker: small cleanup (#6480) 2026-04-10 16:37:22 +00:00
Jordan Longstaff 4122d8079e Faster bean planting (#6473) 2026-04-08 22:54:04 +00:00
Philip Dubé 9945041888 replace ShuffleBeggar accents with utf-8 (#6472) 2026-04-08 18:02:38 +00:00
A Green Spoon 49e740b6f2 [Rando] Shuffle Icicles and Red Ice (#6462)
Separate options for Icicles (stalagmites and stalactites) and Red Ice. Icicles drop an item when broken and red ice gives an item when melted.

CMC options for icicles were more limited - the particle effect strobes because there are too many icicles in certain rooms. This currently uses Dampe's halo centered around the tips, which are visible for both types, but model replacement could be used here if a set was made.
2026-04-08 06:02:33 +00:00
Philip Dubé 40425c8c28 Fix seeded warp traps to be deterministic (#6469) 2026-04-07 16:31:41 +00:00
A Green Spoon 67191665df Add trick for jump to GTG eye statue (#6467) 2026-04-07 14:55:07 +00:00
Chris 695c05d339 Fix cooldown behavior for crystal and light switches, water gate (#6461) 2026-04-07 01:09:07 +00:00
A Green Spoon 77f2883510 use category adj for gi (#6466) 2026-04-07 01:08:32 +00:00
Malkierian 876d512a4b Fix Skip Planting Beans crash (#6463)
Move code to set beans as planted after getting the bean pack to rando item give handler.
2026-04-07 01:07:20 +00:00
PurpleHato 262958a2eb Alt Toggle for Custom animation (#6433)
Add explicit alt prefix checking to animation loading

Makes ResourceMgr_LoadAnimByName alt-toggleable this will work for Link and any other animations files
2026-04-06 19:01:12 +00:00
OtherBlue 978a219213 add check for market balcony camera (#6464) 2026-04-06 04:04:58 +00:00
Malkierian b6f227961b Restore sub-100% values for speed modifier slider. (#6465) 2026-04-06 03:47:17 +00:00
A Green Spoon e86e0ff693 Add Voidout Collection trick (#6453) 2026-04-05 17:51:09 +00:00
A Green Spoon 4e1e180d21 add spirit signs + unique init func (#6458) 2026-04-04 04:37:24 +00:00
A Green Spoon 50aed798a1 [Rando] Shuffle Beggar (#6455) 2026-04-03 06:01:07 +00:00
A Green Spoon 0ccff93fae add gf signs to enemy rando obj dep exlusion list (#6456) 2026-04-02 03:22:40 +00:00
A Green Spoon db0d179b37 add missing KF and Shadow signs, eat baguette (#6454) 2026-04-02 01:21:46 +00:00
Jameriquiah 0d2454ed65 title card ia8 fix 2026-04-01 00:33:22 +00:00
A Green Spoon 412e9e262f [Rando] Shuffle Wonder Items (#6342) 2026-04-01 00:32:57 +00:00
Philip Dubé 7363e1c264 Don't hide Ganon's Boss Key Chest location while Triforce Hunt enabled (#6447) 2026-03-30 20:28:50 +00:00
A Green Spoon 317c057e86 [Rando] Shuffle Signs (#6406)
Exploding Royal Family's Tombstone grants check
2026-03-30 13:35:54 +00:00
Philip Dubé 2b336a4582 Merge pull request #6446 from HarbourMasters/develop-ackbar
merge develop-ackbar into develop
2026-03-30 06:42:08 +00:00
Chris 14b464bab2 Bean guy text formatting and rando fixes (#6444) 2026-03-30 01:33:16 +00:00
Pepper0ni efc4086c6a Some Logic fixes (#6445)
- Visible Collision added to more Skulls in Crates for consistency with similar situations
- Visible Collision added to chests in crates in MQ fire and for more ways to hit the switch in MQ fire Lizalfos maze
- Allow any jumpslash to break the pot in red ice in ice cavern with visible collision.
- Add Visible Collision as a way to get the gold skull token in the rubble in 4F Gibdo room in MQ shadow
- Turns out, while you take fall damage if you backflip onto a building from GF above jail, the floor is perfectly fine.
- Granny's shop forgot to check the price of the item being sold for wallets.
2026-03-30 01:32:31 +00:00
Philip Dubé 7c5cccaf92 Dedupe settings.cpp (#6443) 2026-03-29 19:42:54 +00:00
Pepper0ni 972ed22167 reset possible ice trap models before populating item pool (#6442) 2026-03-29 18:05:56 +00:00
Chris 5494a81eb1 Fix market sneak hook (#6440) 2026-03-29 16:46:47 +00:00
Chris ebea14f297 Fix displayed token count (#6441) 2026-03-29 16:45:48 +00:00
Philip Dubé 0127cbcf62 Fix debug assert caused by bad trick code (#6439) 2026-03-29 08:58:45 +00:00
A Green Spoon a461d8f6fb [Rando] Shuffle Butterfly Fairies (#6430) 2026-03-29 07:54:01 +00:00
Chris 4729eef7c8 Make item category adjustments more consistent (#6434) 2026-03-29 07:34:59 +00:00
chartergirl64 0b3ebd584d [bug fix] Changes item tracker capacity to recognize progressive chu bag limits (#6436) 2026-03-29 07:32:40 +00:00
Pepe20129 e0a1b23525 Language System Basis (#6172)
Introduces the basis for a language system to allow the UI to be translated to any language and/or have the text changed by mods.
A lot of things would require more work but, for a proof of concept, this PR makes all randomizer trick names & descriptions translatable (currently not re-loadable at runtime as that would require deeper changes and this is already merge conflict hell every time a trick is touched).

The system works by passing it a "translation path" which is resolved in the .json including object indentation. If the resulting json object is a list of strings, instead of a string, they get concatenated (purely for organization/QoL).
2026-03-29 02:27:30 +00:00
Chris 1be7533675 Conslidate ganon2 hooks (#6432) 2026-03-28 17:52:55 +00:00
Pepper0ni 3228843886 Merge Boulder Undershoots into Boulder Collision (#6431) 2026-03-28 16:22:25 +00:00
Chris 9f61e635d2 Fix displayed token count (#6428) 2026-03-28 14:19:38 +00:00
Garrett Cox c7180762d9 Add button to rando all rando settings (#6001) 2026-03-28 06:52:01 +00:00
Philip Dubé 178471bf20 Merge pull request #6425 from HarbourMasters/develop-ackbar
merge develop-ackbar 9.2.1 to develop
2026-03-28 06:26:13 +00:00
Philip Dubé d1b7edfa7c 9.2.1 Ackbar Bravo (#6424) 2026-03-28 04:15:06 +00:00
Malkierian 6fea1821a1 Changed name of scarecrow's song enhancement and added to the description to clarify that it only skips song playback without the rando setting. (#6423) 2026-03-28 03:43:55 +00:00
Christopher Leggett 42ba25449e Make Infinite Ammo Cheat respect Progressive Bombchu Bag Capacities (#6421)
Cap infinite ammo for chus according to rando settings
Add bombchuUpgradeLevel to save editor
2026-03-28 02:58:41 +00:00
xxAtrain223 d1643aa196 LACS-Dungeons Check Availability (#6202)
* Fixes #5433, LACS-Dungeons beatable vs beat.

* Use CalculatingAvailableChecks in Logic::DungeonCount to check flags.
2026-03-27 19:40:34 -07:00
Philip Dubé 5576f93ef6 Hookify blue fire arrows (#6354)
Update z_bg_ice_shelter with decomp refactoring
2026-03-27 16:46:21 +00:00
Philip Dubé 7edf44e170 add tts for Roc's Feather (#6418) 2026-03-27 02:07:11 +00:00
Pepper0ni 53dc7f43ba Fix DMC oversight (#6419) 2026-03-27 01:43:36 +00:00
Pepper0ni 5f139ef311 Hookshot ladder fixes (#6417) 2026-03-26 22:39:17 +00:00
Renzo Martin Poggio 88625c4350 Add most values from gz to Value Viewer (#6411) 2026-03-26 18:55:31 +00:00
Ali 99c1f23d5b fix: Fix macOS crashing on first install use (#6412)
With the new imgui OTR generation flow, macOS would crash when Ship
was run for the first time unless com.shipofharkinian.soh had already been created.
Move the call to CheckAndCreateModFolder() earlier in execution to prevent crashing.
2026-03-26 15:12:51 +00:00
Christopher Leggett 69e03dcc52 LUS bump to fix texture pack performance (#6416) 2026-03-26 15:11:22 +00:00
Sean Latham 98ec5519cf Improve flavour of Navi's boss key hint (#6409) 2026-03-26 14:19:02 +00:00
Philip Dubé 2f32abb511 Console include cleanup (#6413)
Looking into fixing warnings about commands already being bound,
LUS initializes a console window which we ignore,
but it registers global command handlers,
SohConsoleWindow does this again, but that's also where mInputBuffer/mFilterBuffer get set

Proper fix would be removing SohConsoleWindow, but it exists to have mono font
2026-03-26 14:18:21 +00:00
Christopher Leggett 4aa6e2ec28 Move retrieval of dbEntry after Actor_Destroy (#6410)
Before I had the change back to the placeholder actor id the Dummy
Player actors were spawned with, but since we grabbed the actorDB
entry before Actor_Destroy was called it didn't matter. Move it
and the requisite log statement to after Actor_Destroy.
2026-03-26 14:18:01 +00:00
Pepper0ni 94b650ec67 Fix several logic errors, create Hooskshot Bridge trick. (#6414) 2026-03-26 03:02:54 +00:00
Pepper0ni 57269c8e46 fix volv FTR logic (#6403) 2026-03-24 20:23:20 +00:00
Christopher Leggett 5e13570b83 Fix leak of shuffled fairy bottle-swipe behavior to other actors (#6405) 2026-03-24 19:37:21 +00:00
Christopher Leggett 5fe4680a20 Adds a more compact Clear button to Check Tracker search (#6401) 2026-03-23 20:07:45 +00:00
Philip Dubé 8c4d4738cc cleanup customequipment.cpp (#6396) 2026-03-23 16:27:42 +00:00
Philip Dubé c439d62137 Enemy rando: don't mutate ActorEntry (#6400) 2026-03-23 16:27:20 +00:00
A Green Spoon 2cfb0f73dc make non-cmc pot model major for shuffle clarity (#6398) 2026-03-23 15:46:03 +00:00
Pepper0ni c61c1c0fec fix oversight in well logic (#6397) 2026-03-23 15:45:48 +00:00
Philip Dubé ccdd8e63ff Enemy rando: don't mutate ActorEntry (#6395) 2026-03-23 12:41:53 +00:00
Sean Latham 5f0c0c8e2f Added minimap icons for other players in Anchor (#6372)
Icon size for other players reduced by 25%
2026-03-23 01:34:06 +00:00
Philip Dubé ef042be5ea avoid undefined behavior when handling anchor packets (#6393) 2026-03-23 01:32:26 +00:00
Pepper0ni 0498d36428 Save Value Viewer Settings (#6392) 2026-03-23 01:31:21 +00:00
Philip Dubé 692ef416ee Fix RT_GROUND_JUMP_HARD description (#6391) 2026-03-22 19:56:22 +00:00
Philip Dubé 1949033f93 Ackbar 9.2.0 (#6389) 2026-03-22 18:10:12 +00:00
Malkierian c758f1ad84 Add option to mute notification sounds altogether. (#6390) 2026-03-22 17:52:53 +00:00
aMannus 1d9de8544a Implement toggle for allowing background inputs (#6214) 2026-03-22 16:44:24 +00:00
Jordan Longstaff 25ee1ec3ab Fix mouse camera Y-axis inversion (#6387) 2026-03-22 15:06:54 +00:00
Philip Dubé 96c4fef05c extraction: detect task crashing (#6386) 2026-03-22 06:03:41 +00:00
Philip Dubé b65c1c8317 Remove some unnecessary includes (#6385) 2026-03-21 20:22:32 +00:00
Pepe20129 4e82ea192a Enemy rando cleanup 2 (#6365)
Move stuff to main file, delete header & refactor lists
2026-03-21 18:46:15 +00:00
OtherBlue 2af5d21125 [Enhancement] Reworked targetting (#6322)
Adds an enhancement that changes targeting behavior, allowing

Switching targets with the chosen button combo
(In Switch mode) Untargeting by just pressing Z
2026-03-21 18:41:08 +00:00
Paul Schwabauer b6bf97e2f1 Fix ADPCM sample buffer overread in audio synthesis (#6364)
The sampleDataStartPad and aligned variables existed solely to satisfy
the N64 RSP DMA requirement that source addresses be 16-byte aligned.
On PC, aLoadBuffer is a plain memcpy with no such constraint.

The alignment dance caused aLoadBuffer to read up to 15 bytes before
sampleData and up to 8+ bytes past the end of the sample buffer. On
platforms with strict allocator guard pages (e.g. OpenBSD), this
triggers a SIGSEGV.

A second issue remains after removing the alignment dance: nFramesToDecode
is derived from sample counts (loopEnd), but size is not always a multiple
of frameSize. loopEnd and size are derived independently during encoding
and can disagree on the final partial frame, leaving nFramesToDecode *
frameSize exceeding the remaining bytes in the buffer.

Remove sampleDataStartPad and aligned entirely. Clamp the load to
min(nFramesToDecode * frameSize, audioFontSample->size - sampleDataOffset).
The ADPCM decoder operates on DMEM, so a partial last frame in DMEM
produces at most a negligible artifact at sound termination.
2026-03-21 18:34:18 +00:00
Philip Dubé 43f77c13fb Fix memory leaks in debugconsole & CrowdControl (#6383) 2026-03-21 18:32:55 +00:00
Christopher Leggett b8634f1d8b Fix numLoaded leak for Anchor (#6384) 2026-03-21 18:32:43 +00:00
Christopher Leggett 5c8ff76554 Custom Item Icons in Textboxes (#6343) 2026-03-20 16:37:44 +00:00
A Green Spoon 09b0fdbc93 Fix GV Waterfall Alcove Logic (#6380) 2026-03-20 16:07:14 +00:00
Christopher Leggett f2c34d8c11 Fix Entrance Rando Grotto Voidout Crash when voiding back to an area with a background image (#6379)
Hookify bgimage load cam check and add it to entrance rando
2026-03-20 03:40:35 +00:00
Sean Latham 38e684fda3 Fixed scrub text checking merchant hint setting (#6378) 2026-03-19 20:47:35 +00:00
Philip Dubé 8f51dfbaf4 Item Tracker: don't disable Personal Notes (#6376)
Personal Notes is awkward with Combo Button Hold, but should be allowed

This avoids disabling drop down when it could otherwise be changed to Main Window

Besides, some people might be able to type while holding button combos, long live artsey.io
2026-03-19 18:24:25 +00:00
Philip Dubé 04ed1825f0 Fix excluded locations regressions causing crash (#6375) 2026-03-19 15:50:52 +00:00
Philip Dubé 94a02dd53a Granny: don't sell blue potion / item without claim check when adult trade not shuffled (#6363) 2026-03-19 13:33:32 +00:00
Philip Dubé 6a9567b369 Fix rendering double digit key count (#6371) 2026-03-19 01:39:46 +00:00
Philip Dubé 9f6ffc9f2a z_en_ko.c: port over more improvements from decomp, add hook to fix vanilla forest quest state bug (#6373) 2026-03-19 01:38:56 +00:00
Philip Dubé 2f12677b25 Refactor Maps & Compasses coloring hook, remove PreFunc (#6351)
PreFunc for map/compass coloring & jabber nut coloring doesn't work in file select menu,
could make them always enabled in file select, but this seems simpler

Also fix map colors & ice cavern compass color
2026-03-19 00:14:37 +00:00
Pepper0ni a40ca58aba Misc logic fixes (#6370) 2026-03-18 17:38:43 +00:00
Philip Dubé 1f57f72acd Hookify Sunlight Arrows (#6366) 2026-03-18 16:23:33 +00:00
Philip Dubé d7b4e5a24d Fix heavy block in front of light trial having unending quake (#6367) 2026-03-18 03:14:34 +00:00
Philip Dubé 97eaa8b3e0 clean up comments (#6369) 2026-03-18 01:27:08 +00:00
Philip Dubé e7dce8e055 Keep StatsWindow fps rendered stable (#6368) 2026-03-18 01:21:09 +00:00
Philip Dubé 908ecbb795 Classify chest CMC for bombchus as lesser, not junk (#6349) 2026-03-17 17:41:43 +00:00
Philip Dubé 716f6bc042 Always call RandomizerCheckObjects::UpdateImGuiVisibility for locations view (#6352) 2026-03-17 17:41:20 +00:00
Philip Dubé 4e3b8d0b13 Fix happy mask salesman to check flags instead of inventory for SOLD OUT (#6355)
Fixes getting locked out of mask quest with mask select
2026-03-17 17:41:04 +00:00
Philip Dubé c906c71f71 Song from Malon: requires hylian jabbernut (#6357) 2026-03-17 17:40:37 +00:00
Philip Dubé e9ef09eee4 Fix RBA gauntlet colors to match console (#6359)
Also fix tracker to show golden gauntlets while wearing glitched gauntlets,
& don't crash save editor
2026-03-17 17:40:08 +00:00
Philip Dubé cefc9c02fa update gh actions, fix cmake whitespace (#6361) 2026-03-17 04:54:04 +00:00
Pepe20129 b35883e1f6 Enemy rando cleanup (#6327)
Change Actor_SpawnEntry to use VB
Move adult zelda collapse stalfos to a explicit hook
Move dark link to a explicit hook
Some more canRandomize that were not needed
Move bg_haka & bg_haka_tubo to explicit hooks
Move en_vali to an explicit hook
Move bg_mori_bigst to an explicit hook
Fix door opening before the enemies are killed
Remove `canRandomize` parameter
Move bg_haka_huta to explicit hooks
2026-03-17 04:53:33 +00:00
Philip Dubé c93b6188c8 Fix swimvoid in Zora River respawning in unloaded room (#6360)
Caused by spawning in Zora's River with entrance rando,
going downstream to different room, then swimvoid

Before the area by waterfall would not be loaded,
instead downstream still loaded
2026-03-17 04:14:18 +00:00
Philip Dubé e6d6b6d7d1 Fix loading wrong day/night scene after blue warp in rando (#6350)
When entering a dungeon like well at night, defeating a boss that changes time to day, Kakariko Village would load with daylight but act like it's night

Skipping the blue warp cutscene meant dayTime and nightFlag weren't properly in sync. Clear `gSaveContext.nightFlag` when adjusting time of day
2026-03-17 01:02:15 +00:00
Philip Dubé b15ac97dea Fix adult trade items spoiling during file load in rando (#6358) 2026-03-16 21:35:32 +00:00
Philip Dubé 45449623bb MAX_MQ_DUNGEON_COUNT (#6353)
Co-authored-by: ganesh1828
2026-03-16 19:01:33 +00:00
Philip Dubé 7899b6a048 Grass names: don't list prefix, prefix is added already (#6347) 2026-03-14 14:09:02 +00:00
A Green Spoon 614ec084fa update item list (#6340) 2026-03-09 20:08:00 +00:00
Matt Jakubowski 005044868a CC fixes (#6341) 2026-03-09 20:07:37 +00:00
Philip Dubé 7767cb6d39 Reduce trailing newlines in tooltips/logs (#6337)
Reduce trailing newlines in tooltips/logs, fix CanUse warnings
2026-03-09 00:27:47 +00:00
Pepper0ni 139381a0e0 Add Fire Trial to Fewer Tunic Requirements (#6336) 2026-03-09 00:21:31 +00:00
Philip Dubé 63859efa40 Don't refer to grass patch as bush (#6335)
Decomp refers to both kusa & wood02 as bushes, but for shuffles reserve bush for wood02
2026-03-08 19:15:16 +00:00
Philip Dubé 0f948efb51 Keep Nayru's Love & Farore's Wind in scarce item pool (#6334)
Consistent with n64 rando
2026-03-08 14:16:33 +00:00
Philip Dubé 99e60b81fd fix rando fire temple goron text formatting (#6332)
AutoFormat isn't suitable for text using escape codes, but unlike other texts this collection uses a mix of escape codes & our formatting codes. In such scenarios Format avoids mangling things
2026-03-08 04:28:55 +00:00
Philip Dubé 3174545749 Fix Ganondorf hint formatting (#6331) 2026-03-08 02:35:08 +00:00
Pepper0ni a1aa046814 ensure flag is correctly set for randomiser (#6330) 2026-03-07 18:22:42 +00:00
Pepper0ni 60ec65592a Add trick for Hookshotting ladders (#6329) 2026-03-07 18:21:04 +00:00
Pepper0ni 6deff6d749 Enforce mask select properly on completed (#6326) 2026-03-05 22:07:06 +00:00
A Green Spoon 92a1d260da Choose Link's Pocket Dungeon Reward Type (#6213) 2026-03-05 22:05:55 +00:00
A Green Spoon 6340ad3d5c Hookify Hookshot Reticle Changes (#6279) 2026-03-05 16:11:36 +00:00
Philip Dubé 63597ec633 Prevent winning Talon's game without str0. Prevent starting Diving Game without Zora Jabbernut (#6324) 2026-03-04 15:35:45 +00:00
Pepper0ni 7522f31cc8 Refactor DMC logic (#6294)
Refactors Death Mountain Crater logic to work in a more straightforward, if verbose, applies Tunicless navigation consistently, and paves over some small oversights.

As Child must be able to navigate DMC to some degree due to Child only checks, and logic should be consistent between Child and Adult, DMC no longer hard requires Tunic in any scenario. Instead checks and exits are split into regions, and each entrance has a "Fewer Tunic Requirements" heart count associated with it for each region which is then increased by 50% (rounding up) when FTR is off. This applies to both Child and Adult.
2026-03-04 00:44:56 +00:00
Philip Dubé b6df96c530 Add dependencies to docs/BUILDING.md (#6304)
Remove openSUSE because I can't figure out their package convention
2026-03-03 16:49:53 +00:00
Pepper0ni 40ad4fed82 Merge Visible Collision and Hammer Through Collision (#6317) 2026-03-03 04:04:57 +00:00
Philip Dubé 3882086677 Fix toggle speed modifier for walking (#6321) 2026-03-03 02:21:18 +00:00
Christopher Leggett 49aa33038d Restores Greg's textbox icon (#6320) 2026-03-03 00:38:01 +00:00
Philip Dubé b65acb9c9d fix typo (#6319) 2026-03-02 22:33:13 +00:00
Pepper0ni 91425a39ac Add Death Mountain Trail Child Climb Without Shield (#6318) 2026-03-02 21:13:19 +00:00
Philip Dubé f19ad1e75b timesaver_hook_handlers: use COND_HOOK (#6309) 2026-03-02 20:25:03 +00:00
Philip Dubé 2a335b1cd8 move speed modifier settings to cheats (#6277)
Combine into one speed modifier. Refactor config migrations. Add v6
2026-03-02 18:26:37 +00:00
Olivia!! 6f01d68c3c Fix missing logic for Medallion Locked Trials (#6314) 2026-03-02 07:10:58 +00:00
Philip Dubé d4c1118d1b Hookify DisableKokiriDrawDistance (#6305)
Also update some of Mido's code with latest decomp

Looking at decomp, EnKo doesn't set appearDist to 180.0
2026-03-02 02:10:04 +00:00
Shishu the Dragon 0d41af6978 Ivan: Fix intermittent crash with certain items (#6253) 2026-03-02 01:22:37 +00:00
Shishu the Dragon 460a098bec Dev: Mac/Linux compat for VS Code tasks (#6211) 2026-03-02 01:22:37 +00:00
xxAtrain223 2b650a4979 Stringify Randomizer Enums (#6223)
Moved randomizer enums from randomizerTypes.h to randomizerEnums.h and helpers
2026-03-02 00:58:24 +00:00
red 2c07edc4eb Add disable jabu wobble accessibility option (#6280) 2026-03-02 00:45:17 +00:00
Philip Dubé 0a946e5b9d Roc's Feather: avoid OOB access to gItemAgeReqs (#6297)
This fix is a bit blunt, but in the absence of a better idea it exists
2026-03-01 14:55:16 +00:00
Philip Dubé b07c64ecf9 Fix song of storms cutscene (#6310) 2026-02-28 23:51:13 +00:00
Philip Dubé a547d51abb Fix Malon text on Lon Lon Ranch in rando (#6308)
Missed in #6299
2026-02-28 16:33:16 +00:00
Pepe20129 d841357fd4 Update libultraship (#6283) 2026-02-28 16:30:30 +00:00
Pepe20129 8dd03ef097 Trap Improvements (#6302)
* Move some trap stuff to `Traps.cpp`

* Split `GetTrapTrickModel` into a function

* Split `ShouldJunkItemBeTrap` into a function

* Move `BuildIceTrapMessage` to `Traps.cpp`

* Allow ice trap messages to have the item name. Only for english for now due to article issues.
2026-02-28 15:53:05 +00:00
Jerom Venneker a393f48c7c Fix missable Malon check (#6299)
Added a case for the VB_MALON_RETURN_FROM_CASTLE vanilla behavior flag.
This lets Malon stay until you both get the egg and wake up Talon making the egg flag unmissable.
2026-02-28 14:57:27 +00:00
Philip Dubé 00ac1d566d spdlog: don't pass printf format string (#6307) 2026-02-28 04:20:09 +00:00
Jeffrey Crowell fcf7d4bd15 Add CoreAudio support (#6270) 2026-02-28 03:34:29 +00:00
Jameriquiah 9f56ef5090 unsheathe without slashing (#6216) 2026-02-27 19:34:56 -07:00
Philip Dubé d46bfd9716 Avoid auto saving in file select (#6298) 2026-02-28 00:48:34 +00:00
Philip Dubé 5a7bc9a459 Remove unnecessary includes of OTRGlobals.h in actor overlays (#6306) 2026-02-28 00:44:41 +00:00
Jameriquiah 6b51909aa5 tooltip otr to o2r (#6300) 2026-02-27 14:42:45 +00:00
Philip Dubé fe5dce24b5 Misc fixes for Shuffle Climb (#6296)
Rename deku tree grass on 2F, move logic accordingly
Include climb requirement in Dodongo's Armos Room without unintuitive jumps
Spirit typo had locked door before child climb linked to 2F instead of 1F
2026-02-27 02:36:51 +00:00
Christopher Leggett c3ffaa918d Don't autoformat altar hints twice. (#6295) 2026-02-26 23:26:52 +00:00
Philip Dubé b6cdc6c490 Fix kak backyard logic with shuffle climb (#6288)
Missed ladder to potion shop
2026-02-26 22:28:00 +00:00
Christopher Leggett d4d3e8bc0f Port Scrolling Texture Interpolation over from 2Ship (#6224) 2026-02-26 13:36:55 +00:00
coavins c2cf154e3e Update .vscode and .devcontainer files (#6246)
This commit makes some changes to the dockerfile to make it work again.
We install cmake from source in order to meet the minimum required
version specified in the CMakeLists.txt file. We build the same version
that is installed on the CI runner image.

We also build tinyxml2 from source because we need some cmake files
that are apparently not included in the apt package.
2026-02-26 01:24:22 +00:00
Pepper0ni 0e99b30e91 Add StartingAge limits to Closed Forest (#6282) 2026-02-21 17:50:36 +00:00
Pepper0ni 19df711123 remove castle moat spawn override (#6284) 2026-02-21 17:48:50 +00:00
Pepper0ni 0702b11b90 fix carpet man logic (#6285) 2026-02-21 17:48:15 +00:00
A Green Spoon d9ebce9f9f hookify additional reticles (#6278) 2026-02-17 20:08:06 +00:00
Pepper0ni 4cae79fd89 Change numbered tricks in preset and settings to use codes. (#6267) 2026-02-17 16:34:38 +00:00
Philip Dubé 8e1f1aea82 Fix location list (#6276)
Base has name in Flags column, this should not be null
Omit on unknown location to match other Location::Base rows
2026-02-16 14:53:32 -07:00
Philip Dubé e987cdae24 Fix misc issues (#6275)
fix #3990 #6055 #6145 #6271
2026-02-16 17:52:31 +00:00
Philip Dubé c63f57850f Deku Theater: better handling of timesaver being disabled for shuffle speak (#6265)
also skip first 2 seconds of scrubs deciding to pop out of ground
2026-02-16 16:21:35 +00:00
Philip Dubé b1fea3fe78 Bean Souls: don't lose flag when soul found in same location as bean patch (#6264) 2026-02-16 16:16:35 +00:00
Jordan Longstaff 0210374cc4 Enable missing music entries in audio editor (#5685)
* Enable missing music entries in audio editor

* Fix mislabeled tracks "Ocarina of Time" and "Seal of Six Sages" (mirrored in decomp)
2026-02-14 20:31:19 -07:00
anthony-barricelli d67dcb92f2 Bug Fix: Setting Start with OoT only gives Fairy Ocarina in Rando (#6227) 2026-02-15 01:19:31 +00:00
anthony-barricelli 3206425e1b fixes #6008 (#6229) 2026-02-15 01:17:53 +00:00
Malkierian e447143e48 Fix the extractor's assumption that found files are always in the working directory (x64/build/soh). (#6243) 2026-02-14 17:51:48 -07:00
Philip Dubé e6947c733c Business Scrubs: don't speak without jabber nut (#6255)
most speak checks conservatively only apply to Link initiating speech,
but didn't realize business scrubs speak unprompted & that would make deku jabber nut mostly useless

this doesn't apply to other scrubs (such as 123 scrubs), maybe in future we can block more, such as showing trade items
2026-02-15 00:48:00 +00:00
Philip Dubé 71c6f02a86 Big Poes hint: not Big Goron (#6256) 2026-02-15 00:36:16 +00:00
Malkierian b83ca39c98 Make tricks and locations lists re-evaluate after preset application. (#6263) 2026-02-14 15:58:26 -07:00
Pepper0ni 7eb5acf224 Fix wrong logic var in spirit shared (#6254) 2026-02-14 19:04:50 +00:00
A Green Spoon f31172c647 remove extra zf condition + add vb call (#6258) 2026-02-14 19:04:34 +00:00
Philip Dubé 1e1ba54cf6 Water Temple: fix waterfall GS logic (#6251) 2026-02-12 02:40:04 +00:00
Philip Dubé 92cb7f1594 fix crash when generating decoupled entrances with boss shuffle (#6189)
regression from ganon's tower shuffle
2026-02-10 19:22:40 +00:00
Philip Dubé 04eb8d1601 Forest: fix hover recoil trick using wrong operator (#6248) 2026-02-10 00:27:58 +00:00
anthony-barricelli 21a270c0b3 Bug Fix: MQ Dungeon setting not updating locations in Locations tab (#6228)
refresh locations if MQ dungeon setting changes + show MQ locations for "Selection Only"
2026-02-10 00:09:52 +00:00
Christopher Leggett 6a31700820 Fixes some Stone of Agony bugs and refactors it to a VB Hook (#6235)
Fixes #1727. Specifically, it removes a lot of old situations in which the stone of agony icon would've been hidden, such as shield and z-targeting. It will still be hidden while talking to an NPC or in cutscenes.

This does also introduce a subtle change in behavior. It now behaves a bit more like the Shard of Agony from the 3ds version. Instead of always being visible after the stone of agony is obtained, it is now hidden until you get close to a secret spot, appearing at a slightly further range than when the rumble would start.
2026-02-10 00:07:34 +00:00
A Green Spoon a2f2697d0d move EndFloatWindows outside of Begin (#6242) 2026-02-09 23:44:13 +00:00
Pepper0ni 293adcf9ee fix water level logic (#6247) 2026-02-09 23:34:33 +00:00
TheLynk 743103fbe9 Fix Logic in Deku Tree (#6244) 2026-02-08 22:20:16 +00:00
xxAtrain223 ce8dd7931c Added StartingAgeTime to RecalculateAvailableChecks. (#6237) 2026-02-08 21:58:37 +00:00
Philip Dubé 8fd41474c1 Fix logic thinking child exiting OGC GFF leads to castle grounds, not past gate (#6207)
Also fix grotto's age redirection
2026-02-07 20:21:14 +00:00
Malkierian 2bfae47b7f Change interior pot access to only check for viable methods. (#6233) 2026-02-07 08:41:08 -07:00
Christopher Leggett 65c7c3e4a9 Fix Heart Containers/Pieces Item Pool Calculation (#6226)
This calc ends up with 8 heart containers in the pool with the default 3 starting hearts, just like the 8 heart containers in the vanilla game. Changing starting hearts results in half of the remaining hearts being filled by heart containers and half of the remaining hearts being filled by heart pieces.
2026-02-06 02:18:06 +00:00
anthony-barricelli 2656c20f71 check if rando for quest kaleido menu panel (#6231) 2026-02-04 18:59:52 +00:00
A Green Spoon c021a0e8a2 Fix KD Without Bombs Trick Name (#6225) 2026-02-04 02:53:06 +00:00
Malkierian cc0941cc9f Attempt to correct Linux appimage behavior. (#6215)
Also make Windows rom search react to the set search path.
2026-02-01 11:35:54 -07:00
anthony-barricelli a4eacdd267 reset selected enemies list when clicking box for all enemies (#6219) 2026-01-31 15:00:06 +00:00
Shishu the Dragon 79d6f54be1 Fix segfault on quit (#6212) 2026-01-29 18:28:55 -07:00
Jordan Longstaff 23606325e6 Hookify Goron Pot (#6208) 2026-01-29 14:36:46 +00:00
Malkierian 8176e57144 Entrance Tracker Display Options (#6193)
Add all window display options to Entrance Tracker.
Apply hidden label filtering to combobox labels.
Remove tracker prefixes from check and entrance tracker preset load functions.
Remove all references to the menu bar, and the menubar source and header files.
2026-01-29 03:24:43 +00:00
Philip Dubé 473a77bbb2 Fix generation when Shuffle Speak disabled (#6206) 2026-01-28 18:22:21 +00:00
tortugaveloz a365446832 Basic Surround Sound support. (#6204) 2026-01-28 05:14:57 +00:00
Philip Dubé e2db315ffa Shuffle Speak (#5538)
Shuffles 6 languages (Deku, Gerudo, Goron, Hylian, Kokiri, Zora) to learn before being able to use Speak command with actors of that type. Other actors can still always initiate speech

Owl speaks anything (relevant for owl flights)
2026-01-28 05:14:14 +00:00
OtherBlue 16ee01404a small patch to match 2ship (#6197) 2026-01-26 03:26:16 +00:00
xxAtrain223 077fda8749 Stringify More Conditions (#6031) 2026-01-26 03:25:24 +00:00
xxAtrain223 f5264be192 Recalculate Available Checks from Current Region (#6165) 2026-01-26 03:23:47 +00:00
Christopher Leggett 983d04d362 Restores missing hint types that got lost in a merge (#6194)
Also fix bad text id on deku tree compass & fix dungeon map custom messages
2026-01-23 02:15:27 +00:00
Christopher Leggett 2af265dbce Add action shuffle icons to the item tracker (#6190) 2026-01-23 01:09:08 +00:00
Christopher Leggett dfba6b319b Fixes missing flag filter theme color (#6191) 2026-01-23 00:08:58 +00:00
Eric Hoey 894b8e6c86 Glitch-Aiding CS Tweaks/Fixes/Addition (#6192)
unskip door shutter cutscene

add second jabu OI door to glitch-aiding cutscenes

add dc boss door shutter

fix spirit mq switch

add comments
2026-01-22 14:27:07 +00:00
Philip Dubé 2da233c40b Improve forest temple poe cutscene hack (#6185)
ACTOR_EN_ST isn't reliable in enemy randomizer,
& in doorsanity it's desirable to trigger in first room
2026-01-21 19:50:23 +00:00
Philip Dubé 6b160fac1c Entrance/Location: remove Getuint32_t method (#6186) 2026-01-21 16:33:35 +00:00
Philip Dubé 78c68ae3d4 Fewer Tunic Requirements: remove lies (#6183)
Logic has been widening use of Fewer Tunic Requirements, making the description no longer accurate
2026-01-21 06:39:38 +00:00
Christopher Leggett fae74d4a5e Kaleido Tracker - Add new Shuffles (#6184)
Namely Swim, Crawl, Climb, Grab, Open Chests, and Bean Souls

Also added a page up and page down feature since the list is getting large. Assigned it to C-Left and C-Right. I'd like to put C-Down as "Jump to End" but the way things currently are I can't set C-Up as "Jump to Start" so I'll leave that one out for now.
2026-01-21 04:04:24 +00:00
Philip Dubé c9414b4d45 Misc fixes mostly related to custom text refactor (#6174)
fix goron messages in rando
also always include "IS_RANDO" in rando shipinit dependencies
don't use rando RNG, trying std::array
avoid sprintf, std::array not necessary
fix random rupee name crash
roll random traps: don't reuse rando rng
fix better bombchu typo
2026-01-20 20:55:24 +00:00
Pepper0ni 9991a95ab1 fix maps and compasses not being added to the pool (#6180) 2026-01-20 15:39:03 +00:00
aMannus c360b2dee4 Fix missing farores (#6176) 2026-01-20 01:11:52 +00:00
Philip Dubé 596b714fa4 Rando: Shuffle Climb (#5182)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-01-19 19:47:56 +00:00
Philip Dubé f52b653cfb Pot CMC (#6167)
Copied from https://github.com/HarbourMasters/2ship2harkinian/pull/1011
2026-01-19 19:40:09 +00:00
Fabien Romano 35039565df fix portArchiveVersion, DetectOTRVersion() use LocateFileAcrossAppDirs() so it needs filename as argument, not full path. (#6168) 2026-01-19 17:04:55 +00:00
aMannus 451820cac4 Fix skulltula messages (#6170)
Typo made the replace fail and then freeze the game on the autoformat step afterwards

Also fix water temple boss key text color
2026-01-19 15:19:02 +00:00
Garrett Cox d7981bf03f Some tweaks to anchor (#6166) 2026-01-19 04:38:48 +00:00
Philip Dubé a2245f7a47 Merge pull request #6164 from serprex/merge912
merge 9.1.2
2026-01-19 03:55:50 +00:00
Demur Rumed 7588734a42 Merge remote-tracking branch 'origin/develop-copper' into merge912 2026-01-19 02:35:48 +00:00
Philip Dubé 0dc6989438 9.1.2 (#6160) 2026-01-19 00:10:09 +00:00
Philip Dubé be0f8fec9f Fix boot to debug warp screen not applying time savers (#6151) 2026-01-18 23:10:33 +00:00
xxAtrain223 651078f0b3 Added search boxes for Save Editor flags. (#6163) 2026-01-18 23:01:21 +00:00
Pepe20129 f541c3f4ad Shuffle Ganon Tower (#5078) 2026-01-18 22:38:01 +00:00
Philip Dubé c71cc68951 Update references to soh.otr/oot.otr/oot-mq.otr to .o2r (#6161) 2026-01-18 16:59:20 +00:00
ItsHeckinPat 04c5d50b3e Ported BtnSelector from 2ship (#6158)
Allows the rebinding for Resetting the game, Debug Map Select, and Debug No-Clip.
Also allows for Speed Modifiers to use the new button combos, instead of only the modifier buttons.
2026-01-18 16:01:39 +00:00
Shishu the Dragon eab279c0be Fix boot crash when v8 saves are present (#6157) 2026-01-18 14:29:57 +00:00
Philip Dubé 7006ef7404 Don't put unshuffled master sword into playthrough (#6146)
Includes some cleanup. Main point is:
1. hidden checks are not hintable
2. hidden checks should not be written to spoiler log
2026-01-18 14:29:06 +00:00
Philip Dubé 18b00e7bc1 Shuffle Grab (#5719)
AKA str0. Named in-game item Power Bracelet

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-01-18 05:32:31 +00:00
Philip Dubé 60205ec0bd item list: bring back bean souls (#6156)
got lost somehow. also align columns
2026-01-18 05:13:45 +00:00
Philip Dubé 5e802f232d Fix ZR/LW entrance shuffle leak (#6154) 2026-01-17 21:00:35 +00:00
Philip Dubé f474a86928 Cleanup various things noticed while fixing rando generation / debug warp (#6152)
Adjust RAND_GET_OPTION to return option instead of option value
2026-01-17 20:34:24 +00:00
Philip Dubé 9ab58a8d07 Fix rando objects not randomizing (#6150)
Recent changes in init ordering had param hashmap built before static locations setup by hooks
2026-01-17 18:03:51 +00:00
xxAtrain223 1af0f4e395 Added Scarecrow Spawn to the Collision Viewer. (#6148) 2026-01-17 15:55:41 +00:00
Garrett Cox c36468ccbd Add bounce off walls toggle (#6110) 2026-01-17 06:11:17 +00:00
Jordan Longstaff 7850fa82df Modularize enemy defeat count hook & fix counting bugs (#5885) 2026-01-17 05:35:45 +00:00
Philip Dubé 5a484331b6 Fix merge regression in Shuffle Masks (#6147) 2026-01-17 05:30:00 +00:00
Philip Dubé 44d351698b Shuffle Masks (#5536)
Future improvements can build on this,
giving masks abilities,
or adding checks for trading mask to someone
2026-01-17 05:00:03 +00:00
mckinlee 69f151e79d i control boom (#6136) 2026-01-17 00:26:31 +00:00
Philip Dubé 04df48944a Shuffle Open Chest (#5946) 2026-01-16 18:34:14 +00:00
Jordan Longstaff 6606eefbf1 Add option to disable Link spinning with the Goron Pot (#6138)
Make Link focus on Goron Pot instead
2026-01-16 13:55:36 +00:00
Reppan 6e4c010ffe [Custom equipment] fix fallback (#6113) 2026-01-16 04:08:09 +00:00
Philip Dubé 9c1a1728ee fix dev, broke due to incompatible PRs (#6144) 2026-01-16 01:59:36 +00:00
Malkierian 704ace8fd3 ImGui-Driven Extraction Flow and Progress Reporting (#5892)
This sets up the initialization process to allow for producing an ImGui window before ROM archives are made, so that ImGui can be used to prompt users along the O2R creation process instead of using the OS prompts, which aren't always usable even on some Linux devices, let alone other 2nd-party port platforms, as well as graphically report extraction progress.
2026-01-15 23:10:20 +00:00
Jordan Longstaff c7e4e8ccee Owl Travel cutscenes skipped as One Point cutscenes (#6141) 2026-01-15 21:02:27 +00:00
Christopher Leggett 7b3efb1e7b Upgrades Custom Messages to Hooks and ShipInit (#5101)
Defines the hook for OnTextLoad. Intercepts message loading with hooks. Adds file to handle the CustomMessage creation for items.

Handles Ice Traps, Triforce Pieces, and Custom Items. Handle maps, compasses, and keys

Converts gossip stone hints to hook. Handle one-off merchant messages. Convert scrubs and shop text and remove now-unused code

Convert Sheik and Ganondorf hint text. Convert skulltula people messages. Convert more static hints

Specifically Dampe, Greg, Warp Songs, Frogs, Loach, Fishing Pole, and Saria

Convert Biggoron Hint. Convert Big Poes hint. Convert Anju hint dialogue. Convert Malon hint. Convert Horseback Archery hints. Convert Mask Shop SIgn hint

Convert Lake Hylia Switch related text. Convert Shooting Gallery bow reminder message

Convert random rupee names. Convert Rando-Relevant Navi Enhancement. Convert Random Goron messages

Convert Injecting Skull token counts. Add in a way to AutoFormat with an item icon.. Fix some errors with skull tokens and apply icon

Convert heart container item counts. Convert Inject Item Count for Heart Pieces. Port Better Bombchu Shopping. Convert Market Sneak

Port Quit Fishing At Door and clean up unused stuff. Reintroduce missing Mysterious warp song hint

Make ShipInitFuncs static

Adds and uses per-item articles for get item messages

Fix Entrance Hints and port toggle from dev-copper
2026-01-15 20:57:13 +00:00
Fabien Romano c43139ebd6 fix build and run on OpenBSD (#6050) 2026-01-15 20:46:03 +00:00
Pepper0ni a92f07e1f1 Fix quest leak assert triggering in no logic (#6143) 2026-01-15 19:31:19 +00:00
aMannus 0821c2e315 Fix boss souls on item tracker (#6142) 2026-01-15 15:51:04 +00:00
Reppan 0d4986f2c3 Add Clear List button to Mod Menu (#6137) 2026-01-14 18:50:33 +00:00
Philip Dubé 6e6834af22 Rando: Shuffle Crawl (#5032) 2026-01-14 04:29:30 +00:00
Garrett Cox e149e09e08 Add GFX Stack to crash handler ext (#6130) 2026-01-12 05:11:42 +00:00
Pepper0ni 45fb38e309 Add Forest MQ Child Doorframe trick and fix some issues with courtyard Scarecrow (#6134) 2026-01-11 15:27:00 +00:00
Philip Dubé cb21208b4b Fix regression causing BGS to be missing from item pool (#6131)
Exclude from minimal item pool
2026-01-11 08:39:15 +01:00
Philip Dubé 5d2d7a7f09 Make Deku Tree's falling platform respawn in rando (#6128)
Relevant in Shuffle Climb, where getting to chest would not be able to logically use platform
2026-01-11 05:03:08 +00:00
Pepper0ni 31eefd57df Can always bribe the Hyrule Castle guard in randomiser. (#6129) 2026-01-11 05:02:37 +00:00
Paul Schwabauer cd8bd69c6e Fix undefined behavior (#6089)
Fix TimeSplit crash on empty name

Initialize OptionValue::mVal to fix undefined behavior

Fix undefined behavior in GraveHoleJumps surface type copy.
The memcpy was reading 33 SurfaceTypes regardless of the actual count,
causing a buffer overread since NTSC 1.0 only has 31 surface types and
later versions have 32. Now uses the actual surfaceTypesCount from the
collision header.

Fix undefined behavior in framebuffer OTR signature check.
Use calloc instead of malloc for framebuffer allocation to zero-initialize
the memory. This fixes Valgrind warnings about reading uninitialized values
when ResourceMgr_OTRSigCheck reads from framebuffer pointers to check for
the "__OTR__" signature.

Fix undefined behavior in fontLoadStatus initialization.
Use calloc instead of malloc when allocating fontLoadStatus array
to ensure zero-initialization. This fixes Valgrind warnings about
conditional jumps depending on uninitialized values in
AudioLoad_SetFontLoadStatus.
2026-01-10 21:31:21 +00:00
Philip Dubé 7627b0567b Bring back Big Poe Count option, lost in menu refactor (#6126) 2026-01-10 17:19:19 +01:00
Ralphie Morell 65227f65f2 Fix: Goron City Doors after Fire Temple (#5950)
fixes not being able to open doors when fire temple defeated before talking to Link the Goron

does not apply to rando
2026-01-10 14:53:07 +00:00
Pepper0ni 989bbe0dd0 fix logic issues and add an assert to detect wrong quest leaks (#6125) 2026-01-10 14:24:30 +00:00
aMannus 14a6bc1f85 Add Roc's Feather (custom item) to Rando Item Pool (#6035)
This adds Roc's as a fully implemented item into the randomizer pool. When both Roc's and Nayru's is found, you can swap between them on the pause menu

Many people have contributed to this over time, so huge shoutout to:
- kentonm, this item is directly inspired by their Roc's Feather from their romhack Indigo. Also provided me with their GI model, icon texture and animation to use.
- PurpleHato, for providing the images for the item name shown on the kaleidoscope.
- Dana The Elf, providing another custom animation for the item.
- Reppan, for helping to tweak the animation and exporting the GI model for me.
2026-01-10 12:59:32 +00:00
Paul Schwabauer 5bbc32c2d1 Fix memory leaks in MessageViewer and audio_load (#6124)
Add destructor to MessageViewer to free allocated buffers

Free individual strings from ResourceMgr_ListFiles before freeing the array in audio_load.c
2026-01-10 12:53:37 +00:00
Philip Dubé c2152a8713 RNG refactor: use in Extractor, only apply rand_init to default_state (#6123) 2026-01-10 12:41:56 +00:00
nclok1405 39b8aacdef "Targetable Gold Skulltula" Cheat (#5986) 2026-01-10 01:51:59 +00:00
OtherBlue 3e0225272f Make "Move in First Person" require "Right Stick Aiming" (#6104) 2026-01-10 01:03:03 +00:00
Christopher Leggett ba0ecc59aa Fix RNG used by cosmetics editor to use same RNG method as rando (#5979)
Refactor ShipUtils to optionally take a state pointer.

Also changed random.h/cpp to be a wrapper around ShipUtils RNG providing a pointer to the rando state variable.

Use ShipUtils RNG for UIWidgets GetRandomValue

Fix AudioEditor to use ShipUtils RNG and its own state. It seems like shuffling Audio at the right time could have potentially messed with rando seed generation before this, but that bug, if it existed, should also be fixed with this.
2026-01-09 14:10:12 +00:00
Jordan Longstaff 9ca5ce0b53 Decomp import: rename timer-related functions and variables (#5896) 2026-01-08 18:56:01 +00:00
Garrett Cox 8584ced40b Proper fix for 2 handed idle animation (#6109) 2026-01-08 18:20:16 +00:00
Philip Dubé feb1429471 RT_DISTANT_BOULDER_COLLISION (#6114)
also amp up RT_DMT_UPPER_GS
2026-01-08 17:23:15 +00:00
Garrett Cox 71a47559f7 Boot sequence adjustments (#6119) 2026-01-08 17:21:52 +00:00
Garrett Cox 4839e575b1 Add toggle for Link's sword trail (#6112) 2026-01-08 05:53:36 +00:00
mckinlee f72ee2b814 Fix Arrow Cycle Aim Drift (#6118) 2026-01-08 02:33:08 +00:00
Philip Dubé 307cd7f8cd Fix: RT_DC_JUMP merged into RT_UNINTUITIVE_JUMPS (#6117) 2026-01-08 01:19:15 +00:00
ItsHeckinPat 36ff9ec562 Change to drawItemId (#6116) 2026-01-07 20:46:47 +00:00
Philip Dubé e6fb9a6b64 mod_menu: fix overflow error (#6111)
size_t is unsigned, `>= 0` is always true
2026-01-06 22:10:04 +00:00
Philip Dubé e26269d1b3 RT_UNINTUITIVE_JUMPS (#6107)
consolidate novice jump tricks that are purely movement based

2 new jumps added: shadow boat jump, & forest trial child jump
2026-01-06 17:44:42 +00:00
Philip Dubé 443badee87 combobox: use ordered maps to avoid dropdown having non-determinisitic ordering (#6101) 2026-01-06 01:22:10 +00:00
Philip Dubé b5a7dc7c2d deku tree outside boss room logic fixes (#6088)
also fix some issues in Ganon's Castle, somehow lost shadow trial from refactor, bring it back
2026-01-06 01:20:55 +00:00
Philip Dubé 8783f4cff7 remove unused chest assets (#6090)
replaced in #6085
2026-01-06 01:10:39 +00:00
Jordyn Hardyman 708bd0739a disable fixed camera fix (#6106) 2026-01-06 01:09:58 +00:00
mckinlee 5b0d8be484 [Enhancement] Arrow Cycle (#6105) 2026-01-05 22:53:14 +00:00
Philip Dubé da5f28afd8 RT_BARINADE_POTS (#6102) 2026-01-05 17:49:44 +00:00
Philip Dubé 3f8aa32d12 beans: fix generation for starting with planted beans (#6099)
beans is 0 in inventory, confusing CanPlantBeanCheck,
check for this specific scenario in BeanPlanted to mitigate
2026-01-05 15:58:51 +00:00
nclok1405 7c4a3359f0 Enable Battle Music for Leever option + Modularize EnemyBGMDisable (#5985)
Add "Enable Enemy Proximity Music for Leever" option + Modularize EnemyBGMDisable
2026-01-05 15:07:05 +00:00
Philip Dubé 392bb6c59f RT_HOVER_BOOST_SIMPLE with recoil (#5910) 2026-01-05 04:00:57 +00:00
Philip Dubé ea40cb2c0c water logic: rename b1 jet pit, add hover boots across reverse basement jet pit (#6092)
region only represents being on side outside dragon room
2026-01-04 22:12:59 +00:00
aMannus 0e7212d939 Add modal to teach player about presets (#5903)
* Add modal to teach player about presets

* Change cvar to CVAR_GENERAL

* Update soh/soh/Enhancements/FileSelectEnhancements.cpp

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2026-01-04 13:28:06 -07:00
Reppan 34728efe6f Add back Junk-category (#6091)
accidentally removed `case ITEM_CATEGORY_JUNK:` from large crate switch case
2026-01-04 14:03:26 +00:00
nclok1405 2ed9c56ca3 Add some NTSC Player Name decoding in Save Editor (#5867)
This adds a new font, Noto Sans JP
2026-01-04 14:02:06 +00:00
Reppan a134d2c59a Update CSMC to CMC and update chests to other shuffles (#6085) 2026-01-04 13:37:41 +00:00
Garrett Cox 16249f0909 Fix check name conflict (#6087) 2026-01-04 03:05:43 +00:00
Pepper0ni db91fd37e1 Refactor GenerateItemPool and Ice Trap settings (#5773)
Refactors the item pool to fix numerous bugs, especially with Plentiful item pools, makes ship exclusive items affected by item pool, and changes ice trap settings to be more clear and consistent to the user.
2026-01-03 18:42:26 +00:00
Jordyn Hardyman 9af262c1bb Disable Fixed Camera Enhancement (#6083)
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-01-03 18:07:19 +00:00
Philip Dubé 6c724a2c01 bean souls: prevent skulltula spawning from bugs (#6084)
woe is me thinking bugs reacted to soil patch instead of invisible actor
2026-01-03 16:43:52 +00:00
nclok1405 6a1fb1412b Add "File Number" to Save Editor (#5860) 2026-01-03 14:24:30 +00:00
nclok1405 5b275343db Allow Enemy Randomizer in Debug Save (#5841) 2026-01-03 14:19:06 +00:00
Reppan 7db2a97cea modding: alt equipment (#6062)
Implements object_custom_equip objects that adds more support to have items modified by modders without having to export with hands or do xml edits to load hands. This is autonomous if exported as a object_custom_equip

Also adds non existing DisplayList for items that originally did not have a DisplayList. Longshot and Big Goron Sword Sheath is 2 examples
2026-01-03 14:18:11 +00:00
Philip Dubé 07208fcf15 rando menu: fix shop price options (#6080) 2026-01-03 14:16:49 +00:00
Pepper0ni ba78039a69 add rang as a way to get the LW water rupees (#6082) 2026-01-03 14:14:31 +00:00
Philip Dubé e3865e28af Remove pseudo RGs: RG_EPONA, RG_SCARECROW, RG_DISTANT_SCARECROW (#6078) 2026-01-03 13:50:38 +00:00
nclok1405 1e55c1295f Add an option to disable Autosave Notification (#6081) 2026-01-03 13:48:58 +00:00
Philip Dubé 6953edecee rando menu: bring back shuffle grass (#6079) 2026-01-03 04:27:22 +00:00
Philip Dubé 7748939504 RT_GV_CHILD_TENT (#5823)
Also add logic for RT_GV_CRATE_HOVERS, which already had a trick entry, but no logic
2026-01-03 03:02:38 +00:00
Pepper0ni 5fea53ed56 Spirit refactor to handle reverse entry (#5456) 2026-01-03 00:52:02 +00:00
Philip Dubé 1c4b78d35e Medallion Locked Trials: logic (#6077) 2026-01-03 00:41:03 +00:00
Philip Dubé 657b78a016 refactor water (#5916)
Co-authored-by: Pepper0ni
2026-01-02 23:58:32 +00:00
Pepper0ni 7d6c6f032e Refactor fire (#5868) 2026-01-02 23:13:44 +00:00
Philip Dubé 480a1658b1 randomizer: bring back item pool options (#6076) 2026-01-02 22:36:51 +00:00
Pepper0ni ef2b4cd42c fix an assert and va_arg linux crash (#6075) 2026-01-02 20:55:30 +00:00
Philip Dubé 6f060a9222 jabu mq: fix copy paste error, rename MQ_EAST_ROOM to MQ_NEAR_BOSS_ROOM (#6074)
renaming matches vanilla naming convention
2026-01-02 20:18:54 +00:00
Philip Dubé 31824afa4a fix compiler warnings (#6072) 2026-01-02 20:17:44 +00:00
xxAtrain223 c0ba618f60 Set CurrentRegionKey when checking an entrance. (#6073) 2026-01-02 18:32:05 +00:00
Garrett Cox 10680f53e7 Fix syncing bombchuUpgradeLevel (#6071) 2026-01-02 10:35:45 -06:00
Philip Dubé 88494169e6 Add option for Navi to hint location of boss key at boss doors (#6058) 2026-01-02 16:23:15 +00:00
Philip Dubé 33758e49db Medallions Locked Trials (#6046)
Adds rando option to bar doors to trials until corresponding medallion acquired
2026-01-02 15:17:57 +00:00
Glought dd9d63eecb Add the ability to Randomize Music and Sound Effects and Cosmetrics based on Rando File Seed. (#5970)
Add the ability to Randomize All Music and sfx based on file Rando seed.
Add the ability to Randomize All cosmetics based on file rando seed.

Add combobox for selection:
- Disabled: No music or sound effects are randomized.
- On New Scene: Randomizes when you enter a new scene.
- On Rando Gen Only: Randomizes only when you generate a new randomizer
- On File Load: Randomizes on File Load.
- On File Load (Seeded): Randomizes on file load based on the current randomizer seed/file.

Removed checkboxes.
2026-01-02 15:01:01 +00:00
Sirius902 0bd08d626a Rando: Add Triforce Hunt GBK setting (#5739) 2026-01-02 14:55:34 +00:00
Glought 31db9e4ade Added "firstInput" stat and repurposed the "fileCreatedAt" stat. (#6070)
- The "firstInput" stat is set on first input in game. Used for RTA
  Timing.
- The "fileCreatedAt" stat is now set when then save file is created
  (After the player is done entering the file name). Useful for seeding
  non rando randomizers like Mirrorworld, Enemy Randomizer, extraTraps,
  etc.
2026-01-02 14:39:42 +00:00
Garrett Cox f666444876 Fix issue when syncing skipped checks (#6068) 2026-01-01 21:20:30 -06:00
Philip Dubé d3a6288c7e Combine check identity structs into CheckIdentity (#5852) 2026-01-02 01:51:03 +00:00
Philip Dubé ff0c309b5a shuffle scrubs: use object extensions (#5853) 2026-01-02 01:08:39 +00:00
Christopher Leggett 14a241ed3f Integrate Randomizer Window into Modern Menu Properly (#6017)
Also comes with a menu reorganization
2026-01-02 00:46:22 +00:00
Pepe20129 9e6c9a478e File Select More Info Update (#5998)
massively improves the "File Select More Info" enhancement:
- Moves it to a separate file
- Moves it to VB
- Adds triforce pieces & fishing pole
- General cleanup
2026-01-02 00:28:33 +00:00
Philip Dubé d227292935 Combine mq/vanilla flame wall skip tricks, include child skipping wall in MQ lobby (#5814)
Checked that logic past fire wall handles child logic

To get past without taking damage:
Z-target wall to left of fire wall. Turn left. 2 ESS turns right. Side hop
2026-01-01 23:08:42 +00:00
Philip Dubé 1463e76ef7 refactor jabu (#5671) 2026-01-01 22:58:15 +00:00
xxAtrain223 c0d9fe876c Remove Here Parameter and Rename to AnyAgeTime (#5714) 2026-01-01 22:16:50 +00:00
Reppan 1a9ea03e00 Make Custom Tunic Local (#6065)
* Make Custom Tunic Local

* Guard against Anchor

* Make Pause Menu Model treated as a Local
2026-01-01 15:36:29 -06:00
Shishu the Dragon d62e8108fd Mod Menu: Fix empty list crash (#6015) 2026-01-01 19:54:34 +00:00
Garrett Cox 2e5a985745 Add support for warp points in the dev tools, as well as a boot to warp point option (#6037) 2025-12-31 17:31:55 -06:00
Garrett Cox bc47a9ec6f Bump LUS (#6061) 2025-12-31 17:26:41 -06:00
Garrett Cox 7ca93e93be Back-port fixes from holiday build (#6060) 2025-12-31 17:08:30 -06:00
Philip Dubé 8cc02fd235 Add missing extension trick to Shadow MQ, fix 2 logic mixups in GTG (#5983)
Also allow Giant's Knife to logically hit these switches

Ganon's Castle diamond switch can be hit with bomb by setting bomb down instead of shield dropping
2025-12-31 02:54:41 +00:00
aMannus 5d63146267 Add setting updater for rando logic setting (#6030) 2025-12-31 01:44:01 +00:00
Jordan Longstaff 50c023b86b Modularize randomized enemy size hook & fix enemy health bars (#5887) 2025-12-31 01:43:20 +00:00
Philip Dubé 8ee637880d RT_GTG_LAVA_JUMP (#5987)
Distinct from unintuitive jumps in that I'm unable to get it consistently even after trying a couple times,
even after trying to find some mix of ledge grabbing & ESS turning to try at least put it down to roll timing
2025-12-31 01:29:56 +00:00
Philip Dubé d41273f34b Shuffle Bean Souls (#5833) 2025-12-31 01:27:37 +00:00
OtherBlue c688923272 [Enhancement] Unequip C-items (#6043) 2025-12-31 00:36:33 +00:00
Jordan Longstaff 7d6a82be4f Convert "Big Four" hook register functions to init functions (#5984) 2025-12-30 23:34:13 +00:00
aMannus e96503c0bd Fix custom tunics not updating on scene change (#6026) 2025-12-30 23:21:53 +00:00
xxAtrain223 fbfef95617 Add GetCheckPrice (#5718)
* Removed LocationAccess::CanBuy and added GetCheckPrice.

* Made the Magic Bean Salesman a merchant.

* Replaced CanBuyAnother with GetWalletCapacity and inline comparison for easier readability.
2025-12-30 22:37:28 +00:00
Philip Dubé cd08f343a6 more perm flags (#5676)
1. deku tree MQ web
2. dodongo's cavern MQ silver rupees
3. jabu lobby switch
4. forest well, lobby eyes, MQ web
5. fire MQ lobby torches
6. spirit MQ lobby silver rupees

adjusts forest MQ logic
2025-12-30 22:31:38 +00:00
Philip Dubé 82b279f55e bushsanity (#5941) 2025-12-30 20:24:00 +00:00
Philip Dubé 5822c33268 RT_ICE_STALAGMITE_CLIP, RT_ICE_STALAGMITE_HOOKSHOT (#5909)
Coming back from block room to hub, the clip is different, instead it's by wall that both ages can get past with pretty specific sidehop. This is pretty niche since generally logic isn't doing reverse ice cavern
2025-12-30 20:11:27 +00:00
nclok1405 6e27cd7107 Add Gerudo Fighter to Enemy Randomizer (#6005)
Being captured by random fighter behaves like being captured by a wall master
2025-12-30 19:45:19 +00:00
xxAtrain223 ace2f7869b Check for Pocket Cucco in HasItem. (#6049) 2025-12-28 09:20:16 -07:00
Philip Dubé f273ea4294 RT_WATER_IRON_BOOTS_LEDGE_GRAB (#6009)
https://www.youtube.com/watch?v=x8k3XJHiMOs
2025-12-27 12:18:15 +01:00
Philip Dubé a1f9971c12 RT_BIG_SKULLTULA_PAUSE_LIFT (#6014) 2025-12-27 12:17:02 +01:00
Philip Dubé 9c24ccec1a Fairysanity: allow using bottle (#6021)
Based on fishsanity, which is refactored with hooks

Also open up logic catching fairies at oasis if player has bottle
2025-12-27 12:15:31 +01:00
Philip Dubé 1c21608a95 refactor windmill (#6027)
split upper area into region rather than using logic val to manage access from below

2 fixes: adult can groundjump up the middle, child can make the trick with hammer
2025-12-27 12:13:47 +01:00
Philip Dubé 58e851dd2b Fix mixed up chest names in shadow MQ falling spikes room (#6047) 2025-12-27 12:12:51 +01:00
xxAtrain223 999f980d7c Fix 2 TimePass Issues (#6038)
* Set Kak time pass to false.

* Set lon lon time pass to false.
2025-12-27 12:10:57 +01:00
Jerom Venneker b24d266974 Reverted removal of 'ClearItemLocations' to fix #6036 (#6044) 2025-12-27 12:10:31 +01:00
Garrett Cox cc21163765 Fix rupee overflow in StartingItemGive (#6039) 2025-12-27 12:09:43 +01:00
Philip Dubé 3fa4af2cea Refactor Forest (#5673)
* refactor forest

* feedback

* more feedback

* MQ NE island logic

* no kids allowed

* split west corridor

* split up block puzzle room

* comment mapping poe sister colors

* generalize well swim, make novice

* hammer works

* upstream bug fix

* Replace corridor with hallway, rename east/west hallway regions to be based on their red/blue doormats

also change south hallway to overgrown hallway, & replace south/north sides with lower/upper sides
2025-12-21 10:30:43 -07:00
xxAtrain223 352a4e9260 Added small key doors special case for Thieves Hideout. (#6023) 2025-12-15 12:49:11 -07:00
Philip Dubé 05d865337c MQ forest: fix raised island GS logic (#6020) 2025-12-15 12:47:07 -07:00
Philip Dubé 9edb4e3c36 refactor dodongo's cavern (#5855) 2025-12-15 12:45:46 -07:00
Philip Dubé 971c3c5c94 refactor ganon's castle (#5664) 2025-12-15 12:42:02 -07:00
Philip Dubé e9aad17d17 refactor deku tree (#5854) 2025-12-15 12:41:53 -07:00
Philip Dubé 7176960a0e refactor: split out location_access/root, & combine bottling events (#5821) 2025-12-14 16:48:42 -07:00
Shishu the Dragon 9d8addca04 Update macOS build instructions (#6012) 2025-12-10 09:50:07 -07:00
Philip Dubé f83f73d671 Fix miss in previous hookify cosmetics editor PR (#6006) 2025-12-04 09:14:58 -07:00
Christopher Leggett 7e829a0780 Add in Progressive Bombchu Bags (#5836)
* Adds new Progressive Bombchu Bags option

Also changes existing code to account for Bombchu Bags becoming
a drop down with 3 values instead of a checkbox

* Handle the new lower capacities for ammo refills

* Handle what happens when receiving a bombchu bag

* Remove the trick name of Progressive Bombchu Bag

Since, you know, that's an actual thing now.

* Implements Bombchu Bag handling next to Progressive Bombchu Handling

* clang-formatting

* Add extra bag for plentiful items

* Address review comment

* Move bombchu upgrade level to gSaveContext and add save/load

* Use logic's saveContext for correct logic calculations

* Remove RG_PROGRESSIVE_BOMBCHU

* Fix Bombchu Refill obtainability

* Don't add normal chus to the pool if chu bags are on.

* cmake-format

* Properly reset bombchuUpgradeLevel on savefile init

* Fix error with va_arg on linux

* Fixes small error in the Bombchu Bag description

* Fix bug with bombchu obtainability

* clang-format

* Fix infinite bombchu text

* fix clang-format
2025-12-04 15:14:32 +00:00
nclok1405 098cb70460 Disable Screen Flash for Finishing Blow option (#5988) 2025-12-03 19:15:49 -07:00
Garrett Cox 9401d4fd71 Stop hiding key counts with skeleton key, and grant all keys (#5932) 2025-12-03 09:00:18 -07:00
Christopher Leggett 280455db42 Improvements to Custom Kaleido Menu (#5997)
* Use game over textures instead of save textures

* Improves custom kaleido menu.

Specifically:

1. Changes textures to the Game Over screen textures, which look
the same but doesn't have "SAVE" at the top.

2. Adds a cursor on the left, doesn't currently do anything
other than make it slightly clearer that you can move up and down
and scroll, but opens the door for more menu-ing/toggling capabilities
later.

* Add fishing rod to kaleido menu

* Adds skeleton key to kaleido menu with placeholder icon

* More condensing of kaleido menu + add overworld keys

* clang-format
2025-12-03 08:58:52 -07:00
Jordan Longstaff b649f5ed52 Apply ImGui scaling when using presets (#5991)
* Apply ImGui scaling when using presets

* Make ImGuiScale function do nothing if scale setting is unchanged
2025-12-03 08:58:43 -07:00
nclok1405 17f7c3e8f5 Add Expand All/Collapse All buttons to Hook Debugger (#6002) 2025-12-03 08:58:32 -07:00
nclok1405 42282c804e Better Debug Warp: Remember Link's Age and Day/Night Settings (#5981) 2025-12-03 08:58:24 -07:00
Philip Dubé c24b2d74d5 hookify cosmetics (#5900)
also make goron neck searchable
2025-12-03 08:58:16 -07:00
Jordan Longstaff 8aa7b2fc71 Modularize Hyper Enemies hook (#5968)
* Modularize Hyper Enemies hook

* Use extern "C"

* Make mod file self-contained
2025-12-03 08:58:06 -07:00
Garrett Cox a2e4e4d417 Check tracker improvements (#6000) 2025-12-03 08:57:15 -07:00
TheLynk 4366da631b Fix logic gf (#6003)
* Create AutoSyncFork.yml

* Off

* Delete .github/workflows/AutoSyncFork.yml

* Fix Logic In GF
2025-12-03 08:56:58 -07:00
Garrett Cox 9cd31099e2 Additional Anchor functionality: (#5999)
- Returned support for custom tunic colors
- Ocarina playback now audible
- Fixed movement translation issue when climbing or going through crawlspaces
- Fixed issue preventing some items from being visible in Dummy hands (namely ocarina)
- Fixed stick length not correctly syncing
2025-11-30 18:17:00 -07:00
Malkierian 0073736467 Fix entrance value assigned to DMT sign outside Dodongo's for hinting. (#5973) 2025-11-25 17:07:45 +00:00
Jordan Longstaff bc48fa84fd A bit of cleanup on multiple hooks (#5879)
* A bit of cleanup on BGS hook

* Cleanup on a few more hooks, fix itemId ref

* Use direct pointer to params

* Revert item receive ID hook setup

* Remove callbacks from menu GUI

* Add comments explaining conditions of permanent loss methods

* Move custom skeletons hook to subfolder

* Clang format

* Shorten comment

* Remove unnecessary re-register function call
2025-11-25 17:00:09 +00:00
Jordan Longstaff da6cf439d6 Modularize equipment hand patch hooks (#5876)
* Modularize equipment hand hooks

* Remove unnecessary include

* More efficient hammer hand hook

* More efficient equipment visible hook

* Add declarations of patching/resetting functions up front

* Remove forward declarations

* Make mod file self-contained
2025-11-24 18:48:56 +00:00
Jordan Longstaff 0f41ecb145 Modularize Hurt Container mode hook (#5874)
* Modularize Hurt Container mode hook

* Hook condition was wrong - fixed it

* Change type of hurtEnabled for clarity

* Change type back to bool

* Add VB hook

* Don't duplicate health capacity modifier calculation

* Add constants, replace magic numbers

* Clang format

* Publicize more health unit macros

* Make mod file self-contained
2025-11-24 17:30:34 +00:00
Malkierian 2ee4e70b9a Fix menu header width and scrollbar calculations. (#5975) 2025-11-24 14:00:37 +00:00
Pierre-Alain BESSERO 3e6b590db4 Added new trick (#5972)
* Added new trick

Skip Dodongo Cavern by using Bombchus to light the eyes

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

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

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

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-11-24 13:50:56 +00:00
Christopher Leggett c68c8f1284 Adds a toggle for the entrance labels on signs near loading zones. (#5974) 2025-11-23 16:45:19 +00:00
Philip Dubé 4aebdab43d refactor gtg (#5662) 2025-11-19 08:56:21 -07:00
Garrett Cox eca9eac0cf Use OE for storing client ID, remove remaining game state touch point in network thread (#5969) 2025-11-16 08:10:07 -06:00
Malkierian 05233487f8 Don't try to register the Anchor widgets when not built with networking enabled. (#5964) 2025-11-14 14:28:49 -07:00
Malkierian 16909c47cd Merge pull request #5963 from HarbourMasters/develop-copper
Copper -> Dev fix (#5962)
2025-11-14 12:46:51 -07:00
Malkierian daeb3a84c7 Can't use CVars before the CVar system is initialized. (#5962) 2025-11-14 12:45:48 -07:00
Malkierian 623a7e4f7b Merge pull request #5961 from Malkierian/develop-copper
Copper -> Develop 11/14
2025-11-14 12:29:38 -07:00
Garrett Cox 060878fb2e Anchor (#4910)
This is far and away the proudest thing I have been apart of in the Zelda community. Thank you to everyone who either directly or indirectly contributed to this effort. If I forgot to co-author you and you were involved, know that I simply forgot but still appreciated your help! Also thank you to the literal tens of thousands of people who have played Anchor, providing feedback and bug reports. Super thrilled to finally have this merged into the main Ship of Harkinian experience.

Co-authored-by: mattman107 <65982675+mattman107@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: MelonSpeedruns <melonspeedruns@outlook.com>
Co-authored-by: aMannus <mannusmenting@gmail.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com>
Co-authored-by: PurpleHato <47987542+PurpleHato@users.noreply.github.com>
Co-authored-by: balloondude2 <55861555+balloondude2@users.noreply.github.com>
Co-authored-by: lilacLunatic <8488221+lilacLunatic@users.noreply.github.com>
Co-authored-by: Felix Lee <flee135@users.noreply.github.com>
Co-authored-by: Sirius902 <10891979+Sirius902@users.noreply.github.com>
2025-11-14 11:04:09 -07:00
Jordan Longstaff cd1d619c9f Modularize permanent loss mod hooks (#5948)
* Modularize permanent loss mod hooks

* Make RegisterBonkDamage static

* Remove a couple of errant includes

* Fix more errant includes
2025-11-14 09:30:04 -07:00
Philip Dubé 6ccdfc6051 Fix: ground jump for haunted wasteland GS is hard (#5843)
* Fix: ground jump for haunted wasteland GS is hard, & can't be done with hammer

Pulled this logic from zootr where sword is assumed, was not able to execute myself

* Pepper0ni took a stab at this, wasn't able to do it, but didn't feel it wasn't doable

* AGreenSpoon figured it out with BGS/hammer
2025-11-13 19:24:40 -07:00
Malkierian 1e1a47c263 Load metadata without LoadFile() on startup (#5817)
* Load metadata without `LoadFile` on startup.
Implement file type entry.

* Fix non-Windows?

* clang
2025-11-13 19:05:51 -07:00
Jordan Longstaff 14fb9e60d8 Autosave no longer works after save file is deleted (#5959) 2025-11-13 15:31:57 -07:00
Jordan Longstaff dadc2e5218 "Assignable Tunic and Boots" setting now allows shields also (#5953) 2025-11-13 14:29:48 -07:00
Pepper0ni c005248129 Refactor zoras river logic (#5907)
* refactor zoras river

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-11-13 13:03:55 -07:00
Pepper0ni 75c9c579a4 fix invisible blades (#5957) 2025-11-12 08:11:00 -07:00
Philip Dubé a31b7d9ae7 refactor shadow logic (#5650)
* refactor shadow logic

* ground jump / hookshot extension

* with groundjump invisible spikes room can be cleared, collecting silver rupees with backwalked backflips with hover boots

* nb
2025-11-11 19:32:36 -07:00
Pepper0ni 25be804841 Refactor BotW logic (#5649)
* Update well logic for doorsanity

Co-authored-by: Demur Rumed <junkmute@hotmail.com>

* clang

* Apply suggestions from code review

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

* Add adult + irons + hook to getting to west ledge

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

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

* post merge fixes

* post merge fixes

* renames and ground jumps

* MQ updates

* address reviews

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Demur Rumed <junkmute@hotmail.com>
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-11-11 19:32:25 -07:00
Malkierian 5629d033c2 Forgot to get CVar value with the default specified in OTRGlobals to feed into InitLogging. (#5952) 2025-11-11 10:03:14 -07:00
Garrett Cox 36cd3a27e2 Fix menu path reassignment (#5949) 2025-11-10 13:18:26 -06:00
Garrett Cox 754d79a86e Tweaks to ENABLE_REMOTE_CONTROL usage & sail hooks (#5928) 2025-11-10 10:33:28 -07:00
Jordan Longstaff 33929534f5 Modularize boss defeat timestamp hook (#5886)
* Modularize boss defeat timestamp hook

* Remove unneeded includes

* Move hook into GameplayStats folder

* Delete duplicated hook file
2025-11-10 10:29:53 -07:00
Philip Dubé 3eade8133e Fix GF entrance tracker & generation issues with cratesanity (#5934) 2025-11-09 19:16:33 -07:00
Jordan Longstaff c0848ccba8 Modularize custom skeleton hooks (#5931) 2025-11-09 18:27:52 -07:00
Jordan Longstaff a3e540ebfe Modularize Mirrored World mode hook (#5930)
* Modularize Mirrored World mode hook

* Remove IS_RANDO from registration conditions

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-11-09 18:27:45 -07:00
Malkierian 6b83070343 Logging bump (#5938)
* Bump LUS, call `InitLogging` with both values at `trace`.
Set up proper conditional default log level in Dev Tools.

* Update LUS ref.
2025-11-09 18:27:19 -07:00
Jordan Longstaff 7ff93a3960 Dampe's Hut open all night when Dampe is out (#5937) 2025-11-09 18:27:09 -07:00
Pepper0ni 3d525d7eb1 Fix excluded locations getting bombchus when bombchu bag is off (#5943)
* Fix bombchus being consistently added to excluded locations

* change to be a random junk item
2025-11-09 08:58:18 -07:00
Garrett Cox 5249cd89df Stop creating timesplits file on init, and gitignore it (#5933) 2025-11-08 15:51:24 -06:00
Garrett Cox 8073f96856 Various hooks to support anchor (#5929) 2025-11-08 15:51:09 -06:00
Garrett Cox 66a9c7a218 Add merge strategy for preset sections (#5935) 2025-11-08 15:50:41 -06:00
Garrett Cox 0e162cbb7c Fix skybox being manipulated outside of appropriate scenes, other tweaks to disable 2d backgrounds impl (#5925) 2025-11-08 15:49:35 -06:00
Jordan Longstaff 3793e821c8 Autosave disabled when Ocarina of Time obtained but not Song of Time (#5936)
* Autosave disabled when Ocarina of Time obtained but not Song of Time

* Add explanation comment

Added a condition to prevent autosaving between obtaining the Ocarina of Time and the Song of Time.
2025-11-08 13:06:01 -07:00
Malkierian 43118146e4 Merge pull request #5927 from Malkierian/copper-dev-2
Copper -> Develop 11/6
2025-11-06 18:29:25 -07:00
Malkierian be70bb3296 Merge branch 'develop-copper' of github.com:Malkierian/Shipwright into develop 2025-11-06 17:01:44 -07:00
Malkierian 4aaad850bd Bump to Bravo 9.1.1. (#5922) 2025-11-04 17:40:02 -07:00
Malkierian cf275b1a6c Implement logger changes (#5914)
* Implement logger changes, and make default log level dynamic based on debug/release.

* Bump LUS.

* typo

Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>

---------

Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>
2025-11-03 18:54:01 -07:00
Philip Dubé 0014f40676 rando BOTWMQ: only turn the water level crystal switch into toggle (#5902) 2025-11-03 18:49:11 -07:00
Malkierian f015a1b339 Apply expected lexicographical sort to initial and new mod addition list. (#5904) 2025-11-03 18:48:48 -07:00
Malkierian b2090dcf83 Add "CuccosToReturn": 1 to Main Randomizer preset. (#5915) 2025-11-03 18:00:31 -07:00
Malkierian ebf8a3b47f Fix Song Shuffle Off (#5918)
* Temporarily fixes Song Shuffle Off causing songs to not be given on seeds created solely from spoilers.

* Remove instead of comment.
2025-11-03 17:40:54 -07:00
Pepper0ni f3b0d8e230 quick fix ZR grass logic (#5906) 2025-11-01 11:45:23 +01:00
Philip Dubé 156a1a7816 refactor ice cavern (#5661)
* refactor ice cavern

fixes blue rupee logic at beginning
makes structure usable for doorsanity & silver shuffle

* feedback

* feedback2

* feedback
2025-11-01 11:43:47 +01:00
Malkierian 4e913cc094 Merge pull request #5901 from Malkierian/copper-to-dev
Copper -> Dev 10/29
2025-10-29 14:41:56 -07:00
Malkierian 9f089aa6f8 Merge branch 'develop-copper' of github.com:Malkierian/Shipwright into develop 2025-10-29 13:54:22 -07:00
Jordan Longstaff 1ba6cf643d Modularize coloured ToT Medallions hook (#5877)
* Modularize colourized ToT Medallions hook

* Add overlooked reset of Forest Medallion colour

* Move asset variables to hook file

* Fix includes

* Remove forward declarations

* Use data structures to reduceboilerplate code

* Simplify data structures, reduce boilerplate even more

* Correct patchName2 checks

* Clang format

* Add brackets on if statements
2025-10-29 13:36:29 -07:00
Malkierian b30191f369 Set cutsceneIndex to 0 to bypass cutscene shenanigans when spawning in ToT as adult. (#5899)
Unify savedSceneNum at -1 regardless of starting age.
2025-10-29 09:05:14 -07:00
aMannus 7ffd01f133 Let shuffled fairies spawn on link's location instead (#5890) 2025-10-28 20:54:00 -07:00
Jordan Longstaff a419b431a7 Modularize Pause Warp hook (#5869)
* Modularize Pause Warp hook

* Make RegisterPauseMenuHooks static

* Merge pausewarp.c into hook module

* Use brackets with if statements

* Fix timer bug with spoiling items
2025-10-28 20:52:18 -07:00
Malkierian 48f4f56bac Change disabling rules for Skip Feeding Jabu-Jabu to reflect the fact that it only works in rando based on the rando setting. (#5889) 2025-10-28 17:01:59 -07:00
Pepper0ni 1b29c0cad3 fix logic error with detu tree torch room (#5898) 2025-10-28 16:57:16 -07:00
Malkierian 74312442d5 Fix wrong CVar on Hookshot Identifier. (#5883) 2025-10-25 19:52:22 -07:00
Jordan Longstaff 248fe8cb13 Modularize Reset Navi Timer hook (#5872)
* Modularize Reset Navi Timer hook

* Remove unnecessary sceneNum param name
2025-10-25 13:25:50 -07:00
Jordan Longstaff c4f9712eff Modularize scene-specific Dirt Path fix (#5871)
* Modularize scene-specific Dirt Path fix

* Use macro in fix function

* Condition hook on fix being enabled

* Rename update function
2025-10-25 13:25:33 -07:00
Jordan Longstaff cadae90c81 Modularize Floor Switches fix hook (#5870)
* Modularizes Floor Switches fix hook

* Remove unused include for z_obj_switch.h

* Convert to ID hook
2025-10-25 09:40:46 -07:00
Malkierian ad2807ce32 Fix adding Enable Mods twice as search widget. (#5880)
Fix a couple typos in search widget extra terms.
2025-10-23 18:32:00 -07:00
Malkierian ae1cee9b13 Bump to version Copper Alfa 9.1.0. (#5866) 2025-10-21 19:01:39 -07:00
Malkierian 56a05c392e Update to latest LUS commit with clip adjustments. (#5865) 2025-10-21 18:27:24 -07:00
xxAtrain223 955ee9b9ba Fix doorType calculation for shutter doors (#5862) 2025-10-20 21:59:50 -07:00
Malkierian dc5e9686c0 Mod Menu Tweaks (#5844)
* Fix mod order retention.
Remove mods in the CVar that no longer exist.

* Rework mod list init for enabled-by-default with extension changing to disable.

* Rework entire system for default enabled.
Disabled mods are renamed for sake of saving a CVar.
Menu now has an edit mode, cancel button, and apply & close.
Move Enable Alternate Assets to be Enable Mods in the mod menu.
Couple small fixes in the item tracker.

* Try to fix Mac.

* Remove disabling for Enable Mods while editing.
Add info about load order in relation to the list.

* Fix archives being added multiple times across multiple init passes.

* Add full-row drag and drop.
Swap columns.
Add information about dragging to header.

* Remove enable/disable flow, and setup the menu to only handle load order.
Change AltAssets to default on.
Move menu to Settings tab.
Move tab hotkey widget to mod menu.
Fix alt assets migrator value.

* Reverse list order for priority on top.

* Remove ExtensionType.
2025-10-20 10:51:56 -07:00
Philip Dubé 8d441f3ae5 fix rando hints for bridge requirements (#5857) 2025-10-20 10:51:43 -07:00
Malkierian 7004c1fc4f Fix GS not being marked as collected when not shuffled. (#5861) 2025-10-20 10:51:33 -07:00
Jordan Longstaff c806f23494 Potion Shop back door open at night (#5849)
* Potion Shop back door open at night

* Rerun clang-format

* Standard initFunc naming
2025-10-17 08:18:12 -07:00
Philip Dubé 1cd2f60e24 sign hints: add gtg, display destination not source (#5850) 2025-10-17 08:17:53 -07:00
Malkierian 6ef8be58d7 LUS ref bump for cursor visibility tweaks. (#5848) 2025-10-16 08:43:38 -07:00
Philip Dubé a73d80c82b shuffle thieves' hideout entrances (#5619)
* shuffle gerudo fortress entrances

* tracker names

* typo

* don't jail from TH in mixed gerudo entrance shuffle

* split RR_TH_KITCHEN_TOP

* fix incorrect logic re near gs to long roof

* whitespace

* Shuffle Thieves' Hideout

* increase ENTRANCE_OVERRIDES_MAX_COUNT
2025-10-15 19:10:10 -07:00
Malkierian c0aa3deb93 Fix Notes Conditions (#5847)
* Fix conditions for personal notes being displayed and the notes display type option being disabled.

* clang
2025-10-15 16:43:57 -07:00
Cameron 56ab4c51fd Rando: Split fairysanity into distinct options (#5726)
* Split Fairysanity into groups

* Split fairy registration per type

* fix song fairy shuffle locations

* Change "Song Fairies" to "Fairy Spots"

* Update preset settings

* clang format

* simplify `shouldRegister` logic
2025-10-13 15:11:55 -07:00
Philip Dubé 73f3427ced rando: remove vanilla (#5805) 2025-10-13 15:10:51 -07:00
Philip Dubé e254c1f908 botw: water level toggle (#5710)
amazingly the code already handles the flag being cleared to raise the water level,
so only need to setup hooks for ocarina spot to toggle

In MQ it's a diamond switch, so only need to turn it into a toggleable diamond switch
2025-10-13 15:10:24 -07:00
Malkierian 94b07aaa73 Pull in LUS audio API selection fix. (#5840) 2025-10-13 08:47:46 -07:00
Malkierian 8302c2322f Standardizes naming conventions for ShipInit and MenuInit registrations. (#5837)
Fixes missing `static` keywords for two `ShipInit` registrations.
2025-10-10 13:26:06 -07:00
Philip Dubé f253d24cdc Cheat: Disable Sandstorm (#5800)
* Cheat: Disable Sandstorm

Can also be considered an A11y feature,
tho it'll always be hard with the muted colors,
even if we added option to reduce fog

* extern C?
2025-10-10 10:25:41 -07:00
Malkierian 52a8f6c281 Program Execution Argument Extraction (#5807)
* Add function to be able to feed specific path into to process programmatically, and setup drag and drop functionality.

* Encapsulate dropped file functionality from Switch and Wii U.

* Fix dropped file detection, and fix ShowYesNowBox return checking.
2025-10-09 16:51:04 -07:00
briaguya 57c368aa2c update lus includes for new LUS file structure (#5820)
* Bump LUS to include FileDropMgr's new registration system and initial cursor visibility changes.

* New LUS ref.

* Remove default on for cursor always visible.
Add option to camera controls next to enable mouse input for autocapture.
Set autocapture on startup.

* next LUS

* clang again

* Add "EnableMouse" CVar check to startup SetAutoCaptureMouse.

* Back to LUS main.

* lus version with fixes we need

* very wip

* get it building

* soh otr

* bump lus before fixing soh side stuff

* build

* still builds

* mac error

* bump otrexporter

* bump to lus main

* upstream otrexporter

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-10-09 16:50:51 -07:00
briaguya 7700b34646 bump otrexporter (#5835) 2025-10-09 01:49:33 -04:00
Philip Dubé 82e2fbb43f null audio engine (#5834)
depends on https://github.com/Kenix3/libultraship/pull/909
2025-10-08 17:26:03 -07:00
Philip Dubé 0973a4211e Fix grass graphic in Shuffle Grass (#5831)
Previously rendering grass as wrong kind in MQ Dodongo room above stairs

Updated code to match decomp logic
2025-10-07 09:23:18 -07:00
Philip Dubé 474d944cfa RT_GROUND_JUMP (#5745)
* RT_GROUND_JUMP, RT_GROUND_JUMP_HARD

based on zootr logic

* 2 groundjumps in Gerudo Fortress
2025-10-06 21:33:59 -07:00
Malkierian 04780de5ec Pulls in the Mac Prism fix. (#5832) 2025-10-06 17:03:38 -07:00
Philip Dubé 5e199ffea8 RT_HOOKSHOT_EXTENSION (#5704)
* 2 hookshot extension tricks

* consolidation

* not a glitch

* cleanup spirit logic

* clang
2025-10-05 18:24:32 -07:00
aMannus f4336cdec7 Add fairy event to outside deku tree (#5830) 2025-10-05 18:02:13 -07:00
Philip Dubé b337f38737 Add a RT_GF_JUMP case (#5828)
Adult can make jump without hover boots by jumping beside the wall (oddly, to the higher part of slope)

Only matters with Shuffle Climb
2025-10-05 11:04:38 -07:00
briaguya dd2628f737 sequence notifs (updated #5265) (#5824)
* Adds ability for Notifiations to not make a noise

This is probably the only feature that will use it, the noise makes sense for most things we want to use notifications for, but it playing on every scene transition was a bit distracting.

* Adds a hook for OnSeqPlayerInit

* Uses new hook and displays notification instead of overlay text

* Changes names to prevent collisions

Will be registering other types of hooks that will need different ShipInitFuncs in this same file later.

* Change Icon

* Change CVarName and remove now-unused duration slider

* Update ConfigMigrator for CVar changes.

* clang-format

* fix

* bring back duration control

* config v4

* fix v4 migration

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-10-04 18:57:01 -07:00
Philip Dubé 6c724382f5 rando: fix reentry of jabu blue warp (#5829)
* rando: fix reentry of jabu blue warp

entrance randomizer uses VB_PLAY_BLUE_WARP_CS to set a flag,
which was not called when entering jabu blue warp without ruto

* alternative
2025-10-04 18:54:53 -07:00
PurpleHato 004890f2f8 French Translation - Treesanity (#5827)
* French Translation

* French Translation
2025-10-02 17:06:58 -07:00
Nivomi c22fbc08d7 Fix "SpawnActor::CanBeApplied" check which would also actually spawn the actor, thus causing two actors two be spawned (also fix for WithOffset) (#5822) 2025-10-02 15:47:48 -07:00
Pepe20129 5cac826f97 Add a warning for disabled network (#5629)
* Update SohMenu.cpp

* clang

* Prevent warning from appearing in release builds
2025-10-02 15:45:58 -07:00
Philip Dubé 545cc396b4 Treesanity (#5541)
* treesanity

co-authored-by: turbofist

* market tree at night

* NL Trees

* remove LUSLOG

* feedback

* format

* golden skulltula tree qol

* post-rebase

* trust -129

* remove tree graphic, crate csmc

* format

* feedback

* ObjectExtension
2025-10-02 11:24:18 -07:00
PurpleHato e10b882c08 [ADD] - 3D Scenes for pre-render areas (#5804)
* Hard removal 2D ones for now

* override some scene values for prerender tests (#46)

* Adult Link Cloudy

* Fix: Child Link Night ToT Exterior

* Fix for real now

* Tweak: Skybox castle courtyard

* WIP - adjusting for patterns

* Hooked all code, needs testing

* Hookified

* Clean up

* Update Fog Control

* clang

* Fix skybox override to only affect 3D pre-rendered scenes

Prevent the 3D scene renderer from overriding skyboxes on all scenes

Previously, the function was applying skybox changes to every scene, overriding the intended skyboxes throughout the game (Example: Kokiri Forest with a blue sky instead of it's original "greyish" one)
Now it only applies custom skybox settings to scenes in the skyboxControlList, preserving original skyboxes for other scenes

* Remove commentary and forgot to add Zelda's courtyard skybox

* Move code to shipInit.

* Early return for VB_SHOULD.

* clang

* Fix missing !

* Feedback fixes.

* clang

* Fix CVAR

* Modify Skybox for scenes with multiple viewpoints.

* setting position change to blend in the "modder stuff can do"

* Adressed review

* tooltip space missing, oops

* InitFunc

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
Co-authored-by: Caladius <clatini88@gmail.com>
2025-09-30 19:03:55 -07:00
Eblo 5ed3db0a7e Allow non-ASCII characters on Windows (#5741) 2025-09-30 19:00:30 -07:00
Malkierian 004ad3aea3 LUS Bump, Mouse Capture/Cursor Visibility Improvements (#5797)
* Bump LUS to include FileDropMgr's new registration system and initial cursor visibility changes.

* New LUS ref.

* Remove default on for cursor always visible.
Add option to camera controls next to enable mouse input for autocapture.
Set autocapture on startup.

* next LUS

* clang again

* Add "EnableMouse" CVar check to startup SetAutoCaptureMouse.

* Back to LUS main.

* Final LUS ref bump.
2025-09-30 19:00:05 -07:00
Patrick12115 11a73f88ae [Enhancement] Allow Slingshot and Bow to break randomized beehives (#5793)
* Add slingshot and bow damage checks

* Move to Rando and add Logic, hopefully

* Missing spacing
2025-09-30 12:16:26 -07:00
Philip Dubé dbbbe0f727 RT_SHADOW_UMBRELLA_CLIP (#5668)
* RT_SHADOW_UMBRELLA_CLIP

This is technically a glitch, but offers a novice trick & less requirements

Particularly important in doorsanity for child access

* feedback, move location to upper since it has multiple paths of access
2025-09-30 12:11:31 -07:00
Pepe20129 3cf1d65466 Mod menu V1 (#4962)
* Proof of Concept

* Fixed saving/loading

* Switch sides & add arrow buttons

* Update mod_menu.cpp

* Remove old mod loading code

* Small cleanup

* Post-merge fixes

* Update mod_menu.cpp

* Lots of changes

* clang format

* Address review

* Update SohMenuEnhancements.cpp
2025-09-30 08:35:37 -07:00
Philip Dubé b7de53bf8d Move logic bools to LogicVal enum (#5727)
* Move logic bools to LogicVal enum

Tired of seeing logic reset bugs
This opens up moving bools to bitset
This opens up tracking logic dependencies so events doesn't reevaluate everything
This opens up various events reusing logic vals (already done for LOGIC_BLUE_FIRE_ACCESS)

* ammo comments, fix magic regression
2025-09-29 18:51:07 -07:00
briaguya 7c8fc85c50 update macports (#5819) 2025-09-28 21:08:14 -07:00
Pepper0ni 207de8f408 Remove HasAccessTo and non-self-referncing Here (#5700)
* Remove HasEccessTo and non-sel-referncing Here

* fix here related logic errors
2025-09-27 18:53:20 +02:00
Spodi 14d269d99e Fix Multi-Window not checked by default (#5806)
* Fix Multi-Window not checked by default

Last time i tested with a new config file this was actually on, despite it showing off. So now it shows ON by default :)

* clang
2025-09-26 07:50:24 -07:00
Pepe20129 4b9c949428 Fix dark link ice floors (#5808) 2025-09-26 07:50:16 -07:00
Pepper0ni c7975898a5 Apply price logic to bean salesman (#5811)
* apply price logic to bean salesman

* clang
2025-09-25 23:24:51 -07:00
Malkierian b30c4ab7da Fix issues arising from the Search Widgets PR. (#5813) 2025-09-25 08:28:23 -07:00
Extloga a576bffe3a Additions for the German translation in hint_list.cpp (#5803) 2025-09-19 17:31:20 -07:00
Philip Dubé eeb5a809ae Rando: option for Mido to hint location of Kokiri Sword (#5724)
* Rando: option for Mido to hint location of Kokiri Sword

also fix bug where Mido blocks path to Deku Tree when Closed Forest off but Zelda's Letter not skipped

* french

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2025-09-18 19:58:30 -07:00
William Casarin 8e15cefe2b dev-tools: add bit label on flags table (#5658)
* build: add -Wformat-security

On some distros format-security is turned on to detect possible issues
with non-string literals as format strings

Let's explicitly turn it on and fix the ImgUi text formatting to avoid
compile issues on those platforms

Signed-off-by: William Casarin <jb55@jb55.com>

* save-editor: add flag table bit index labels

Signed-off-by: William Casarin <jb55@jb55.com>

---------

Signed-off-by: William Casarin <jb55@jb55.com>
2025-09-18 13:34:41 -07:00
enzu.ru 577c5639df Improve Nix support (#5777)
* Fix FindOpusFile NixOS bug

* better documentation
2025-09-18 13:29:35 -07:00
Philip Dubé b944d01b12 atomic saving (#5792)
prefer rename to copy/delete, this avoids issues with partial writes
2025-09-18 13:29:21 -07:00
Philip Dubé 7cce840472 rando: fix bug where Mido blocks path to Deku Tree when Closed Forest off but Zelda's Letter not skipped (#5785) 2025-09-17 17:40:06 -07:00
Patrick12115 4bc2bb5592 Wiggle (#5794) 2025-09-17 17:39:30 -07:00
Philip Dubé 911c107b6e saves: use single white space when formatting (#5791)
this halves size of rando saves
2025-09-17 17:24:52 -07:00
Malkierian a88cac300e Restores IS_RANDO default for the "Always Win Dampe Digging Game" enhancement and changes the tooltip to reflect the default status rather than the forced on status. (#5788) 2025-09-17 13:13:19 -07:00
Malkierian ba693ecac4 Search Exclusion and Search Widgets (#5656)
* Implement widget search exclusion.
Exclude all external windows from the search.

* Add second column to search results for non-widget results.

* Implement extra search index.
Add various controls, audio editor, and tracker options to the extra search index.
Fix capitalization on a few options.
Add click-to-view functionality to extra search column.

* Add extraSearchWidgets for searching through non-menu widgets.
Convert Controls extraSearches to widgets. Used to display in-window, as well as provide reference to extraSearchWidgets.

* Swap Audio search to menu widget search system.

* Fix missing static on a ShipInit instance.

* Implement SearchWidgets in popout windows.
Remove remaining vestiges of custom search.

* Add SearchWidget for randomizing audio on seed gen.

* Remove comments on color picker entries in WidgetType.

* Put all search results in middle column for width management.
Change combobox alignment and label position in search results to unify them all to left and above for better organization.
Add "Search Results" text to header of results page for clarification.

* clang
2025-09-16 18:57:33 -07:00
Philip Dubé e6663a1c49 entrance shuffle: sign hints (#5335)
* entrance shuffle: sign hints

* update entrance tracker with hint

* show sign hints when any entrances shuffled

* only hint when entrance shuffled

* avoid crash when loading rando file

* fix kf exit

* correct hint from sign outside kokiri forest

* 3 signs on DMT

* improve naming
2025-09-16 17:52:47 -07:00
Malkierian 524ba26034 Merge pull request #5776 from A-Green-Spoon/tweak/gerudo-jail-swap
Prevent hideout guards from asking to throw Link in jail
2025-09-11 08:43:00 -07:00
Malkierian f7ab811c20 Merge pull request #5770 from Extloga/develop
Fixes for the German translation in several files
2025-09-11 08:42:45 -07:00
Malkierian 640a7d24b4 Merge pull request #5766 from A-Green-Spoon/standardize-entrance-names
Standardize deku scrub grotto entrance names
2025-09-11 08:42:37 -07:00
Malkierian 7ff2355c7e Merge pull request #5787 from Malkierian/blair-dev-9-8
Actual Blair->Develop 9/8
2025-09-10 10:27:07 -07:00
Malkierian e5d0f7befa Fix conflict resolution for SkipBlueWarp's VB_GIVE_ITEM_FROM_BLUE_WARP. 2025-09-10 09:10:51 -07:00
Malkierian 64280146fe Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into blair-dev-9-8 2025-09-08 20:56:12 -07:00
Eric Hoey ac93d7cc15 Add additional glitch-aiding cutscenes for MQ (#5769)
* add mq jabu chest + mq spirit switch cs

* update tooltip
2025-09-08 20:44:45 -07:00
Pepper0ni 27f2292f9d Fix gerudo card generation failures (#5774)
* quick fix gerudo card

* submodules pls
2025-09-08 20:44:36 -07:00
Malkierian 837f497ea6 Encapsulate BeginTable for item and check tracker settings windows. (#5778) 2025-09-08 20:44:27 -07:00
Extloga 405fc7a31d Fixes for the German translation in util.cpp (#5768)
* Fixes for the German translation in util.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in util.cpp

* Revert the fixes for the German translation in item_list.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in kaleidoscope_ger.json

* Revert the fixes for the German translation in kaleidoscope_ger.json

* Fixes for the German translation in util.cpp
2025-09-08 20:44:19 -07:00
Eric Hoey e9f1296781 add scene check to hook and custom message 2025-09-03 14:48:46 -04:00
Extloga aacb4ad2f7 Fixes for the German translation in shops.cpp 2025-08-29 19:43:32 +02:00
Extloga bd4e146599 Fixes for the German translation in item_list.cpp 2025-08-29 19:33:02 +02:00
Extloga 52d452307e Fixes for the German translation in scenes_ger.json 2025-08-29 13:41:31 +02:00
Extloga a76c1ca9db Fixes for the German translation in filechoose_ger.json 2025-08-29 13:39:11 +02:00
Extloga beea799081 Fixes for the German translation in kaleidoscope_ger.json 2025-08-29 13:38:40 +02:00
Extloga fc866e695e Fixes for the German translation in randomizer.cpp 2025-08-29 13:09:45 +02:00
Extloga 9a59af2a5e Fixes for the German translation in hint_list_item.cpp 2025-08-29 12:57:20 +02:00
Extloga e0e3cb21a3 Fixes for the German translation in item_list.cpp 2025-08-29 12:41:52 +02:00
Extloga 113e899f09 Fixes for the German translation in shops.cpp 2025-08-29 12:38:55 +02:00
Extloga 3c084ef2a1 Fixes for the German translation in item_list.cpp 2025-08-29 12:17:35 +02:00
Extloga 263afb9c09 Fixes for the German translation in item_list.cpp 2025-08-29 02:21:23 +02:00
Malkierian cbd376afa9 Search Tweaks (#5767)
* Increase vibrancy of search field color.
Set autofocus to only happen on fresh menu load.

* Revert tooltip addition.
2025-08-28 08:59:45 -07:00
Eric Hoey 93c163a99c standardize scrub entrances and matching check 2025-08-27 12:53:56 -04:00
PurpleHato 7b38093665 [TWEAK] Localization support for the Notification System (#5751)
* Localization support

* stick/nuts updrage french  wording

* forgot german questItem and function adaptation for these

* names

* clang

* name + clang

* should be the last one :derp:

* German typo
2025-08-26 12:34:29 -07:00
Eblo 4c269cab30 Add restoration for NTSC 1.0 shutter door range (#5757) 2025-08-25 12:51:50 -07:00
Eric Hoey d8453b2b68 Prevent MQ Spirit softlock with increased crawl speed (#5667)
* disable crawl speed increase if MQ Spirit boulder exists

* bring max speed back to 5
2025-08-25 12:03:23 -07:00
William Casarin 6e6f8dcc9d build: add -Wformat-security (#5646)
On some distros format-security is turned on to detect possible issues
with non-string literals as format strings

Let's explicitly turn it on and fix the ImgUi text formatting to avoid
compile issues on those platforms

Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-25 12:03:13 -07:00
Philip Dubé 7ee7084746 logic: remove commented glitched key logic (#5651)
this code is obsolete with glitch logic being implemented as tricks
2025-08-25 12:03:05 -07:00
Glought bdaf352440 Adds "Randomize on Randomizer Generation" options to Audio and Cosmetics Editors (#5387)
* Add "Randomize on Randomizer Generation" options to Audio and Cosmetics Editors

 * Added "Randomize All Music and Sound Effects on Randomizer Generation" to the Audio Editor.

 * Added "Randomize All on Randomizer Generation" to the Cosmetics Editor.

When enabled, these options randomize audio and/or cosmetics during a new randomizer generation.

* Added "OnRandomizerGeneration" Hook.
 * It is executed on Randomizer Generation.

* Changed AudioEditor and CosmeticsEditor "Randomize all on Randomizer Generation" options to use the "OnRandomizerGeneration" Hook.

* Renamed "OnRandomizerGeneration" to "OnGenerationCompletion.
Renamed "GameInteractor_ExecuteOnRandomizerGeneration" to "GameInteractor_ExecuteOnGenerationCompletion"
Moved "GameInteractor_ExecuteOnGenerationCompletion" from "GenerateRandomizer" to the end of "GenerateRandomizerImgui".

* Removed "GameInteractor_ExecuteOnGenerationCompletion()" from "GameInteractor_Hooks.h" and "GameInteractor_Hooks.cpp"
The "OnGenerationCompletion" hook is now called directly at the end of "GenerateRandomizerImgui" in "randomizer.cpp"

---------

Co-authored-by: Glought <663343+Glought@users.noreply.github.com>
2025-08-25 12:02:30 -07:00
Eblo cc477fbef2 [Enhancement] Toggle grave hole geometry (#5754)
* Add enhancement to toggle grave hole geometry

* Replace malloc and vector with fixed-size arrays

* Make newSurfaceTypes static
2025-08-25 12:01:50 -07:00
Philip Dubé 860bc57a2a fix incorrect description (#5752) 2025-08-25 12:01:33 -07:00
Mike 4a9a98d93c SDL_GameControllerDB repo owner gabomdq -> mdqinc (#5740)
* SDL_GameControllerDB repo owner gabomdq -> mdqinc

gabomdq redirects to mdqinc

* Docs SDL_GameControllerDB repo owner gabomdq -> mdqinc
2025-08-25 12:01:25 -07:00
Philip Dubé 3128fb0112 Fix crash on selling big poe (#5733)
* Fix crash on selling big poe

Easiest steps to reproduce: set poe's to 0, put big poe in inventory, trigger text using big poe bottle

I overlooked selling poes with using bottle instead of talking to collector

* disable hint when count zero
2025-08-25 12:01:17 -07:00
Pepe20129 9eafa852b5 Fix Dampe Going Backwards (#5731)
* Add FixDampeGoingBackwards

* Update SohMenuEnhancements.cpp
2025-08-25 12:00:59 -07:00
balloondude2 21e37d9ac2 Fix the Show Horizontal Resolution Field option v2 (#5744)
* move showHorizontalResField initialization

* remove redundant assignment

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-08-25 12:00:28 -07:00
Eric Hoey 820d097c84 Fix King Dodongo door switch cutscene (#5729)
* fix parathenses to properly OR

* clang clang clang
2025-08-25 12:00:04 -07:00
Pepper0ni 224efe2946 Fix TOT_MASTER_SWORD when the master sword is stated with but not shuffled. (#5705)
* Fix TOT_MASTER_SWORD when the master sword is stated with but not shuffled.

* remove RC_MASTER_SWORD_PEDESTAL
2025-08-25 11:59:47 -07:00
Malkierian b6166f41c8 Restore previous state of z_door_warp1.c, and reimplement boss rush blue warp bypass. This also fixes the issue with shadow and spirit medallions not being given in vanilla without cutscene skips on. (#5763)
Ensure shadow and spirit medallions get queued when skipping story cutscenes in vanilla.
2025-08-25 11:59:38 -07:00
Jordan Longstaff 9ff9bebaa2 Fix faulty Nocturne trigger when receiving Fire Medallion (#5761) 2025-08-25 11:59:28 -07:00
Pepe20129 7b4df9bdb2 Boss Rush cleanup (#5652)
* 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)
* shipinit bonk damage

* no initFunc
2025-08-13 09:46:36 -07:00
Pepe20129 ee20f7f762 Fix max count for TH keys (#5670) 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
Eric Hoey 568639dfc0 skip ItemGet for small keys after skeleton key (#5730) 2025-08-12 20:37:08 -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
Eric Hoey e104870e6a remove !IS_RANDO check (#5728) 2025-08-12 19:56:07 -07:00
xxAtrain223 353ad944be Removed SHUTTER_BACK_LOCKED and SHUTTER_BOSS from GetDungeonSmallKeyDoors. (#5738) 2025-08-12 19:55:38 -07:00
Malkierian 89c1c97522 Add missing CVar check for tab key processing for alt asset toggle. (#5736) 2025-08-09 11:17:33 -07:00
Pepe20129 6d4c6f8ea6 Rando: Remove ice trap effect from vanilla ice trap chests (#5711) 2025-08-05 20:43:41 -07:00
Pepper0ni b87f1432fd properly clear location subcatagories when generating a seed (#5707) 2025-08-05 20:43:19 -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 be77a9be71 Fix Dpad Navigation and Dpad equips on Inventory (#5708)
* Encapsulates ship-specific stuff inside the first state checks in menu draw functions to prevent function bleed.

* clang
2025-07-29 18:47:43 -07:00
Malkierian 1d20000411 MPQ Support LUS Bump (#5570)
* 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)
* 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) 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) 2025-07-01 10:30:02 -07:00
aMannus db58c3a029 Fix clang-format ps1 script (#5637)
* 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) 2025-06-29 19:12:04 -07:00
Philip Dubé 063fb2577f cleanup, trying to speed up build (#5627) 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)
* 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)
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)
* 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) 2025-06-28 07:50:06 -07:00
louist103 e15f8d395b Backport 2ship streamed audio (#5457)
* 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) 2025-06-25 22:00:53 -07:00
Eric Hoey 8b616c8709 first person to first-person (#5616) 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) 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) 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) 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
Blair -> Develop 6/12
2025-06-18 13:01:13 -07:00
Pepper0ni b932b8f6c9 Clarify hint text for pots in interiors (#5591)
* 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)
* 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) 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)
* 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)
* 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)
* 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)
* 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
Christopher Leggett 85bc67ef24 Blair Bravo version bump (#5372) 2025-04-09 19:04:28 -04:00
Malkierian a99e8836fb Allow seeded enemy rando to use the values of the enemy list selection. (#5371) 2025-04-09 18:18:44 -04:00
Malkierian c12349a7a3 Add check for bean inventory slot having bean on it to allow availability to succeed with ammo count 0. (#5370) 2025-04-09 16:58:06 -04:00
Pepper0ni 73400f5856 IC ledge to fountain child logic fixed (#5368)
* IC ledge to fountain child logic fixed

* fully unblob ZF
2025-04-09 16:46:43 -04:00
Malkierian e98a6c3748 Fix migrators for tracker colors to match new menu formats. (#5369)
Add temporary additional clearing to CVarColorPicker's reset functionality to resolve already migrated issues.
2025-04-09 16:38:27 -04:00
Malkierian c3322c85ae Swap call to RecalculateAvailableChecks() in SaveFile() to a variable that triggers a recalculation in DrawElement(). (#5366) 2025-04-09 15:26:20 -04:00
Extloga c21c632c09 Additions for the currencies in randomizer.cpp (#5344)
* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp
2025-04-09 15:24:05 -04:00
Pepper0ni 93d49d5c41 Fix ZD beehives and some small cleanup. (#5353)
* clean up zora domain logic

* revert useless short circuits
2025-04-09 15:17:25 -04:00
Christopher Leggett cf75520394 Fix crash in Message Viewer when playing with an NTSC OTR. (#5367) 2025-04-09 15:16:25 -04:00
Eric Hoey 9250af0216 add check for agony option (#5365) 2025-04-09 13:01:26 -04:00
Christopher Leggett 2576f75b1a Fix non-loach fish making it into the pool when Loach Only is selected. (#5360) 2025-04-09 12:20:37 -04:00
PurpleHato 30520a7565 Rando: Last missing french + tiny tweak (#5359)
* Update hint_list_exclude_overworld.cpp

* missing ones

* Oops forgot a '
2025-04-09 11:35:39 -04:00
Pepper0ni f2161297a8 Fix break room access and crates underneath crates logic (#5347)
* fix break room acces and crates underneath crates logic

* apply GF_JUMP to the jump from NEAR_GS to LONG_ROOF to reach BREAK_ROOM
2025-04-09 11:21:22 -04:00
Extloga c1885991fa Additions for the German translation in two files (#5351)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2025-04-08 16:31:52 -04:00
Malkierian f5e0179e2b Fix a couple typos in enhancement descriptions. (#5358) 2025-04-08 11:44:24 -07:00
Malkierian f0f6259d2f Fix Docked Tracker Ghosting (#5354)
* Dynamically changes a tracker's chosen color's opacity to full when it registers as docked to fix the framebuffer ghosting.

* remove debugging
2025-04-08 10:22:25 -07:00
Archez 1b17fea3d0 Add temporary patch for invisible boulder fragments (#5352) 2025-04-08 12:53:39 -04:00
Archez 88669742a2 Fix copyright tex for GC JP (#5324)
* Fix copyright tex for GC JP

* add 2004 texture for jp ce
2025-04-08 08:38:28 -07:00
Eric Hoey 4a3d60d061 Fix Rando Give for Adult Fishing as Child Glitch (#5349)
* VBVBVB

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

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

* first try
2025-04-08 11:27:08 -04:00
Pepper0ni d40fa00b9e Mixed pools now properly disables itself when hidden. (#5341)
* mixed pools now sets itself off when hidden

* the clanging never ends
2025-04-08 08:26:18 -07:00
Pepper0ni 88154d78c8 Fix Market Grass and Crate logic (#5340)
* fix market grass and crate logic

* apply clang
2025-04-08 08:26:04 -07:00
Malkierian ae7654cb0e Change check total array types to s16 to handle more check totals (thanks storage temple). (#5348)
Fix typos regarding `overridden` in various parts of the codebase.
2025-04-08 10:13:08 -04:00
Malkierian 71bd48cba9 Move the white iron knuckle entry in randomizedEnemySpawnTable to match the order of enemyCvarList. (#5350) 2025-04-08 07:45:35 -04:00
Christopher Leggett b71a0c5803 Fix checking gSaveContext for used small keys (#5346) 2025-04-07 19:07:07 -04:00
PurpleHato 4acbf799cc French Rando : Add missing text + some tweaks (#5327)
* Should cover everything, I hope

* One last

* final tweaks for real this time

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* TODO_TRANSLATE is a macro no a string Hato

---------

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
2025-04-07 18:34:56 -04:00
briaguya 98146c29f9 fix blank names in spoiler (#5329)
* fix blank names in spoiler

* replace a couple more `.english`/`.french` with `.GetEnglish()`/`.GetFrench()`
2025-04-07 17:24:24 -04:00
Pepper0ni c351a2cf75 Fix shop translations and unify untranslated message alerts. (#5312)
* try to fix messages, crashing on vanilla text

* oops

* adjust shop flavor translations to better fit on 2 lines

* run clang format
2025-04-07 17:22:23 -04:00
Eric Hoey 497f90a392 Set Savewarp in Ganondorf to Ganon's Tower in Entrance Rando (#5339) 2025-04-07 13:27:47 -04:00
Eric Hoey a247c06be8 Various menu fixes (#5321)
* input viewer + rang + draw + circledisp

* clang
2025-04-04 18:49:03 -04:00
Christopher Leggett ee23d02921 move AltAssets to gSettings from gEnhancements (#5323) 2025-04-04 15:25:30 -04:00
Archez 2589448057 Fix boss title card extraction for NTSC; Fix Morpha water (#5320) 2025-04-04 11:57:37 -04:00
Malkierian cb7d9279e4 Fix the GS Map combobox in the Flags tab of the save editor not remembering the selected index, and also rework it to remove the label. (#5317) 2025-04-04 11:00:05 -04:00
Christopher Leggett 38574bbb9e Fix excluded locations on subsequent seed generations (#5302) 2025-04-04 10:15:04 -04:00
Christopher Leggett e2bb2edb8a Fix the start with Master Sword option (#5304) 2025-04-04 10:14:23 -04: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
PBillodeau 9a78b04e68 ESC now toggles menubar (#5293)
* ESC now toggles menubar

* Update "menubar" to "menu" in README

* Add mouse capture toggle to README
2025-04-03 17:33:02 -07:00
Pepper0ni 4f783d5945 fix oversight causing big poes check not to run (#5303) 2025-04-03 16:47:56 -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
inspectredc fd96bf6b14 Fix Disable Bomb Billboarding (#5290) 2025-04-03 00:06:16 -04:00
Archez 1c248ded02 Bump Blair Alfa (#5283) 2025-04-02 16:21:47 -04:00
aMannus dc20abe10b Fix upgrade crash in rando settings (#5282) 2025-04-02 15:59:04 -04:00
Malkierian 58925bc770 More check renames (#5262)
* Rename a few more entrances to better match interior contents, and a lot of check names to match their grotto names.

* Undo debug commit. Now it's just text changes.
2025-04-02 10:24:01 -07:00
inspectredc ccb7839eda Reload font on language change (#5279) 2025-04-02 12:38:12 -04:00
inspectredc c5e0e32391 Fix Names On Custom Message (#5278)
* Fix Names On Custom Message

* Display Blank Name

* format
2025-04-02 09:45:51 -04:00
inspectredc 2476a7752d Use sOptionsMenuSettings to avoid OOB read (#5277) 2025-04-02 07:56:30 -04:00
inspectredc a5a80bd8a2 Fix Crash On Play Scene Inits (#5276) 2025-04-02 07:40:43 -04:00
inspectredc 9892bfaffa Fix Title Logo Flame Colors (#5275) 2025-04-01 23:56:25 -04:00
Archez 8f126344a4 Apply clang-format to files (#5273) 2025-04-01 22:33:38 -04:00
Archez e8389e0b2e Add clang-format scripts and github runner action (#5270) 2025-04-01 17:09:44 -04:00
Christopher Leggett 17b91ecc2d Fix some misc. Rando menu issues (#5272)
* Fix issue where random and clear seed buttons overlap text input.

* Fix issue where item scale is incorrectly disabled.

On fresh json, there was a mismatch on the defaults where SGIA_JUNK was default for the actual
combobx but SGIA_DISABLED, was used as the default when the CVar was checked in the scale slider's
PreFunc.
2025-04-01 22:53:07 +02:00
xxAtrain223 2bde8fbe5d Use GetDungeonFromScene (#5271)
* Use GetDungeonFromScene.

* Remove SceneToDungeon map.
2025-03-31 21:18:07 -07:00
Christopher Leggett 05219cbbf7 Prevent GameplayStats and TimeDisplay from getting reset on ship json drag and drop (#5269) 2025-03-31 21:28:48 +02:00
Pepper0ni eb17f2e99d Lock mask select behind zelda's letter in rando (#5267)
* Lock mask select behind letter in rando

* change to rand inf
2025-03-31 21:15:41 +02:00
xxAtrain223 35d17b8b0b Available Randomizer Checks (#5091)
* Calculate accessible checks and show them in the check tracker.

* Added added DoorUnlocked checks to the Fire Temple doors.

This is needed when calculating Accessible checks while playing and using small keys. Otherwise checks will appear unaccessible because Keys have been used.

* Changed RecalculateAccessibleChecks to use the logic ReachabilitySearch.

* Reverted DoorUnlocked changes.

* Added recalculate_accessible_checks debug console command.

* Skip CanBuy check when calculating accessible checks, it spoils that some items can't be bought with the current wallet.

* Set RAND_INF_ZELDAS_LETTER.

* Don't add locations to the pool when calculating accessible checks.

* Save and Load randomizer trick options.

* Get the number of used small keys.

* Added check if bean was planted.

* Show number of Accessible checks in each Area.

* Accounted for missing RG_POCKET_CUCCO in logic HasItem and ApplyItemEffect.

* Show accessible checks via an icon.

* Check shop price against current wallet.

* Recalculate Accessible Checks in CheckTrackerLoadGame instead of LoadFile.

* RecalculateAccessibleChecks on save.

* Don't unset Zelda's Letter.

* Added Only Show Available Checks checkbox.

* Rename Accessible Checks to Available Checks.

* Added option to Enable Available Checks.

* Remove debug console to recalculate available checks, this can now be done by toggling Enable Available Checks in the settings.

* Remove extra requiredTrial.

* Default "Hide unshuffled shop item checks" unchecked.

* Updated GetSmallKeyCount to return int8_t.

* Default AmmoDrop to true until the setting is implemented.

* Fixed Sleeping Waterfall timesaver.

* Updated Only Show Available Checks to let Show Hidden Items reveal hidden available checks.

* Revert "Don't unset Zelda's Letter."

This reverts commit 4b5903940f.

* Set RAND_INF_ZELDAS_LETTER.

* Revert "Fixed Sleeping Waterfall timesaver."

This reverts commit 9b62fd5297.

* Added isMagicAcquired to Logic::HasItem.

* GetDungeonSmallKeyDoors return static emptyVector.

* Comment out AmmoCanDrop in ResetLogic.

* Added location_access CanBuy todo.

* Reverted Get and Set SmallKeyCount to use uint8_t and handled -1 keys.

* Added todo for MQ Water GetUsedSmallKeyCount.
2025-03-30 22:18:42 -07:00
Archez ae209709ea Default VSync on to match LUS default (#5261) 2025-03-30 19:24:59 -04:00
Archez 9355aca23e More prep for clang-format (#5239) 2025-03-31 00:17:09 +02:00
Archez bcd8842bde Fix messages crashing when no ntsc game is loaded (#5259)
* Fix messages crashing when no ntsc game is loaded

* rename func
2025-03-31 00:16:44 +02:00
inspectredc 0dc5ff4984 NTSC GC Support (#5254)
* copy n64 pal 10

doing this so i can check diffs i make

* transfer german->jp icon item

* overlays, message data, icon item jpn, audio, code

todo: title_static, gameplay keep

* add kanji and fix title cards

* title static

* spell folder correctly

* boss title cards, do action, icon item, item name, map name

* headers for jpn stuff

* gameplay_keep

* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia

todo: test & disable darunia fix cvar for ntsc

* msgptr init fix

* icon item offsets

* comment out title cards until zapd can fix itself (we extract these in a different file anyway)

* compile and font implemented to get past title screen

* file select

* message, kaleido and everything else but rando

* uintptr_t

* rando and custom messages working!

* ntsc-j 1.0 support

* n64 logo?

* copy ntsc 10 to 11

* ntsc 11 extraction

* change title version names

* copy ntsc 11 to 12

* ntsc 12 extraction

* clean up some todos

* re checkout submodules post merge

* fix US filename

* support cross-version filenames

* add new versions to non-mq list

* use correct message table init

* Fix ntsc nes message table overriding pal nes message table

* actual fix, allows extraction

* fix file name using wrong font of file being hovered over

* Fix barinade crash

* re-add pal

* better jabu fix and revert LUS

* fix gerudo title cards

* better better owl select

* more owl fixes

* build

* fix some name decode issues

* Switch Language Mid Text

* Fix PAL displaying for JP filenames

* Fix AskToEquip Crash

* Disable Credits Timing Fix on NTSC

* Fix JP Text positioning

* basic language switching (BIG todo: file select, title screen)

* Title Screen Hopefully working

* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support

* Update OTRExporter

* Fix pause to decide offset

* Fix bomb item name crash

* fix fire arrows and PoH

* builds

* update asset changes and fix menu language changing

* fix name decode

* Fix crashes and add rando/boss rush select stuff

* Revive debug feature by setting language cvar too

* Fix ocarina text speed softlock, and update jp text speed changes

* Merge remote-tracking branch 'upstream/develop' into NTSC

* Fix options menu and let pal use japanese fully

* Resolve some suggestions

* match up gTextSpeed changes to english (still broken!)

* Fix text speed crash

* Set default filename language on save init funcs

* copy n64 ntsc 1.2 to gc nmq ntsc and add rom info

* extractor working for ntsc gc u

* Extraction Works

* bump otrexporter

* Display same correct info for n64 ntsc-j and ntsc-u

* ovl asset fixes

* final font diff

* change the correct ovl file choose xml

* copy asset files for jp

* JP Working

* Copy jp and us xmls to mq

* MQ Working

* quicktext more closely aligned with decomp

* add versions to mq switch

* linux appimage v64/n64 checksums

* bump zapd

* Credits Fix Tooltip Adjusted

* update supported hashes json

* update shasums to include JP n64

* add shasum hashes

* Bump submodules back to upstream
2025-03-31 00:16:24 +02:00
Pepper0ni 026a418789 Fix various HBA issues (#5246)
* Fix various HBA issues

* forgot to save

* cleanup to address review
2025-03-30 23:51:20 +02:00
Pepper0ni c38205ddcf Apply better big poe logic (#5245) 2025-03-30 23:51:00 +02:00
Archez 035c03bd85 Bump latest LUS main (#5252) 2025-03-30 23:28:53 +02:00
Pepper0ni 28393fba78 Fix early eyeball frog source adaption in King Zora (#5255)
* Fix early eyeball frog source adaption in king zora

* revert inftable sets
2025-03-30 15:07:48 -04:00
Pepper0ni 714b9a731a Fix fast money accumulator setting (#5256) 2025-03-30 14:52:29 -04:00
Malkierian e21d322a22 Convert grass shuffle locations to use automatic spoiler name creation. (#5243) 2025-03-30 14:18:19 -04:00
Archez ae029a3f06 Replace old methods with ShipUtils (#5151)
* Replace old methods with ShipUtils

* remove PAL naming
2025-03-30 13:54:40 -04:00
inspectredc 6140b2ec8f NTSC Support (N64) (#4198)
* copy n64 pal 10

doing this so i can check diffs i make

* transfer german->jp icon item

* overlays, message data, icon item jpn, audio, code

todo: title_static, gameplay keep

* add kanji and fix title cards

* title static

* spell folder correctly

* boss title cards, do action, icon item, item name, map name

* headers for jpn stuff

* gameplay_keep

* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia

todo: test & disable darunia fix cvar for ntsc

* msgptr init fix

* icon item offsets

* comment out title cards until zapd can fix itself (we extract these in a different file anyway)

* compile and font implemented to get past title screen

* file select

* message, kaleido and everything else but rando

* uintptr_t

* rando and custom messages working!

* ntsc-j 1.0 support

* n64 logo?

* copy ntsc 10 to 11

* ntsc 11 extraction

* change title version names

* copy ntsc 11 to 12

* ntsc 12 extraction

* clean up some todos

* re checkout submodules post merge

* fix US filename

* support cross-version filenames

* add new versions to non-mq list

* use correct message table init

* Fix ntsc nes message table overriding pal nes message table

* actual fix, allows extraction

* fix file name using wrong font of file being hovered over

* Fix barinade crash

* re-add pal

* better jabu fix and revert LUS

* fix gerudo title cards

* better better owl select

* more owl fixes

* build

* fix some name decode issues

* Switch Language Mid Text

* Fix PAL displaying for JP filenames

* Fix AskToEquip Crash

* Disable Credits Timing Fix on NTSC

* Fix JP Text positioning

* basic language switching (BIG todo: file select, title screen)

* Title Screen Hopefully working

* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support

* Update OTRExporter

* Fix pause to decide offset

* Fix bomb item name crash

* fix fire arrows and PoH

* builds

* update asset changes and fix menu language changing

* fix name decode

* Fix crashes and add rando/boss rush select stuff

* Revive debug feature by setting language cvar too

* Fix ocarina text speed softlock, and update jp text speed changes

* Merge remote-tracking branch 'upstream/develop' into NTSC

* Fix options menu and let pal use japanese fully

* Resolve some suggestions

* match up gTextSpeed changes to english (still broken!)

* Fix text speed crash

* Set default filename language on save init funcs

* bump otrexporter

* Display same correct info for n64 ntsc-j and ntsc-u

* quicktext more closely aligned with decomp

* linux appimage v64/n64 checksums

* bump zapd

* Credits Fix Tooltip Adjusted

* update supported hashes json

* update shasums to include JP n64
2025-03-30 12:29:59 -04:00
Archez 0e23adc237 Change Fullscreen toggle into button (#5236) 2025-03-30 12:20:21 -04:00
Christopher Leggett 554379fd70 Fix some options not updating correctly when dropping jsons and applying Presets (#5240)
* Re-Run ship init funcs on json drop and preset apply

* Prevent registering rando locations from running more than once

* Moves registered=true right after early return

* Move ShipInit call into applyPreset
2025-03-29 00:02:38 -04:00
Malkierian 4d18a36e1a Clarify "Outside Temple of Time" entrance names. (#5241) 2025-03-28 19:22:51 -07:00
Archez b66623c152 Fix freezard graphics crash with enemy health scaling (#5232) 2025-03-28 09:30:56 +01:00
Christopher Leggett 32923d83f2 Don't place items on Chest game. (#5233)
This causes it to fall back on vanilla behavior, fixing the crash
Where it tried to draw something invalid.
2025-03-28 04:31:04 +01:00
Malkierian feea299291 Revert "Set Sample Rate to 32000 hz (#4780)" (#5234)
This reverts commit 9455579f42.
2025-03-28 04:27:01 +01:00
Philip Dubé b417b87d1c Shuffle cleanup (#5222)
* Shuffle cleanup

* Grass can be cut with Goron's Bracelet
* Gohma's grass can be cut without defeating Gohma

* more whitespace
2025-03-27 07:48:37 +01:00
aMannus 3e34934e01 Add grass and crates to hell preset (#5221) 2025-03-27 07:47:36 +01:00
Eric Hoey 006650d37b update break room (#5223) 2025-03-27 07:47:19 +01:00
Malkierian 0ac3f4d6b4 Fix typo in tracker autoscroll tooltip (#5226) 2025-03-27 07:42:41 +01:00
aMannus 057434cdf3 Update Dev Tools Windows (#5220)
* Update dev tools windows

* Review comments
2025-03-26 22:26:11 +01:00
Eric Hoey 47c653a0e5 [Rando] Shuffle Crates (#5017)
* location list + enums

* add identity function

* add new files + hook handlers + settings + crate struct

* add dungeon struct + large crate locations

* fix wasteland name + add overworld hints

* add dungeon hints

* add to item pool

* opt desc + check tracker + overworld locs

* add VB funcs + fix fire locs + dmc crate + shuffle crates not pots again

* fix crate option def

* fix gy crate area

* add ow locs

* context + more location_list

* fix kak crate

* add gv child crates + make exceptions for OOB GF crates + fix GF rht name

* finish adding gv crates + align GF child crates + fix adult GF locs

* fix VB draw + adjust color

* begin logic

* add child archery crate + overworld logic

* deku + dc + rename dc locs

* gtg + spirit

* fire temple logic

* start water temple + some renaming

* finish water temple + renames

* fix dmc crate

* remove child GV + GF crates :( + simplify hints + french

* fix dungeon hint + add french attempt

* cleanup

* smol crate loc list + enums

* setup small crates

* fix fire temple fairy hints

* add logic

* fix small crates + locs

* align GF crates without moving

* add child GV-GF crates for No Logic

* convert to shipinit

* whitespace

* remove old comments

* assets

* proper cap

* better comments on not-shuffled crates

* update for context changes

* update for rest of context changes

* cleanup

* fix shadow hint RHT

* more cleanup

* count to three

* child gf logic

* gv cow crate

* loc list spacing

* remove redundant small crates

* remove left over vb funcs

* split out location list

* fix van spawns

* move NL crates to new type

* rm whitespace

* more whitespacing

* more more whitespace

* update VB

* restore support for custom models

* prep dungeon for develop

* update context for location changes

* finish context post-develop merge

* add heart crates to CSMC

* update loc list + logic fix

* update breakroom crates to adult only

* newline to make github happy

* revise vbshoulds

* formatting sheesh

* update vb info

* BRACKET

* whitespacent

* ws finalfinal
2025-03-26 21:32:32 +01:00
briaguya 9ff49403a8 shipinit (r)ba (#5025)
* RBA and BA

* move rba to shipinit

* make the vanilla condition actually a vanilla condition

* update should docs

* move ba to shipinit

* don't pass things

* try a different readability strategy

* remove option/preset entries

---------

Co-authored-by: rozlette <Rozelette@users.noreply.github.com>
2025-03-26 20:07:54 +01:00
Archez f1a45cf2ec Fix Tektite texture body break parts for custom skeletons (#5214)
* Fix Tektite body break parts for custom skeletons

* explicit null check
2025-03-26 20:05:06 +01:00
aMannus b2ba5a6481 Add clang format off to shuffle grass (#5219) 2025-03-26 19:59:43 +01:00
Christopher Leggett 540aad6715 Don't place GBK into the pool for Triforce Hunt (#5218) 2025-03-26 19:40:03 +01:00
Varuuna dd81af17bb [Rando] Grassanity (#4889)
* * fixes softlock when talking to Mido without Kokiri Emerald after killing Gohma

* * moved scene check to hook
* moved vanilla conditioon into GameInteractor_Should

* * corrected hook condition
* removed 'this'

* * reverted GameInteractor and hook_handlers
* changed actor to use existing hook

* * updated kokiri emerald conditions

* * missed parentheses

* * Overworld pretty much done.
* Known issue with Market Night + 2 bushes in KF
* Known issue with Adult bush in ZR

* * fixed locations post-merge

* * renamed option and types to 'GRASSANITY'
* changed grassnity to be a combobox option
* added first 5 deku tree locations

* * color is a sickly green when containing a check
* added ZR 14 (adult only bush on the platform, not the same?)

* * forgot to rename the files to grassanity
* updated draw method to fix regrowing grass

* Removed old WIP locacc files

* * removed comments in bush actor
* added rest of Deku Tree plus MQ

* Added DC + MQ

* Fixed DC incorrect pos value on 1 loc

* JJB done minus after big octo

* Added BotW + MQ locs

* WIP grottos

* Grottos done

* Workaround to allow market grass during night

* Seperated the 2 KF bushes into 4 checks

* Hints and additional formatting

* Slightly less ghastly color

* Corrected the 2 JJB locs

* * Renaming and removal of some locs.
* Restructure in z_en_kusa.c to leave vanilla code alone.
* Formatting.

* * see previous (forgot to stage woops)

* * Clear grassIdentity on item drop
* Added check for RC on RandoDraw function
Results in no extra dupe drops, and instantly correct the color of the grass when cut instead of on collecting the item.

* * fixed dupe location spoiler names which caused occasional crash when writing spoiler log

* * reverse should

* * fixed faulty locations

* * corrected KAK location names and some formatting

* * Fixed market bushes by tree not working at night

* * merged ZR near PoH grass into a single loc

* * Changed to ShipInit (might be missing something?)
* Corrected Should in z_en_kusa.c to use original draw func when setting is Off

* * Renaming to Shuffle Grass

* * minor fix

* * keyboard fail lol

* * suggestions

* * removed unused function

* * move grass locations into ShuffleGrass
* move grass GameInteractor into GIVanillaBehavior
* minor fixes

* * pre-removed locs from dungeon.cpp

* * pre-remove from context.cpp

* * re-added Grass to context

* * added Dana's amazing custom bush models
* using CSMC to display flowers based on "contents"

* * added Dana's grass models
* refactor to lessen the clutter in the switch

* * removed fairy case

* Added back missing Deku Tree locations

* formatting

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

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

* re-added suggestion from previous

* removed wrong line >.>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-03-26 19:33:10 +01:00
aMannus c1ff45a240 More minor menu/cvar fixes (#5213)
* Minor fixes

* Hide unshuffled shop checks default fix
2025-03-26 11:07:26 +01:00
Philip Dubé 8832bcaf12 Try make item pool size match location pool size (#5181)
Also avoid putting random junk into the pool to begin with

When smaller, add junk from pending junk items

When larger, remove junk from the item pool

This avoids issue where shuffles which add items to pool (souls, overworld keys, triforce pieces) would hit assert about item pool size exceeding location pool size
2025-03-25 15:00:32 -04:00
Extloga 364fec4d29 Additions and fixes for the German translation in several files (#5173)
* Additions and fixes for the German translation in item_list.cpp

* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp

* Additions and fixes for the German translation in hint_list_exclude_overworld.cpp

* Additions and fixes for the German translation in hint_list_item.cpp

* Additions and fixes for the German translation in randomizer.cpp

* Additions and fixes for the German translation in randomizer.cpp

* Fix for the French translation in item_list.cpp

* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the English text in settings.cpp

* Fixes for the English text in SohMenuEnhancements.cpp

* Fixes for the English text in SohMenuDevTools.cpp

* Fixes for the English text in SohMenuRandomizer.cpp

* Fixes for the English text in ResolutionEditor.cpp

* Fixes for the English text in enemyrandomizer.cpp

* Fixes for the English text in gameplaystats.cpp

* Fixes for the English text in savefile.cpp

* Fixes for the English text in enemyrandomizer.cpp

* Fix for the English text in SohMenuEnhancements.cpp

Co-authored-by: aMannus <mannusmenting@gmail.com>

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2025-03-25 19:55:53 +01:00
Malkierian 2fd3825569 Fix warning from popped, minimized menu. (#5212)
* Fix warning from popped, minimized menu.

* Pre-empt another possible missing Pop.
2025-03-25 10:41:25 -07:00
Christopher Leggett 6abacc1024 Fix the player state flag that Tailparasan checks for for Damage Effect (#5211)
* Fix the player state flag that Tailparasan checks for

* Updated comment for accuracy
2025-03-25 18:12:50 +01:00
Christopher Leggett ebc3616a3a lus bump to fix shader issues (#5210) 2025-03-25 16:42:52 +01:00
Archez aabeffa254 prep for clang format (#5202) 2025-03-25 09:22:18 +01:00
Archez 0f1fb1e5de Add OOB texture fix entry for Arrow heads (#5207) 2025-03-25 09:21:44 +01:00
Archez 890f3ccee6 Change soh override windows to use different cvar name (#5208) 2025-03-25 09:20:08 +01:00
Archez 5bf1dc8285 Fix unhandled opcode crash with authentic gfx patches (#5206) 2025-03-24 21:27:38 -04:00
Christopher Leggett 084627b8af Force excluded locations update when preset is applied. (#5205)
* Force excluded locations update when preset is applied.

* Apply same fix for tricks tab

* Address review comment
2025-03-24 22:58:56 +01:00
aMannus c7ff6e4700 Update enhancement and randomizer presets (#5193)
* Prepare fresh presets

* Separate preset files & finish hell preset

* Enhancement presets done

* Finish randomizer presets

* Update missed enhancement cvar

* Better split presets.h

* Address review comments
2025-03-24 22:22:51 +01:00
Christopher Leggett 43510e5ad9 Fix Skull Tokens from Chests locking you in place (#5198)
* temp fix for chest skulltulas

* Implement way to load a vanilla message into a CustomMessage

* dynamically inserts autodismiss text code to skulltula text.
2025-03-24 22:21:09 +01:00
aMannus bddef32a5a fix defaults + modIndex (#5201) 2025-03-24 20:09:39 +01:00
lilacLunatic dc5bc1aa6c Mouse Support (#4673)
* mouse

* (mouse) small fix

* "fix" implicit declaration

* LUS 1.2

* empty commit to force CI re-run

* include new mouse LUS

* deleted:    soh/soh/Enhancements/controls/GameControlEditor.cpp

* [mouse]LUS

* fix input viewer header

* Bump LUS for mouse support

* Mouse Support

* Comment cleanup

* Adding the actual mouse enhancement files

* Fix (?) Windows and Mac builds

* Maybe fix MacOS now

* Why was it compiling with this??

* Mouse input viewer handling

* [Mouse] LUS bump

* [mouse] LUS

* (Mouse) bump LUS for dxgi fix

* F2 mouse notif

* Update soh/soh/Enhancements/controls/Mouse.h

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/controls/Mouse.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Fix mouse shield ranges to match control stick behavior

* Use early returns in Mouse_HandleQuickspin

* newline cleanup

* cleanup

* rename BUTTON_COLOR_MOUSE_BEIGE to BUTTON_COLOR_MOUSE_GRAY

* 'Enable Mouse' tooltip

* Fix includes

* Comments re mouse quickspin

* bullshit

* Hook handler for cursor recentering on shield

* Hook handler for first person mouse aiming

* Hook handlers for mouse quickspin

* Hook handlers for mouse shield control

* Hook registration conditions

* Enable Mouse -> Enable Mouse Controls

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-03-24 19:33:55 +01:00
briaguya 26aa36fe7b bump lus (#5187)
* pushing what i have so i can try to figure out HW_REG errors

* HW_REG (fix? workaround? either way it builds now)

* factory fixes and shaders

* bump again

* bump again

* copy shaders for `ExtractAssets` too (instead of just in `GenerateSohOtr`)
2025-03-24 09:34:07 +01:00
Philip Dubé 9ae9dc4977 Fix SFM wolfos logic (#5192)
* Fix SFM logic

SFM mixed child wolfos / adult moblin logic, making both incorrect

In particular, Din's Fire is ineffective on Moblins, & slashing your way through them should not be in logic

Adds trick for getting through SFM as adult without killing moblins

Includes small cleanup elsewhere in logic

* moblins not required
2025-03-24 09:11:45 +01:00
Sirius902 1053b0e0cf Prefix icon paths with CMAKE_SOURCE_DIR (#5197) 2025-03-24 08:56:08 +01:00
briaguya edd8561ddc assignable tunics/boots - dont throw items (#5045)
* don't throw items when using assigned tunics/boots

* didn't actually need that

* simplify logic so we don't need to check for holding items

* just use a vb should

* fix comment
2025-03-24 08:46:22 +01:00
Malkierian c7e3ef9e4d Wrong type for CVarGetInt on waterfall open enhancement. (#5200) 2025-03-23 21:52:07 -07:00
Malkierian e25058c256 Fix sleeping waterfall enhancement and rando option combinations. (#5199) 2025-03-23 21:34:06 -07:00
Christopher Leggett 45b8f228d9 Remove MenuOptionIndex Middleman and fix rando presets (#5185)
* Remove CVar Middleman and fix rando presets

* Throwing in a couple of typo corrections
2025-03-23 19:07:12 +01:00
Malkierian 2564721b2c Change default index retrieval to sidebarOrder vectors. (#5189) 2025-03-23 09:42:34 -07:00
Malkierian 9ffe2ab2b9 Some cleanup (#5183)
* Resolve size_t conversion warnings in UIWidgets.hpp

* Change "Better Debug Warp Menu" to default on.

* Change All/None checkboxes (for item counts and cutscene skips) to buttons.

* Remove all/none for item counts.
Remove arrays for item counts, create widgets directly.
2025-03-22 16:51:59 -07:00
Malkierian 69a32ffba6 Restore combobox functionality to Bunny Hood Effect (#5167)
* Restore combobox functionality to Bunny Hood Effect, and tweak the tooltip.

* Tweak the description a bit more.

* Final tweak?
2025-03-21 18:42:59 +01:00
Pepe20129 983c075a33 Overworld Key Tracker (#5164)
* Overworld Keys Tracker

* Update randomizer_item_tracker.cpp

* Fix id collision

* Post-merge fixes

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

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-03-21 17:53:17 +01:00
Malkierian ae5e41f7a0 Fix Dungeon Spoiling in Trackers (#5168)
* Prevent spoiling dungeons in check and item trackers if MQ is set to Selection, but selection for specific dungeon is Random.

* Account for other options using "Set Dungeon Quests".
2025-03-21 12:32:46 +01:00
Philip Dubé 1e294134af Remove EnFr_RandomizerCheckFromSongIndex (#5169)
* Remove EnFr_RandomizerCheckFromSongIndex

Also handle missing return in RawAction::CheckFlag

Also adjust jabu jabu shabom timer override to be non-overflowing constant (but same constant)

* Update soh/soh/Enhancements/enemyrandomizer.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

* remove shabom room hack from z_obj_roomtimer.c

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-03-21 12:27:53 +01:00
Malkierian 04458f2274 Allow F1 to close the menubar modal via new IsPopupOpen() and DismissPopup functions in SohModalWindow. (#5166) 2025-03-21 12:26:03 +01:00
Archez 1bcab06fed Rework CI build caching for stability (#5170)
* improve github build caching

* add back network build flag

* add back sdlnet
2025-03-21 12:23:01 +01:00
Malkierian e21a3e4c0f Add check for GAMEMODE_END_CREDITS in Audio Editor's OnSceneInit hook (#5172)
* Add check for GAMEMODE_END_CREDITS in Audio Editor's OnSceneInit hook to prevent sequence shuffles mid-credits.

* Move extern "C" block up.
2025-03-21 12:22:22 +01:00
Archez 57bc5690e2 Mono dev tools (#5175)
* apply mono font to some dev tool windows

* soh gui wrappers for gfxdebugger and console to set mono font

* it can be just a little larger
2025-03-21 12:21:33 +01:00
Archez 985bf91945 prevent some timesavers applying in boss rush (#5163) 2025-03-20 20:20:50 +01:00
aMannus b6f957b36f More Menu Improvements (#5155)
* fix mismatch on default value for notification position

* Fix checkbox vertical offset for multiline

* Moooore changeees too theee menuuuuuu

* capitalization again

* Fix controller config & remove test var
2025-03-20 20:19:16 +01:00
Christopher Leggett 65564e9469 Fix typo in Mute Low HP Alarm CVar (#5161) 2025-03-20 08:46:52 -07:00
Jordan Longstaff f02032aed4 Skip dialogue before getting Gerudo membership card (#5058)
* Skip dialogue before getting Gerudo membership card

* Change to misc interaction

* Change to forced NPC dialogue

* Rename VB flag
2025-03-20 12:07:43 +01:00
Christopher Leggett 8958db5c2b Fix CVar mismatches for skip forced dialog and unrestricted items. (#5159) 2025-03-20 00:21:31 -04:00
Christopher Leggett b3ed249021 Fix Pot Shuffle crash caused by removal of id check (#5158)
* Fix Pot Shuffle crash caused by removal of id check.

* Properly unregister ShufflePots Hook
2025-03-19 23:03:42 -04:00
Philip Dubé 723375a344 fix type signature of Randomizer_DrawMysteryItem (#5156) 2025-03-19 22:19:19 -04:00
Jordan Longstaff 224c810e39 Link can move around while carpenters escape (#5055) 2025-03-20 00:05:20 +01:00
Jordan Longstaff 818c7e4633 Skip carpenter dialogue before Gerudo mini-boss (#5057)
* Skip carpenter dialogue before Gerudo mini-boss

* Apparently I'd forgotten the include

* IS_RANDO default
2025-03-20 00:03:59 +01:00
Malkierian 6ad503e1d2 Adds a modal registration for pressing F1 and confirming Quit from the menu button. (#5154)
Fixes near shortcuts gossip stone name to include "grotto" to signify it's in the grotto.
2025-03-19 23:57:08 +01:00
aMannus 4243eb67ae Exclude nabooru from boss souls (#5152) 2025-03-19 23:52:33 +01:00
Pepe20129 79b53e5920 Change Compass Colors Match Dungeon to Map & Compass Colors Match Dungeon (#5042)
* Colored maps & compasses with shipinit

* Update SohMenuBar.cpp

* Post-merge fixes

* Whoops
2025-03-19 23:52:16 +01:00
Archez a6ff511af5 Exclude zora sapphire from random enemy size (#5153) 2025-03-19 21:53:46 +01:00
Jordan Longstaff 70fc060381 Fix Forest Stage upgrades with Skip Misc Interactions (#5052)
* Fix Forest Stage upgrades with Skip Misc Interactions

* Explicit upgrade checks
2025-03-19 20:03:15 +01:00
Philip Dubé 28944cc68f fix some warnings (#5135)
* fix some warnings

* fix error caught by mac build, fix 3 more warnings

* merge fix

* feedback

* remove color refactor
2025-03-19 12:30:44 -04:00
aMannus 7dd3c1b2ac update model (#5150) 2025-03-19 15:46:02 +01:00
Christopher Leggett 17b19ddd73 Remove GBK Triforce Hunt as an option (#5117)
Where we were previously checking it, just check the separate triforce hunt option instead.
The option under GBK settings was always kind of a dummy option that wasn't meant to actually be selected, and it was set automatically when Triforce Hunt was on.
This PR just cuts out the middle man, so to speak.
2025-03-19 14:11:56 +01:00
aMannus 7f8e3d4337 randomizer enhancement menu improvements (#5148) 2025-03-19 13:50:04 +01:00
aMannus 80850615c3 Fix key color issues (#5149) 2025-03-19 13:49:51 +01:00
aMannus 5517e22f6e Exclude skip get item animations outside of rando (#5147) 2025-03-19 12:42:56 +01:00
Philip Dubé b7b5949bc4 Some location access fixes (#5121)
* Some location access fixes

Split out a few fixes I've made while working on #5105

* assert false

* IC feedback
2025-03-19 12:42:18 +01:00
aMannus 04d79222d4 fix crash (#5146) 2025-03-19 12:34:52 +01:00
aMannus d109aa795a Remove Shuffle Pots assert (#5145)
* Remove assert

* Remove exceptions to the assert
2025-03-19 12:34:01 +01:00
Pepper0ni 7a6778c940 exclude maps from junk only GI skip (#5140) 2025-03-19 11:21:39 +01:00
Pepper0ni dd7dee8f07 Fix finite shields getting thier effect applied in SCL (#5130) 2025-03-19 11:15:55 +01:00
Philip Dubé 37a2730df2 remove unused 3drando custom message code (#5138) 2025-03-19 11:15:43 +01:00
Archez 9795f696c8 Hook unregister fixes and hook debugger tweaks (#5139)
* clang-format before

* Hook unregister fixes and hook debugger tweaks
2025-03-19 11:14:43 +01:00
Philip Dubé 7c227dcc42 remove color from UIWidgets::WidgetOptions (#5141) 2025-03-19 11:11:47 +01:00
xxAtrain223 0f81e6d82b Initialize the RegionTable when loading a file. (#5144) 2025-03-19 11:11:26 +01:00
aMannus c72efd08a9 Menu - Enhancements and cheats re-organisation (#5142)
* First pass cheats, extra modes, minigames, difficulty, fixes, graphics

* More progress. One tab left

* Enhancements & cheats done and fix for item tracker font
2025-03-19 08:43:14 +01:00
Pepper0ni 233c07d16a Fix entrance oversight in shield grave (#5137) 2025-03-18 11:32:54 -04:00
aMannus ab5ea0e8ee Further Menu Improvements (#5129)
* Menu improvements

* Update calc for button offsets

* Fix enemy rando UI
2025-03-18 10:12:45 +01:00
Christopher Leggett 9e883ece96 Fix/modern menu/secret flag (#5131)
* Adds ability to set InputString fields as "secret"

Meaning it shows the text as dots like a password field. Currently nothing that is merged into the main branch uses this but Anchor will need it.

* Adds an `addedFlags` field to InputOptions.
2025-03-18 09:26:09 +01:00
Spodi 546b915106 Unify FPS and V-Sync controls and behavior between renderer (#5132)
* FPS and refresh rate logic changes

Changes FPS behavior on all renderer (despite the actual set FPS):
- Clamp FPS to refresh rate when V-Sync on (or can't be disabled)
- Stick to refresh rate when "MatchRefreshRate" is toggled on

* Max 360 FPS for slider on all renderers

* "Match Refresh Rate" unification

Checkbox for all renderer. Was a button for DirectX.

* Fix wrong CVAR for Match Refresh Rate

* More descriptive V-Sync tooltip

* Fix wrong CVar for DISABLE_FOR_DEBUG_MODE_OFF
2025-03-18 09:24:50 +01:00
Malkierian 63ae14cc30 Menu Header Button Reorder (#5134)
* Move close menu button to right side, farthest right, and move Quit SoH to the left of the Reset button.
Also remove last reference to 2ship in tooltips.

* Change Resolution Editor's use of CVarGet to `GetInterpolationFPS()` in OTRGlobals.
2025-03-18 09:24:32 +01:00
PurpleHato a95883b6b3 Multiple Rando Text related stuff (#5125)
* Multiple Rando Text related stuff

- Mostly french rework / completion of missing lines
- Removal of a duplicate entry for Richard's house overworld key
- Correct naming for the English pond
- Addition of missing text in English and french

* Txeak uncessary spaces
2025-03-17 20:15:53 +01:00
Malkierian c18d427619 Setup F11 to toggle the fullscreen CVar to keep it synced with fullscreen state. (#5128) 2025-03-17 20:13:35 +01:00
Malkierian a6163ca2e8 Fixes skip get item prefix in hook handlers and the space in ClimbSpeed CVar. (#5127)
Also moves Item Scale option into rando enhancements to match skip get item animation, as it's directly tied.
2025-03-16 23:36:06 -07:00
aMannus f3b3e0f5eb Use percentage of screen size as padding (#5123) 2025-03-16 23:00:47 +01:00
Malkierian 05ab17d3a8 Reimplement ImGui Scaling option. (#5124) 2025-03-16 23:00:30 +01:00
Pepper0ni 112fab503f Fix oversight in HC storms grotto (#5120) 2025-03-16 22:00:31 +01:00
Pepe20129 797fe2d989 Fix Ganon's Tower entrance logic (#5115)
* Fix tower

* Update fire_temple.cpp
2025-03-16 21:58:04 +01:00
Christopher Leggett a97f853a14 Prevent Big Octo one point cutscene from playing twice. (#5113) 2025-03-16 21:55:14 +01:00
Malkierian 5b622683f4 Clean up Push/Pop font calls in check and item trackers by adding them instead to Begin/EndFloatWindows functions. (#5122)
Add missing PopFont call to entrance tracker.
2025-03-16 21:51:52 +01:00
Malkierian 7e392e63a8 Modern Menu (#5116)
* Add menu files, hook menu up to window system.
Temporarily rename new menu's UIWidgets to UIWidgets2 to allow both menu systems to coexist temporarily.

* Finish implementing new menu.
Rename 2ship UIWidgets to UIWidgets2 to complete facilitation of both menus working for now.

* More preliminary setup

* More prepwork, begin on settings options

* Finish settings, add enhancements windows

* Fix search function not looking past first columns.

* Add dev tool windows

* Finish dev tools

* Add about window

* Fully replace about window

* Remove moved menu items from menubar, add more windows to new menu

* Implement WindowButtonOptions.
Add ability to not embed popout windows when not popped out.
Add ability to hide the button for WindowButtons.
Fix Entrance Tracker from showing when not enabled.

* Fix entrance tracker settings embedded display.
Fix entrance tracker settings window original size declaration.

* Initial implementation of themed radio button widget.

* Move "About" section to second column of general.
Fix sidebar sections starting in second column.

* Restore Entrance Tracker `Draw()` to allow for custom styling.

* Fix combobox positioning formatting.
Fix color picker end spacing.
Convert everything in check tracker settings to UIWidgets2 (except color pickers and section headers).
Make all tracker windows not embed.

* Minor cleanup

* Fix main volume defaults & mirror jitter fix removal on dev

* Improve color picker with RGB/RGBA options. Not finished.

* Finish creating CVarColorPicker and implement for Check Tracker background color.
Fix tracker and network prefixes.

* Finish check tracker settings and convert check tracker.

* Port all Cheats menu except for Beta Quest

* Port over Beta Quest to new menu

* Remove old cheats menu

* Port cutscene skips to modern menu

* Port Timesaver Enhancements to new menu

* Port the Items and Item Count Messages submenu

* Port Difficulty Options to new Menu

* Removes options that have been ported thus far.

* Port "Reduced Clutter" options to new menu

* Add forgotten callbacks to Hyper Enemies/Bosses

* Copy StateButton to UIWidgets2, and implement custom padding for them in the tracker.

* Ports some pause menu related settinga

* Change tracker window active title color.
Make state buttons smaller in tracker to get more info on screen.

* Convert window title active theming to all windows.

* Port the rest of Enhancements->Gameplay to new menu

* Port the "Graphics" Enhancements to new menu

* Ports Fixes over to the Modern Menu

* Ported Restorations to Modern Menu

* Ported Extra Modes to new menu

* Port Autosave and Boot Sequence to modern menu

* Cleans up some leftover data for ported buttons

* Ports Enhancement Presets to new menu

* Port Additional timers to new menu. Removes Enhancements from old menu

* Cleans up some unused stuff

* Ports Randomizer Enhancements to modern menu

* Convert Item Tracker Settings. Something's wrong with the comboboxes in a second column of a table.

* Fix combobox alignment and label position calculations.

* Convert Entrance Tracker window.

* Save Editor Info tab finished.
Added `PushStyleInput` and `PushStyleTabs` for Info tab.
Fixed some indentation in entrance tracker source.
Added font push to tracker windows.

* Increase size of all icons in save editor.

* Convert flag groups to child windows for automatic sizing and border drawing.

* Flags tab completed.
Finished inventory tab.

* Convert save editor help hover to UIWidgets2.

* Various fixes and corrections

* Start cosmetics editor, fix theme colors not updating

* Cosmetics editor conversion progress

* Remove Mac internal resolution restrictions.

* Copy over advanced resolution partial and enable most options as a custom widget.

* Add size to float sliders, more cosmetics editor progress

* Fix incorrect cvar for notifications

* Radio button & header color options, more cosmetics editor progress

* Finish cosmetics editor conversion

* Create and apply THEME_COLOR macro. Resides in SohGui for easy access to mSohMenu.

* Move ResolutionEditor to SohGui directory.

* Add labels to build info.
Fix slider width calculations.

* Fix some advanced resolution widget hiding.

* Fully implement Advanced Resolution options.
Fix graphics settings formatting.
Improve slider label position calculations.
Implement Clamp options on sliders.

* Finish save editor.
Convert save editor code to `using namespace UIWidgets2`.
Fix search crashing on time splits window.
Remove `SetLastItemHoverText` from `UIWidgets2`.

* Unify cvar sectioning in time splits.

* Add InputString and InputInt widgets, and corresponding CVar Widgets

* Adds Widget Type for Inputs, not currently used.

* Convert Sail to modern menu

* Add Combobox that takes a vector of std::strings

* Convert checkbox and combobx to new widgets

* Add Tristate checkbox

* Convert sliders and tristate checkboxes

* Convert top half of Rando window

* remove/replace remainder of UIWidgets usage in option.cpp

* Converts tricks, locations, and removes old UIWidgets refs

* Fix windows build errors

* Remove Tri-State checkboxes

* Use PushStyleInput instead of PushStyleSlider

lol oops didn't realize it was a thing in Ship.

* Rebase and address review comments

* Convert Crowd Control to modern menu.

* Fix build error

* Audio editor progress

* Re-add CVar SaveOnNextFrame calls to Resolution Editor.
Remove old Resolution Editor files.

* Convert TimeSplits to new menu.
Fix a few enum warnings.

* Decrease padding on Arrow Buttons

* Audio editor + gameplay stats done

* Give Randomizer Menu more screen real-estate

* Port plandomizer menu

* Fix slider width calculation and allow combobox LabelPosition::None

* Fix None labelPos and slider width for inline labels

* Fix all slider value label insertions.
Convert Collision Viewer.

* Minor Collision Viewer enum change.
Convert Actor Viewer.

* Theme/convert Message Viewer.

* Add font to Message Viewer.
Theme Value Viewer.

* DL Viewer and SohModals themed.

* Convert Input Viewer.

* Missed some color settings in Input Viewer.
Removed UIWidgets references from Controller Config, and restored SoH version.

* Remove UIWidgets.hpp include from multiple files.

* Completely remove old UIWidgets.
Rename UIWidgets2 to UIWidgets.
Move Accessibility and Language options to new menu.

* Fix Gfx Debugger not showing up.
Remove menubar registration.

* Fix clearCvars references.

* Fix passing std::string to const char* argument.

* enum name spacing

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
2025-03-15 16:11:30 -07:00
Christopher Leggett c54883da72 Fix more missing location pool exclusions (#5108)
* Fix more location pool exclusion misses

* Add assert to ensure item pool isn't too large.

This will catch any issues where too many items are getting
added to the pool in Debug mode. It only checks to make sure the item
pool is smaller than the location pool, as the code actually handles
that just fine by placing Junk if the pool runs out. The Item Pool being
larger than the location pool though could easily result in items not
being placed. Logic should prevent a seed like that actually being
generated, but No Logic does no such checks.

* Add TODO comment for Item Pool, should be same size as Location Pool.

* Prevent Completed Triforce from ending up in Location List
2025-03-12 10:32:45 -07:00
Malkierian 9b9a0061ab Unify spoiler name creation across all shuffle types, and remove all versions of constructor functions with explicit spoilerName parameters except base. (#5111) 2025-03-12 10:32:17 -07:00
Philip Dubé 6dedf8a277 Gerudo Valley: fix regression with previous fix when combined with overworld shuffle (#5109)
Missed this in #5094 since only in last week I started becoming familiar with entrance shuffle logic
2025-03-12 10:32:03 -07:00
Philip Dubé 39e52aa8e6 Fix Gerudo Valley entrance logic (#5094)
* Fix Gerudo Valley entrance logic

Logic assumed cucco could be used as child to get around lacking bronze scale,
but this assumption fails if you enter grotto ledge from grotto or initial spawn

* fix lower/upper mixup

* fix: you can walk to lake hylia

* adult can jump across
2025-03-06 16:59:02 -07:00
Philip Dubé eb6c0d9d29 presets: clear blocks (#5098)
* presets: clear blocks

this avoids needing to list every new cvar in presets.h

* avoid resetting selected preset

* no cvar lists, clear less blocks on drop
2025-02-28 04:34:16 +01:00
Jordan Longstaff 2d78cb561a Move Broken Giant's Knife fix hook to its own file (#5049)
* Move Broken Giant's Knife fix hook to its own file

* Separate IS_RANDO out of value macro

* Remove redundant extern

* One-line comment
2025-02-28 04:33:48 +01:00
Pepe20129 06387060d6 Trade cleanup (#4971)
* Move adult trade to flags

* Move child trade to flags

* Fix vanilla

* Address review

* Rename `trade_shuffle` to `ShuffleTradeItems`

* Fix mac build

* Update GIVanillaBehavior.h

* Update z_kankyo.c

* Update z_en_heishi2.c
2025-02-25 12:09:01 +01:00
Philip Dubé db41c6513b Move boss kill logic into CanKillEnemy (#5000)
* Move boss kill logic into CanKillEnemy

Added hammer as being able to defeat Morpha

* add hammer vs gohma, king dodongo, & twinrova
2025-02-25 10:25:45 +01:00
Philip Dubé e516f45e23 logic: allow finding big poe in bottle for reward logic (#5075)
* logic: allow finding big poe in bottle for reward logic

only applies when big poe count is set to 1

* Allow multiple big poe bottles for when big poe requirement > 1
2025-02-25 09:30:05 +01:00
Archez 66844fb220 Fix crash with scene logging paths (#5081) 2025-02-25 09:14:27 +01:00
Archez 5fcdf74f5c Exclude debug file and cutscene map from auto save (#5088)
* Exclude debug file and cutscene map from auto save

* Remove ganon's lair from auto save exclusion
2025-02-25 09:13:31 +01:00
Archez f023a46a5d Use gamemode enum (#5089)
* Use gamemode enum

* update console command for file_select
2025-02-25 09:13:17 +01:00
Philip Dubé 51310db68f ShuffleCows.cpp (#5093) 2025-02-25 09:11:46 +01:00
briaguya acdb2dd324 bump lus (#5092) 2025-02-20 23:48:11 -05:00
Philip Dubé 49c5e19041 Fix rando generation crash (#5076)
Assertion failed in CreateChildAltarHints because all 3 stones were placed on fairies/beehives while those were disabled

Fix: consolidate on Context building settings dependant location lists. Overworld vs Dungeon should not operate so differently
2025-02-20 22:37:57 -05:00
Jordan Longstaff b6e2a995f1 Use VB hook to fix Deku Nut upgrade bug (#5047)
* Use VB hook to fix Deku Nut upgrade bug

* Use constexpr, remove unused extern

* Separate IS_RANDO out of value macro

* Restore mask check in hook

* Call VB hook in SkipMiscInteractions hook

* Mask of Truth hook not registered in rando
2025-02-19 20:22:56 -05:00
Eric Hoey 75f33a00d8 Remove Right-Stick Aiming from Enhancement Presets (#5086) 2025-02-19 19:08:24 -05:00
Archez 3d7da51fc7 Remove committed mods folder (#5082) 2025-02-17 20:33:36 -05:00
Miles Acquaviva cc25c96385 Added and implemented TrailType enum (#5059)
* added TrailType enum

* fixed build, moved declaration

* added enhancement comment

* Apply suggestions from code review

---------

Co-authored-by: link5669 <acqmiles@gmail.com>
2025-02-17 20:03:55 -05:00
aMannus 489cd84faa Clean up autosave header (#5077) 2025-02-17 17:43:51 -05:00
briaguya 6f22c05eec pin linuxdeploy (#5070)
* test forked linuxdeploy

* pin version
2025-02-16 08:25:30 +01:00
briaguya 2645a5fce2 bump lus (#5065) 2025-02-15 15:58:26 -05:00
briaguya 169a3d742d make cmake_minimum_required consistent between root CMakeLists.txt and soh/CMakeLists.txt (#5066)
also remove some version checks that don't apply anymore
2025-02-15 00:59:02 -05:00
briaguya 20a9f41906 remove unused VB_SHOULDs (#5056)
* remove an unused should

* another unused

* remove more unused

* one more

* remove case

* more cases for unused shoulds
2025-02-14 21:32:25 +01:00
Christopher Leggett 6df5abc30b Fix ER + Fishsanity settings combos (#5061) 2025-02-14 21:30:11 +01:00
aMannus 668040562f Autosave Overhaul (#5022)
* Autosave interval based

* Move to save on soft reset, remove adjustable interval

* Use new BeforeExitGame hook to prevent non-existent data problems

* Fix check tracker crash, remove BeforeExitGame hook

* update comment
2025-02-14 21:29:22 +01:00
Eric Hoey dbf7fcf775 explicitly exclude ganon + triforce completed (#5050) 2025-02-13 10:10:27 +01:00
Christopher Leggett f7d6a47139 Fix issues leftover from PR #5023 (#5054) 2025-02-13 10:09:58 +01:00
Archez 0ce9807df6 ShipInit and move ValueViewer rendering out of src (#5039) 2025-02-12 21:52:18 +01:00
Christopher Leggett d4b9e8c835 Remove locations from pool that are not shuffled. (#5023)
* Cleanup of unshuffled locations from pool/spoiler

* Removes unshuffled scrubs from the location pool

* Fix some instances of weird spacing

* Actually remove placement of vanilla freestandings

* Cleans up some now unnecessary code.

* Minor Optimization of PlaceItemsForType

* Fixes some grammer and spelling

* Another grammar fix
2025-02-12 21:42:58 +01:00
Archez 266792599e Add hilite setup calls around all custom GI draws (#5043) 2025-02-12 21:32:28 +01:00
Archez 135c2e8217 Remove POLY_KAL and restore POLY_OPA for kaleido (#5041) 2025-02-12 21:30:06 +01:00
Miles Acquaviva 297a056dff Created and implemented PosType enum (#5046)
* Created and implemented PosType enum

* fixed formatting

---------

Co-authored-by: link5669 <acqmiles@gmail.com>
2025-02-12 21:28:17 +01:00
Eric Hoey 499a23e9a3 restore night lock + remove interior lock (#5048) 2025-02-12 21:22:00 +01:00
Eric Hoey 126c3b532f fix loop order + reorder case for clarity (#5044) 2025-02-12 21:21:43 +01:00
briaguya 37fd39c7b5 shipinit dont show master sword (#4989)
* Initial Commit

* Added full functionality for both Hylian and Mirror

* Included Format

* Removed Format

* Pedestal Cutscene

* Much Less OnGameUpdating

* Fix function call

* use enums

* move animation skip to vb should

* move taking out master sword to put in pedestal check into vb should

* move the rest of it over

* extra newline was bugging me

* update on `"IS_RANDO"` and use `COND`s

* make new "uncategorized" section for VB enum

* move shoulds to new file

* move vb rsk checks into conds

---------

Co-authored-by: Patrick12115 <Patrick12115@hotmail.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
2025-02-12 15:32:40 +01:00
Archez 46c6d2f526 Restore pause link drawing behavior to use the work buffer (#5038) 2025-02-11 22:36:12 +01:00
Sarge-117 f5fa0f4e00 fix typo (#5036) 2025-02-11 16:18:16 -05:00
Garrett Cox ac72ebaaa3 Fix issue with pause buffer input window not applying correctly to closing save prompt state and move code around to be in order of operations (#4975) 2025-02-11 09:56:48 -05:00
briaguya a7f837014f fix dark link not getting hit when stunned (#5028)
in https://github.com/HarbourMasters/Shipwright/pull/3280 both `0x00400000` and `0x04000000` were replaced with `PLAYER_STATE1_SHIELDING`.

`0x00400000` is `PLAYER_STATE1_SHIELDING`, but  `0x04000000` is `PLAYER_STATE1_DAMAGED`

this fixes the spots in `z_en_torch2` where we had `PLAYER_STATE1_SHIELDING` where it should have been `PLAYER_STATE1_DAMAGED`
2025-02-09 12:58:27 -05:00
briaguya 29cecd8502 fix dark link softlock (#5027) 2025-02-09 11:49:56 -05:00
aMannus 0177690b54 Remove potion values (#5021) 2025-02-09 09:34:02 +01:00
Spodi 8ce5c46531 Remove "Jitter Fix" option (#5020)
This was just confusing for users.
2025-02-09 01:07:02 -05:00
briaguya c11887edcd bump lus (#5026) 2025-02-09 01:06:31 -05:00
briaguya 6abf30aa2f document vb shoulds (#5004) 2025-02-08 19:12:13 +01:00
Philip Dubé 14a14bb7ef DC logic: more mud walls (#5019)
A few mud walls in DC logic still used SmashOrBlast, preventing alternative blue fire trick logic
2025-02-08 19:09:18 +01:00
aMannus 8f3711f008 simplify pause menu link (#5013) 2025-02-08 19:08:52 +01:00
Christopher Leggett 2400ad1d68 Start splitting Location List into ShipInit functions (#5011)
* Move fairy checks to separate file

* Moves pot locations to ShipInit function

* Move Freestanding locations to a ShipInit function

* Remove some extra newlines that were pasted in

* Move fish locations to ShipInit function

* Remove ON_BOOT, as it's not really necessary

* Fix weird spacing
2025-02-06 20:30:23 -07:00
briaguya ca0617b035 add some documentation to RegisterShipInitFunc (#4995) 2025-02-06 21:47:06 -05:00
Christopher Leggett f2a3ac1740 Fix enabledTricks getting incorrectly logged. (#5012) 2025-02-06 15:40:38 -07:00
Archez eafe7f0b04 Fix save warping in links house with entrance rando (#5009)
* Fix save warping in links house with entrance rando

* account for interrior shuffle all
2025-02-06 08:33:41 -07:00
Malkierian 4044ab34c3 Add Fortress and Colossus entrance groups to the entrance tracker data, and adjusted the check tracker accordingly (for autoscroll). (#5001) 2025-02-05 16:11:48 -07:00
Archez 3cd4851474 Defer scene DList resource loading to in-game and support alt pathing (#4986)
* Defer scene dlist resource loading to in-game and support alt pathing

* feedback
2025-02-04 18:03:35 -05:00
aMannus b2cb3ff87d Unlock locked interior doors with overworld keys enabled (#4948)
* Update LockOverworldDoors.cpp

* Remove key logic from interiors

* Fix entrances, this time while awake
2025-02-04 15:08:28 +01:00
briaguya 811ffa5e98 fix rainbow all (#4991) 2025-02-04 11:32:44 +01:00
briaguya e44877cca8 implement RemoveSpinAttackDarkness using shipinit and custom update func (#4987)
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-02-04 10:49:31 +01:00
Archez 40f2e16842 Macos game mode support (#4993)
* Remove macos startup script and rework cpack bundling

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>

* Add helper for creating mods folder

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>
2025-02-04 10:48:41 +01:00
briaguya 11e07a8f9d rework assignable tunic/boots to use shipinit and hooks (#4978)
* don't put away items when equipping tunics/boots

* vb

* don't need that return

* ok i guess i'm going down the rabbit hole

* more rabbit hole

* shipinit and more hooks

* clean up

* use fewer params, add a missing condition

* make the loops make sense
2025-02-04 10:44:02 +01:00
briaguya 8ae8770db8 pull in startMode docs (#4988) 2025-02-03 18:58:49 -05:00
Philip Dubé c7f335f23c Prefer EVENTCHKINF constants to hex (#4965)
Also remove unnecessary const qualifiers that flood warnings
2025-02-03 11:08:58 +01:00
Philip Dubé e7e02735b0 rando: vanilla dungeon rewards (#4836)
* rando: vanilla dungeon rewards

* gift from rauru is dungeon location, not pocket

* missing apostrophe in preset description

* neither pocket nor gift should be listed in dungeonRewardLocations
2025-02-03 10:57:35 +01:00
Philip Dubé e5ddcce7f2 use CanKillEnemy more (#4867)
* use CanKillEnemy more

reviewed instances of RG_KOKIRI_SWORD in logic

* kokiri does not damage spikes

* confirmed hammer works vs dodongos

* 3
2025-02-03 10:46:59 +01:00
Xeokn 33d7b173fa Additional Sail commands (#4970)
* Additional Sail Commands.

Adds "SpawnEnemyWithOffset" and "SpawnActor" to Sail Functions.

* Small Corrections

Indentation my beloved
2025-02-02 17:00:59 -05:00
briaguya ac9b8c2e87 better soft reset (#4984) 2025-02-02 02:33:04 -05:00
briaguya f4604673e0 clean up/fix mq dungeon and required trial parsing logic (#4979) 2025-02-01 22:11:56 -05:00
Malkierian b62808dc2d Prevent adding Gerudo Fortress Keyring when Keyrings are set to off. (#4981) 2025-02-01 19:38:22 -07:00
briaguya 133825c1cd update to latest LUS main (#4976) 2025-01-31 11:41:03 -07:00
Malkierian 1744f1fc18 Set Item Tracker Total Checks window to only scale text if Item Tracker window type is Floating. (#4963)
Increase default width to account for window type title text.
2025-01-30 10:37:17 +01:00
Christopher Leggett 7df9641297 Exclude locations fix (#4969)
* Properly check for Excluded Location option.

* Remove GetOption overloads, weren't working anyway
2025-01-29 08:12:42 -07:00
Malkierian 1f65bde583 Move most ImGui-related files/code to an SohGui subfolder. (#4968) 2025-01-28 18:45:21 -07:00
briaguya 668e266ecc clamp addAlpha when skipping spinning logos to prevent softlock (#4964)
* debug print logos seen

* maybe this is the fix, not sure if there's a better option i'm overlooking

* use clamp

* msvc plz

* msvc?

* max is cleaner
2025-01-27 18:59:46 -07:00
Malkierian 41cf6b3338 LUS bump (#4960) 2025-01-27 14:13:14 -07:00
briaguya 744fab4b05 fix build (#4961) 2025-01-27 13:21:40 -07:00
Pepe20129 31cd419d6f Update kakariko.cpp (#4959) 2025-01-27 11:31:50 -07:00
Christopher Leggett b5e6342bc1 Rip Settings out of Rando::Context (#4943)
Not completely happy with everything here but this should fix the bugs
related to settings getting cleared on save load.
2025-01-27 11:30:04 -07:00
Malkierian ef0350d830 Add translation for bottle item RGs to itemIDs for assigning to slots in logic.cpp (#4954)
Change `CanEmptyBigPoes` to reset to false instead of true.
2025-01-27 09:48:13 -07:00
briaguya 83000e2f6a bump lus (controllerdb device at boot fix) (#4951)
* test controllerdb device at boot fix

* lus main
2025-01-26 19:37:14 +01:00
Eric Hoey 97c686c2a6 Fix fairy shuffle in LW Scrub Grotto and Royal Family Tomb (#4934)
* add missing fairy locations+hint text

* match rft chest name
2025-01-25 16:35:20 -07:00
Malkierian 8f67efee58 Entrance Names Redux (#4941)
* Add "Blue Warp" to the boss sides of the blue warp pairs to differentiate from the bosses on the other sides of boss doors.
Fix some names that weren't the same in both pairs of entrances.
Renamed a few other entrances for clarification.

* Add function to check entrance name consistency.
Fix remaining non-matching names.

* Document CheckEntranceNames.
Remove declaration of it from the header.
2025-01-25 10:09:17 -07:00
Eric Hoey b6aa01b28c fix fire temple hints (#4950) 2025-01-25 09:51:07 -07:00
Christopher Leggett e99771f69c Cause spoiler to be re-parsed on soft-reset (#4944) 2025-01-25 09:50:44 -07:00
Garrett Cox 8ac8dc3fd0 Move trap handler to its own file and make the additional trap types seeded (#4942) 2025-01-25 09:50:36 -07:00
briaguya 388eb487e3 rework "Authentic Logo Screen" and "Fast File Select" (#4939)
* skip z_title with button press

* use `RegisterShipInitFunc`

* rip out a bunch of custom ztitle code

* ok now it's almost fully back to vanilla

* titles are back for a limited time

enjoy #Skipping

* move old customizations into new custom draw

* finally getting the hang of this shipinit thing

* vb should let it snow

* boot sequence logic

* clean up logic to better handle changing boot sequence settings

* remove fast file select stuff

* remove authentic logo screen setting

* about window - not super pretty but not ugly imo

* maybe this fixes windows

* maybe alloca? idk why it's working in other files

* just pulling in every include hoping something works

* Revert

This reverts commit c1d02c9a40.

* try some macro fixing magic

* fix another c vs cpp thing

* do it without an extra var

* make `GitCommitHashTruncated` a private member on `AboutWindow` instead of truncating on draw

* move logo asset defs to `soh_assets.h`

* Apply suggestions from code review

Co-authored-by: Archez <Archez@users.noreply.github.com>

* VB_SHOULDN'T

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-01-24 10:21:15 -05:00
briaguya 6d94cf9bac bump LUS (joystick thread hint) (#4946) 2025-01-24 10:20:53 -05:00
Garrett Cox aa2ad23601 Replace old pause buffer input experience with a more accurate one (#4918) 2025-01-23 01:30:34 +00:00
Garrett Cox 69e3342808 Fix improper usage of GetFinalGIEntry, passing the RG instead of GI (#4938) 2025-01-22 11:39:08 -06:00
Eric Hoey bc561efa8e change RCs to RHTs (#4932) 2025-01-21 16:51:17 +01:00
Malkierian c781a76e89 Add DMT Cow Grotto Storms Fairy to DMT location access. (#4931) 2025-01-21 10:05:36 +01:00
Pepper0ni 04c0697379 Clean up settings and add boss soul files (#4891)
* Clean up settings and add boss soul files

* address reviews

* didn't realise there was more

* add comment for how to undummy stealth
2025-01-21 06:46:52 +01:00
Philip Dubé ad9984ef68 pause warp: check player has buttons (#4927)
* pause warp: check player has buttons

* feedback
2025-01-21 06:45:33 +01:00
PurpleHato 26e92a063f ADD: French translations for rando on file select (#4928)
* French translation for rando file select

* better seed than Seed
2025-01-21 06:45:15 +01:00
Pepper0ni 6f8ac16a9e Add DMT cow fairy and give overworld misc song fairies hints (#4930) 2025-01-21 06:44:56 +01:00
aMannus 8a5dd6323c Use textures for boss souls in item tracker (#4925)
* Use textures for boss souls in item tracker

* Fix builds
2025-01-21 00:12:49 +01:00
aMannus 5c4a6ae8c0 Hint purge (#4924) 2025-01-21 00:03:38 +01:00
Philip Dubé 936b159a67 fix 4 warnings (#4922)
1. pragma in cpp
2. missing return
3. unnecessary function call
4. remove impossible null check
2025-01-21 00:03:21 +01:00
Garrett Cox eab11d7f56 Lock overworld doors Randomizer option (#4489) 2025-01-21 00:03:02 +01:00
aMannus ded1c721f2 Fix particles (#4923) 2025-01-20 22:37:44 +01:00
aMannus 878a8fe465 Fix boss soul ice traps (#4921) 2025-01-20 22:37:11 +01:00
briaguya 63046a89ec simplify controllers (#4914)
* start moving towards just using `ShipDeviceIndex::SDLGamepad`

* rename `ShipDeviceIndex` to `ShipDeviceType`

* all sdl mappings are always `ShipDeviceType::SDLGamepad`

* create new `physicaldevice` directory where the new stuff can live

* `ConnectedPhysicalDeviceManager`

* start to not need index mapping manager

* somes fixes and stuff

* remove more shipdeviceindex stuff

* more removing and what not

* axis thresholds

* rename some stuff and remove device icons

* back to all stuff visible

* show connected device names

* bring in mouse color from lus input editor window

* lus

* remove

* more stuff

* more lus

* basic filtering

* update lus

* upstream LUS

* make `Controller_ShouldRumble` make sense
2025-01-20 19:51:39 +01:00
Christopher Leggett 8244d63719 Fix rando menu sliders so they update on JSON drop (#4912) 2025-01-19 18:06:54 -07:00
Christopher Leggett 526aad59d5 Fix the trick options loop (#4917)
It initialized an array with a size, which pre-filled
it all with nullptrs, and then used push_back on top of that.
So it was a bunch of nullptrs followed by the actual
option pointers. Fixed by calling reserve instead of
constructing with a size, so it reserves the memory it needs
without actually filling the vector with nullptrs, so push_back
properly starts from the beginning.
2025-01-19 18:06:42 -07:00
Philip Dubé ed674f1ed2 mOptionGroups: populate RSG_TRICKS with loop (#4909)
There were some tricks missing, using loop makes one less place to update when adding tricks
2025-01-19 20:49:59 +01:00
Malkierian 7a7eed74db entrancesMap cleanup (#4905)
* Make spoiler entrancesMap use the same names and display scheme as the entrance tracker.

* Use `Entry` in place of grotto `Exit` and interior `Outside`.
2025-01-19 20:45:30 +01:00
aMannus 2a172de52a Cosmetics Editor tweaks (#4904)
* Cosmetics Editor Tweaks

* More work on keys
2025-01-19 20:45:07 +01:00
Lord Jabu Jabu 3357543538 Dev Feature - Create VS Code Build tasks and update build documentation (#4895)
* Added vs code build tasks

* Fix typo in BUILDING.md regarding CMake Tools plugin

* Add "Build All" task to VS Code configuration
2025-01-19 13:49:23 -05:00
aMannus c466c92905 Uncomment chime on one points (#4901) 2025-01-18 23:54:59 +01:00
Eric Hoey 3061b138fa pause menu behind advanced + remove from applysideeffects (#4903) 2025-01-18 19:54:52 +01:00
aMannus 8a5dd022f6 Fix ice trap size not getting reset (#4897) 2025-01-18 11:46:59 +01:00
aMannus 188b9757da Fix triforce hunt timer (#4896) 2025-01-18 11:46:48 +01:00
aMannus b4f7d2289a Play success sound on dropping in spoiler log (#4899) 2025-01-18 11:46:38 +01:00
aMannus 7d2a4e5818 Default "Hide unshuffled shop item checks" to off (#4900) 2025-01-18 11:46:01 +01:00
Archez d1b7a5b814 Fix new Boss Soul skeleton based items (#4902)
* Fix and tweak boss soul skeleton patterns

* slow down morpha tex scroll

* extern c

* lower kotake a little
2025-01-18 11:45:21 +01:00
Pepper0ni 47fdaabd1b Update Actor Flags to decomp (#4822) 2025-01-16 04:02:23 +01:00
Pepper0ni 88a432aac5 fix minor issues and a BotW rupee (#4888) 2025-01-16 03:26:11 +01:00
aMannus 7f4344e28e Fix mystery items applying to GI skipped items (#4886) 2025-01-16 00:12:30 +01:00
aMannus a06b6c4365 check tracker typos (#4885) 2025-01-16 00:12:16 +01:00
aMannus 5ae527c194 Shuffle Fairies - Fix fairies spawning without playing song (#4884)
* Fix fairies spawning without playing song

* Better if statement
2025-01-15 23:12:06 +01:00
Jordan Longstaff 0497ad20d8 Rename Business Scrub functions/flags from decomp (#4776)
* Rename Business Scrub functions/flags from decomp

* Update XML references
2025-01-15 11:23:06 -05:00
aMannus a86205b999 [RANDO] Boss Soul Shuffle using actual boss models (#4827)
* First pass for first 8 bosses

* Finish all souls
2025-01-15 15:26:44 +01:00
Pepper0ni 3e6a0ef566 Add Dana's models to the game, add cosmetic customisation for keys and rename Bombchus in Logic (#4311)
* initial implementation of new models

* fix typo

* Add smaller skeleton key model and try to fix windows build

* stupid windows, you made me look bad!

* make DrawBombchuBag function work

* small cleanups

* OOGGA BOOGA BOO

* fix post merge leftovers

* post merge fix

* Added Big Key Lighting override to show vanilla lighting when unchanged

* rename CustomdLists into customIconDLs

* post merge fixes

* fix some tooltip issues

* post merge cleanup and some small menu changes

* post merge fix

* post merge fix

* add new boss soul model, colours broken

* update boss soul model for env support

* Add dungeon customise buttons to cosmetic editor

* fix mac build?

* keys don't support alpha

* fix submodules

* ring now draws

* fix keyring colours

* Add bombchu Bag RG, fix boss soul skull colour

* address reviews
2025-01-15 14:18:52 +01:00
Pepper0ni 95a4e1cfba Fix big poe bottle logic (#4837)
* fix big poe logic

* oops
2025-01-15 13:47:30 +01:00
Philip Dubé d3c619ec2f Fix ImgUI red boxes (#4869)
Invisible buttons needed unique IDs
2025-01-15 13:46:47 +01:00
Fredrik Andreasson 651623a845 [Rando] Prevent alarm when at full HP (#4831)
* * Prevent low HP alarm when at full HP for 1 heart start

* * updated name
2025-01-15 13:15:08 +01:00
Pepe20129 a46cfff438 Move some cheats to Shipinit (#4819)
* Infinite ammo

* Infinite health

* Infinite magic

* Infinite money

* Infinite Nayru's love

* Unrestricted items

* Freeze time

* Easy QPA

* Easy ISG

* Deku stick cheats

* Moon jump cleanup

* Update Ammo.cpp

* Address reviews
2025-01-15 13:08:33 +01:00
Pepper0ni ce289c0be9 Properly store starting age in spoiler log (#4873)
* properly store starting age in spoiler log

* convert ResolvedStatingAge to a setting to store it in the save
2025-01-15 13:05:52 +01:00
Pepe20129 7f31fd2e4e Organize ship specific save context additions (#4597)
* Basic restructure

* Undo most randomizerInf changes for now

* Small fixes

* Fix linux & mac builds?

* Fix remnants of randomizerInf changes

* Post-merge fix

* Post-merge fix
2025-01-15 13:04:47 +01:00
Malkierian 0d80c4695f Change UnregisterGameHook type for freestanding handler to OnVanillaBehavior to match registration type. (#4883) 2025-01-14 21:49:49 -07:00
Pepper0ni 2fc3a563c9 fix spirit MQ south child climb chest logic (#4850) 2025-01-13 11:17:12 -07:00
briaguya b774d39bc7 fix tooltip wonkyness (#4856) 2025-01-12 02:06:34 +01:00
Pepper0ni 66f5e6c26c Fix generation errors exposed by loccacc refactor (#4861)
* Fix generation errors exposed by loccacc refactor

* oops
2025-01-12 01:50:50 +01:00
Eric Hoey 61de721fe5 Fix Skeleton Key Hint (#4860)
* add skeleton key hint text

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

* add end quote back, oops

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2025-01-12 01:49:24 +01:00
Eric Hoey 4a91d94507 pass one + pass two + pass three (#4863) 2025-01-12 01:48:27 +01:00
Jordan Longstaff 0ae7f626a1 Added skip of Forest Stage leader cutscene (#4818) 2025-01-11 10:55:36 +01:00
Pepe20129 8e8befc6d5 Update settings.cpp (#4830) 2025-01-11 10:53:45 +01:00
Pepper0ni 7ea6422b6f fix LW Boulder (#4835) 2025-01-11 08:44:02 +01:00
Pepe20129 1ee31e5d61 Location access files cleanup (#4750)
* Move/Rename locacc files

* Format locacc files

* Split hyrule field file into HF, LH & LLR files

* Split castle town file into MK, TOT & HC/OGC files

* Split kakariko file into KAK & GY files

* Split death mountain file into DMT, GC & DMC

* Split lost woods file into KF, LW & SFM files

* Split gerudo valley file into GV, GF, HW & COLO files

* Move most files into the overworld/dungeons folder

Gerudo fortress needs to be split into gerudo fortress & thieves hideout, the former into overworld and the latter into dungeons

* Remove the optional second condition function

We won't need it as we're doing glitches differently from 3ds rando

* Post-merge fixes

* Split zora's domain file into ZR, ZD & ZF files

* Post-merge fixes

* Forgot to save the file

* Remove the optional second condition function from entrances & events

* Update bottom_of_the_well.cpp

* Add clarifying comment in `gerudo_fortress.cpp`

* Post-merge fixes

* Post-merge fixes

* Remove `s` from `RegionTable_Init_GerudoTrainingGrounds`

* Post-merge fixes
2025-01-11 08:28:23 +01:00
briaguya 6a5e5e2a75 imgui 1.90.6 -> 1.91.6 (#4838) 2025-01-11 02:02:05 -05:00
Fredrik Andreasson 3b26bd0402 Fix Mido without Emerald softlock (#4824)
* * fixes softlock when talking to Mido without Kokiri Emerald after killing Gohma

* * moved scene check to hook
* moved vanilla conditioon into GameInteractor_Should

* * corrected hook condition
* removed 'this'

* * reverted GameInteractor and hook_handlers
* changed actor to use existing hook

* * updated kokiri emerald conditions

* * missed parentheses
2025-01-10 23:14:31 -07:00
Pepper0ni 8dc2b0cec2 fix a few default cutscene settings (#4834) 2025-01-10 23:13:04 -07:00
Archez 4e8ccce002 Move Window calls to portside (#4833)
* Move LUS window calls to portside

* move dropped frame handling to port side

* Use fast3d all in one draw

* bump to upstream lus
2025-01-11 00:33:19 -05:00
Pepper0ni 323ea2df96 Fix song Fairies (#4826)
* Fix song fairies

* forgot a bool
2025-01-08 17:51:51 +01:00
Alejandro Asenjo Nitti 9455579f42 Set Sample Rate to 32000 hz (#4780)
* Set Sample Rate to 32000 hz

* PR review

* .DesiredBuffered = 1680
2025-01-08 01:08:20 -05:00
Jordan Longstaff 707b135711 Rename stick and nut capacity settings in save editor (#4825) 2025-01-08 00:46:48 -05:00
PurpleHato 5d6f20bf55 Frenchsanity (translations) (#4817)
* Most of french rando message

* Should be all

* Plural

* Better wording

* forgot one

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp

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

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp

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

* Missing ones

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-01-08 05:58:52 +01:00
Pepper0ni ad596387c6 Stop Adult Anju from breaking (#4767)
* stop anju from breaking

* remove comments

* remove whitespace
2025-01-08 05:50:24 +01:00
Philip Dubé 51fcf4d2c6 Add trick for using blue fire on mud walls (#4810) 2025-01-08 05:49:55 +01:00
Pepper0ni 349aac10be Fix some flipped entrance data in Entrace Rando (#4828)
* fix a reversed entrance entry

* whitespace pls

* fix market entrance IDs
2025-01-07 21:33:18 -05:00
Archez a00df04ffd Fix Naborru fight CS for child and with entrance skips (#4821) 2025-01-07 18:54:48 -05:00
Philip Dubé 47ba512351 Clean up enemy logic (#4816)
* Fix logic thinking naked adult can clear wolfos grotto

Use CanKillEnemy more

* GERUDO_WARRIOR. Can defeat with a lot more than swords

* one more flare dancer

* Put defeating Gerudo Warrior with slingshot/bombchu behind trick
2025-01-07 19:32:52 +01:00
aMannus 61a1d12ffe Fix shuffled fairies despawning (#4823) 2025-01-07 19:32:20 +01:00
Pepper0ni 6ec71964a1 fix ITEM_00's giving twinrovas check (#4820) 2025-01-06 14:36:12 -07:00
Pepper0ni cb738306d8 Actually fix issues with log settings (#4813)
* remove taking settings from a loaded spoiler instead of the imGUI settings

* actually fix most SpoilerLoad issues

* fix vanilla saves making future generations have so settings

* remove extra comment
2025-01-06 07:34:51 +01:00
Philip Dubé 2f8bb02502 fix assertion error due to CanUse(RG_BRONZE_SCALE) (#4814) 2025-01-05 22:36:04 -07:00
briaguya 34f77dda92 address some controller duping issues (#4805)
* try no wgi

* bump

* bump to latest LUS main
2025-01-05 21:32:54 +01:00
Philip Dubé 7267b47a83 check tracker: don't show GS from wrong quest when always showing GS (#4803)
* check tracker: don't show GS from wrong quest when always showing GS

also fix comparing `char*` to `""`

* IsQuestOfLocationActive
2025-01-05 19:36:34 +01:00
aMannus 23466e5a5e Freestanding Shuffle fixes & extract to separate file (#4808)
* Freestanding fixes

* Copy paste fail

* Temporary vanilla items fix
2025-01-05 19:10:46 +01:00
Pepper0ni 700c1a808d remove taking settings from a loaded spoiler instead of the imGUI settings (#4812) 2025-01-05 19:09:04 +01:00
aMannus 537a57c361 Introduce in-game Randomizer Settings menu, remove plando mode (#4804)
* Initial mockup

* Rip out part of plando mode, implement rando settings menu

* MVP new randomizer flow

* Translation support and code cleanup

* Fixes and more cleanup

* Fix whoopsie

* Fix whoopsie 2
2025-01-05 18:42:45 +01:00
Pepper0ni 55e1af9e81 Fairysanity (#4744)
* Define VB for fairy group spawning

* Add skeleton of new files for fairy shuffle

* Add option to enable/disable fairy shuffle

* Add field to fairy entities to hold randomizer data

* Expose the current grotto id, or find it if not shuffled

This is necessary since, unlike chest or scrub grottos,
fairy fountains, lacking any elements that would normally
differ between grottos, often have identical respawn data.
This change enables fairy shuffle to correctly identify
which fairy fountain was entered so it could load the right
checks.

* Initialise fairy groups if detected

* Randomize first set of fairies

* Make randomized fairies collectible

* VBify fairy healing customization

* Add remaining grotto fairies

* Add remaining fairy group spawns

* Override bean sprouts spawning fairies

* Define bean sprout fairy checks

* Add HasItem and CanUse entries for magic beans.

* Define logic for bean sprout fairies

* Enabling looking up fairies by z coordinate

* Add Temple of Time Gossip Stones

Logic might look a little weird. While the Gossip Stones
respond to Sun's Song, the scene transition takes priority,
so the fairies aren't actually obtainable. Adult does not have
day and night versions and is fully capable of acquiring the
fairies with Sun's Song.

Song of Time is similar, but rather than being dependant on
age, it's dependant on the timesaver to switch ages anywhere
with Song of Time. In this case, the fairies still spawn,
but the age transition deletes them before giving the chance
to collect them. While I could've chosen to ignore this and
simply require the player to disable the enhancement before
playing if it's their only option, I instead decided to
accomodate the enhancement and require one of the other songs
in order for the check to be in logic.

* Disable quick age change around gossip stones to simplify logic

* Add remaining gossip stone fairies

* Finish gossip stone fairies

* Add Desert Colossus Oasis

* Restrict fairy type

Somehow, it was previously possible for Navi to get detected
as a randomized fairy and rendered as an item. I was not
able to reproduce the behavior, but this should prevent it
from happening again.

* Add overworld special fairy spots

* Add mini-dungeon fairy song spots

* Add remaining dungeons except Shadow

* Add Shadow Temple fairies

* Add fairy check flags to the save editor

* Filter fairy checks from check tracker

* Add hints for fairy checks

* get fairysanity as far as I can for now

* fix a few obvious issues

* now builds

* try to convert FairyOnVanillaBehaviorHandler to vardic args

* convert RegisterFairyCustomization to REGISTER_VB_SHOULD

* fix some generation issues

* remove the list of fairy locations

* fix up logic

* more logic changes for gossip stones

* try silly thing for windows

* more stupid

* more dumb testing

* more testing

* small fixes

* implement inside fence storms fairy

* add inside fence storms fairy to logic

* remove duplicate hints (stupid conflicts)

* oops

* Rewrite game interfacing code of fairy shuffle

* Better function names

---------

Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
Co-authored-by: aMannus <mannusmenting@gmail.com>
2025-01-05 14:52:27 +01:00
aMannus 7021230fd5 Fix jabu pot locations (#4811) 2025-01-05 13:42:08 +01:00
aMannus f8fa4416de Port over ShipInit from 2Ship (#4756)
* Port over ShipInit and transform Moon Jump as example

* Clean up moon jump

* Updated moon jump structure & cvar defines
2025-01-05 10:48:49 +01:00
inspectredc f0b02d6c7e Custom Tunics (#4774)
* Custom Tunics

Co-authored-by: MoriyaFaith 46070717+MoriyaFaith@users.noreply.github.com

* Works for necessary scenarios

* make variable static again
2025-01-05 10:05:12 +01:00
Pepper0ni 91720a3857 Fix forest tooltip again and fix logic issue in fishanity age split (#4801)
* first forest tooltip again

* Fix logic issue with fishanity age split
2025-01-05 09:38:35 +01:00
Malkierian bbc4cc3305 Fix shield invert tooltips and X-axis application (#4802)
* Update Forest and Carpenters CVars in the migrator.

* Fix shield invert tooltips and X-axis application.
2025-01-04 00:41:14 -07:00
Malkierian 8648cdeca5 Fix the GBK give after completing the triforce in triforce hunt. (#4800) 2025-01-03 15:40:30 -07:00
Pepper0ni a9113aa7ba set the logic context to the main save when initing the save (#4796) 2025-01-03 10:04:57 -07:00
Jordan Longstaff 1b6508556d Fix Broken Giant's Knife flag not resetting (#4608)
* Fix Broken Giant's Knife flag not resetting

* Force setting on in rando

* Fix flag when checkbox is toggled
2025-01-03 00:16:03 -07:00
Jordan Longstaff 1a040b3198 Skip Ganondorf boss battle intro (#4693) 2025-01-03 00:14:49 -07:00
briaguya 822d93880d bump lus (#4793) 2025-01-02 23:52:30 -07:00
Malkierian f5b5690361 Make Let It Snow toggle always visible in Silly Cosmetics. (#4759)
* Make Let It Snow toggle always visible in Silly Cosmetics.

* Add tooltip.
2025-01-02 23:44:47 -07:00
Philip Dubé 5155905efa fix 3 trick locations from spirit to ice cavern (#4792) 2025-01-02 23:07:40 -07:00
Philip Dubé 6133ebe135 cleanup indentation around trees drop sticks (#4778)
* cleanup indentation around trees drop sticks

* combine the range check
2025-01-02 23:07:14 -07:00
Jordan Longstaff 7e481c3f69 Rename code file for inventory functions (#4783) 2025-01-02 23:06:50 -07:00
Philip Dubé d70c061c5e minigames: render ammo even when out-of-minigame ammo is infinite (#4785) 2025-01-02 23:06:27 -07:00
briaguya e57a052468 Update GAME_CONTROLLER_DB.md (#4784) 2025-01-02 18:22:50 -07:00
Philip Dubé fceb083dc0 check tracker: fix Clear (#4791)
when pressing Clear the input is cleared but list was not updated
2025-01-02 18:22:15 -07:00
Pepper0ni 0544c494e6 Fix 2 broken rupees in ice cavern (#4789) 2025-01-02 14:43:56 -07:00
Pepper0ni 237f8b903a Fix scarce and minimal item pools removing shuffled sticks and nuts. (#4787)
* fix scarce and minimal item pools removing stick and nut upgrades when they are shuffled.

* improve clarity
2025-01-02 14:12:12 -07:00
Pepe20129 966a86c508 Tricks Cleanup (#4740)
* Quick cleanup

* Re-add experimental tag

* Cleanup and small explanations

* Implement RT_DAMAGE_BOOST_SIMPLE & RT_HOVER_BOOST_SIMPLE

* Update tricks.cpp

* Move glitch status to a tag

* Fully remove the unused LENS & BKSKIP tags

* Enable some disabled tricks

* Add RT_ZF_GREAT_FAIRY_WITHOUT_EXPLOSIVES
2025-01-02 09:44:30 -07:00
Pepper0ni 0d0e03bedc fix cheese logic (#4786) 2025-01-02 09:44:15 -07:00
Pepper0ni 396e2fd5ff fix freestanding tracking (#4782) 2025-01-01 15:09:23 -07:00
Philip Dubé 4c6a2a4b64 fix potsanity looking at deku tree MQness when dealing with pots between quests (#4773)
* fix potsanity looking at deku tree MQness when dealing with pots between dungeons

also don't need a loop for a range check

* share logic between placing freestanding & pots

* fix settings typo

* fix all freestanding items still being shuffled

this reinstates original freestanding method of filling in unused locations,
but also extend logic so that when only dungeons have freestanding shuffled
we don't render overworld freestanding as 3d versions until collected

* lift optimization check
2025-01-01 13:26:41 -07:00
Extloga 21e55563b4 Additions and fixes for two translations in hint_list.cpp (#4771)
* Fixes for the German translation in hint_list.cpp

* Additions for two translations in hint_list.cpp

* Fixes for two translations in hint_list.cpp

* Fixes for two translations in hint_list.cpp
2024-12-29 08:30:31 -07:00
Reuben D'Souza fc8d581efb fix: readme typos (#4768)
* fix: change complier to compiler

* fix: repeated the
2024-12-27 22:25:25 -07:00
Pepper0ni 32c20b6ebe several small fixes (#4762) 2024-12-26 11:51:16 -07:00
Archez 61e91526cd Fix transition wipe not rendering properly (#4757) 2024-12-26 08:26:04 -07:00
briaguya f7b8ddccfd don't use magic numbers in EnItem00_CustomItemsParticles (#4728)
* don't use magic numbers in `EnItem00_CustomItemsParticles`

* Update particle enums, add deku/stick bag RGs (#377)

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2024-12-25 21:18:20 -07:00
Philip Dubé 3ac06d4afc fix missing newline in merchant option text (#4758) 2024-12-25 21:16:42 -07:00
Malkierian 2dccacc7f9 Change Kakariko Guard Gate Exit destination name to Bottom Exit rather than Middle. (#4752) 2024-12-25 21:14:35 -07:00
Pepper0ni 1f99dcf56a Clean up Kakariko logic and fix some errors, move AtNight into CanGetNightTimeGS. (#4748)
* fix kakariko logic

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_kakariko.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-12-25 21:14:21 -07:00
aMannus 1c2fbba709 Convert audio sliders from float to int (#4709)
* Audio sliders float -> int

* Implement migrator

* Must construct additional if statements
2024-12-23 12:35:56 -07:00
Pepper0ni e8cf9a61cc Fix fortress pots being considered dungeon in pot replacment (#4749)
* Fix fortress pots being considered dungeon in pot replacment

* change to use IsDungeon, make IsDungeon cleaner
2024-12-23 19:16:53 +01:00
Philip Dubé 781bbb85ae remove out of bounds array access, matching upstream fix (#4751) 2024-12-22 23:05:04 -07:00
Pepper0ni 9ea9100787 Freestanding Rupees/Hearts Shuffle (#4686)
* Enable freestanding items other than heart pieces and keys

* Add option to disable freestanding rupee & heart shuffle

* Add items to pool

* Actually add shuffle setting

* Define overworld locations

* Add logic for overworld freestanding checks

* Add freestanding items for child dungeons.

* Add checks for Ice Cavern and Bottom of the Well

* Add checks for Forest Temple and Gerudo Training Grounds

* Add checks for Fire Temple and Water Temple

* Add Shadow Temple checks

This does not include the spinning pots rupees, even though
they're included with freestanding rupees in the N64 randomizer
as they would require dedicated overrides for the code for
the pots in question.

* Define Spirit Temple and Ganon's Castle hearts

* Add remaining checks to dungeon definitions

* Fix missing logic

* Add freestanding checks to Save Flags Editor

* Fix flags for Zora Fountain underwater rupees

* Add option to enable freestanding shuffle for either dungeons or overworld

* Add missing MQ checks and fix mac & windows compile error

* Improve description and add hint text

* Update logic for Bombchu fixes

* Add missing Spirit Temple MQ hearts

* Add missing settings entries

* Actually add Forest Temple trick to the tricks menu.

* Re-add Ice Cavern lobby rupee

* go over MQ logic

* review logic on non-MQ checks

* convert all freestandings to location based

* add option enum and fix jabu exit logic

* fix mislocated freestandings

* fix mislocted freestandings

* Fix some mislocationed checks

---------

Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
2024-12-22 11:16:00 -07:00
briaguya ff24581281 Fix actor inits happening too early (#4742)
* fix dogs not running

* clean up kak gs fix

* clean up scrub leader fix
2024-12-21 08:08:48 -07:00
Pepe20129 6fb974bfeb Rando Cleanup (#4741)
* Delete empty files

* Small Cleanup

* Remove some now useless comments

* Re-add log
2024-12-21 08:08:40 -07:00
Jordan Longstaff 845e37936e Skip water level change cutscenes in Water Temple (#4726)
* Skip water level change cutscenes in Water Temple

* Fix disappearing HUD issue
2024-12-21 07:52:34 -07:00
Jordan Longstaff c5923fafcf Fix Door of Time collision when skipping cutscene (#4734) 2024-12-21 07:47:37 -07:00
Jordan Longstaff dd11751b43 Rename code_80043480.c from decomp (#4731) 2024-12-20 18:26:42 -05:00
Pepper0ni 35e0a7ce10 Remove excess magic from the MQ GTG pots (#4710)
* remove excess magic

* change rupees to hearts
2024-12-20 18:09:59 -05:00
Pepper0ni c17b55b465 Improve KZ hook (#4732)
* improve KZ hook

* Adjust KZ hooks to permit early eyeball frog in rando

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

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Update soh/soh/Enhancements/game-interactor/GameInteractor.h

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-12-20 17:44:35 -05:00
Pepper0ni 1edd41e807 Fix freeing gorons cutscene leaving link in cutscene state until the goron actor is killed (#4712)
* Fix goron cutscene

* Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c
2024-12-20 14:56:36 -05:00
Jordan Longstaff e7e5b1190a Skip playing cutscenes of Pierre spawning (#4736) 2024-12-19 16:28:23 -07:00
Pepper0ni 6daa680a61 Fix Closed forest tooltip (#4733)
* Fix Closed forest tooltip

* forgot to save
2024-12-19 16:27:55 -07:00
briaguya 885e8f7360 collision viewer "apply as decal" default on (#4727) 2024-12-19 10:10:37 -07:00
Malkierian a7d082246f Rename all instances of "Training Grounds" to "Training Ground" to match the many that are already there as well as the in-game name. (#4730) 2024-12-19 10:44:16 +01:00
Malkierian 0afffe24fe Fix Dungeon Type Spoiling (#4719)
* Make new `SpoilAreaFromCheck` function to spoil areas when getting maps or a first check in a dungeon that isn't spoiled by entrance.

* Add scummed check dungeon spoiling on load.
2024-12-18 21:42:36 -07:00
Archez fd8bd31507 Fix camera mode not following boomerang with first person rang (#4716) 2024-12-18 23:54:55 +01:00
Eric Hoey 380d4c66f8 add bottles and greg to sparkle list (#4720) 2024-12-18 23:54:13 +01:00
Malkierian 3419928f5d Fix Save Prompt Cursor on Quest/Misc Item Tracker Windows (#4694)
* Fix quest menu cursor "moving" in the background in the save game prompt.
Fix misc item tracker also being able to select R and L/Z in save prompt.
Include MigrationAction entry removal from item count fix PR.

* Fix formatting.
2024-12-18 15:03:51 -07:00
Pepper0ni 03e9331d7e Fix forest temple lift softlock (#4713) 2024-12-18 15:01:42 -07:00
Archez f7701a73c5 Fix incorrect entrance value for links house in entrance rando (#4717) 2024-12-18 13:34:06 -05:00
Malkierian 64eadad8c1 Copy Assets with "If Different" Variants, CMake bump (#4714)
* Change copy assets procedure to use "if different" variants of the copy commands.
Bump minimum cmake to 3.26 to accommodate those variants.

* Change MSVC_CMD asset copy command to VS_COPY_ASSETS_CMD, change setting it to only be on Visual Studio build chain.
2024-12-18 00:10:20 -07:00
Archez 6485f72283 ci(linux): fix mkdir not working with cached entries (#4711) 2024-12-17 19:51:07 -05:00
Archez 4bf608a051 ci(linux): install libzip without crypto, bump sdl from 2.28.5 -> 2.30.3 (#4708) 2024-12-17 16:58:42 -05:00
briaguya 5d978c11c4 bump lus/support lus changes (#4701) 2024-12-16 21:12:45 -05:00
Malkierian e1a53a77d4 Surround BeginTable() calls and table-related draw code in if(){} blocks to fix resize crash. (#4700) 2024-12-16 12:09:25 -07:00
Jordan Longstaff 2a3bdca8a2 Skip Goron Link's forced dialogue (#4688)
* Skip Goron Link's forced dialogue

* Rename VB flag
2024-12-15 22:15:31 -07:00
Malkierian add5347126 Properly check for pre-existing gInjectItemCounts before setting the new separate CVars. (#4692) 2024-12-15 15:20:51 -07:00
Jordan Longstaff 0f167d119b Skip Biggoron's waking up cutscene (#4689)
* Skip Biggoron's waking up cutscene

* Allow fast speaking and trading
2024-12-15 14:00:43 -07:00
Jordan Longstaff 1cf3319936 Skip fire arrow spawn cutscene after shooting sun (#4635)
* Skip fire arrow spawn cutscene after shooting sun

* Fix

* Reorganize VB flags in enum

* A bit of VB cleanup
2024-12-14 14:43:26 -07:00
Archez c6eb165cf1 Fix GfxPrint shadow for HD fonts and some cleanup (#4681) 2024-12-14 14:39:40 -07:00
Jordan Longstaff bb41931a55 Rename a lot of actor movement-related functions from decomp (#4680) 2024-12-14 22:38:24 +01:00
aMannus 3a8ba03ce8 CrowdControl random buttons fix (#4679)
* CC random buttons fix

* Archez's fix
2024-12-14 22:31:29 +01:00
Malkierian 4b07a6f59a Re-implement old toggles for Dpad and Right Stick Ocarina Playback. (#4660) 2024-12-14 22:31:10 +01:00
Rozelette e0f25905c2 Add pulsate boss icon enhancement (#4651) 2024-12-14 12:00:28 -07:00
Jordan Longstaff 5d8e7740ef Rename two Actor functions from decomp (#4674) 2024-12-13 15:56:42 -07:00
aMannus 1a5632e3b5 [RANDO] Shuffle Pots (#4592)
* Potsanity proof of concept

* Hide pot item cutscenes for very frequent items

* Add 1 new pot to the item pool

* V1 custom pot model

* V2 pot model

* Pushing for help. lol

* Format clean up on added hint_list entries.
Removal of WriteIngameSpoilerLog call that was unneeded.

* THREE_ACTOR_PARAMS -> TWO_ACTOR_PARAMS and hints in a loop

* Lost woods pots logic

* Realign Pot Checklist in Location_list.cpp

* Correcting some values and adding Master Quest pots.

* Remove vanilla placements

* Re-order enums + start hints per region

* Fix build

* Break up shuffle pot options to dungeon/overworld/all

* Fixes

* Prepare default pot contents, fix/add dungeons

* Fix dungeon/overworld only settings

* Updates to Parameters and RHT information

* Remove unused hints

* Add proper check tracker entry exclusion

* Tweak items to skip cutscenes for

* Vanilla Drop List

* Update magic to blue rupees

* After merge fixes

* Fix Ganondorf's Lair pots

* Fix check tracker + minor stuff

* Unlock early GBK door

* Minor fixes

* More minor stuff and start of logic entries

* Fix TWO_ACTOR_PARAMS overlap between pots

* De-dupe defines

* Add missing water trial pot

* Update to develop-rando

* VBify pots progress

* Cleanup and fixes

* Overworld logic done

* Cleanup and fix item00 queues

* Implement skipping cutscenes for common items

* Revert "Implement skipping cutscenes for common items"

This reverts commit fe44916588.

* Ganons tower pot not spawning item fix + cleanup

* Fix ganon's tower, barinade, water temple pots

* VBify ganons key door

* Lizalfos Pot addition (example)

* Separate MQ pots in randomizerTypes.h

* Fix build

* Fix linux build (?)

* DC/Jabu/Botw/ start of Forest Pots (NMQ)

* Remaining Dungeon Non MQ Pot Location Logic

* After merge fixes round 1

* Post merge fixes round 2

* Apply MQ pot logic

* Re-align some stuff

* Cleanup, more work on locationlist

* Start of handling dungeon pots in item pool

* Finish dungeon pots in item pool

* GTG MQ Pots

* Review comments round 1 & code cleanup

* Fix ganon's lair pots being behind GBK in logic

* Update soh/include/z64actor.h

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Address review comment

* Fix logic for pots in Fire Temple

* Fix GtG MQ pots, fix water temple pot logic

* Review Comments

* Logic review part 1

* Logic comments part 2

---------

Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-12-13 21:15:40 +01:00
Pepper0ni ab863653ce Do some renames for the new settings arrangment (#4668)
* Automate settings text to enum conversion

* rename fortress setting into carpenters

* More renames for the new spoiler log layout
2024-12-13 12:30:13 -07:00
Pepper0ni 278f2e6f15 Spinner skip but no chime (#4678) 2024-12-13 12:29:57 -07:00
Pepper0ni f66b234ce2 Consistently name Gift from Rauru (#4677) 2024-12-13 12:29:32 -07:00
Kenix3 c7341ec544 Bump LUS (#4670)
* Bump LUS

* bump LUS

* bump lus (again)

* bump LUS again
2024-12-13 01:05:13 -07:00
Jordan Longstaff 2e71a826b2 Skip walking away cutscene when freeing Gorons (#4639)
* Skip walking away cutscene when freeing Gorons

* Revert a change too far

* Restore Goron walking out animation
2024-12-12 08:25:07 -07:00
lemonslut 16d69e4a28 Update macOS development dependency list (#4648)
- Adds a few extras I had to install to build
- Adds link to [homebrew](https://brew.sh/)
- Adds `brew install ...` command to setup script
2024-12-09 23:27:35 -05:00
Pepper0ni 7d80d1c85d Fix boss hints and gift from sages hint. (#4634) 2024-12-09 19:24:51 -07:00
Jordan Longstaff f852d70767 Properly replicate NaviTalk kill check (#4647)
* Restrict disabled Navi workaround to Dodongo's Cavern

* Properly replicate NaviTalk kill check

* Move `*should = false` out of condition
2024-12-09 19:24:37 -07:00
Jordan Longstaff 35dcf93c51 Adult Ruto function and property names pulled in from decomp (#4654)
* Adult Ruto function and property names pulled in from decomp

* Align name changes more with decomp

* Nope, missed a couple more
2024-12-09 19:23:57 -07:00
Jordan Longstaff 6823b6990b Name alpha-distance update function from decomp (#4658) 2024-12-09 19:23:14 -07:00
Pepper0ni ad23298500 Automate settings text to enum conversion and remove OptionGroups from the process (#4636)
* Automate settings text to enum conversion

* rename fortress setting into carpenters
2024-12-09 19:18:00 -07:00
Archez 6470522a02 Fix temp flags transfering in dungeon chains and various issues with voidouts in mixed entrances (#4637) 2024-12-09 19:17:26 -07:00
Jordan Longstaff de6f5d8b65 Skip Water Temple portcullis opening cutscene (#4641) 2024-12-09 09:14:47 -07:00
Jordan Longstaff 23dc4257a7 Skip one-point cutscene of Amy's blocks falling (#4645) 2024-12-09 09:14:01 -07:00
Jordan Longstaff d0bfa6860b Skip the Mweep cutscene (#4646)
* Skip the Mweep cutscene

* Fix bug: Ruto's letter was not removed from bottle
2024-12-09 09:13:45 -07:00
Jordan Longstaff 4010229de5 Rename bomb flower fuse setting field (decomp) (#4653) 2024-12-09 09:13:28 -07:00
Jordan Longstaff 2d37098379 Rename Sleeping Waterfall state machine function (decomp) (#4655) 2024-12-09 09:13:18 -07:00
Jordan Longstaff d8d9119de9 Rename Kakariko Well water level function (decomp) (#4656) 2024-12-09 09:13:08 -07:00
briaguya 732b8c10f7 bump LUS (#4638)
* bump LUS

* bump OTRExporter
2024-12-08 11:46:31 -07:00
Archez bccd96966f Fix crash when toggling alt assets while paused (#4621) 2024-12-06 10:36:38 -05:00
Malkierian 09f297392f Fix GetItemObtainabilityFromRandomizerGet check for sticks and nuts not accounting for not shuffling stick or nut bags and also not starting with related ammo. (#4633) 2024-12-05 21:35:27 -07:00
Archez 276db580e8 Fix display list offset values and unhandled opcodes (#4618)
* Fix display list offset values and unhandled opcodes

* fix unknown opcodes on custom chest textures
2024-12-05 11:00:39 -05:00
Pepper0ni c3e4579cba Change GetSelectedOptionText to contextSelection and clean up some junk (#4613)
* Change GetSelectedOptionText to contextSelection and clean up some junk

* more cleanup

* readd a fail alert as an assert
2024-12-04 11:01:25 -07:00
Archez 9b169af3f5 Fix find newline looping to have additional break early cases (#4614) 2024-12-04 11:01:08 -07:00
Pepper0ni b442c15322 Skip Shadow Statue Cutscene (#4612)
* Skip Shadow Statue Cutscene

* cleanup
2024-12-03 12:30:14 -07:00
Pepper0ni b1d1852655 Rewrite vanilla jabu logic (#4603)
* rewrite vanilla jabu logic

* cleanup

* more cleanup
2024-12-03 09:44:36 -07:00
Garrett Cox 291561667b Update hook debugger to pull from GameInteractor ptrs rather than cloning the data every frame (#4609) 2024-12-03 09:44:18 -07:00
Caladius 82d70a2029 Add Timer Display Window (#4553)
* Add new timer window and display options

* Fix overflow spacing

* Icons for Timers

* Swap Labels for Icons.

* Additional Timers

* Navi Timer Icon

* Clean up unused Defines.

* Code clean up and double check. Ready for Review

* Update from Suggestions

* Update magic numbers, correct indentations hopefully

* One moooooore thing

* Undo z_param change

* Updates
2024-12-03 09:44:10 -07:00
Malkierian 8b60cea1f9 Split "Starting Consumables" to Sticks and Nuts. (#4583)
* Split "Starting Consumables" to Sticks and Nuts.
Setup disabling for them based on status of bag shuffles.

* Updated to split index options format.
2024-12-03 09:18:22 -07:00
Extloga f2cc278f8c Fixes for the English text in several files (#4605)
* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in static_data.cpp

* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in settings.cpp

* Fixes for the German translation in hint_list.cpp
2024-12-03 09:18:07 -07:00
Pepper0ni e704c5592b fix text Poeverflow on Poes hint (#4598) 2024-12-03 09:11:01 -07:00
Garrett Cox bbe3bb72b6 VBify Ruto (#4602) 2024-12-02 17:56:32 -07:00
Malkierian 4edb83e2f3 Fix errors introduced by actor check reveal PR from references to GetSelectedOptionIndex. (#4607) 2024-12-02 13:46:16 -07:00
Garrett Cox fe9bf7d956 Adjust Actor_GetProjectileActor to behave more like hardware, fixing an issue with Dark Link (#4606) 2024-12-02 12:40:29 -07:00
Philip Dubé caf0dc40c7 update check tracker when actor tells what they reward (#4568)
* update check tracker when actor tells you what they reward

do not render price when 0

* feedback
2024-12-02 09:04:21 -07:00
Eric Hoey 19d1fd5545 Boomerang Reticle and First-Person Aiming (#3374)
* First-person, reticle, sway, menu, and presets

* Put sway back behind reticle, adjust aim height for age

* block vanilla + comments

* new documentation method

* second try formatting

* Correct boomerang distance

* Update for CVAR changes

* Fix alignment?

* Condition cleanup

* Change reticle range to match bow behavior

* remove magic values
2024-12-02 09:03:47 -07:00
Jordan Longstaff 9b74a09955 Zora's River waterfall always open, take two (#4459)
* Zora's River waterfall always open, take two

* Remove improper, redundant checks in hook

* Move all checks into update hook

* Add Randomizer setting for keeping Sleeping Waterfall open

* Change header exports to extern exports

* Remove "closed as child" option for rando setting

* Oops, missed a spot

* A bit more cleanup: simplify a redundant condition

* Unify hook handlers

* Oopsie, fix build error

* Add "play only once" option

* Force Sleeping Waterfall enhancement in rando mode

* Force enhancement only if waterfall is Open in rando

* Restore forced-open waterfall in rando

* Fix rando condition in hook

* Fix? rando entrance logic for OI

* Fix build errors
2024-11-30 18:59:38 -07:00
Pepper0ni ee628059d8 Fix Lab Man actor breaking and the invisible UI glitch (#4599)
* fix Lab Man actor breaking and the invisible UI glitch

* address review
2024-11-30 18:59:13 -07:00
Malkierian 573d846cd7 Add saved status setting to StartingItemGive (#4600) 2024-11-29 20:35:38 -07:00
Malkierian 55960da402 Separate option values into context and menu indexes. (#4581)
* Separate option values into context and menu indexes.

* Fix option index reference in `CleanCheckConditionString`.

* Update soh/soh/Enhancements/randomizer/3drando/location_access.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Restore `const` classification to functions returning `string&`.

* Restore `const` classification to getter functions.

* Restore a couple more `const`s; cleanup header.

* Final consts; rename `SetCVar` to `SaveCVar`.
2024-11-29 17:58:30 -07:00
Malkierian f7378a9f76 Cosmetics cleanup (#4587)
* Convert defaultColor from ImVec4 to Color_RGBA8.
Convert defaultColor's ints to floats when being applied to currentColor in the macro.

* Address previous cleanup comments.
Surround `Message` tab in an advanced check.

* Resolve warnings and cleanup whitespace/formatting.

* Make Color_RGBA8 constructing function because... platform differences...

* Function name clarification.

* Remove default color conversion, reference default colors directly in CosmeticOption initialization.
2024-11-29 11:38:40 -07:00
Pepe20129 a92c08dea1 Fix some situations where trade items spoiled (#4569)
* Fix some situations where trade items reverted

* Update z_game_over.c

* Hopefully fix mac
2024-11-27 10:33:50 -07:00
Pepper0ni 5b7b38f198 Add some +/- buttons and clean up timesavers menu (#4571)
* Add some +/- buttons and clean up timesavers menu

* Better implement Image Button Style
2024-11-26 18:29:27 -07:00
Malkierian c960433832 Setup AdvancePond to run in OnItemReceive. (#4585) 2024-11-26 18:28:50 -07:00
Malkierian 13789a1dfb Prevent void and teleport traps from being added to the shuffle pool while fishing in the pond. (#4586) 2024-11-26 18:28:24 -07:00
Pepe20129 7ccb3ac7c3 Cosmetics Changes (#4275)
* Clean CosmeticsEditor.h

* Add CosmeticsEditor_GetDefaultValue

* Add message text cosmetics

* Format cleanup

* Remove dependency on 3drando random functions

* Fix rainbow for every cosmetic

* Add "Rainbow All" & "Un-Rainbow All"

* Add HookshotChain cosmetic

* Add Nayru's cosmetics

* Add Farore's cosmetics

* Add Din's cosmetics

* Add Title card cosmetics

* Update CosmeticsEditor.cpp

* Add Copyright text cosmetic
2024-11-26 15:48:58 -07:00
Pepper0ni d0f7d30c16 Fix OnePoint cutscenes, make Skip Glitch cutscenes into Exclude Glitch Cutscenes (#4575)
* Fix OnePoint chutscenes, make skip glitch cutscenes into exclude cutscenes

* address comments
2024-11-26 12:43:20 -07:00
Malkierian 31120b7188 Add master sword to ItemIDtoRandomizerGetMap to prevent assert crash in Return_Item after custom GIE was removed for MS. (#4584) 2024-11-25 20:36:35 -07:00
briaguya 7662fa4c3c fix readme link formatting (#4576)
* fix readme link formatting

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2024-11-25 11:21:45 -07:00
Archez 8926d8f784 Fix array out of bounds in entrance init (#4566) 2024-11-22 16:23:15 -07:00
Pepper0ni 5520c185bf Limit retries of the randomiser quest menu seed generation (#4564) 2024-11-22 16:22:39 -07:00
Pepper0ni 9c99a1e515 Fix the "Greg as Reward" option in logic (#4565) 2024-11-22 16:22:27 -07:00
Pepper0ni eda97653d6 Save timesplits colour to cvar and reload it on init. (#4572)
* save timesplits colour to cvar and reload it

* fix mac and match cosmetics with the color conversion

* more stupid other platform fixes
2024-11-22 10:28:10 -07:00
Pepper0ni f0e5b9c22b learning how to VB (#4563) 2024-11-19 18:46:44 -07:00
Philip Dubé 01719283b3 typo: incorrect variable assignment (#4560) 2024-11-19 16:29:15 -07:00
Pepper0ni 3e313bd063 Enhacment presets no longer reimport randomiser settings (#4561)
* Enhacment presets no longer reimport randomiser settings

* make the change only apply to the Randomiser button instead
2024-11-19 16:22:54 -07:00
Archez 53b72a2507 Update PR artifacts actions and exclude soh.otr (#4558)
* update pr artifacts actions and exclude soh.otr

* remove deprecated save-always for windows cache
2024-11-19 18:18:18 -05:00
Malkierian 3f2d8ddc01 Fix infinite freeze in rando on GS pickup. (#4555) 2024-11-19 15:40:23 -07:00
Malkierian 4850041943 Fix Gift from Sages not showing in tracker (it's a valid shuffle now!). (#4556)
Bit of tracker code cleanup.
2024-11-19 15:39:42 -07:00
Malkierian 5dd3b39a83 Fix Plando Window Crash on new installs (#4557)
* Add check for Randomizer folder existing, and creating it if not, to plando window.

* Changed seed list population to just bail if the Randomizer folder doesn't exist.
Added button disabling to prevent crashes loading or saving empty structures.
2024-11-19 15:39:30 -07:00
Pepe20129 9bed5af33b OTRGlobals cleanup (#4251)
* Remove unused headers

* Move all "ResourceMgr_" functions to a new file

* Don't transitively include SaveManager

* Move cvar prefixes to a new header

* Add missing includes

* Update OTRGlobals.cpp

* Fix build

* Address review

* Fix some of the errors

* Update gameplaystats.h

* Update z_en_in.c

* Hopefully fix the linux issues

* Fix Linux issues for real this time, I checked

* Update ResourceManagerHelpers.cpp

* Update z_obj_mure2.c

* Post-merge fixes

* Fix build (hopefully)

* Post-merge fixes

* Update z_file_nameset_PAL.c

* cleanup some unnecessary headers (#7)

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-11-19 09:44:44 -07:00
Caladius 70f3dfa8c5 Built-in Plandomizer Editor (#4532)
* Add Plandomizer Editor Window

* UI, Ice Trap Editor, Hint Editor

* Drop down for previous seeds, wip hash display.

* Clean Up, Hash Icon Editor

* Updates based on suggestions

* Replace Tint with Color

* Add Boss Soul Icon

* Corrected App Folder Directory and updated from suggesstions.

* Add Hints to Junk Pool

* Utilize RandomElement for hints

* Hint update for pep

* apply patch

* Fix Sorting issue on Linux

* Skeleton Key, Shop Items, Milk, Fishing Pole, Ocarina Buttons, Loser Rupee fixed

* Fix stretched note icons.

* Remove Triforce, add Triforce Pieces. Centered Song Notes.

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

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

* Update hint_list.cpp

One spelling, removed 1 hint.

* Update Plandomizer.cpp

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-11-17 12:44:54 -07:00
Malkierian 53e2fe4974 Refine mixed pool options to be more dynamic. (#4545) 2024-11-13 08:49:10 -07:00
Malkierian 6230901f29 Fix duplicate use of CVar for invert shield aiming. (#4544) 2024-11-12 22:02:22 -07:00
Jordan Longstaff 1eff613aa6 Fix skipping twisted hallway cutscenes (#4536) 2024-11-12 13:09:08 -07:00
aMannus c8e460cebe Heal goron necks (#4540) 2024-11-12 12:58:41 -07:00
Garrett Cox a6fbadc04e Fix issues with vanilla item queue when skipping things, resolves #4537 (#4538) 2024-11-12 10:18:57 -06:00
Pepe20129 ffc132a01b Clean __osMalloc.c (#4351)
* Remove #ifs

* Add `NODE_IS_VALID`

* Fix current macros

* `NODE_GET_NEXT` & `NODE_GET_PREV`

* Add macros

* Use macros and general cleanup

* Fix build (hopefully)

* Address review
2024-11-11 17:46:25 -07:00
Archez f12a2bbbb7 Port over decomp updates for vis* and reimplement vismono fb (#4533)
* Port over decomp updates for vis*

* move vismono framebuffer handling to file
2024-11-09 12:51:31 -05:00
Pepper0ni 2603b97366 Rewrite MQ spirit logic (#4534)
* rewrite MQ spirit logic

* fix oversights
2024-11-09 09:40:00 -07:00
Pepe20129 c8815a26f7 Improve ganon tower logic (#4526)
* Improve ganon tower logic

* Fix build and address review

* Update locacc_ganons_castle.cpp

* Update locacc_ganons_castle.cpp

* Update locacc_ganons_castle.cpp

* Update logic.cpp

* Update randomizerTypes.h

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-11-09 09:34:05 -07:00
Jordan Longstaff 068cceff36 Update SFX symbols from decomp (#4531) 2024-11-08 20:36:57 -07:00
Archez 4eeb01905d pull in decomp updates for z_play (#4522) 2024-11-07 09:52:21 -07:00
Pepper0ni 1d9d273a57 Rewrite MQ Water Temple Logic (#4520)
* Rewrite Storage Temple Logic

* fix a boss room oversight

* Fix some random errors

* cleanups
2024-11-07 09:51:29 -07:00
Garrett Cox d07cbe8395 Adjustments to change age cheat and time travel enhancement (#4512) 2024-11-06 19:38:57 -07:00
Jordan Longstaff a919b6a5a0 Fix skipping Adult Ruto one-point cutscene (#4519)
* Fix skipping Adult Ruto one-point cutscene

* Kill Ruto's actor instead of leaving her to swim up

* Change to Story cutscene

* Change to extern function
2024-11-06 19:38:44 -07:00
Archez dabd0c25bd Move collision viewer draw to hook and fix empty nametags (#4523) 2024-11-05 21:50:59 -05:00
Malkierian 894d3c00d3 Change ENTR_BOMBCHU_SHOP_0 to ENTR_BOMBCHU_SHOP_1 in entrance.cpp to fix interior shuffle crash. (#4521) 2024-11-04 20:16:27 -07:00
Archez d8f8b6e6b9 Fix Bluewarp handling with entrance rando (#4517)
* force bluewarp skips on when entrance rando is enabled

* Fix second visits and other issues with lingering bluewarp state
2024-11-04 20:07:21 -07:00
Garrett Cox 20ac33d380 Fix #4506, Mido crash in intro cutscene with Open Forest (#4511) 2024-11-02 10:50:48 -07:00
Pepper0ni 0d17e72dca Rewrite MQ Shadow Temple logic (#4502) 2024-11-01 08:15:27 -07:00
Archez ec1f03e8a2 Pass for some warning fixes (#4501) 2024-10-31 07:42:27 -07:00
Archez 98fa5663b4 Hookify more Entrance Rando handling (#4500)
* Hookify more entrance rando handling

* fix bad enums
2024-10-31 00:27:20 -04:00
Malkierian 6e024ed15d Entrance Enum and Name Refactor (#4484)
* Rename entrance enums for clearer location by name.
Change entrance name strings to be clearer for single-entrance tracking.

* Rename grotto macros to remove "RANDO", and move them to `randomizerTypes.h` for use elsewhere.

* Add entrance enums to rando's entrance.cpp.
Rename a couple RandomizerRegions for consistency.

* Swap entrance ids to enum values in rando's entrance.cpp.
Few more renames for clarity and consistency.

* Adapt entrance tracker to utilize new names and only display original source and substituted destination.
Few more renames for consistency.

* Missed a space in the tracker output.

* Restore pre-digit names of some enums, name great fairies more consistently.
2024-10-30 19:44:34 -07:00
Jordan Longstaff 705bbea144 "Skip forced dialog" no longer skips optional Navi hints (#4450) 2024-10-30 19:14:22 -07:00
Archez c232e13fff Fix getItemEntry macros (#4499) 2024-10-30 16:15:39 -07:00
Pepper0ni 71e9e616b6 Rewrite MQ Jabu Logic (#4493)
* rewrite MQ Jabu Logic

* Add swim requirement to the rang jump trick as link hints the water first
2024-10-29 14:05:09 -07:00
Pepe20129 6bd3b1d160 Move & refactor Randomizer_Item_Give (#4492) 2024-10-29 09:24:56 -07:00
Pepper0ni b706532754 Attempt to find area problems (#4494)
* Better insulate the code against no areas and fix misc issues

* remove a stray reminder comment
2024-10-28 17:35:36 -07:00
Malkierian 108d5061d4 Small Warnings Refactor (#4477)
* Disable all warnings, even in release, on the `src` directory.
Resolve math macro duplication warnings.

* Suppress LUS warnings.

* Modify it to utilize a variable that defaults on but can be specified in command line to disable it.
Prevet total compile option overwrite for LUS.

* Remove unnecessary unset and cache parameters.

* Document warnings flag in BUILDING.md
2024-10-28 17:30:11 -07:00
Malkierian fd8e98ed12 Fix rando presets (#4491)
* Fix application of preset values to sliders.

* Add new rando CVars to preset list, and alphabetize.
2024-10-28 08:25:26 -07:00
Garrett Cox 2c08fca46c Add faster rupee accumulator (#4490) 2024-10-28 08:25:15 -07:00
Malkierian 1df91890fe Windows Build Assets Tweak (#4486)
* Change CMake process to copy assets necessary for OTR creation to VS run directory.
Remove reference to ExtractAssets target from Windows build instructions.

* Unify build instructions where appropriate across PC platforms.
Clarify commented parts of some commands.

* PR feedback.
2024-10-28 00:02:04 -07:00
Pepper0ni d6ebed59dc Fix oversight in Static Hints, add some asserts (#4488) 2024-10-27 22:24:14 -07:00
Malkierian e5f4c091f8 Add condition to disabling Generate Randomizer button if file is loaded to prevent rando context confusion. (#4487) 2024-10-27 14:40:30 -07:00
Pepper0ni 438a8bff79 Rewrite MQ GTG and Ice Cavern logic (#4483)
* rewrite GTG logic

* Rewrite MQ Ice Cavern Logic
2024-10-27 14:16:51 -07:00
Malkierian 169e39ebad Adds item names to filtered parameters. (#4485) 2024-10-27 09:02:51 -07:00
Garrett Cox 804584e79d Fix rainbow bridge sound spam 2024-10-26 00:12:27 -05:00
Garrett Cox 20ddc7a536 Redo frog VB 2024-10-25 22:40:35 -05:00
Pepper0ni 7f4bd3e98c Fix any dungeon location pool and fire boss door logic (#4480)
* fix any dungeon location pool and fire boss door logic

* Make GetDungeonLocations consistent

* add All to name
2024-10-25 17:51:50 -07:00
Pepper0ni 6ca55aadbd Rewrite MQ Ganon's castle logic (#4469)
* rewrite ganon MQ logic

* typo fix

* remove excess brackets to avoid compiler errors
2024-10-25 17:51:07 -07:00
Pepe20129 a91243ec01 Fix msvc internal compiler errors on mq logic (#4478) 2024-10-25 20:19:01 +09:00
Malkierian 89fe9c1ccb Fix Phantom Ganon fast death time saver crash. (#4476) 2024-10-24 21:55:17 -07:00
Pepper0ni 8638810b9d Fix bean buy and warp song text crashes (#4470) 2024-10-23 17:34:44 -07:00
Malkierian 2ffd62a5b1 Fix scrubs behaving as if shuffled despite not being. (#4468)
Convert shop tracking to checking for shuffled.
Change "Hide right-side shop item checks" to "Hide unshuffled shop item checks" on the check tracker.
2024-10-23 08:35:25 -07:00
Caladius 75a0979bc7 Built-in Time Splits [v2.1] (#4455)
* Adds 2 new Hooks, OnTimeStamp and OnPlayerHealthChange.

* Re-add Timesplit code

* Committing custom Assets

* Commit Asset definitions

* Adding Windows

* Fix Modal Window and others

* Time Splits v2 new Hooks etc.

* Fixing Time Displays

* Adding Big Poe split

* Update Options Tab

* List Preview and Removing Split Entries

* Allow Split Table to resize

* Fix Window Color and Adding Non Items to Split List

* Correct Song Image Skew
2024-10-22 10:17:30 -07:00
Malkierian 8c304d54b2 Fix wallet display for More Info with non-rando saves. (#4467) 2024-10-22 10:10:50 -07:00
Malkierian dee885622e Add InjectItemCounts to the migrator. (#4466) 2024-10-22 09:46:50 -07:00
Pepper0ni a005075bd2 Fix Settings Loading Issues (#4465) 2024-10-22 08:50:05 -07:00
Pepper0ni dd9253808b Rewrite forest MQ logic, add swim to lake logic (#4464)
* rewrite forest logic, add swim to lake logic

* fix small oops

* oops
2024-10-21 19:18:50 -07:00
Jordan Longstaff 3a4bd1164a Add freeze timer hook for Gold Skulltula collection (#4445)
* Add freeze timer hook for Gold Skulltula collection

* Remove unused player references

* Replace magic number text IDs

* Separate hook for freezing player on token collection

* Revert one unintended change
2024-10-21 19:18:34 -07:00
Malkierian 17d8487730 Modify all (4) instances of Flags_GetRandomizerInf() returns that were u8 to s32 to avoid value overflow. (#4463) 2024-10-21 14:55:46 -07:00
Garrett Cox 92c791b7c0 Add simple notifications system 2024-10-21 13:20:33 +00:00
Malkierian 4663bd152a VBify poe collector giving for rando. (#4458)
* VBify poe collector giving for rando.

* Forgot an include.

* Further refinement so all the action happens in the handler. Virtual full restoration of vanilla code flow.

* Restored 1000 point messages before rando item give.

* Cleanup redundant GI Should call.
2024-10-20 23:49:32 -07:00
Jordan Longstaff b2e99b8ff5 Zora's River waterfall opens instantly (#4454)
* Zora's River waterfall opens instantly

* VB cleanup

* Move it all to VB hook

* Fix build errors

* Null safety
2024-10-20 23:36:47 -07:00
Garrett Cox df6763257b Refactor network usage and adapt Sail/CC to changes 2024-10-21 01:30:32 +00:00
Garrett Cox 29d7c54250 Move CrowdControl/Sail files 2024-10-21 01:30:32 +00:00
Malkierian 6d1d57d19a Restores check color functionality. (#4451) 2024-10-20 01:03:47 -07:00
Pepper0ni 323c67b47c Change CanUse to include an assert, fix some bad uses of CanUse (#4444) 2024-10-20 01:03:09 -07:00
Pepper0ni 81db6e3996 refix loach check (#4448) 2024-10-20 01:00:54 -07:00
Jordan Longstaff c644f9f4be Restore plus/minus buttons on King Zora slider (#4449) 2024-10-20 01:00:46 -07:00
Pepper0ni ba38d985b3 Rewrite MQ fire logic and fix MQ deku logic (#4443)
* commit to merge

* rewrite fire and fix deku
2024-10-20 01:00:39 -07:00
Garrett Cox cbd35d0ef5 Tweaks to cmake globbing/source_grouping (#4439) 2024-10-18 09:35:07 -07:00
Malkierian a7cb7da9fc Change SoH Input Editor CVar to CVAR_WINDOW and remove definition for LUS's input editor CVar from the cmake. (#4438) 2024-10-17 22:06:43 -07:00
Malkierian 7e78abf01c Restore tooltip to skip text, add tooltips to slow text speed and match text speed. (#4437) 2024-10-17 22:03:13 -07:00
Archez f1841a20f3 add gfx debugger support (#4345)
Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-17 19:05:31 -07:00
Patrick12115 ed32a2820c Ageless Item Fixes (#3908)
* Fixes Mirror Shield and MS sheath

* Added Hookshot Tip&Chain and more edge cases

* Update presets.h

* Revert "Update presets.h"

This reverts commit 95d952ba23.

* More fixes

Bow showing up for slingshot gallery minigame is now fixed, as well as a rouge instance shrinking links hand when I didn't mean for it to

* CVar stuffs

* Fixes

* Fix more sheath stuff and bgs hand

* Add the P
2024-10-17 18:42:14 -07:00
Malkierian 5a23da4ce0 Make ConfigUpdaterV2 use CVarClearBlock instead of manually scanning. (#4435) 2024-10-17 18:41:38 -07:00
Malkierian dba74f8805 Disable Lens Effect On Unequip (#4432)
* Add logic to turn off lens effect when replacing it on a button with another item, but not swapping.

* Swap to real fix for dpad equips bug, c/o Rozelette.
2024-10-17 14:36:53 -07:00
Pepe20129 b5c6545d6f z_player documentation 2024-10-11 (#4407)
* Add names to start of typedefs

* Idle stuff

* 2 functions

* Player state flags

* Name functions + misc

* ActionChange => ActionHandler

* Some player unks

* More player unks

* Header misc

* Misc

* More misc

* Player Actions

* Missed comments

* Move ship specific stuff

* Fix build

* CsCmdActorAction to CsCmdActorCue

* Fix build
2024-10-17 11:55:31 -07:00
Malkierian 3c5d9faba3 Blair Config Migrator V3 (#4148)
* Config migrator to handle CVar macros/sections, as well as a few other changes since MacReady.

* One more round of cleanup.

* Move config migrators above SetupGuiElements to allow for migrated window variables to register before windows use them to determine visibility.

* One more.

* Adapt DpadEquips, NavOnL, and PauseAnyCursor CVars to accommodate Pablo moving them to enhancements.
2024-10-16 21:58:31 -07:00
Malkierian b7bbb1bb8a Make starting_inventory.cpp add the Master Sword based on RSK_STARTING_MASTER_SWORD. (#4431) 2024-10-16 21:54:55 -07:00
Malkierian 469797478e Force global rando context's Logic child to release its parent Context reference. (#4429) 2024-10-16 20:52:36 -07:00
Jordan Longstaff 52d1a98f41 Add "All" button for item count messages (#4430) 2024-10-16 20:52:23 -07:00
Jordan Longstaff c1295f33fe Unify "No forced dialog" settings in combo box (#4425)
* Unify "No forced dialog" settings in combo box

* Rename options
2024-10-16 19:45:51 -07:00
Malkierian e178df3e0c Change SkipIntro to check any entrance shuffle rather than just overworld spawns. (#4428) 2024-10-16 16:39:35 -07:00
Malkierian 262ec4817b Re-sync deku stick cheat CVar name. (#4427) 2024-10-16 15:54:55 -07:00
Jordan Longstaff b3ce27efed Add separate speed option for slower text (#4424) 2024-10-16 15:32:56 -07:00
Jordan Longstaff dcd26b2de8 Segregate count-injected item get messages by type (#4422)
* Segregate count-injected item get messages by type

* Move item count messages submenu up next to Items submenu

* Rectify presets

* Oops - deleted a comma by mistake
2024-10-16 14:18:24 -07:00
Pepper0ni 43b04a32cd rewrite MQ deku tree logic (#4418) 2024-10-16 14:16:58 -07:00
Jordan Longstaff da79e5e015 Fix fast speed skipping quick text markers (#4416) 2024-10-15 20:50:10 -07:00
Malkierian 45af1028af Fix options and sliders to prevent index out of range issues. (#4421) 2024-10-15 17:59:20 -07:00
Jordan Longstaff 960c9c4fd1 Fix heart piece injection messages to cover all counts (#4417) 2024-10-15 17:03:36 -07:00
MegaMech 90c07bb3ec Update BUILDING.md (#4415) 2024-10-15 10:05:31 -07:00
Malkierian eb7f12560b MVP to get shops hooked up to the queue. (#4412) 2024-10-15 08:31:16 -07:00
Garrett Cox eafe15ddf2 Fix bean salesman bug (#4410) 2024-10-14 19:11:33 -07:00
Pepper0ni 4dbb86e980 fix some bean salesman oversights (#4405) 2024-10-14 16:02:46 -07:00
Pepper0ni a9df9cbce4 Rewrite Bottom of the Well Logic (#4398)
* rewrite MQ botw and add some helper functions

* small fixes

* got bored, rewrote vanilla botw
2024-10-14 16:01:37 -07:00
Yomitht 86ad99f3c8 More Mweep (#4192)
* More Mweep

Adjusted the "King Zora Speed" timesaver enhancement to allow for slowing the animation down.

* [Fixed] Crashing when applying preset settings

Adjusted presets.h to expect a float instead of an integer for the "MweepSpeed" timesaver enhancement setting.

* Cleaning some things up

Deleted an unnecessary line, and switched the "King Zora Speed" option back to multiplier display instead of a percentage.

* Update SohMenuBar.cpp

Switched back to multiplier display

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-14 16:01:18 -07:00
aMannus 3daf7a2ee5 Merge pull request #4387 from KatDevsGames/patch-5
automated QA
2024-10-14 14:36:34 +02:00
Jordan Longstaff 68fcc5921b Fix text speed enhancement with slowed down text (#4072)
* Correct behaviour of text speed enhancement

The text speed enhancement increases the size of the text crawl in the number of characters displayed in each step. This messes up certain parts of dialogue that were meant to be displayed in a certain way (like Ganondorf's "Heh heh heh..."), and in places where the text crawl is meant to be slower than normal, it just looks clunky. The text crawl speed enhancement is a wonderful feature, but smoothing out should be easily doable, and is a more correct implementation.

* Fix text speed for normal text

* Flatten if statements
2024-10-13 22:41:30 -07:00
Malkierian 65fbf2cc41 Restore Vanilla Tracking (#4394)
* Re-enabled vanilla tracking in the check tracker. Utilized Rando::Context for check status.

* Restore check tracker window custom background functionality.
2024-10-13 22:22:49 -07:00
Pepper0ni d0905f365a fix thieve hideout overworld status (#4403) 2024-10-13 17:50:57 -07:00
Patrick12115 d935028a54 [Fixes] Fix left hand when holding Hammer (#3992)
* Fixin it

* PreFIX

* Added Prefix to wrong Cvar

Oops
2024-10-13 17:33:34 -07:00
Pepe20129 914e838630 ImGuiUtils (#4222) 2024-10-13 17:29:22 -07:00
Pepe20129 1ffa23b5a9 Clean controller menu (#4223)
* Improved Ocarina Controls

* Move speed modifiers to modifier section

* Move DpadEquips, PauseAnyCursor & NaviOnL

* Add DpadHoldChange to menu

* Change DpadHoldChange checkbox to match default

* Change cvars from CVAR_SETTING to CVAR_ENHANCEMENT

* Update z_parameter.c
2024-10-13 17:28:39 -07:00
Pepper0ni e62f26d3bf add 2 missing settings to ParseJson (#4404) 2024-10-13 12:10:31 -07:00
Malkierian 05962baf45 Tracker Debug Performance, Vanilla Save Fix (#4397)
* Improve check tracker performance.

* Fix vanilla saves getting randomizer quest assignment.
Fix trying to load blank data blocks from save file.
Prevent writing randomizer block, even if empty, when save type isn't rando.
2024-10-12 23:38:07 -07:00
Pepper0ni 64ee12c11f Attempt to fix improperly set areas (#4396)
* Fix obvious issues

* Fix another stupid oversight

* remove test vars
2024-10-11 08:34:23 -07:00
Archez 6e025588a5 Fix how the gMtxClear is extracted and used by the Jabu scene DLs (#4375)
* fix how the clear mtx is extracted and used by the jabu scene DLs

* bump OTRExporter
2024-10-10 16:59:44 -07:00
Archez bd7155179e Port pause menu framebuffer handling from 2Ship (#4346)
* bring over framebuffer effects methods

* Implement framebuffer capture and drawing for pause menu

* revert hookshot and title cards to draw using original buffers

* remove old game over crash fix

* Adjust mirror mode handling for kaleido

* Avoid flashing the hud when pausing
2024-10-10 16:45:11 -07:00
Archez 7192783451 Fix interpolation for Kaleido (#4391) 2024-10-10 19:38:38 -04:00
Pepe20129 70a2141351 Mask improvements (#3431)
* Add gKeepMasks

* Add gSaveMasksToFile

* Add gKeepMasksOnDeath & gKeepBunnyHoodThroughTime

* Fix mask bleedthrough

* Update cvar names

* Change bunny hood enhancements to all mask ones

* Consolidate multiple enhancements into PersistentMasks

* Move keeping masks thru loading zones to PersistentMasks

* I forgot

* Update z_player.c

* Update z64save.h

Merge commit excluded this removal for some reason.

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-10 16:16:41 -07:00
Yomitht 62713bb551 Added Project Overview to README (#4235)
* Added Project Overview to README

This is a couple additional lines of text clarifying the high-level structure of the project, mostly for the benefit of anyone new joining the project.

* Added "Further Reading" section

Points out and lists the contents of the "docs" directory for ease of access to the documentation therein.
2024-10-10 16:16:29 -07:00
Pepe20129 6d71eb3867 Use path xml parser & fix empty dl references (#4217) 2024-10-10 16:11:43 -07:00
Caladius 6d8480c16a Allow for User Selected Enemies for Enemizer (#4236)
* Allow for User Selected Enemies for Enemizer

* Updated CVar Entry List

* ImGui Cvar Updates

* GetSelectedEnemies Cvar Update

* Populate List if empty and if menu selection changes for Enemy Randomizer/Enemy List

* for loop for Menu Bar cvars, added enemyNameList table to get actor names

* Update variable for macOS/Linux

* Alphabetical Order you say?
2024-10-10 16:11:35 -07:00
Malkierian a6110dbc51 Update SoH's input editor window for the gui rework, and set it as what's opened by the Controller Configuration button. (#4352) 2024-10-10 16:11:19 -07:00
Pepe20129 7891ac2d6a Get patch word automatically (#4372) 2024-10-10 16:11:10 -07:00
Pepper0ni 4ba5384810 fix rupee messages (#4392) 2024-10-10 16:10:58 -07:00
aMannus cd8d40466a Merge pull request #4389 from HarbourMasters/develop-rando
[NO SQUASH] develop-rando upstream
2024-10-10 22:47:20 +02:00
Patrick12115 21cf978255 Add back lod = 0 code (#4354) 2024-10-09 20:16:43 -04:00
Archez 5d311fac9f Convert GameInteractor_Should hook to use variadic arguments (#4383)
* Convert _Should to use variadic args

* Convert everything to use va_arg properly

* Update shop hooks to va_args

* Wrong Function

* Update hook_handlers.cpp

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-08 20:20:09 -07:00
Pepper0ni 9df3c41d8a Add support for multiple areas in regions and locations and remove Impa's house shuffle limits (#4385)
* Add support for multiple areas in regions and locations and remove impa's house shuffle limits

* Spelling corrections

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-08 20:20:00 -07:00
Malkierian 4ac800f716 Upgrade GitHub actions using deprecated Node version (#4371) (#4388)
* Upgrade Ccache action to v1.2.14

* Upgrade Ccache action to v1.2.14

* Upgrade GitHub checkout action to v4

* Upgrade another cache action

Co-authored-by: Jordan Longstaff <JordanLongstaff@users.noreply.github.com>
2024-10-08 15:19:49 -07:00
Pepper0ni 10921b2ade Unify Shops, Scrubs and Merchants price and hinting code (#4321)
* commiting to branch switch

* shop,scrubs and merchant code unified

* last cleanups

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* attempt to fix reviews DOES NOT BUILD

* TIL include order matters

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Note to self, Don't code tired. *proceeds to ignore note*

Co-authored-by: Angelo Bulfone <boomshroom@users.noreply.github.com>

* fix typos

* post merge

* commiting to check something

* probably cleaned up, needs a doublecheck

* fix presets

* address reviews

* fix small shopsanity count oversights

* undo rename

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
Co-authored-by: Angelo Bulfone <boomshroom@users.noreply.github.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-08 14:33:58 -07:00
Pepper0ni a9fbd8243f Mitigate playthrough sphere jank and remove sphere enforcement in logic when not needed. (#4361)
* preparatory clean ups

* structure done, but failes to generate

* fix the bugs, but triple seed gen time on the benchmark

* fix massive generation time increases

* Remove sphereing when not needed as an optimisation

* post merge fixes

* reset the current sphere when toggling an event to cover another cause of jank

* address reviews
2024-10-08 13:22:19 -07:00
Lexi Rose 961ef572a4 automated QA 2024-10-08 15:11:01 -05:00
Pepe20129 2822dfc3f3 VBify (#4255)
* Convert ocarina buttons & skip scarecrow song to VB

* Move most of boss rush & rupee/key counters to VB

* Move BossRush_HandleCompleteBoss to VB

* Convert boss timestamps to VB

* Move being able to open doors to VB

* Convert Entrance_OverrideWeatherState to VB

* Move boss souls to hook_handlers.cpp

* Update hook_handlers.cpp

* Move infinite upgrades to hook_handlers.cpp

* Move skeleton key to hook_handlers.cpp

* Move swim and child wallet to hook_handlers.cpp

* Move ganons boss key to hook_handlers.cpp

* Move triforce hunt to hook_handlers.cpp

* Move randomizer sheik spawn to hook_handlers.cpp

* Update BossRush.h

* Convert spoiling items to VB

* Move load game stuff to hook_handlers.cpp

* Move warp song handling to hook_handlers.cpp

* Convert being able to play bowling to VB

* Move shooting gallery man handling to hook_handlers.cpp

* Move spirit temple silver block removal to hook_handlers.cpp

* Fix build

* Move last beehive stuff to hook_handlers.cpp

* Fix build

* Add VB_CLOSE_PAUSE_MENU

* Add VB_BE_ABLE_TO_SAVE

* Add VB_RENDER_YES_ON_CONTINUE_PROMPT

* Add VB_SPAWN_BLUE_WARP

* Add VB_BLUE_WARP_ADULT_WARP_OUT

* Add VB_BG_BREAKWALL_BREAK

* Convert Saria stuff to VB

* Remove now unused check

* Add VB_GANON_HEAL_BEFORE_FIGHT

* Update hook_handlers.cpp

* Fix blue warp offsets

* Fixes from review

* Improve documentation

* Update BossRush.cpp

* Fix my stupidity

* Fix #4327

* Update hook_handlers.cpp

* Fix blue warps

* Use ultralib types & clean header

* Replace options amount macro with BR_OPTIONS_MAX

* Remove unused includes

* Remove accidental line doubling

* Tweaks to boss rush (#6)

* Update GameInteractor_HookTable.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-10-07 14:36:21 -07:00
Pepper0ni 7450cee0b2 Fix Seed generation when adult trade is off and some shield logic (#4384) 2024-10-06 17:59:01 -07:00
Christopher Leggett bcf9f392f0 Kaleido Menu for Miscellaneous Collectibles (#3852)
* Adds in-game display of certain rando collectibles.

Before, these were only available through the Item Tracker ImGui Window. With this commit, they can be accessed via holding C-Up on the Map Screen. Currently I've added Greg and Triforce Pieces (when applicable) to this menu. Boss Souls, Ocarina Buttons, and eventually Silver Rupees will be added later.

* Adds ocarina buttons to in-game display

* Initial pass on rendering the text on a black background.

* Starting to render boss soul icons

* Better alignment and rendering of Boss Soul icons.

* Adds icons prefixing the list entries.

* Switches boss souls to 32x32 icon.

* Partially working Matrix/Vtx implementation

Currently hardcoded Greg text, replacing map screen completely.

* Now rendering properly thanks to Archez!

* Better implementation of accessing the new page.

- now attached to Quest status instead of Map
- now triggered by a toggle instead of holding a button
- now has its own background (temporarily save screen but will be replaced with something custom later)

* Make KaleidoEntry's reactive to game state

Adds Greg proper and Triforce Hunt to the Misc. Collectibles Page.

* Conditionally render Triforce Hunt

* Documentation/Cleanup

* WIP Ocarina Buttons rendering

* Working ocarina buttons display

* Renders buttons as Gray instead of using Grayscale

This may seem inconsistent, but with Grayscale they technically render as different shades of gray, especially with custom cosmetics. With this they now render as the same shade of gray.

* Makes Ocarina Icon gray when no buttons have been collected.

* Adds Boss Souls.

Currently they run off the menu, need to implement scrolling.

* Implement Scrolling for the menu.

Need to figure out how to throttle the stick inputs still.

* Moves input handling to draw function.

I hate it but that's how Kaleido does it and there's some input throttling logic in there, so in order to make this feel like a kaleido menu I have to also handle input in the draw function.

* Removes custom cosmetic handling of Ocarina Buttons.

I've chosen not to respect the cosmetics for the sake of accessibility
and color contrast, but the code is still present and commented out in
case we want to reverse that decision.

* Hopefully fixes mac build errors.

* Implements update function via Hook.

* Another mac fix hopefully

* Cleans up unused code from the rectangle based attempt.

* Clean up more unused code

* Commit Boss Soul icon

* Fix typo

* Remove commented code

* Improve toggle functionality

* Re-introduce cosmetic matching for ocarina buttons

* Revert some unnecessary formatting changes

* Fix cursor/page turning issue

More improvements to come here (drawing arrows, custom text at the bottom, etc.)

* Fix some more formatting changes

* One last batch of formatting reverts
2024-10-06 17:58:45 -07:00
Pepper0ni bd142a0eed Fix duplicate fishing checks and a crash with fishing rod hint (#4288)
* actor breaking

* should be VB fishing

* attempt to VB fisherman

* commit fishing hell for review of VB viability, untested

* fix rando, vanilla still broken. close enough

* wait i forgot to remove that

* small fix
2024-10-05 13:32:06 -07:00
Extloga 63eaae8774 Additions for the German translation in hint_list.cpp (#4381)
* Additions for the German translation in hint_list.cpp

* Additions for the German translation in hint_list.cpp
2024-10-05 13:29:46 -07:00
Pepper0ni 0a3eeb8339 Rewrite DC MQ Logic (#4355)
* Doodongs Cavern

* rewrite MQ DC Logic

* forgot some cleanup

* remove an unused region

* post-merge cleanups

* change CanUse for HasITem on gorons braclet

* git ate half the rewrite

* more small error fixes

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2024-10-05 13:29:38 -07:00
Malkierian c4d211bc3a [V3] Fishsanity Cleanup (#4380)
* Fix crash in fishsanity's flag set handler.
Code format cleanup.
Fix typedef warnings in fishsanity.h.

* Actually fix the crash now.

* Relocate RCTYPE check for broader application.
2024-10-05 09:58:41 -07:00
Pepper0ni 33c74a10b7 Fix items being placed on hint locations (#4379) 2024-10-02 17:27:43 -07:00
Pepe20129 84130b8046 Add 5, 6 & 7 item shopsanity. (#4280)
* Format shops.cpp

* Add 5, 6 & 7 item shopsanity

* Guarantee a bombchu refill

* Fish first shop item index

* Clean up NonShopItems

* Split count options

* Improve item ordering

Ensure potions, blue fire and fairy on shopsanity 6 and less.
There are no hearts in the first 28 items (the ones from n64 rando).

* Post-merge fixes
2024-10-02 16:31:11 -07:00
Pepper0ni 7110e40374 Remove UpdateHelpers, massivly speeding up Seed generation time (#4366)
* Update helpers removed

* clean up some unused vars

* remove now-misleading comment

* remove redundent timer

* address reviews

* Address commits
2024-10-02 16:02:13 -07:00
briaguya b575aaaf99 simply all loaches logic (#4325)
the previous all loaches logic required modifying every `isLoach` check
throughout the file. this had the benefit of allowing live-toggling all fish
to be loaches or not, but added a lot of complexity.

this changes the logic to just set `isLoach` on each fish instead, and updates the tooltip to note an area reload is required
2024-10-02 09:37:22 -07:00
Angelo Bulfone 89ca2149b9 Refactor Fishsanity (#4268)
* Move Fishsanity hooks out of mods.cpp

* Assign fish check flags.

* Clean up location_list for fish

* Prevent fishing from giving double items.

* Remove no-longer-used mPendingFish

* Override draw function for fishing

This allows the draw functions in the source
overlay to match the decomp.

* Override draw function for EnFish

* Overwrite grotto fish params based on respawn data

This allows the randomizer to identify them
automatically without any special logic.

The catch (pun not intended) is that grotto fish don't respawn,
and they were previously identified for such by a params value of 1,
so the logic to take care of that needed to be duplicated.
Thankfully it wasn't very much.

* Add a VB for catching actors in bottles.

* Clean up remaining code after conversion to VB

This breaks fast FastDrops for bottle pickups, though
readding it shouldn't be too hard with the VB hook.

* Remove fishsanityParams from Fishing

It was previously used to track exactly which fish would be
released after a catch, but since both candidate fish
would've been caught, they both wouldn't give checks
anyways.

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Re-add FastDrops for bottle pickups.

While this does diverge from the vanilla decomp, I'm uncertain of
the order that hooks are run, so I put it back into z_player.c
just to be safe. A future commit can do a more proper implementation
using VB hooks.

* Move initialisation of fishsanity hooks into hook_handlers

* Change location constructor to take RandomizerInf instead of uint8_t

This shouldn't have an effect as-is, but other changes can add
additional randomizer flags that can end up pushing fishsanity check
flags out of the range of a uint8_t, causing the cast to overflow
and not be stored correctly. With this change, it could still overflow
when writing to the flag field of Location, but said field is unused
and the parameter is really only for setting the flag for the
SpoilerCollectionCheck.

* Render uncaught overworld fish as randomized item

* Fix windows build by zeroing unused field

* Fix scene parameter type

This resolves a build error on Mac and Windows, but Linux
instead buries it in the sea of warnings, meaning I can't
see it until it fails CI.

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-10-02 09:37:15 -07:00
Pepper0ni e36dcefe54 Fix seed generation issues caused by Location Table changes (#4378) 2024-10-02 09:36:58 -07:00
Pepe20129 0cfd535fe6 Clean up location table (#4258)
* Remove categories

* Remove SpoilerCollectionCheckGroup

* Remove unused Location constructors

* Remove LocationType

* Remove unused SpoilerCollectionCheckTypes

* Remove hints' isVanillaCompletion, it's always false

* Remove SpoilerCollectionCheck::None

Same effect as default constructor

* Fix mistake

* Update location.h

* Deduce RC Area by scene when possible

* Remove useless constructors

* Remove flag in most situations

* Format improvements

* Replace overworldLocations with a function

* Replace shopLocationLists with a function

* Replace gossipStoneLocations with a function

Also add a new RCType for static hints

* Replace scrubLocations with a function

* Replace staticHintLocations with a function

* Replace overworldFishLocations with a function

* Replace pondFishLocations with a function

* Remove RC_TRIFORCE_COMPLETED from GetOverworldLocations

* Update fill.cpp

Re-add filter for dungeonLocations for song shuffle dungeon rewards (and fix erroneous check for song locations there).
Modify songLocations filter for dungeon rewards to check for RCTYPE_BOSS_HEART_OR_OTHER_REWARD and then the two song locations added for it.

* Update fill.cpp

Fix bracketing.

* Apply Pepper0ni's patch

---------

Co-authored-by: Malkierian <malkierian@live.com>
2024-10-01 09:50:47 -07:00
Jordan Longstaff 30029ba6e9 Upgrade GitHub actions using deprecated Node version (#4371)
* Upgrade Ccache action to v1.2.14

* Upgrade Ccache action to v1.2.14

* Upgrade GitHub checkout action to v4

* Upgrade another cache action
2024-09-29 17:44:08 -04:00
Malkierian 668f0fe4c6 Rando V3 - Small UI Cleanup (#4367)
* Change tristate off graphic to none instead of X to avoid confusion.
Modify Combobox and Slider Options to clamp directly to options.size() - 1 instead of just decrementing if current value is higher than max.

* Restore RenderCross line, but commented out.
2024-09-27 22:47:35 -07:00
Pepper0ni 0f47e6394e fix small hint issues (#4358) 2024-09-26 17:35:20 -07:00
Pepper0ni 159d0872d7 remove unused functions (#4313) 2024-09-26 16:26:33 -07:00
Pepe20129 da5cf11449 Hook Debugger (#4323)
* Initial implementation

* Add call number & relax source_location requirement

* Update hookDebugger.cpp
2024-09-26 16:26:12 -07:00
Garrett Cox b3b9216b5c Show interface after item get (when skipping GI) (#4363) 2024-09-25 12:01:59 -07:00
skrawpie 7810f7505a Update settings.cpp (#4362)
100 GS Reward was missing from RSK_GANONS_BOSS_KEY causing indexing issues. Notably, Triforce Hunt was setting Ganon's Boss Key to "Vanilla" rather than "Triforce Hunt."
2024-09-24 10:57:16 -07:00
Garrett Cox 4e4c1c4f8a Handle ignoring 0x3F for navi talk skips (#4364) 2024-09-24 10:56:56 -07:00
Malkierian 0f02201108 SCL Consolidation, Area -> Region (#4356)
* Move all `SaveContext` operations to `Logic` to prepare for encapsulation.

* Rename `Area` to `Region`, `areaTable` to `regionTable`, and all local variables named variants of area to region that were of the `RandomizerRegion` or `Region` types.

* Fix mistaken renames.

* Rename PT_AREA_RESET to PT_REGION_RESET after rebasing on performance timer commit.
Change include path for the timer to absolute rather than relative.
2024-09-23 17:10:29 -07:00
Pepper0ni 0a84d15d9d Implement some basic benchmarking for seed generation (#4353)
* messy first implementation, pushing for verification

* push to test other platforms, add benchmark preset

* more other compiler fixes

* Finish implementing benchmarks

* forgot to reset the timers each run

* do it better

* move timers to thier own file

* forgot to add files
2024-09-21 17:03:48 -07:00
Pepper0ni fca8081a20 Fix crash when preset amount is too high (#4359) 2024-09-20 22:56:32 -07:00
Garrett Cox 5d8841777a Fix missing despawn branch for heart containers (#4350) 2024-09-20 15:37:34 -07:00
Garrett Cox 74c93b0182 Stop disabling dampe checkbox, as it's no longer forced to on for rando (#4349) 2024-09-19 09:17:01 -07:00
Garrett Cox 2434eb82bf Fix for LACS awarding everywhere (#4348)
* Fix for LACS awarding everywhere

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

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-09-19 09:16:31 -07:00
Garrett Cox ee02e503fc Fix issues with faster heavy block lift (#4335) 2024-09-19 09:15:31 -07:00
Garrett Cox da6e4cac91 Remove erroneous Entrance_OverrideBlueWarp (#4340) 2024-09-17 12:30:33 -07:00
Extloga fab63877f0 Rearrangement of the currencies in randomizer.cpp (#4338) 2024-09-17 11:41:09 -07:00
Malkierian 4148d59c48 Check Tracker Re-update (#4322)
* Update check status in the check tracker to the new system. Status and Skipped are now stored in ItemLocation, though still saved separately in the trackerData section.

* Fix shop checks not showing prices when identified.

* Patch fix for check status bleed.
Some cleanup of unused code.

* Small tracker optimizations.

* Fix check hiding.

* Bit more cleanup.

* Unhide the filter and make it work again...

* Fix area totals tracking.
Fix skipped status saving.

* Merge conflict cleanup.
2024-09-17 11:32:52 -07:00
Pepe20129 9c11718341 Add 146 ice trap messages (#4281)
* Add ice trap message suggestions

* Split messages by language

* Re-run build

* Apply Pepper0ni's patch with fixes
2024-09-17 10:43:06 -07:00
Pepper0ni cd92e70b84 Refactor GetAccessibleLocations (#3871)
* saving for branch change

* V0 doesn't work

* crashing in random places halp

* push to rebase

* commit for branch change

* more branch switching

* First apparent working

* fix entrence validation

* comment cleanups

* post merge fixes

* Fix entrences not validating when spawns/owl drops are on but other entrences are not

* remove bombchusFound from the struct too

* Fix issue causing improper bombchu filtering on the playthrough

* text fixes

* submodules pls

* submodules pls pt 2
2024-09-17 10:06:30 -07:00
Malkierian 6cd387ddf3 Fix Deku Mouth for Entrance Rando and Mido Rando Functionality (#4342)
* Restore Deku Tree open as adult with dungeon shuffle.

* Add Mido spawn VB to allow for preventing Mido moving in rando when starting with Zelda's letter and closed deku or forest.

* Use RAND_GET_OPTION instead of OTRGlobals rando context, get rid of IS_RANDO in deku mouth VB handler.
2024-09-17 08:40:38 -07:00
Pepper0ni 1b51750ec0 remove a return 0 (#4347) 2024-09-17 08:26:10 -07:00
Archez e75400a646 Merge pull request #4343 from Archez/merge-develop-rando-sep14
Merge develop -> develop-rando
2024-09-15 00:16:08 -04:00
Archez 8359d2a8f0 Update entrance tracker settings window for modern menu changes 2024-09-14 23:45:10 -04:00
Archez 8bd2f38d22 Merge remote-tracking branch 'origin/develop' into merge-develop-rando-sep14 2024-09-14 23:42:02 -04:00
Archez 19dc4dc0fa Bump LUS (#4341) 2024-09-14 23:13:46 -04:00
Malkierian 7f503c33d2 Concurrency Fix (#4318)
* Removed all CVarLoad uses from code to prevent thread concurrency issues.

* Add mutext locks to save and load functions to prevent concurrent operations between those two.
2024-09-14 22:38:22 -04:00
inspectredc c507d4d9a0 Early Eyeball Frog (#4120)
* early eyeball is real :D

* make cvar

* update cvars

* fix additional cvar check bug
2024-09-12 16:01:57 -07:00
Malkierian b5037a0856 Gui window rework (#4307)
* Converted all GuiWindows to the new separate Begin/End format in current LUS except InputViewer, CheckTracker, ItemTracker and Modals.

* Setup Check, Entrance, Item trackers and Input Viewer to override `Draw()` to bypass the ImGui Begin and End, as they're not intended to go in the modern menu.

* Cleanup.
2024-09-10 15:42:57 -04:00
Extloga 1f85420625 Additions for the German translation in two files (#4304)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-09-02 07:32:38 -07:00
Malkierian 48663d74ac Change Recommended VS build tools from 142 to 143 (#4315)
* Changed references for VS build tools 142 to 143 to reflect current state of development.

* Remove VS 2019.
2024-08-30 11:28:09 -04:00
Pepper0ni 15395defa4 Add jabu box skip door and frog hint exceptions to cutscene skipping (#4300)
* Add jaby box skip door one point to glitchAiding and frog hint exception to NoForcedDialouge

* address review
2024-08-23 10:20:11 -04:00
Pepe20129 e07fc59e55 Add git info to title screen & gameplay stats (#4053)
* Add git info to title screen & gameplay stats

* Change the branch criteria to starting with `develop`

* Update z_title.c

* Change the branch criteria to not having a tag

* Always show both when not a release build

* Only show build version in tagged releases
2024-08-23 10:17:45 -04:00
Archez 01245ae81c Bump LUS (#4301)
* bump lus

* remove undeclared methods
2024-08-18 15:25:21 -04:00
Pepe20129 b6554a8409 Fix skeleton key (#4296) 2024-08-17 20:45:10 -07:00
Pepper0ni 07babaa17b fix link name enhancment (#4295) 2024-08-17 20:44:50 -07:00
Extloga 9d7d4bffa2 Additions for the German currencies in randomizer.cpp (#4289)
* Additions for the German currencies in randomizer.cpp

* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the German translation in z_select.c

* Fixes for the German translation in z_select.c

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-08-17 20:25:38 -07:00
Pepper0ni 9c2e773ce4 Bombchu logic fixes, Add BetterBombchShopping enhancment and some adjacent cleanups (#3733)
* Initial Bombchu rework implementation

* Finish bombchus in logic overhaul

* address reviews

* Post resolution fixes

* fix git being dumb

* Readd Child Wallet To Bombchu Bowling Logic

* post merge fixes

* fix some oversights in bombchu shopping logic

* doesn't work, linker errors

* cleanup old reviews

* Make it build, likely broken by VB

* attempt to fix carpet man second purchse text

* commit to change branch

* mostly have carpet guy working

* badly fix carpet salesman

* fix better bombchu shopping

* fix bombchu drops

* remember you need bombchus in inventory to get drops

* Address reviews

* post-SCL clean up and redo the bombchu ammo logic to apply better to the spirit edge case

* fix oversight which could have allowed for bombchus to logical exist when they shouldn't

* Remove special bombchu playthrough checks which are causing bugs and no longer needed

* fix Slingshot logic reset

* Convert helpers I touched into CanUse and HasItem

* last cleanups
2024-08-17 16:10:11 -07:00
Extloga d3edbcd042 Additions and fixes for the German translation in three files (#4293)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the German translation in z_select.c

* Fixes for the German translation in z_select.c

* Additions for the German translation in hint_list_exclude_overworld.cpp

* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-08-16 09:58:12 -07:00
aMannus 6ea8823de1 Add Total Checks to Check/Item Trackers - devrando edition (#4292)
* Fix fmt in savestates

* Check Tracker Totals
2024-08-15 15:39:50 -07:00
Malkierian bfba2a180a Fix tricks menu (#4278)
* Fix tricks not getting disabled by button click.

* Fix area trees not collapsing on enabled side of tricks list.

* Fix difficulty tag button order for Linux.

* Fix Collapse All, Open All, and Disable All.
Prevent Disable All from disabling all despite areas being collapsed.
2024-08-14 22:27:32 -07:00
Archez 9ceb5579b8 Merge pull request #4294 from Archez/dev-develop-rando-merge
Merge develop -> develop-rando
2024-08-14 14:58:44 -04:00
Archez 35b4da74cb Merge remote-tracking branch 'origin/develop' into develop->develop-rando 2024-08-14 11:38:56 -04:00
Archez 86580fc79f Merge pull request #4290 from Archez/macready-golf-merge
merge Macready Golf -> develop
2024-08-13 20:18:41 -04:00
Archez 651348d2a9 Merge remote-tracking branch 'origin/develop' into macready-golf-merge 2024-08-13 01:09:49 -04:00
Archez 0bc6ca08e0 Bump MacReady Golf (#4279) 2024-08-12 23:26:30 -04:00
Archez 16aaf2f939 Tweak: Implement better extended culling options (#4285)
* implement better culling

* change draw distance to a slider

* remove testing code

* tweak
2024-08-12 19:39:44 -04:00
Extloga f4d951aab8 Additions and fixes for the German translation in several files (#4195)
* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Additions for the German translation in hint_list_item.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Additions for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp
2024-08-11 13:08:42 -07:00
Christopher Leggett 91d1e5970d Fix an issue with a stray Rando::Context shared_ptr hanging around. (#4259)
* Fix an issue with a stray Rando::Context shared_ptr hanging around.

* Fixes accidental leftover from when I found this bug on another branch

* Properly reset randoContext on every save load, not just after save creation
2024-08-10 14:07:03 -07:00
Spodi 3971e3696e Use manifest for windows DPI awareness (#3270) (#4256)
* Use manifest for windows DPI awareness (#3270)

* Update libultraship

* Update libultraship
2024-08-05 19:31:20 -04:00
Nicholas Estelami f11f97e84e Custom Skeleton Fixes for various bosses and enemies (#3436)
* Skeleton Fixes for various bosses and enemies

* cleanup

* revert breakpart changes

---------

Co-authored-by: Adam Bird <archez39@me.com>
2024-08-05 15:20:40 -04:00
Malkierian 483dbea330 Fix RSK for mixing boss entrances. (#4277) 2024-08-04 17:05:29 -07:00
Malkierian c6b05b2087 Change RSK_SHUFFLE instance in mixed pool code to RSK_MIX. (#4276) 2024-08-04 15:32:11 -07:00
Malkierian 03e3258792 It's not master sword. (#4273) 2024-08-02 08:54:25 -07:00
Pepe20129 5e6cd71031 Update item_list.cpp (#4272) 2024-08-02 07:54:33 -07:00
Malkierian aeb85c81aa Item SaveContext Logic (#4237)
* Port initial framework up to latest dev-rando. Includes about 15 items using the SCL structure for tracking.

* Most other item variables ported to SaveContext in UpdateHelpers.

* Removed individual Context retrievals in favor of single local variable in Logic to reference.

* start of some diagnostics.
caught some reverse logic with ApplyItemEffect.

* more diagnostics

* Resolve major logic issue with SetInventory flow in ApplyItemEffect.
Other small logic issues in ApplyItemEffect.

* Added a bit of logging.
Add Double Defense to item effects.

* revert hint gen bypass

* item_list *actually* divorced from logicVar pointers.
Several missed options for ApplyItemEffect, HasItem, and UpdateHelpers added in.
Changed HasItem to a switch block for more performance.
Seeds generate within 10-20 seconds in release mode. Further optimization is assumed possible.

* Some formatting

* Bit more formatting.

* Couple review changes.

* Incorporate progressive upgrades and skeleton key into SCL.
Bit of cleanup.

* Change `inLogic` to static array.

* Fix bug in `BottleCount()` preventing Jabu Jabu from ever being in logic.

* Fix bomb bag HasItem check.

* Fix Gerudo Fortress and Ganon's Castle SmallKeys checks.

* Change all logic use of `bool remove` to be `bool state` and work on the affirmative assumption.

* Forgot the `Set(x)` uses in `Logic::Reset()`.

* Fix fishing pole effect application.

* fishing pole tweak

* Add `RG_BOMB_BAG`, `RG_NUTS` and `RG_STICKS` to `HasItem()`.
Fix silver and gold gauntlet checks in `HasItem()`.
Change Nuts and Sticks helpers to use non-progressive RGs in `UpdateHelpers()`.

* Change mSaveContext to simple pointer.
Set `mSaveContext` to `&gSaveContext` when loading a save file.
Modify `Item::GetGIEntry()` to use rando context's SaveContext pointer instead of the gSaveContext macros.
Utilize `Item::GetGIEntry()` to get real RG of infinite upgrades and set rando infs accordingly, skipping upgrade level incrementing (which was causing overflow of wallets for some reason).

* Rename all remaining references of LogicVar to variants of LogicVal.

* Change final references to song LogicVars to CanUse calls, and remove them.

* Separate equip and rand inf flag maps.
Add Zelda's Letter and Weird Egg rand infs to map.
Consolidate `HasItem` rand inf  lookups using rand inf map and equips using equip flag map.
Maps are static, so can be referenced with `Context::` instead of ctx pointer.
2024-08-01 21:24:24 -07:00
Christopher Leggett cab0871fe7 Fix Zora's Sapphire crash (#4254) 2024-07-29 18:48:49 -07:00
Nick Michael 06b20a05dd Fix Lake Hylia Water Level for Vanilla with Cutscene Skips (#4257)
* Fix Lake Hylia Water Level

* Move logic to SkipBlueWarp handlers
2024-07-29 12:22:57 -04:00
Archez b81a3dd099 Another round of fixes for skip intro and grotto rando (#4253) 2024-07-25 21:09:45 -04:00
Archez e66dada09d Fix grotto handling with the skip intro timesaver (#4252) 2024-07-23 21:31:01 -04:00
Pepe20129 c68cecec71 Rando: Shuffle Hyrule Loach (Rando V3) (#3805)
* Shuffle Hyrule Loach

* Remove rando specific loach text override

* Remove duplicated enhancement from fishsanity

* Re-run Build

* Re-run Build

* Changed to be an option within fishsanity

* Rename cvar and fix check tracker

* Fix build

* Re-run build

* Re-re-run build

* Update z_fishing.c

* Fix AllHyruleLoaches

* Fix static data

* Fix hint spacing

* Restrict loach hint to "Shuffle only Hyrule Loach"

* Update settings.cpp

* Address review
2024-07-23 08:56:44 -07:00
Pepe20129 3bcd93428e Rando: Infinite upgrades (Rando V3) (#3942)
* Infinite Upgrades

* Add "Condensed Progressive"

* VB & fix build

* Update settings.cpp
2024-07-22 09:54:14 -07:00
Archez 7a00658be9 Fix disable lod breaking certain effects (#4245) 2024-07-21 15:30:18 -04:00
Malkierian 7bc2259c82 LUS bump and implement alt assets performance changes. (#4240)
* LUS bump and implement alt assets performance changes.

* LUS ref update.
2024-07-21 15:29:45 -04:00
Angelo Bulfone 081a55ab29 Fix accidental assignment expression (#4248)
A typo from https://github.com/HarbourMasters/Shipwright/commit/a5c0cede12d3a53cb0f1069a5d4a5c4febe991fa resulted in various bugs due to giving every actor the same id.
2024-07-19 23:49:26 -04:00
Pepper0ni 4df4e61eb3 Fix return of Item_Give for stricter compilers (#4244)
* fix return of Item_Give for stricter compilers

* change to just item
2024-07-18 14:42:48 -07:00
Malkierian 3d73faa9a0 Port Graphics Menu lag fix from 2ship. (#4238)
* Port Graphics Menu lag fix from 2ship.

* tweak

---------

Co-authored-by: Adam Bird <archez39@me.com>
2024-07-17 15:57:11 -04:00
Kenix3 134aba4aa0 Fixes crashes on asan related to audio. (#4049)
Found in MM
2024-07-17 14:35:13 -04:00
Pepe20129 8b6c183776 Rando: Skeleton key (#3997)
* Initial Implementation

* Add temporary model to the skeleton key
2024-07-17 09:55:05 -07:00
Pepper0ni 7595a5a65e fix selection only and make MQ dungeon settings set themselves more smartley (#4232) 2024-07-17 09:45:29 -07:00
Pepe20129 a5c0cede12 Rando: Shuffle consumable bags (#3959)
* Main implementation

* Fix sticks & nuts from shops & checks

* Change the models to normal stick & nut

Worth noting that before you have the bags, the refills are blue rupees so there will not be model collision

* Update hook_handlers.cpp
2024-07-17 09:42:56 -07:00
Pepe20129 f2958aea1c Improved rando settings (#3980)
* Initial implementation

* center icons (#5)

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-07-16 20:25:28 -07:00
Pepe20129 8eb6304999 Rando: Keyring tristate (#3960)
* Initial implementation

* Fix build

* Update UIWidgets.cpp

* Update option.cpp

* Update settings.cpp

* Update settings.cpp

* Apply Pepper0ni's patch

Co-Authored-By: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

* Update option_descriptions.cpp

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2024-07-16 20:25:06 -07:00
Angelo Bulfone 2ff795e227 Fix MQ Checks (#4234) 2024-07-16 16:39:18 -04:00
Archez 73be4e5559 Bump LUS for 2cyc color combiner fix (#4221) 2024-07-15 22:24:38 -04:00
Christopher Leggett ba82bfbba6 Fix spawn shuffle when starting age is adult/random. (#4230)
* Fix spawn shuffle when starting age is adult.

* Handle adult start without spawn shuffle

* Handle correct entrance for adult start + spawn shuffle and add comments.

* Fix grotto spawn cutscene skips.

* Fix an issue with randomized starting age.
2024-07-13 16:51:54 -04:00
Pepper0ni a0fda39a75 Force Warp Song Hints off when Warp Songs are not shuffled (#4229) 2024-07-11 10:38:52 -04:00
Pepper0ni 77770ba3b2 fix hint crash on windows (#4227) 2024-07-09 18:57:28 -04:00
Christopher Leggett 7a17fe221f Don't play the intro cutscene on child spawn even if location is shuffled (#4226)
* Don't play the intro cutscene on child spawn even if location is shuffled.

* Fix condition to not always skip cutscene when IS_RANDO is true.

* Fix typo
2024-07-07 21:22:23 -04:00
Pepe20129 8b001da317 Check tracker show logic (#3972)
* Initial Implementation

* Fix missing locations

* Update locacc_castle_town.cpp

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2024-07-05 21:13:49 -04:00
Pepper0ni f88883044e Add OoT Static Hint, Fix Sheik Crashes, Add multiple text boxes to AutoFormat (#4149)
* add OoT hint, sheik is crashing without hint due to an unrelated bug

* Fix Sheik crashes, add new textbox to autoFormat, trim OoTHint text

* save pls

* fix receive typos

* git pls

* nice conflict fix
2024-07-05 20:16:56 -04:00
Pepper0ni 1ca8d0ab73 Implement Mask Hints (#4152)
* Implement Mask Hints

* fix typo
2024-07-05 17:52:59 -04:00
Pepper0ni 5c155a625a Quick fix Chest Minigame Setting (#4189) 2024-07-05 17:50:58 -04:00
Pepper0ni db5e9cbc11 Fix Multiple Foolish hints from an area being generated. (#4190)
* Fix Multiple Foolish hints for the same location

* remove debug comment
2024-07-05 17:49:56 -04:00
Pepper0ni 510b655e5e Fix Link's Pocket Appearing in Hints. (#4191)
* Fix issues with areas not being applied to the region itself, and Link's Pocket Propogating through randomised warps

* Address reviews

* address reviews again

* fix mac issues

* git pls
2024-07-05 17:35:47 -04:00
Pepe20129 839fcffe17 Add Alternate Headers XML logger (#4207) 2024-06-15 23:47:35 -04:00
inspectredc 79a29a62ef Use correct default value (#4194) 2024-06-15 23:43:09 -04:00
GaryOderNichts f99993af85 Reduce stack usage during static initialization (#4184)
* Reduce stack usage during static initialization

* Implement `ABS` macro for `TWO_ACTOR_PARAMS`
2024-06-15 23:28:42 -04:00
Archez cd7c5ab316 Clear the framebuffer for the pause menu link texture (#4213)
* clear pause menu link framebuffer

* cache bust

* Add enums for pause menu link width/height and rename the framebuffer

* revert cache bust
2024-06-15 23:13:13 -04:00
briaguya 4441304dfd support LUS not providing an array resource type/factory (#4204)
* support LUS not providing an array resource type/factory

* bump to latest upstream
2024-06-14 13:40:39 -04:00
briaguya 736dccb00b update to latest LUS main (#4202)
Includes supporting changes from:
* https://github.com/HarbourMasters/Shipwright/pull/4197 (alt assets variable changes)
* https://github.com/HarbourMasters/Shipwright/pull/4199 (WindowBackend enum changes)
* https://github.com/HarbourMasters/Shipwright/pull/4200 (Extract gMtxClear)

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: inspectredc <inspectredc@gmail.com>
2024-06-02 15:34:53 -04:00
briaguya b8c7c71578 allow setting device visibility in controller mapping window (#4165) 2024-06-02 12:13:03 -04:00
Lywx 53efc22a23 Framebuffer clear and bump LUS (#4187) 2024-05-27 18:33:02 -04:00
briaguya ad0e17383e update nightly links in readme (#4147) 2024-05-16 14:55:04 -04:00
Garrett Cox baf7691fbd Fix weirdness with item gets from chests (#4146) 2024-05-13 12:29:34 -05:00
Pepe20129 08ad16e750 Add path XML parser (#4115)
* Add path XML parser

* Update SetPathwaysFactory.cpp
2024-05-10 00:17:50 -05:00
Ted Newman 844413b391 Add Modifier buttons to input viewer and support individual button outline modes (#3966)
* Add Modifier buttons to input viewer and support individual button outline modes

* Clearer naming

* Remove hardcoded indent values

* clean up diff

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-05-09 23:57:31 -04:00
Garrett Cox 6f7173a5c4 Split a few VB changes out into their own files (#4123) 2024-05-09 22:22:08 -05:00
Eric Hoey 65b18d61cf Fix modifiers crash when obtaining underwater item (#4110)
* NULL check

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-05-09 22:02:50 -05:00
Pepe20129 118cd044b5 Rando: Starting hearts (#3974)
* Initial implementation

* Re-run build

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-05-09 21:39:22 -05:00
Eric Hoey 63bc2aff59 Frogs Ocarina Game Difficulty Options (#3373)
* Frog actor edits, menu, presets

* Block off vanilla code + comments

* fix logic + formatting

* new documentation format

* Update for CVAR changes

* Fix alignment

* Conditions cleanup

* Update soh/soh/SohMenuBar.cpp

Oops, added

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

---------

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
2024-05-09 20:55:53 -05:00
briaguya 23f9654940 update BUILDING.md (#4128) 2024-05-09 20:49:32 -05:00
briaguya 5530ce2e61 simplify ci (#4129) 2024-05-09 20:45:21 -05:00
Archez 3f67fed073 Fix some memory leaks with WrappedText and LoadArrayByNameAsVec3s (#4144)
* avoid memory leaks with WrappedText

* avoid memory leak with LoadArrayByNameAsVec3s
2024-05-09 20:39:13 -05:00
Garrett Cox 24e1d45e95 Merge pull request #4130 from Malkierian/dev-to-rando-5-6
develop->dev-rando 5-7
2024-05-09 20:13:34 -05:00
Malkierian 1d5a54901b Add MSI to EnEx hook handler.
Resolve other review suggestions.
2024-05-09 09:45:13 -07:00
Pepper0ni ca803099cf Fix DistributeHints (#4145)
* fix stupid crash in DistributeHints

* replace some uint8s in loops with size
2024-05-09 07:22:39 -05:00
Malkierian baf41161d3 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-08 22:28:29 -07:00
Archez 47b690fb1e Bump LUS and restore guMtx in collision viewer (#4137) 2024-05-09 01:26:58 -04:00
Malkierian f550bf1381 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-08 21:36:25 -07:00
Archez cbeec006ec Fix syotes scene path to use shared (#4136) 2024-05-09 00:32:29 -04:00
Malkierian 3bcf178fcc Fix LUS ref. 2024-05-08 20:24:44 -07:00
Lywx 1231b8f9fa Fixed macos/ios errors (#4138) 2024-05-08 19:30:22 -04:00
briaguya 22c9d53985 bump lus (gfx debugger fix, stormlib optimizations) (#4135) 2024-05-08 11:23:43 -04:00
Kenix3 3c87c1ec98 Lus window bump (#4131) 2024-05-08 02:25:50 -04:00
briaguya 0976198f2c get soh working with latest lus (#4132) 2024-05-08 00:13:47 -04:00
Malkierian ee1f15523c Merge branch 'develop-rando' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-07 14:37:00 -07:00
Malkierian cfd93f160d Fix check tracker performance changes.
Move Mysterious Shuffle functionality to `hook_handlers.cpp` when applicable.
2024-05-07 13:07:33 -07:00
Pepper0ni 980b1f1a6e Fix an infinite loop in hints and better comment hint distribution (#4080) 2024-05-07 12:48:00 -05:00
Pepe20129 8e520e490c Spoiler name removal (#3814)
* Initial pass

* Rename "MK" to "Market"

* Remove more spoiler names

* Update location_list.cpp

* Replace vector with array

* Update location_list.cpp

* Re-run build

* Fix spacing
2024-05-07 08:29:17 -05:00
briaguya 52fad95a2c support lus thread_pool changes (#4127) 2024-05-06 22:08:11 -04:00
Malkierian d10b68516c Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-06 18:37:56 -07:00
Malkierian 8d3902a256 Remove unnecessary and redundant checks and references. (#4111)
Stop passing checksByArea to functions in the same namespace.
Only get value of `HideFilteredAreas` once per frame.
Gate area and check evaluations behind checks being visible and search filter size greater than 0.
Proper function capitalization.
2024-05-06 19:27:35 -05:00
Malkierian b3d51441eb Rando Enhancement: Mysterious Shuffled Items (#3227)
* Add rando enhancement "Mysterious Shuffled Items", which obfuscates shuffled freestanding/drawn-in-world items (PoH, tokens, shop items) with a custom question mark model (thanks Hato), and uses the "mysterious item" functionality of `GetMerchantMessage` for everything that supports it, regardless of hint status on generation.

* Reverted back to rando enhancement, but added condition for Mysterious Shuffle not being on for the gem rotation fix to apply.

* First attempt at changing to fake GetItemEntry instead of directly calling the mystery draw function. Needs more work.

* Updated CVar to reflect CVar rework values.

Added `IsCheckShuffled` as preliminary function for checking *only* if a check is shuffled, not necessarily if it is just visible on the tracker. This accounts for the difference between tokensanity and "Always Show GS On Tracker", where you don't want to obfuscate the latter.

* Bit of cleanup.

* Cross-platform building edits. If anyone has a better idea of how to handle this fake GIE, I'm all ears.

* Update to CVar macros.

* Fix freestanding item gives.
Fix mysterious item model colors.

* Fix bombchu bowling mystery.

* Remove bowling bomchus check obfuscation (unused, removed in v3).
2024-05-06 19:17:08 -05:00
Lywx f3b948226b Bump lus and fixed PatchGfx (#4125)
* Bump lus and fixed PatchGfx

* Bump libultraship to main
2024-05-06 19:19:15 -04:00
Malkierian 438dede792 Change "AnubixFix" back to "AnubisFix". (#4124) 2024-05-06 17:10:06 -05:00
Eric Hoey 27dd303a57 Limit crawl speed to modifier to 4 (#4113) 2024-05-06 19:10:22 +00:00
Pepper0ni d0627dc737 fix a V2 compatibility crash (#4119)
* Attempt to fix ambiguity issues and a V2 compatibility crash

* oops

* remove explicit call as it is fixed elsewhere
2024-05-06 19:10:00 +00:00
Garrett Cox a96fe678f8 Merge pull request #4118 from Malkierian/dev-to-rando-5-5
develop -> develop-rando 5-5
2024-05-06 14:09:41 -05:00
Archez a860a7ea39 Merge pull request #4122 from Archez/merge-macready-may6
Merge macready -> develop
2024-05-06 14:51:24 -04:00
Malkierian 89f119c566 Fix ambiguity. 2024-05-06 11:13:30 -07:00
Adam Bird 439574d0d9 Merge remote-tracking branch 'origin/develop' into merge-macready-may6 2024-05-06 12:22:48 -04:00
Malkierian f354460d04 Make it build. 2024-05-05 22:43:11 -07:00
Malkierian 69eebf0984 CVar cleanup. 2024-05-05 22:27:33 -07:00
Malkierian e2b0ea5692 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-5 2024-05-05 22:05:10 -07:00
Garrett Cox 4bd0f2d2c1 Port new hook filtering patterns from 2ship (#4117) 2024-05-05 16:55:56 -05:00
Garrett Cox b4a30f708f Change GI_VB_ to VB_ (#4116) 2024-05-05 16:29:02 -05:00
Garrett Cox 04f9ec1b78 Merge pull request #3755 from garrettjoecox/develop-rando-changes
Vanilla Behavior Overhaul
2024-05-05 15:12:43 -05:00
Garrett Cox 0c69ff17c2 Fix two minor issues from merge 2024-05-05 14:46:23 -05:00
Garrett Cox 0aad8d4491 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-05-05 14:38:39 -05:00
Malkierian 6443a986d9 Final Step of CVar macro/sectionalizing (#4107)
* p

* Missed the prefix renames.

* More missed ones.

* Mostly finished cleanup.
Removed a few CVars and some related functionality.

* Bit more (prepping non-existent title card color editing).

* Resolve gCrowdControl.

* Final cleanup.

* Universal constant, not acceleration...

* Preset CVars.
2024-05-05 14:14:55 -05:00
Christopher Leggett e71839ed8f Conversion of Nabooru Quick Death to VB hook (#120)
* Nabooru quick death conversion

* Fix brackets, not sure exactly how this was working before.
2024-05-04 16:50:19 -05:00
Archez de715da184 explicitly include unordered_map header (#122) 2024-05-04 16:49:36 -05:00
briaguya b6fc54ad8b support lus dr_libs removal (#4108) 2024-05-03 12:55:38 -04:00
briaguya e02e4ead02 support lus fetching stb (#4105) 2024-05-03 11:07:07 -04:00
briaguya 725670d998 support lus strhash64 change (#4102) 2024-05-02 14:43:52 -04:00
briaguya bcf5a0c307 support lus factories no longer being registered in RegisterGlobalResourceFactories (#4099) 2024-05-02 00:14:36 -04:00
briaguya 345cef9b78 detangle zapdutils (#4096) 2024-05-01 22:47:40 -04:00
Archez fd9cd9c5eb Fix: add workaround for boost versions >=1.84.0 (#4098) 2024-05-01 16:41:17 -04:00
Malkierian 715bf39d43 Incorporate LUS CMake CVar system (#4093)
* Incorporate LUS CMake CVar system.
Customize all LUS CMake CVars to align with plans for preset system.
Swap "gOverlayFont" usage back to LUS CVar macro.

* Change CMake sets to use the cache to allow for including LUS's file for the add_compile_defines and remove the duplication on SoH's side.

* Move SoH CMake CVars to `soh-cvars.cmake` for clarity.
2024-05-01 14:48:51 -04:00
briaguya 56fe449689 fetchcontent stormlib (#4095) 2024-05-01 12:53:33 -04:00
briaguya 7da6a5b604 vb deku stick cheat (#115)
* vb deku stick cheat

* it's the 21st now

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-30 22:36:26 -05:00
Christopher Leggett baaa00569d Adds Quick Boss Death checkbox and implements Phantom Ganon's quick death (#119)
* Adds Quick Boss Death checkbox and implements Phantom Ganon's quick death.

* Clarifies relocation comment.
2024-04-30 22:31:08 -05:00
briaguya 8480f37f77 fetch imgui (#4094) 2024-04-30 22:49:54 -04:00
briaguya c70e6d280a spdlog from package managers (#4088) 2024-04-30 18:50:06 -04:00
briaguya 4ecb76b117 tinyxml from package manager (#4073) 2024-04-30 01:19:02 -04:00
briaguya 8b3f1f1868 bump LUS, remove switch and wii u from CI (#4087) 2024-04-29 20:26:03 -04:00
Pepper0ni d69814ed95 Real time Hint Assembly, Hint object refactor, and expansion of CustomMessage (#4078)
* Hint text refactor WIP DOES NOT BUILD

* Update to show people DOES NOT BUILD

* stuck on wierd errors

* forgot to add

* expression error does not name a type

* commit in case anyone looks

* static assertion failed: T must be an integral type or an enum.

* fail without error, complaining about unrefernced things

* fix some issues, still linker bs

* restructure some trials, conditionalAlwaysHints and hint_list stuff

* builds and does not crash, but there's text issues

* fix text issues

* commit to push, halfway through trimming down log

* finish trimming spoiler logging

* post merge clean up

* plando mode seems to work, looking into song text wierdness

* push for debugging crash on HBA sign

* fix num and anju issues

* fix the damn sign

* Fix Windows build

Renames GetMessage to GetHintMessage (a different name could be chosen, but GetMessage conflicts with a macro in winuser.h)
Changes uint to size_t, uint does not seem to exist on Windows.

* fix biggoron

* remove some manual formatting that autoformat doesn't like

* fix some altar text

* fix more altar text

* last cleanup

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2024-04-29 09:41:33 -05:00
briaguya 552bb2886f support lus renamespacing (#4075) 2024-04-28 21:36:44 -04:00
Pepe20129 92467b87b5 Add scene command XML parsers (#4054)
* Add scene command parsers

* Move logging & add logging cvar

* Use new CVAR_DEVELOPER_TOOLS macro

* Update soh/soh/resource/logging/SceneCommandLoggers.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-28 20:58:12 -04:00
Malkierian 303fe7d906 Swap all cosmetics CVars to macros. (#4065)
Lots of renames.

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-26 02:41:55 +00:00
Malkierian 56d8dd6d8b All MenuBar enhancement CVars done. (#4064) 2024-04-26 00:31:28 +00:00
briaguya a4fb67745a nlohmann from package managers (#4071) 2024-04-25 13:55:16 -04:00
Garrett Cox 7e7445ebcc Merge pull request #118 from briaguya-ai/chu-bowling-dont-skip
don't skip item give animation in chu bowling
2024-04-24 20:53:23 -05:00
briaguya 1fff8fd6d5 don't skip item give animation in chu bowling 2024-04-24 21:48:31 -04:00
Garrett Cox ae3b21f45b Merge pull request #117 from briaguya-ai/latest-lus-main
latest lus main
2024-04-24 20:28:38 -05:00
briaguya b2041df311 latest lus main 2024-04-24 21:21:22 -04:00
briaguya d22dbd6933 move RawJson to LUS (#4063) 2024-04-24 21:21:01 -04:00
Christopher Leggett 65c5806333 Better fix for blank hint issue. (#4070) 2024-04-24 17:09:49 -04:00
Garrett Cox 7bde0f5289 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-23 11:31:39 -05:00
Garrett Cox c67d8f4baa Add missing RHT entries 2024-04-23 11:31:34 -05:00
Christopher Leggett 99fbecd951 Fix issue with item name replacement at runtime. (#4068) 2024-04-23 11:30:30 -05:00
Garrett Cox ee6e941681 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-23 09:53:08 -05:00
Christopher Leggett 39e6269731 Fixes bugs with spoiler file parsing (#4066)
* Fix bugs with spoiler file parsing

* Hopefully fix mac build issue

* fix typo
2024-04-23 10:26:59 -04:00
Garrett Cox 854e20680a Fix forest temple entrance cs skip 2024-04-23 09:17:57 -05:00
briaguya 3070fb4746 support lus gameoverlay changes (and bump LUS) (#4067) 2024-04-22 22:57:33 -04:00
Garrett Cox 5174a48be1 Point LUS to fork temporarily for dl fix 2024-04-22 19:16:58 -05:00
Garrett Cox 7e5854756e Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-22 12:53:43 -05:00
Pepe20129 6b831f9256 Fix swim softlock (#3965)
* Update mods.cpp

* Update mods.cpp
2024-04-22 12:44:59 -05:00
Pepe20129 b65a15028b Update z_horse.c (#4014) 2024-04-22 12:44:12 -05:00
Christopher Leggett 4c75fd14a7 Fix hint generation bugs on develop-rando (#4001)
* Fix hint generation bugs on develop-rando

1. Fixed Ganon Non-hint text from loading as Saria's Magic Hint.
2. Fixed Ganon Non-hint text from not getting saved correctly.
3. Fixed gossip stone hint generation from not generating any non-always hints on No Logic.

For #3, the hint distribution and placement algorithm was bailing out too early when it wasn't able
to place a hint. For No Logic, what it was doing was failing to place WOTH hints (since No Logic seeds
don't calculate WOTH candidacy), returning the amount of hints it failed to place, and then it called
the function to redistribute the hints, but did not call the function to attempt to place the remaining hints.

Additionally, it was not accounting for the fact that we shouldn't redistribute the hints into the categories we failed to
place a hint in, so it would redistribute hints right back into those categories. I changed it so that when DistributeHints
gets called after PlaceHints fails to place the hint, it checks if the distribution settings copies attribute was set to 0.
In this case, it breaks while looping for the type distribution settings, and moves on to the next category. Also, it now repeatedly
attempts to distribute and place hints until PlaceHints returns 0 (meaning it placed all of its hints successfully).

* Fixes some further seed-bleed type issues with hint generation.
2024-04-22 13:29:05 -04:00
Garrett Cox 3c6c46d95d Fix for some chests not appearing 2024-04-21 21:09:52 -05:00
briaguya 49f891f2e5 move RawJson to LUS (#4063) 2024-04-21 21:16:59 -04:00
Garrett Cox a554c1550d Fix shadow & spirit rewards, remove remaning usage of duplicate dungeon done flags 2024-04-21 18:53:15 -05:00
Malkierian 33aef87907 CVar Macro Cleanup (#4062)
* Standardized CVar macros to have `CVAR_` at the front instead of the end.
Removed excluded and replaced sequence macros.

* Missed a few developer CVars outside of `SohMenuBar.cpp`

* 1 more.
2024-04-21 10:25:06 -05:00
Garrett Cox 5813b37415 Migrate child stealth 2024-04-21 09:38:53 -05:00
Garrett Cox 14c7f0c3e1 More time cutscene skip fixes 2024-04-21 09:14:46 -05:00
Malkierian e2622af004 Step 3 of CVar macro/sectionalizing: Dev Tools, Cheats, Audio Editor, Remote (#4030)
* Swapped Audio Editor CVars.

* Swapped Cheat CVars.

* Swapped Developer Tools CVars. Also a couple General CVars.

* Added REMOTE_CVAR.
Swapped Remote CVars.

* Missed an include.
2024-04-20 18:56:32 +00:00
Malkierian 694a876a70 Step 2 of CVar macro/sectionalizing: Trackers/Windows (#3238)
* Add all macros.

Replace all randomizer seed setting CVars with appropriate macro.

Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).

* Wrong slash...

* Fix DEVELOPER_CVAR macro.
Add GENERAL_CVAR macro.

* Change Item Tracker CVars, including open window CVar.

* Swapped open window CVars.

* Swapped Entrance Tracker CVars.

* Swapped Check Tracker CVars.
Changed Item Tracker "HudEditMode" to "Draggable".

* Renamed `RANDOMIZER_CVAR` to `RANDO_ENHANCEMENT_CVAR`.
Swapped rando enhancement CVars.

* Mirroring last commit from part 1 in randomizer.cpp

* Another mirror from pt 1
2024-04-20 18:34:02 +00:00
Ted Newman 16bf03a9bd Add console commands for randomizing sfx and cosmetic groups (#3962)
* Add console commands for randomizing sfx and cosmetic groups

* Update naming and use constexpr

* Update soh/soh/Enhancements/debugconsole.cpp

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-04-20 12:33:59 -04:00
briaguya 2accfc3c9b ci: bump macports version (#4039) 2024-04-20 11:31:05 -04:00
Archez e6798d9861 bump lus and create fb call (#4060) 2024-04-20 11:04:11 -04:00
Archez 067782fa91 clean up cmake configure files (#4002) 2024-04-20 11:03:41 -04:00
inspectredc d08d5a54c9 Fix Pause Warp Enhancement (#4036) 2024-04-20 11:01:16 -04:00
inspectredc 4a576f45ee Fix and Clean Up Swap Age Logic (#4061)
* Split and clean up swap age logic

* reorganise conditions into one statement
2024-04-20 10:43:35 -04:00
Malkierian b045689df1 Step 1 of CVar macro/sectionalizing: Randomizer Settings (#3206)
* Add all macros.

Replace all randomizer seed setting CVars with appropriate macro.

Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).

* Wrong slash...

* Forgot "gManualSeedEntry".

* Renamed CVars from "Mq..." to "MQ...".
2024-04-20 09:29:19 -05:00
Jamie Klassen 2aa2092c27 filter randomizer checks in tracker (#4021)
* filter randomizer checks in tracker

Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>

* Adds an option to hide empty areas

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Removes extra whitespace

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Changes gCheckTrackerHideFilteredAreas to default to true

Refactors the for loop in shouldHideArea

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Addresses PR feedback

* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538377614
* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538381310

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Updates config variable to gTrackers.CheckTracker.HideFilteredAreas

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Adds check visibility guard to shouldHideArea

Refactors rcObject to check in passesTextFilter

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

---------

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>
2024-04-20 10:27:13 -04:00
Garrett Cox 28a2cc925e Merge pull request #114 from briaguya-ai/vb-tower-escape-no-new-should
vb tower escape
2024-04-20 09:23:14 -05:00
briaguya 3b0548f585 vb tower escape 2024-04-19 18:05:38 -04:00
Garrett Cox ab9932d1de Merge pull request #113 from briaguya-ai/treasure-chest-game-location-access
fix: add location access for treasure chest game items and gift from sages
2024-04-19 15:31:54 -05:00
briaguya d3beac7337 fix: gift from sages location access 2024-04-19 16:29:37 -04:00
briaguya ed0ef62c0c fix: add location access for treasure chest game items
vb treasure chest game added new RCs for the treasure chest game (now there are RCs for each of the 5 keys and each of the 5 non key chests), but the location area table only had the keys, this adds the items
2024-04-19 16:15:15 -04:00
Garrett Cox 0bde9f1fca Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-19 12:29:10 -05:00
Garrett Cox 43e8eec6bd Replace some printfs with spdlogs (#4058) 2024-04-19 12:28:38 -05:00
Garrett Cox 565a62a518 Merge pull request #4059 from Malkierian/dev-to-dev-rando-4-19
Dev to dev rando 4 19
2024-04-19 12:27:50 -05:00
Malkierian f4fc3662b6 dev -> dev-rando 2024-04-19 09:51:00 -07:00
briaguya 3e32d05173 macready -> dev 2024-04-19 11:27:05 -04:00
briaguya 2216b68111 fix: add include missed in merge conflict resolution 2024-04-19 11:06:52 -04:00
briaguya 9696f74b5c Merge branch 'develop-macready' into macready-to-dev 2024-04-19 09:57:29 -04:00
briaguya 32bf8cc53c fix wii u ci (#4056) 2024-04-19 09:42:41 -04:00
Malkierian 02f7310c16 Add keyring to check for placing Gerudo Fortess Keys in Any Dungeon or Overworld. (#4055) 2024-04-19 09:42:26 -04:00
inspectredc bfe13906e9 Make equip swap work on pause any cursor (#4052) 2024-04-19 09:42:12 -04:00
Amaro Martínez 32288be744 Save in-game language setting (#4026) 2024-04-19 09:41:55 -04:00
Malkierian 19be6e9b99 Trackers MQ Cleanup (#4009)
* Clean up grayed out items in file select.
Tie personal notes saving to `OnExitGame()` to account for save scum resets.
Hide text input box (but not window) for personal notes when a save isn't loaded to prevent saving over a save's notes while in file select.

* Allow check tracker window to be visible and show the "Waiting for file load..." text in file select (ease of positioning).

* Fix key label text placement.

* Persist `areasSpoiled`, change trigger to `OnSceneTransition`.
Add `IsAreaSpoiled` for tie-in to Item Tracker.
Add `SetAreaSpoiled` to unify bitmagic.

* Add proper spoiling evaluation based on specific entrance IDs, or first check collection.
Add light yellow color for vanilla dungeon abbreviations to match the purple for MQ.

* Initialize `areasSpoiled` to 0, so 0 gets saved on file create.

* All new conditional statements around `GameInteractor::IsSaveLoaded()` were inverted. Fixed that.

* Change some c-style casts to `static_cast`.

* Few more cleanups, plus clarifying comment.
2024-04-19 09:41:46 -04:00
Archez 0b8cc71d0d fix actor init flow with object loading (#3987) 2024-04-19 09:41:04 -04:00
Garrett Cox 6c384c3cb6 Finish glitch aiding cutscenes toggle 2024-04-18 21:52:38 -05:00
Garrett Cox abdbe25c8a Migrate purple poe faster fight 2024-04-18 21:36:10 -05:00
Garrett Cox 1683617210 Migrate rainbow bridge 2024-04-18 21:13:40 -05:00
Garrett Cox edf6d9334a Migrate ganon trials 2024-04-18 20:42:25 -05:00
briaguya 54b1505137 vb gerudo (#111)
* vb gerudo

* clean up
2024-04-17 20:17:00 -05:00
briaguya f6a583446b vb bombchu bowling (#110)
* vb bombchu bowling

* don't need it

* it's drawing the right thing but it's tiny

* scale

* no need to should, don't rescale every draw

* slightly safer
2024-04-17 19:49:29 -05:00
briaguya 84db4c8ab8 vb beehives (#109)
* vb beehives

* format
2024-04-16 20:02:16 -05:00
briaguya 60d74f720a vb richard (#108)
* Lost Dog + Custom Hook Handler

* vb richard

* fix the merge

---------

Co-authored-by: Taw <Tawling@users.noreply.github.com>
2024-04-16 19:28:20 -05:00
briaguya 63afaa3cc9 vb ocarina memory (#107)
* Ocarina Memory Game

* vb memory game

---------

Co-authored-by: Taw <Tawling@users.noreply.github.com>
2024-04-16 19:18:26 -05:00
inspectredc ced34ab68a [Fix] Disable Lod Applies To Everything (Macready) (#4034)
* make lod cvar affect everything

* add to more functions

* re-add to player

* only add to necessary funcs
2024-04-15 12:00:04 -04:00
briaguya f3273e7627 vb treasure chest game (#103) 2024-04-09 23:31:45 -05:00
briaguya bbbd2520b1 vb lh sun (#106)
* underwater working pre func_80B858B4 replacement

* underwater item update handled by hookhandlers

* vb lh sun

* remove unused should
2024-04-09 22:57:07 -05:00
briaguya fe231147d5 vb underwater item (#104)
* underwater working pre func_80B858B4 replacement

* underwater item update handled by hookhandlers

* remove commented out code

* remove unused should
2024-04-09 22:46:11 -05:00
Garrett Cox 36a462d667 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-08 11:03:50 -05:00
Garrett Cox 67ee5f8d0e Merge pull request #4045 from HarbourMasters/develop
develop -> develop-rando
2024-04-08 16:02:22 +00:00
briaguya 9c9fc49d32 vb horseback archery (#102)
* vb horseback archery

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

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-08 10:59:48 -05:00
briaguya 6d77bbd4a9 vb skull rewards (#101) 2024-04-08 10:55:16 -05:00
inspectredc e163d5bc3d Fix switch puzzle locking issues (#4027) 2024-04-07 17:28:20 -04:00
briaguya 897d3efbd0 rip out unused types (#4041) 2024-04-07 17:02:57 -04:00
briaguya 168323ebc9 bump LUS (#4042) 2024-04-07 14:27:50 -04:00
Archez fd7dfd8b6f Support for new ucode loading patterns (#4038) 2024-04-04 12:26:14 -04:00
briaguya 307e106038 vb talon's chickens (#99) 2024-04-04 10:55:07 -05:00
briaguya 1e9cba1d61 vb diving game (#100) 2024-04-04 10:30:45 -05:00
briaguya 249490909f pull docs: talon function names (#98) 2024-04-04 10:26:48 -05:00
Archez 86c6013888 Remove macports upgrading (#4035) 2024-04-04 11:23:18 -04:00
Garrett Cox 325035e473 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-04 08:15:34 -05:00
Garrett Cox 01bcc4bb59 Merge pull request #4033 from HarbourMasters/develop
develop -> develop-rando
2024-04-04 13:13:58 +00:00
briaguya fb29c827ad Update BUILDING.md (#4029) 2024-04-03 22:17:32 -04:00
briaguya 0f43d5de2d bump lus (gfx refactor) (#4031) 2024-04-03 22:16:17 -04:00
briaguya 2339a729ee vb deku theater (#96) 2024-04-03 21:10:18 -05:00
briaguya d6c512904b vb target in woods (#95)
* do some target in woods VB stuff

* skip deku scrub hopping out animation

* replace a couple IS_RANDOs

* cleanup
2024-04-03 20:11:13 -05:00
briaguya 0334c4e354 pull in docs (#97)
* rename `func_8002DF54` to `Player_SetCsActionWithHaltedActors`
* rename `func_8002F434` to `Actor_OfferGetItem`
2024-04-03 20:07:42 -05:00
Christopher Leggett c162af818d Fix keysanity Any Dungeon setting. (#4020)
Due to a typo a few months ago, it was accidentally being ignored and
treated as Anywhere. Own Dungeon may have also been doing weird things,
but I'm not entirely sure.
2024-03-20 18:24:58 -04:00
Garrett Cox 8b3cfdb84f Merge pull request #3986 from Archez/merge-macready-805
Merge MacReady 8.0.5 -> Develop
2024-03-06 04:12:02 +00:00
briaguya ef690e2ceb support LUS::Archive::LoadFileRaw no longer being exposed (#3999) 2024-03-05 23:09:05 -05:00
briaguya 9fb2f26f1b tts: use RawJson resource + add SpeechLogger (#3998)
* moved `tts.cpp` away from using `LoadFileRaw` by creating a new `RawJson` resource type
* added `SpeechLogger`
2024-03-05 22:21:15 -05:00
briaguya 402a4db593 Bump LUS (#3996) 2024-03-04 23:56:26 -05:00
briaguya 375349e4f7 Support font as resource LUS changes (#3993) 2024-03-04 23:36:23 -05:00
briaguya ebde648c59 .o2r support (#3955) 2024-03-02 20:51:32 -05:00
Adam Bird 7bd2a7c3a6 Merge remote-tracking branch 'origin/develop' into merge-macready-805 2024-02-28 23:49:06 -05:00
Garrett Cox 612da023f0 Bump version to MacReady Foxtrot 8.0.5 (#3982) 2024-02-28 22:46:55 -05:00
Malkierian 368a9015ac Add Unix timestamp to renamed corrupted file to prevent trying to copy over existing file. (#3984) 2024-02-28 22:46:32 -05:00
Malkierian ed9cb1dfd2 Fix CVar evaluation for scummed checks being hidden. (#3985) 2024-02-28 22:45:16 -05:00
Archez fb6ea42560 prevent remember save location in dungeons/boss rooms (#3983) 2024-02-28 22:33:51 -05:00
Malkierian b26f2b21da [UX Improvement] Catch save loading errors and notify user (#3979)
* Add `SohModalWindow` and `SohModal`. Runs as window, always "visible", but not drawing if no popups are registered.

Adds error catching for save file corruption (malformed json) that renames the file in question to prevent future loading issues and uses `SohModalWindow` to inform the user of the error.

* Apply suggestions from code review

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-28 21:12:23 -06:00
Archez 358dd47da7 remove zapd extraction from mac launch script (#3981) 2024-02-28 21:03:08 -06:00
Malkierian ea1ffdd041 Adds messageboxes to no_ui handling so they don't show if you have it on. (#3977) 2024-02-28 20:04:44 -06:00
Garrett Cox 416ed84bc6 Migrate great fairy checks 2024-02-24 09:17:48 -06:00
Garrett Cox 09c967249f More 1PC skips 2024-02-23 14:06:27 -06:00
Garrett Cox 13a113c362 Various adjustments to goron related vanilla behavior hooks 2024-02-23 12:43:27 -06:00
Garrett Cox b293cac51c Enable timesaver enhancements by default on rando 2024-02-21 15:26:11 -06:00
Garrett Cox 2203f902a3 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-02-21 14:43:37 -06:00
Garrett Cox 854fb67797 Merge pull request #3964 from Archez/rando-dev-merge-feb
Merge develop -> develop-rando
2024-02-21 20:05:32 +00:00
Garrett Cox 7bebe7a573 Migrate okarina_tag changes 2024-02-21 14:01:49 -06:00
Adam Bird b5c601f43e Merge remote-tracking branch 'origin/develop' into rando-dev-merge-feb 2024-02-21 02:01:25 -05:00
briaguya bcbe4cb1c3 we crash if we try to SPDLOG in the destructors (#3951)
* we crash if we try to SPDLOG in the destructors

* rip em out

* newline

* add to destroy

* Revert "rip em out"

This reverts commit 738a9b80f3.

* Revert "we crash if we try to SPDLOG in the destructors"

This reverts commit 327d305e00.
2024-02-21 00:21:26 -05:00
Archez cd25f1d3c1 Fix performance of dlist viewer (#3961) 2024-02-21 00:20:25 -05:00
Garrett Cox 37e89c0c7c Migrate song of storms check 2024-02-20 21:49:07 -06:00
Garrett Cox 72581f7482 Re-add some UI I accidentally removed 2024-02-20 21:04:16 -06:00
Garrett Cox 0dda3a6c29 More boss intro skips 2024-02-20 21:00:10 -06:00
Ted Newman 00b3581151 Skull Kid (#86)
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-20 20:15:10 -06:00
Garrett Cox d28257088b Merge pull request #85 from Tawling/vbo-man-on-roof
GI VB for Man On Roof
2024-02-21 02:12:53 +00:00
Garrett Cox 4c56583215 Merge pull request #90 from briaguya-ai/fix-the-torch
fix the torch
2024-02-21 02:11:07 +00:00
Adam Bird 8b178f9386 RandoV3 fixes for mix/decouple boss entrances 2024-02-20 16:52:42 -05:00
Adam Bird 37b960ab0e Merge commit '13fce8258d92e80ea09900f83d338ccba2e7b1f9' into rando-dev-merge-feb 2024-02-20 16:51:05 -05:00
Adam Bird 1d61ba0b86 Merge commit '3187564f5b4120e159f5e506b4a3db88716b56aa' into rando-dev-merge-feb 2024-02-20 10:57:39 -05:00
Archez cd5d2589f7 Merge pull request #3958 from HarbourMasters/develop-macready
macready -> develop
2024-02-20 10:32:28 -05:00
Archez ef9fc0a9ec fix endianess issue with camera setting data (#3950) 2024-02-20 08:38:10 -06:00
Archez 19af4481c0 fix object unload using wrong index (#3949) 2024-02-20 08:31:24 -06:00
briaguya 30ff3e9585 fix the torch 2024-02-16 02:03:22 -05:00
Archez d0b09743b9 Fix missing ImGui::EndDisabled (#3946) 2024-02-15 23:25:16 -05:00
Patrick12115 c484ea227b [Difficulty Options] Leever Spawn Rate (#3460)
* Spawn Rate

* Update z_en_reeba.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* gEnhancements

* Merging issues

* Added preset entry and changed timer value math

* Update soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c

* this should do it

* Update soh/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c

* move out of loop

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 22:12:09 -06:00
Patrick12115 4599212546 [Fixes] Fix Raised Floor Switches (#3851)
* Lower by 1

* gEnhancements.

* Update z_obj_switch.c

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Moved to Hook

* Properly this time

* Added to presets

* Added a Return;

* Use Hex

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 22:02:58 -06:00
Garrett Cox a8d3724a53 Add missing cvars mostly that patrick forgot because he likes ranch dressing but also some that I missed oops (#3944) 2024-02-15 21:28:06 -06:00
Garrett Cox 10b6f8cf80 Merge pull request #3945 from HarbourMasters/develop-macready
macready -> develop
2024-02-15 21:21:18 -06:00
briaguya e0d502b696 resource refactory (#3926)
* animation

* playeranimation

* stop putting things in the LUS namespace from SoH

* get all the factories out of the namespace

* LUS::

* start on scene command stuff

* i think that's the rest of scene

* reduce copypasta

* collision header

* skeleton

* skeletonlimb

* fix

* path

* cutscene

* text

* audio sample

* sound font

* audiosequence

* background

* Revert "stop putting things in the LUS namespace from SoH"

This reverts commit 0ead6056e6.

* namespace shanans

* wrap all factories in namespace soh

* it's trying to link now

* lus

* scene command override etc

* fix audio loading

* slightly less logspam

* get past the cutscene problem

* in game!

* exporter cleanup

* more exporter cleanup

* clang formatted lus

* msvc

* itny lus change

* variant

* formatty

* fix of some sort i guess?

* use latest lus main

* fix name to enum/factory mapping

* otrexporter
2024-02-15 21:06:52 -06:00
Miles Acquaviva 7f4fc8dc4a Abstracted repeated code into functions (#3116)
* Abstracted repeated code into functions

* Apply suggestions from code review

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 21:03:19 -06:00
Patrick12115 db57581d6f [Cosmetics] Add Vanilla GS DL for Cosmetics Editor (#3937)
* Add Vanilla DL

* Fixed egregious spacing error
2024-02-15 20:51:23 -06:00
Pepe20129 8525f71c57 Colored Compasses (#3883)
* Colored Compasses

* Rename cvar & add explicit rando check
2024-02-15 20:50:17 -06:00
Pepper0ni a7726653e5 Add Big Skulltula logic to adult kokiri forest and fix a small bug in forest temple logic (#3938)
* Add Big Skulltula logic to adult kokiri forest and fix a small bug in forest temple logic

* fix spelling
2024-02-15 20:49:45 -06:00
Pepe20129 7319e4db57 More player documentation from decomp (#3819)
* FallImpactInfo & AnimSfx stuff

* IA function naming & Player_UseItem

* ActionChange

* Speed modes

* Fix build

* Misc cleanup

* Name Player_Action funcs

* PlayerAgeProperties

* Most of the Player struct

* Update z_player.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:44:46 -06:00
Malkierian 30a063b75d [Tweak] Move Personal Notes to Save File (#3909)
* Moves personal notes to the save file under a new itemTracker save section.

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

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 20:44:40 -06:00
DeusVexus 4797c9ad35 Adds the Keese and Guay don't target you cheat (#3267)
* Adds the Keese and Guay don't target you cheat
that makes keese and guay ignore you as if
you are wearing the skull mask

* changed instances of CVar_GetS32 to CVarGetInteger
added the cvar to presets.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:29:09 -06:00
inspectredc 457a75e9f8 More Sword Toggle Options (#3889)
* Sword Unequipping Toggle

* better macro

* less ugly format

* cvar prefix

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:15:44 -06:00
briaguya 1bc15d5bf3 document dependencies per distro (#3933)
* start on arch

* noconfirm

* git

* noconfirm

* just skip cache

* cmake

* ninja

* gcc

* lsb

* sdl2

* png

* sdl net

* boost

* imagemagick and add opensuse

* non interactive

* git

* cmake

* add a bunch

* things

* more

* try to matrix

* soh otr i guess

* needs

* trying to figure out how matrix include works

* make the matrix?

* matrix debug

* install?

* echo?

* yuck

* cannot locate package false

* parens for good measure

* lsb

* libsdl2

* suse

* i forgot opensuse uses gcc-c++ instead of g++ for the package name

* png

* sdl

* more

* suse packages....

* fedora cmake

* 2?

* png

* handle old sdl2 net

* apt

* not sure if this is a problem for both clang and gcc on opensuse or just clang

* devel

* cmake min version

* def don't want this here but it's here for now

* does this do anything

* mantic because cmake version

* libopengl?

* fedora ninja

* fedora g++

* lsb

* fedora sdl

* libpng

* do a build

* clang fix

* give early returns values

* ImageMagick

* Update BUILDING.md

* something

* plain boost instead of devel?

* not packing so we don't need this part

* base?

* don't have it can't need it

* just use boost download on opensuse i guess

* move workflow

* bring back the file

* lus main?

* detach
2024-02-15 20:13:49 -06:00
Garrett Cox e05f558ef3 Fix issue with bombchus always showing as major (#3303) 2024-02-15 20:12:19 -06:00
Garrett Cox a84227cbbb Support hook unregistration (#3538) 2024-02-15 20:08:31 -06:00
Pepper0ni cf6101f4da Logic bug: child cannot climb forest temple to the straight hallway either (#3934) 2024-02-15 20:03:58 -06:00
Ted Newman bdfcf39e56 Add a link to ship.equipment to the CRC error message box during extraction (#3939)
* Add a link to ship.equipment to the CRC error message box during extraction

* Improve message and add to ShowCrcErrorBox

* Change 'known good roms' to 'known compatible roms'
2024-02-15 19:55:01 -06:00
Archez 3d3b8bfc5b Allow IsSaveLoaded to consider debug saves (#3929) 2024-02-15 19:54:35 -06:00
Malkierian 0cb4cd158a Adds reset function to z_en_si (GS Token) to set getItemId to vanilla after resetting SoH. (#3925) 2024-02-15 19:53:18 -06:00
Ted Newman bbac8f8da4 [Fixes] Fix for Zora hint dialogue condition with an inverted flag check (#3920)
* [Fixes] Fix for Zora hint dialogue condition with an inverted flag check

* Base dialogue off of ruto's letter flag

* simplify condition
2024-02-15 19:52:46 -06:00
briaguya 43fed2d77e ci: pin switch docker image to known working version (#3917) 2024-02-15 19:51:31 -06:00
Malkierian 11a0a00633 Add CVarClear to appropriate sections of randomizer Locations and Tricks tabs to get around issue with saving blank CVar strings. (#3916) 2024-02-15 19:50:31 -06:00
mckinlee 2c5cb58ef6 Rename func_80853148 to Player_StartTalking (#3915)
-In PR #3498 I renamed this function for clarity and decided to make a
quick seperate PR for this change.
2024-02-15 19:49:56 -06:00
Tina H. (sheepytina) 7ccc816772 Cosmetics Editor fixes for icons in z_message_PAL.c (#3914)
* Fix resetting button icon colours in message boxes.

* Fix type/math error for custom color in textbox icon pulsing.

* Fix type error for custom color in ocarina icon pulsing.

* Make custom env colour math more closely match vanilla equivalents.

* Make comments presentable.
2024-02-15 19:49:13 -06:00
Tina H. (sheepytina) eeb6c7faaa Fix Cosmetics Editor getting stuck on weapon trails (#3913)
* Partially fix cosmetics editor getting stuck on sword trails.

* No reason for "reset" to be static.

* bombchu
2024-02-15 19:47:13 -06:00
Ted Newman e68b281b18 [Enhancement] Preserve minimap toggle state between areas (#3906)
* Add enhancement to preserve minimap toggle state between areas

* add map toggle enhancement to presets
2024-02-15 19:39:24 -06:00
inspectredc 107a365b71 Add safety measure to Scene_CommandObjectList to prevent crash (#3904)
* dont let k overflow

* Update soh/soh/z_scene_otr.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 19:38:54 -06:00
Josh Bodner a7b8c1dbca Fix neck slider (#3902) 2024-02-15 19:38:28 -06:00
Garrett Cox f7e746e295 Tweaks to coloridoscope (#3901) 2024-02-15 19:37:55 -06:00
Ted Newman db958ab3f4 New input viewer (#3890)
* Move input viewer into SoH

* Remove unnecessary comments

* Update button outline mode to match default viewer

* Fix ambiguous call

* CVar name changes and minor fixes

* Two more cvars

* Separate C-buttons into individual toggles

* Account for text height regardless of scale

* A few extra comments

* Use new LoadTextureFromRawImage to load layer textures
2024-02-15 19:37:19 -06:00
Pepe20129 7cdd33a01d Better ammo rendering (#3844)
* Better ammo rendering

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Update z_kaleido_scope_PAL.c

* Rename gBetterAmmoRendering to gEnhancements.BetterAmmoRendering

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 19:32:17 -06:00
Patrick12115 c1365b3263 [Time Savers] Shops and Games always open (#3789)
* Shops and Games always open

* Added comment  for scene reload requirement

* Prefix

* Spacing

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* I'm bad at merging

* Refined by Archez

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-02-15 19:27:26 -06:00
Giantblargg 458970816f Fix Check Tracker Vanilla/MQ Dungeon Spoilers (#3723)
* Fix Dungeon Spoilers

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

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

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-15 19:26:27 -06:00
Christopher Leggett 3514954ad1 Adds Message Viewer Window to Developer Tools (#3486)
* Adds a MessageViewer window to Developer Tools.

* Properly destroys message viewer window.

* Adds missing ImGui::End()

* Fixes an oopsie crashing non-windows builds after first run.

* Adds C ABI for displaying a custom message

* Fixes a crash and an issue with messages with SFX.

* Remove some osSyncPrintf's that aren't very useful for this case.
2024-02-15 19:23:12 -06:00
Pepper0ni 0932e1e504 Make the final Magic Bean cost 99 rupees in randomiser when it is not shuffled (#3392)
* Make rando final eban cost 99 and clean up Text IDs

* Remove Text ID changes

* Add french translation, All credit to Purple hato

Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>

---------

Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>
2024-02-15 19:20:12 -06:00
inspectredc 46aea3aa7c Player State Docs (#3280)
* state flags 1

* state flags 2

* state flags 3

* fill array
2024-02-15 19:17:28 -06:00
Spodi 460ec1bb03 Use manifest for windows DPI awareness (#3270) 2024-02-15 19:17:03 -06:00
Archez 13fce8258d [Rando] Add Mix and Decouple support to Boss Entrances (#3261)
* initial support for mixing boss entrances in the mixed pool

* support decouple for boss entrances

* missed decouple change

* add blue warp exits to boss rooms in location access

* add entrance get helper methods

* fix assumed targets not using root in entrance name

* add dedicated blue warp entrances and handle blue warp changes during generation

* change bluewarp handling in game to use unique blue warp entrances

* handle blue warps in entrance tracker

* fix overriding all jabu and water temple rooms

* fix grotto returns when exiting boss rooms/dungeons

* fix blue warp logic by tracking original connected region key

* use entrance enums

* remove unneeded entrance values

* fix decouple generation crash

* fix jabu mq backwards logic
2024-02-15 19:14:24 -06:00
mckinlee 3187564f5b Pause Warp Enhancement (#3223)
* Pause Warp Enhancement

This commit introduces the PauseWarp mod, a feature that allows players to warp to different locations in the game directly from the pause menu.

- Add PauseWarpState structure to manage flags and cooldowns for the pause warp feature.
- Implement IsStateValid function for state validation.
- Implement ResetStateFlags function to reset all state flags to default values.
- Add InitiateWarp function to handle the initiation of warp sequences.
- Implement HandleWarpConfirmation function to confirm and execute warp actions.
- Implement HandleCooldowns function to manage various cooldown timers.
- Add PauseWarp_Main function as the main logic, called every frame to handle pause warp functionality.
- Map warp song messages to in-game text messages.

* Warp Song Check

-Now if you do not have a warp song you won't be able to select the empty slot and still teleport.

* Added Audio Fanfares and Changed stateFlag1 to PLAYER_STATE1_IN_CUTSCENE

-When selecting a warp song the audio for the applicable warp song will now play for a extra vanilla feel.
-Changed the stateFlag1 because previously it just disabled input allowing enemies to harm you. Now that won't happen because the game is put into a cutscene state.

* Feedback Update

-A new hook was created 'OnPauseMenu' so now PauseWarp_Main is only called when the pause menu is open
-Moved pauswarp.c to the Enhancements folder
-Removed from graph.c

PR Change:
Changing to the main branch instead of sulu

* Feedback Update #2

-Introduced new function 'PauseWarp_Idle' now that 'PauseWarp_Main' is no longer called every frame
-Added C wrapper to access 'GameInteractor::IsSaveLoaded' and scrapped the 'IsStateValid' function
-Added 'PauseWarp_Idle' to the the 'RegisterPauseWarp' function
-Refactored the code some

* Linux Compile Issue

-Added a missing header that was causing a compile issue for linux
-Hopefully, it won't crash

* Minor Bug Fix

-Now link won't get soft locked when warping to the same location twice

* Update libultraship

* Revert "Update libultraship"

This reverts commit 746fc23479.

* Bug Fix
-Added more checks to ensure vanilla behavior when a Ocarina is not in the players inventory.

* WIP

* Done unless I'm missing headers

* now we done

* clean up, these arn't needed anymore

* Rename OnPauseMenu to OnKaleidoUpdate
2024-02-15 19:13:54 -06:00
Archez c1eb0a8970 Bump latest LUS and Fix ship menu bar icon (#3935)
* fix ship menu bar icon

* update cmake in wiiu/switch

* different cmake install

* wrong arch
2024-02-13 19:55:33 -06:00
Taw ceb5b740b5 fix include 2024-02-12 14:26:10 -08:00
Taw 4e5b92fdf3 Man On Roof 2024-02-12 08:26:36 -08:00
Garrett Cox e433cce799 Merge pull request #83 from Tawling/vbo-shooting-gallery
GameInteractor hooks for adult and child shooting gallery
2024-02-12 01:14:35 -06:00
Taw bea3c6dae0 GameInteractor hooks for adult and child shooting gallery 2024-02-09 14:17:17 -08:00
briaguya 8a14fea94c support LUS archivemanager refactor (#3912) 2024-02-08 20:28:02 -05:00
Garrett Cox 596ea5ebbb Vanilla Behavior Overhaul
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-02-02 15:39:01 -06:00
Garrett Cox fe9dcf1fc3 Merge pull request #3900 from garrettjoecox/develop-rando-merge
Develop -> Develop-rando
2024-02-02 10:45:56 -06:00
Garrett Cox 04c106d8f7 Merge branch 'develop' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-merge 2024-02-02 10:20:54 -06:00
Ted Newman be8dcfda05 Fix Internal Resolution format to use %.1f instead of %d (#3899) 2024-02-02 07:38:24 -06:00
Garrett Cox 83da5ee677 Moar caching (#3896) 2024-02-02 00:22:44 -06:00
aMannus 7cd2019ef6 Fix starting skulltulas (#3876) 2024-02-01 23:56:35 -06:00
Garrett Cox 8cac9b4264 Merge pull request #3897 from briaguya-ai/macready-to-dev-2-2
macready -> dev (2024/2/2)
2024-02-01 23:45:44 -06:00
briaguya a9d57a95ec Merge branch 'develop-macready' into macready-to-dev-2-2 2024-02-02 00:19:13 -05:00
briaguya 41c2933619 sccache for windows builds (#3385)
* cache vcpkg on windows ci

* try sccache as variant

* missed a spot

* see if we're checking here

* does this do it?

* trying to make minimal changes and have this work

* hopefully these z7s do something

* we were almost at the max already bump to double

* Apply suggestions from code review

* sc

* latest from soh-macready branch of otrexporter
2024-02-01 23:11:31 -06:00
briaguya aff9f40933 gc controllers via sdl on linux (#3869)
* try gc via sdl

basing this idea on this comment https://github.com/Ryujinx/Ryujinx/issues/2425#issuecomment-1269658650

* libusb?

* fix

* use latest lus main

* don't bump lus yet
2024-02-01 22:55:53 -06:00
Patrick12115 f88343839e Item Tracker Text Size Slider (#3856)
* Adds Slider and Functionality

* prefix

* Changed values

* HELLO

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 22:47:55 -06:00
Pepe20129 961b2626ad Merge controller menus (#3860)
* Merge controller menus

* Re-run Build

* Update SohInputEditorWindow.h

* Update soh/soh/Enhancements/controls/SohInputEditorWindow.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* pin switch devkit docker image

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 22:10:46 -06:00
Patrick12115 775d3e68b7 [Graphics] Show Equipment Regardless of Age (#3830)
* Hookshot, Hammer, & Boomerang

* Added the remainder of equipment and DL Patching for hands

* Removed Mirror Shield Patch

Messed with the front texture of shield

* Child Hylian Shield Cheat

Adds a cheat that allows Child Link to hold Hylian Shield as adult. Added to this since it uses the same way to render the shield

* Debugging

* Adds Scaling to Child Link with Adult Equipment

* Fix Merge Conflict Blunders

* More cleanup

* Added Scaling checkbox and some clean up

* Added an || ITEM_NONE

* More cleanup and simplification

* Accidently added spacer

* Replace B_BTN_ITEM

* Spacing

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Added most sheath functionality

* Updated tooltips

* removed child hylian shield and tweaked bow/slingshot

Made child hylian shield cheat into a separate branch and hooked into existing bow/slingshot enhancement for drawing those

* Prefixes

* ()

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 21:11:49 -06:00
Tina H. (sheepytina) a6457599f9 Clarify descriptions of Graphics Settings (#3881)
* Rewrite tooltips: Internal Resolution, Anti-Aliasing.

+ Tweak others.

* MSAA slider will display 1x as Off.

* Rename setting and tweak tooltips: FPS (to Framerate)

+ Code style formatting.

* Add tooltip: Texture Filtering. + Small tooltip changes.

+ Tidy up comments/newlines.

* Add internal resolution advisory for Apple users.

(Because this setting being missing keeps getting reported as a bug.)

* Small text tweaks.

* Code review suggestion

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

* Missed one of the buttons + correct spelling of "frame rate"

---------

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
2024-02-01 20:52:53 -06:00
skyyoshi86 351a511dc7 Cosmetics Editor entry for Ivan the Fairy (#3718)
* First commit

* Reverted MODDING.md

Reverted a correction to MODDING.md (case-sensitive broken link?) as this is not a change related to this PR

* Delete CMakeSettings.json

Deleted CMakeSettings.json as this is not a change related to this PR.

* checks for cosmetic changes ONCE for both body and sparles

Please review carefully. I made these changes blindly as I figure out why I can't compile it in my machine anymore. Sorry!

* correctly updates OUTER color when it's changed in Cosmetics Editor

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:44:16 -06:00
Garrett Cox ddf0392100 Add gShowDoorLocksOnBothSides (#3787)
* Add gShowDoorLocksOnBothSides

* Update soh/src/overlays/actors/ovl_En_Door/z_en_door.c

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:43:45 -06:00
Patrick12115 c49908caa6 Item Tracker Hookshot/Longshot Identifiers (#3848)
* H & L

Adds an H and L for Hookshot and Longshot to be able to tell more clearly which one you have.

* Added Toggle and Refined

Adds a toggle if players don't want it on. Also scales the letter to stay constant with the icons, both size and position. Also now hides the letter if you don't have a hookshot yet.

* Clean up some of the comments

* prefix
2024-02-01 20:30:48 -06:00
Chris 81eb6de42e Audio Editor UI Improvements and Scene Init Randomization (#3388)
* Audio Editor UI Improvements and Scene Init Randomization

* Update soh/soh/Enhancements/audio/AudioEditor.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/soh/Enhancements/audio/AudioEditor.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:20:35 -06:00
Eric Hoey f7bd626162 change default value + scale offset by icon size appropriately (#3861) 2024-02-01 20:15:25 -06:00
Josh Bodner f8b0e586bb Fix +/- buttons on float sliders not working at certain values (#3865) 2024-02-01 20:14:17 -06:00
Patrick12115 ed85a1b0e2 [Time Saver] Reset Navi Timer (#3818)
* Reset Navi Timer

* Force Rebuild

* Prefix
2024-02-01 20:12:28 -06:00
Chris 270d0b836e Randomize cosmetics on new scene (#3342)
* Randomize cosmetics on new scene

* Code review feedback

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 20:10:49 -06:00
aMannus e4948d9ce4 Triforce Hunt GI Model Blender source files (#3478)
* Triforce Hunt GI model source files

* Move assets to different path
2024-02-01 20:01:38 -06:00
louist103 4bdb5098b0 Colors 1 (#3463) 2024-02-01 20:01:18 -06:00
Rozelette bb1078e99c Account for removed object dependency in Deku Scrub Leader (#3878)
* Account for removed object dependency in Deku Scrub Leader

* Update soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:58:22 -06:00
inspectredc 2529dc59bd Increase Door Cull range (#3888)
* cullzone

* better cvar name

* Update soh/src/code/z_actor.c

* Update soh/src/code/z_actor.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:58:08 -06:00
Caladius 695ab6c6ee Hurt Container Mode (#3336)
* Each Heart Container or full Heart Piece reduces Links hearts by 1

* Based on Briaguya's suggested Code but modified slightly as some parts were missing.

* Static Bool

* The episode without Captain Hook's Hook

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:57:12 -06:00
Eric Hoey be948339b9 Lost Woods Ocarina Game Difficulty Options (#3371)
* Menu options, note speed, unlimited playback time

* Instant win

* Add custom ocarina game cvar to all options and presets

* Extra spaces

* Add starting note count, ending note count by round, more presets

* Block out vanilla code + comments

* finish blocking out vanilla code

* new documentation formatting

* add starting notes to randomizer preset
2024-02-01 19:52:10 -06:00
Eric Hoey 7ff46ba1a7 Increase Crawl Speed (#3366)
* Increase animation speeds, crawl speed, add magic numbers for camera timer, add to menu and presets

* Remove extra space, reformat comments

* Initialilze CVar at 0, Initialize default timer, set default case for timer, change all CVarGets to 1, reorg logic

* Fix remaining CVars + unify logic

* block out vanilla code + comments

* new documentation formatting

* Simplify camera swing fix

* Remove redundant multiplication

* Update soh/src/code/z_onepointdemo.c

reduce code duplication

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:38:54 -06:00
Eric Hoey 4d5adbc80f Fisherman asks for fishing rod when leaving (#3347)
* CVar, presets, custom message, fishing actor

* Add placeholder translations for French/German

* Fix for MS Shuffle change

* Rename function to match

* Missing comma in presets

* Change description, CVar name, add'l function name, edit custom message

* Actual whitespace fix

* re-order custom message

* Fix message formatting

* Add enhancement comments

* yeet if (play) {} from enhancement

* new documentation format
2024-02-01 19:36:57 -06:00
Eric Hoey d9310e4543 Swim Speed Modifiers (#3308)
* Add CVars for swimming, apply to swim speed calc

* Prevent modifer from working underwater

* Re-enable swim speed mod when underwater, use new (orig) function for y-velocity while diving

* Add to presets list

* Fix spacing

* block out vanilla + comments

* re-org vanilla code block in a sane way

* new documentation format

* rename Surface function + comment for usage

* handle merge conflicts, but like an adult this time
2024-02-01 19:32:50 -06:00
Malkierian 61cf2bd323 No Magic Numbers for Preset Location Exclusions (#3801)
* Adds `FormatLocations` and `PRESET_ENTRY_TYPE_CPP_STRING` to allow for feeding `RandomizerCheck` values directly in presets instead of a string with magic numbers.

* Switch to concatenation with `std::to_string`.

* Forgot to remove <format> include XD
2024-02-01 19:29:24 -06:00
Malkierian 16ee20c2a8 Renames Freecam to Free Look. (#3771)
Adds helper info for invert, distance, and transition speed options.
2024-02-01 19:26:36 -06:00
Archez 7ef6a434f9 fix timestamp truncation (#3874) 2024-02-01 19:25:57 -06:00
Malkierian e3825ec263 Unify defaults for reward count sliders with Greg As Reward so they need to register changes. (#3875) 2024-02-01 19:23:06 -06:00
Pepper0ni cb82e77e40 fix bombchu logic bugs (#3720) 2024-02-01 19:15:13 -06:00
Archez a19056cd3d Merge pull request #3894 from Archez/mergeDevelopMacreadyJan31
Merge develop-macready -> develop
2024-02-01 10:56:45 -05:00
Adam Bird 5db4ce0b53 Merge remote-tracking branch 'origin/develop-macready' into mergeDevelopMacreadyJan31 2024-01-31 18:12:06 -05:00
Ted Newman 3e91d5565a Fix disabled icon for Easy Input Buffering checkbox when Easy Frame Advancing is enabled (#3859) 2024-01-15 19:46:36 -05:00
Archez 63cf3610e5 Fix: Move Ruto earring fix to graphic patch and fix Ganon fight rubble DL reference (#3810)
* move ruto earing fix to real patch

* use stringpath for ganon rubble
2024-01-15 10:31:33 -06:00
inspectredc dd5d8088f6 Revert actor uncullZone related checks back to match decomp (#3828) 2024-01-15 10:31:06 -06:00
Archez 1da1b1a2bb Tweak: Improve pause menu dungeon map performance (#3773)
* add map palettes per pulse to leverage shader caching

* use unregister blended with kaleido maps

* use Gfx_TextureCacheDelete for KD lava

* bump lus

* add miss tex clears for KD
2024-01-15 09:39:54 -06:00
Pepe20129 db2ccd95b7 Add Collision Header XML parser (#3396)
* Add Collision Header XML parser

* Update CollisionHeaderFactory.cpp

* Remove "Num" attributes

* Fix crashes

Prevent crash when the camera setting is negative
Change some IntAttributes to UnsignedAttributes
2024-01-15 09:33:21 -06:00
inspectredc db02870a05 Restore Original Scene Command Object List Behaviour (MacReady) (#3827)
* Restore Original Scene_CommandObjectList Behaviour

* remove some vrom stuff

* add some comments
2024-01-15 09:30:20 -06:00
Tina H. (sheepytina) ecdf74161b Add a tooltip to "Restore old Gold Skulltula cutscene" enhancement. (#3849) 2024-01-15 09:28:59 -06:00
Malkierian 861bd09848 Adds a log statement to show the SoH version at startup, in case crashes don't produce a stack trace from which to glean that information. (#3786) 2024-01-15 09:26:19 -06:00
Archez 8426cc93e5 Fix: Tektite texture not loading for death animation (#3808)
* fix tektite death texture loading

* add string header
2024-01-15 09:25:57 -06:00
Patrick12115 31623a93ab Remove OpenMenu Bar Check (#3817)
Having it set to just -6 makes the Glitch Tick stay in the same spot in game. when the F1 menu bar is open. At least on Windows
2024-01-15 09:24:57 -06:00
Amaro Martínez bfe2f58feb Custom message loading (#3713)
* Add custom text message loading

* Use "override" folder for text mods

* Replace only existing messages

* Use std::find_if to check for existing messages
2024-01-15 09:24:08 -06:00
Josh Bodner 01529126ba Imgui polish (#3481)
* Rearrange menus for better layout on smaller screens.

* Automatically calculate +/- increments for float sliders

* Add needed header

* Use stringstream instead of format since apparently most platforms don't actually support all of c++20 yet boooooo

* Add header that only Mac complained about for some reason

* Theoretical performance improvement

* Actual performance improvement
2024-01-15 09:22:56 -06:00
Pepe20129 22b9284240 Rando: Shuffle Swim (Rando V3) (#3795)
* Shuffle Swim

* Fix build
2024-01-15 09:20:57 -06:00
Pepe20129 ab3e9a7e54 Rando: Shuffle Child's Wallet (Rando V3) (#3794)
* Shuffle Child's Wallet

* Add support for "More info in file select"

* Fix build

* Fix build

* Update randomizer.cpp

* Update locacc_hyrule_field.cpp
2024-01-14 14:55:03 -05:00
Pepe20129 080038c39e Rando: Shuffle Beehives (Rando V3) (#3763)
* Shuffle Beehives

* Address review

* Fix build
2024-01-14 12:16:32 -06:00
Jordan Gilbreath 4cbf3a5621 Fishsanity - Rando v3 (#3738)
* Update z_fishing documentation from decomp

* undo sCameraAt/Eye rename

* forgot to include these defines Heehee

* adding enums, settings

* adding more stuff back in

* more work

* we're literally typing words into computer

* include unordered map

maybe this fixes mac build idk

* wahoo

* hmm

* add make sure disabled flag gets popped

* poggers in the chat?

* doing some refactoring

* fixing build

* documentation, moving fishsanity instance to rando

* move FS back to context, fixing build, mod progress

since FS is needed during rando generation & provides perpetual info abt. fishsanity in the seed, seems to make more sense if it lives on the context

* moving some stuff around

* it's starting to get real in here

* ELIMINATE FISHSANITYMETA

* IT WROKS

* Update trackers, fix pond fish flagging

* ZD fish shuffle initial checkpoint

* ZD fish "working"

aside from the crashing

* wrapping up

* fix for partial pond shuffle

* remove misc. unrelated debugconsole modification

* updating GI model

* get build working

* add a todo for this

* removeoopsie

* Rework hints a bit

* update hint loc

* Use visual indicator instead of despawning caught fish

---------

Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-01-14 11:02:23 -06:00
Pepper0ni eb5f7688f8 Add more static hints (#3543)
* WIP biggoron and big poes hint

* commit v0 of biggoron and big poes hints

* adjust for settings update

* Add more hints

* Finish extra Basic Static Hints

* remove vestigial code

* Forgot to remove this

* try to fix windows build

* fix build post conflcit res

* remove StaticHintData as redundent

* last cleanup
2024-01-10 09:44:11 -06:00
Christopher Leggett a196dd6b7e Streamline hint generation (#3401)
* reimplement 3drando's hashtag color replacement system.

Also generates merchant text at seed gen time instead of runtime.
By merchants, I mean Bean Salesman, Medigoron, Granny, and Wasteland
Bombchu guy. Scrubs and shops are still dynamic at runtime.

* Improved auto-formatting and fixed altar text.

* Gets hint text for spoiler direct from context.

* Removal of now unused code.

* Change warp song hint generation/retrieval

Generates full warp location text instead of just location names and stores all six in the custom message tables for later retrieval as opposed to dynamically swapping in the location names every time the text is rendered.

* Change Frog Ocarina Game Hint generation/retrieval

Similar to previous changes, removes the on-the-fly generation aspect of it and just generates the full hint text once during seed generation.

* Update soh/soh/Enhancements/randomizer/3drando/text.hpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Fix submodules appearing as changed files.

* Fix WOTH/Foolish colors to match develop-macready.

* Fixes backwards colors for area and item in some hints.

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-01-08 14:41:33 -05:00
Amaro Martínez 21796367a0 Use temporary mirror for Boost download URL (#3822) 2024-01-08 12:39:49 -06:00
Eric Hoey a0258f0fca Add Invert Y-Axis and Apply Right-Stick Aiming to Z-Weapon Aiming (#3304)
* Add right-stick aiming to third-person aim

* Add Z-aiming CVar and inversion to Z-aiming

* Create calculation for rel.right_stick and apply it in Z-aiming

* Move option to First-Person section to match shield

* Fix max/min aiming heights

* Expand min/max + comment

* block out vanilla + comments

* block vanilla code better

* Remove extra space

* new documentation formatting

* rewrite ==0 and !=0
2024-01-08 12:21:18 -06:00
Malkierian 467ee7ad12 Logic class (#3812)
* Convert `Rando::Logic` to a class.

* Readd `LogicReset` as `Logic::Reset` for resetting logic mid-generation-cycle to allow seed generation to actually work.

* Change `IsChild` and `IsAdult` to `CanBe` variants.

* Make it buildable.

* First LogicVar class.

* Revert CanBe changes to Is (adult & child) as I'm no longer sure that it's a good one.

* Update soh/soh/OTRGlobals.cpp

Use existing gRandoContext reference.

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Conflict resolution cleanup (plus removing SaveContext references).

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-01-08 08:39:15 -06:00
Christopher Leggett b96df0b642 Fixes parsing of spoiler files in plando mode. (#3823)
It was specifically failing on Hints because of changes to the spoiler output that were not reflected in the parsing code.
2024-01-08 08:37:24 -06:00
Christopher Leggett 63413e8159 Explicitly clears the entire ItemLocations array. (#3820) 2024-01-08 08:37:10 -06:00
Christopher Leggett 1669393277 Fixes a regression in creating settings string. (#3813) 2024-01-06 12:52:03 -06:00
Pepper0ni 80e6e899a8 Fix other hints not getting reset (#3811) 2024-01-06 11:08:06 -05:00
Christopher Leggett 8b8f11d72e Consolidation of Trick Settings data (#3798)
* Adds TrickOption subclass and fills in extra info.

Fills in the extra info from randomizer_tricks.cpp that other Options don't have (hence the subclass for Tricks specifically).

* Uses new definitions of tricks in ImGui menu.

* Removes randomizer_tricks.cpp/h

* Adds new tricks.cpp/h to hold some static data and functions.

* Refactors Tricks namespace into a class with only static memebers and functions.

* Fixes bug with Trick Tag system.
2024-01-06 11:07:19 -05:00
inspectredc 321c258d69 Fix Fire Temple Boss Door Logic (#3774)
* Fix Fire Temple Boss Door Logic

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_fire_temple.cpp

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2024-01-05 20:55:09 -05:00
Malkierian 02938cfba2 Fix Starting Triforce Piece Count (#3797)
* Move zeroing of triforcePiecesCollected to the beginning of `Randomizer_InitSaveFile()` to fix starting TFP count issues.
2024-01-05 20:53:18 -05:00
Garrett Cox 37b2fc0745 Make noclip only effect player (#3788) 2024-01-05 20:51:48 -05:00
Amaro Martínez 6cb3a830bd Restore previous Boost download URL (#3809)
This reverts commit 96abadd904.
2024-01-05 18:41:09 -05:00
Pepper0ni 4d2ca29940 Quickfix skip trials setting (#3800)
* quickfix skip trials setting

* Change to set trial count to 0 when skipping
2024-01-05 15:19:23 -05:00
briaguya 9064897736 fix compatibility nightly.link in README.md (#3768) 2024-01-04 20:24:08 -05:00
Pepper0ni 7e2a13e7d8 Quickfix giants knife counting as a kokiri sword (#3802) 2024-01-04 15:49:10 -05:00
Garrett Cox 7e1f72e17d Merge pull request #3785 from Malkierian/dev-merge
develop -> develop-rando 20240102
2024-01-03 06:09:47 +00:00
Malkierian d2ec346d0e Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-merge 2024-01-02 17:28:23 -07:00
Christopher Leggett 96353c0b3b Fixes Pre-Clearing of Ganon's Trials. (#3783) 2024-01-02 17:19:56 -05:00
Pepper0ni 46abda83d2 probably fix glaring hint issues (#3752) 2024-01-02 16:23:33 -05:00
Pepe20129 1699eea009 Remove special IAs (#3453)
* Remove special IAs

* Add clarifying comment
2024-01-02 00:29:47 -05:00
Jordan Gilbreath 944a4c2e46 Fix settings persistence across sessions (#3779)
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-01-01 19:20:34 -06:00
Garrett Cox 03d907b843 Merge pull request #3778 from HarbourMasters/develop-macready
macready -> develop
2024-01-01 16:23:58 +00:00
Amaro Martínez 96abadd904 Update Boost download URL (#3776) 2023-12-31 16:06:47 -05:00
Malkierian fa8a0e2a76 [Rando] Fix Check Tracker Area Totals (#3758)
* Fix the calculation of `areaChecksGotten` to account for flags functionality setting invisible checks.
Change `areaChecksTotal` to dynamic calculation based on tracker visibility, now that all checks are being added to `checksByArea`.
Both are updated in realtime when either "Show all GS locations" or "Hide right side shop items" are toggled.
Reformat all remaining unencapsulated if statements.

* Changed helper variable change and call to `RecalculateAreaTotals()` to when the options are toggled instead of checking every frame.
Removed redundant if...else.
Clarified areaChecksGotten increment/decrement functionality based on current status and incoming status change.

* Removed unused code.
2023-12-31 13:58:31 -05:00
Christopher Leggett c9907ed5fc Allows rendering custom models as Ice Traps in GetItem Animations. (#3760) 2023-12-30 12:10:50 -05:00
Christopher Leggett dbb1e60734 Fixes some Spoiler Parsing Bugs (#3759)
* Fixes bug causing dropped spoiler not to be parsed.

* Fixes bugs with parsing enabled tricks

* Fixes bugs with parsing excluded locations.

* Fixes bugs parsing the Bombchu Drops setting
2023-12-30 12:10:31 -05:00
Christopher Leggett 8cb06d2d5d Fixes some "seed bleed" instances (#3766)
* Should fix seed bleed between multiple saves and loaded spoilers by resetting the Rando::Context before loading a save.

* Only reset for rando saves.
2023-12-30 12:09:46 -05:00
Christopher Leggett 75f9775ad8 Merge pull request #3769 from HarbourMasters/develop
develop->develop-rando 20231229
2023-12-29 18:25:16 -05:00
shinra-electric b7342a7847 [macOS] Add Architecture Priority to Info.plist (#3727)
* Add Architecture Priority to  Info.plist

This allows the app bundle to be launched natively on Arm without the need for Rosetta.

* Remove arch shenanigans in soh-macos.sh.in

Shouldn't be necessary now...

* Add back launching the binary in soh-macos.sh.in

Accidentally removed launching the binary from the script.
2023-12-29 18:02:22 -05:00
Jérémy Lugand a08943edc8 Fix typos in scenes_fra.json (#3732)
* Update scenes_fra.json
2023-12-29 18:00:06 -05:00
Sarge-117 bedb0a1768 Add LLR entrance from silo to the better debug warp screen (#3424)
* Add silo exit

* Back Tower
2023-12-29 17:57:31 -05:00
Pepe20129 807b00a058 Fix crashing when creating a new file (#3764) 2023-12-29 13:36:56 -05:00
Garrett Cox 6c88d33b19 Merge pull request #3756 from HarbourMasters/develop
develop -> develop-rando
2023-12-28 20:12:39 +00:00
Pepe20129 c860f7a73a Rando: Shuffle Ocarina Buttons (Rando V3) (#3735)
* Shuffle Ocarina Buttons

* Address review

* Add trick names

* Temporarily remove the ocarina button ice trap models

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_death_mountain.cpp

Fix lost closing brackets from merge resolution.

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-12-28 14:19:23 -05:00
Garrett Cox 2495f45124 Merge pull request #3751 from garrettjoecox/develop-rando-develop
develop->develop-rando
2023-12-28 17:19:39 +00:00
Patrick12115 81ec2805ee scaling (#3393) 2023-12-28 12:04:30 -05:00
Patrick12115 b80452b2b8 Multiplier (#3395) 2023-12-28 12:04:20 -05:00
Garrett Cox f6a6b880c9 Only emit changed flags (#3489) 2023-12-28 08:23:03 -06:00
PurpleHato 1fff15753a ADD: Enhancement-->Graphics-->Colour Temple of Time's Medallions (#3514)
* First dirty testing process

* Forgot a 2 for the second Dlist patching of Shadow

* TWEAK: GI integration

* DEL: Unucessary includes + whitespace

* TWEAK: No stones refactor for now, sorry I'm kinda lazy right now, don't hate me, please! T_T

* Stone removal part 2, sometime I forget to save the changes :derp:

* Tiny last tweaks, hopefully

* Add to rando preset

* Tweak: typo

* TWEAK: Trigger on toggling on/off

* TWEAK: adressed reviews 💯

* Please mate, excuse my British typing
2023-12-27 23:46:00 -05:00
pirate486743186 3f61fbc5f6 use SHIP_BIN_DIR instead of HERE (#3469) 2023-12-27 13:37:11 -05:00
Pepe20129 dc4347253d Item cycling improvements (#3456)
* Simplify item cycling

* Simplify selection variables

* Fix adult bunny hood and gray appropriate items

* Don't go into cycling mode when there's no items to cycle to

* Restore updating c buttons

This was previously done with `Inventory_ReplaceItem` but that led to problems when another slot had the same item as the one that's being cycled.

* Address review
2023-12-27 12:55:09 -05:00
mattman107 9b74dc2892 Update linux/appimage script to use symlinked rom files (#3483)
* Update soh.sh.in

Added support for symlinked rom files in linux/appimage script.

* Update scripts/linux/appimage/soh.sh.in

Updated to be less confusing as per Archez

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-12-27 12:51:36 -05:00
Garrett Cox a6bb6cf0a3 Hardcore mode v1 (#3540) 2023-12-27 12:50:56 -05:00
Pepe20129 e8096a2d94 Better actor viewer (#3544)
* Update actorViewer.cpp

* Add more actors

* Add a search function

* Update actorViewer.cpp

* Add advanced mode for params
2023-12-26 19:09:04 -05:00
Garrett Cox 70e1017923 Add frame advance option to developer tools (#3435) 2023-12-26 19:08:37 -05:00
Adam Bird 6a7bcc4a5e add more commands to dl viewer (#3504) 2023-12-26 17:13:48 -05:00
briaguya 99194a75f1 docs: update func_800FADF8 to Audio_ResetActiveSequences (#3471) 2023-12-26 13:30:49 -05:00
Garrett Cox 1979d78788 Merge branch 'develop' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-develop 2023-12-26 10:33:48 -06:00
Pepper0ni e731380e28 Fix various randomiser setting bugs (#3742)
* Fix various randomiser setting bugs

* Fix shuffle entrences metasetting getting locked on per savefile after an entrance rando seed is generated once
2023-12-26 08:58:19 -06:00
Christopher Leggett f74ba3c1da develop-rando: File Select Fixes (#3734)
* Fixes pressing B on name entry after randomizer quest.

* Reverts to auto parsing previous spoiler file.

Also includes an option to press L to automatically gen a fresh seed. It still does regenerate the old spoiler to regen the hints in the user's current language, but it will now automatically do this instead of requiring dragging and dropping the spoiler every time.

* Fixes bug causing rando settings to come from CVars instead of a spoiler file when a spoiler is dropped/imported on boot.

* Pressing Generate Randomizer in ImGui doesn't use loaded spoilerfile.

* Adds tooltip to Generate Randomizer ImGui Button.
2023-12-26 08:57:59 -06:00
briaguya 776c3a51ee stick sensitivity (#3725) 2023-12-23 18:48:06 -05:00
briaguya 0a59ce6d99 upgrade to docking imgui 1.90.0 (#3402)
https://github.com/ocornut/imgui/commit/ce0d0ac8298ce164b5d862577e8b087d92f6e90e
2023-12-23 18:12:52 -05:00
Tina H. (sheepytina) e0930809d4 Advanced controls for aspect ratio, resolution, and integer scaling. (#3130)
* Advanced Resolution Settings

first working version with most features implemented

* Update advancedResolutionEditor.cpp

Added auto-resizing logic for Pixel Perfect Mode.
Minor fixes.

* Tweaks and tidying up.

Disable integer scale slider if automatic sizing is overriding it.
Don't offer these UI options on Apple.
Removed unused code.
Updated LUS.

* Update libultraship

* Filenames and style fixes

Filenames and folders now more closely match rest of project.
Tidied newlines/comments.
(SohMenuBar.cpp) Label of button changed to fit menu.
(ResolutionEditor.cpp) Default window size improved.

* Update libultraship

(However, I still need to make the GUI controls acknowledge the new constraints.)

* Update libultraship

(and changed the name of some cvars)

* Added constraints to the inputs. Added a fps drop warning.

* Tweaks based on feedback

* Update libultraship

* Enabled on Apple - For currently ongoing Retina DPI troubleshooting.

(Also removed the duplicated N64 Mode toggle.)

* Update libultraship

* Update LUS, update CVar names, small tweaks

And one significant fix: Enhancement checkboxes in ResolutionEditor now default to off.

* Add Additional Settings and the accursed horizontal resolution field.

There's still a few bugs with it that I haven't squashed, but I need to stop for now and just commit what I've got.

(This is honestly causing more problems than it solves, but i'm tired of getting questions about it.)

* Resolved many of the lingering bugs with the previous commit

* Horizontal Resolution field now properly acknowledges resolution bounds.

* Don't show "Horiz. pixel count" field if not enforcing aspect ratio.

Additionally:
* Don't change settings if selecting "Custom" from preset dropdowns.
* Added a missing horizontal pixel count clamp check.
* Tidied up redundant behaviour.

* Additional comments, and a checkbox to disable aspect correction on consoles.

* Change how frame rate threshold is calculated.

* More minor UI tweaks.

* Added missing CVarSave() calls where needed.

Added a short update countdown for the numerical CVars. This is intended to prevent CVarSave() from being called too often.

* Added a helpful button to cover a potential support issue.

* "Fit Automatically" has been moved to LUS and is now smarter.

This will require another PR in LUS to be opened by me.

* Swap to new branch for libultraship

* Even more clever integer scaling behavior.

"IntegerScale" is itself now a CVar group.

* Tidy up comments.

* Fix a typo that prevented `IsDroppingFrames()` from working

(Maybe more than a mere typo, but a typo was involved.)

* Remove unused and unnecessary variables.

* Group "Integer Scaling" under its own collapsing header

* Changed label for the Enabled advanced settings checkbox.

* Update libultraship + Formatting pass on ResolutionEditor.cpp

* Add `(Select "Off" to disable.)` help text for the aspect ratio setting and hide UI elements accordingly.

Only show the fields if user chooses Custom.
Padding has been shifted accordingly too.

Also fixed a long standing error with the Y field disappearing when modifying X.

* Well I suppose that's no-longer necessary.

* Update libultraship with commits from main branch (up to e5df3a9)

* Tweak comments.

* Save current ImGui Combo items as a console variable

to improve user experience.

* Change language of NeverExceedBounds checkbox description

to be more affirmative, so it makes more sense.

Add tooltip for NeverExceedBounds checkbox.
Tweak some comments related to additional settings.

* Add list of colours to use with TextColored elements.

* Move some UI elements around.

Add an extra MSAA slider to the editor window.

* Integer Scaling header is DefaultOpen if player has Pixel Perfect Mode active upon window creation.

+ Amend tooltips.

* Fix a minor oversight with default configuration.

Fixes an issue where default aspect ratio settings on a fresh SoH configuration weren't matching the defaults assigned in libultraship.
The default values are now 16:9, matching LUS.
Additionally, the combo box now defaults specifically to the 16:9 preset instead of "Custom".

(Fixing the defaults in LUS to be 4:3 isn't worth a LUS bump, so this slight workaround will do for the sake of this PR.)

* Make resolution slider `disabled` condition a variable, for readability.

* Small tweak to combo item saving

* Use `SCREEN_HEIGHT` and `SCREEN_WIDTH` for constraints

* Simplify "Show a horizontal resolution field" logic

by using pixel dimensions as the aspect ratio directly, since now this view hides the aspect ratio setting from the user anyway.

* Correct aspect ratio visualiser to be un-inverted

+ actually display it as a ratio.

* Remove update flags from combo boxes + remove update countdown

+ remove non-functioning 'IsBoolArrayTrue' function.

(The countdown was an okay idea but I didn't implement it correctly. It's better to just keep it simple.)

* Code review suggestion: disable UI elements conditionally

 (+ tweaks to code style)

* Invisible tweaks to the Integer Scaling-related Additional Settings

This looks like a lot but it's mostly just re-arranging a cluttered area of the code for clarity.
Actual changes to functionality are:
* Help text now "disabled" along with the checkbox.
* The NeverExceedBounds checkbox will now reset the unused ExceedBoundsBy cvar if it's been changed.

* Assorted small tweaks to comments and variable declarations.

* Code review suggestion: tweak "Window exceeded" warning condition

* Missed a thingy.
2023-12-23 16:19:41 -05:00
Christopher Leggett 7f961abd8d Fixes missing options and some incorrect disabling logic (#3545) 2023-12-20 16:51:48 -05:00
Garrett Cox 2cb3a3664e Implement gMoveWhileFirstPerson 2023-12-20 20:26:07 +00:00
Garrett Cox 66c41a8012 Clean up func_8084ABD8 2023-12-20 20:26:07 +00:00
Adam Bird 1d7ad52222 fix remote control define when flag not set in windows (#3534) 2023-12-19 00:55:32 -05:00
Christopher Leggett bb4fb22188 Fixes error noise when seed generation fails (#3527) 2023-12-18 17:31:29 -05:00
Christopher Leggett 4978c3b34f Fix some bugs with settings (#3525)
* Fixes off by one errors for a few settings.

* Removes disable of shuffle options when starting with corresponding items.

* Junks checks when shuffle is off and start with is on.
2023-12-18 17:31:17 -05:00
briaguya 9b947615bc Merge pull request #3539 from Archez/merge-echo-develop
Merge (8.0.4) develop-macready -> develop
2023-12-17 21:56:11 -08:00
Adam Bird 03da69d7b7 Merge tag '8.0.4' into HEAD
MacReady Echo
2023-12-18 00:34:59 -05:00
Garrett Cox 60faf3f750 Bump version to MacReady Echo 8.0.4 (#3537) 2023-12-17 22:47:39 -06:00
Garrett Cox ef910a02f7 Remove use of static variable in en_box (#3536) 2023-12-17 21:47:02 -06:00
inspectredc f607afc754 Add player state dead check to Player_UseTunicBoots (#3530)
* Add player state dead check to Player_UseTunicBoots

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-12-17 21:46:35 -06:00
inspectredc 865bcc57a7 Fix Logical Error With Darunias Door Entrance (#3529) 2023-12-17 21:20:09 -06:00
Garrett Cox b5caf33a9b Initialize GameInteractor before SaveManager so it can correctly set up a hook (#3535) 2023-12-17 21:19:30 -06:00
Jordan Gilbreath 36e030e339 Reorder pop for #3532 (#3533)
* add make sure disabled flag gets popped

* reordering : ]

* what?

---------

Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2023-12-17 21:13:35 -06:00
Jordan Gilbreath d99cd52eea add make sure disabled flag gets popped (#3532)
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2023-12-17 18:02:47 -06:00
Adam Bird f655ab592d Re-implement Pause menu Dungeon map texture effects (#3496)
* first pass implement dungeon maps

* wrap up map dungeon implementation

* add comments and enums, rename vars

* bump lus
2023-12-17 15:42:34 -05:00
Garrett Cox 86044a1c50 Remote GI Work (#3073)
Co-authored-by: David Chavez <david@dcvz.io>
2023-12-17 13:41:33 -06:00
briaguya e6fc34e4c2 bump lus to latest 1.x (#3528) 2023-12-17 13:36:38 -05:00
Adam Bird d370ca93fd [Tweak] Improve KD lava effect performance and stability (#3501)
* improve kd lava performance and stability

* enum typo

* account for rock tex size
2023-12-17 13:23:07 -05:00
Adam Bird a6b4e0b7fd Fix entrance tracker crash (#3502) 2023-12-17 11:06:01 -05:00
Garrett Cox fcf2141266 Fix JSON parsing every frame on file select (#3513)
* Fix JSON parsing every frame on file select

* string (#73)

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-12-16 21:40:09 -05:00
Adam Bird e2f1cebfb5 fix condition causing enemies to always be small (#3512) 2023-12-16 20:56:36 -05:00
Adam Bird 907b770676 more swordless fixes when time traveling (#3510) 2023-12-16 20:56:14 -05:00
Adam Bird ea49196bae retain gameplay stats window size (#3508) 2023-12-16 20:52:36 -05:00
Adam Bird f65b711376 fix led crash when set to health (#3507) 2023-12-16 20:52:07 -05:00
Adam Bird 269e9faa46 change adult shooting gallery reward and add message (#3506) 2023-12-16 20:51:44 -05:00
Malkierian 35301556d9 Added "Always show gold skulltula" to check tracker options. Toggleable without restart. (#3505)
Made "Hide right-side shop checks" toggleable without restart.
2023-12-16 20:51:25 -05:00
Adam Bird fb0f7169d7 fix jabu mq minimap mark points (#3494) 2023-12-16 20:50:32 -05:00
Malkierian 9740ccc59b Fix Gravedigging Tour rando check. (#3524) 2023-12-14 17:12:43 -05:00
Christopher Leggett 3e0fc5efa5 Merge pull request #3509 from leggettc18/merge-develop
develop->develop-rando
2023-12-14 13:39:34 -05:00
Christopher Leggett 674645ef14 Fixes some miscellaneous issues for Switch builds. 2023-12-12 18:51:26 -05:00
Christopher Leggett c7c29034eb Fixes crash from attempted nullptr access. 2023-12-11 12:19:57 -05:00
Christopher Leggett bc49998e55 Reimplements ImGui Disable of options with Vanilla logic selected. 2023-12-10 21:25:59 -05:00
Christopher Leggett 2ef978c792 Fixes some build errors resulting from merge. 2023-12-10 14:00:31 -05:00
Christopher Leggett d58968d196 Merge branch 'develop' into merge-develop
# Conflicts:
#	soh/soh/Enhancements/custom-message/CustomMessageTypes.h
#	soh/soh/Enhancements/debugger/debugSaveEditor.h
#	soh/soh/Enhancements/item-tables/ItemTableTypes.h
#	soh/soh/Enhancements/mods.cpp
#	soh/soh/Enhancements/randomizer/3drando/entrance.cpp
#	soh/soh/Enhancements/randomizer/3drando/item_location.cpp
#	soh/soh/Enhancements/randomizer/3drando/keys.hpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_castle_town.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ganons_castle.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_gerudo_training_grounds.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ice_cavern.cpp
#	soh/soh/Enhancements/randomizer/3drando/menu.cpp
#	soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
#	soh/soh/Enhancements/randomizer/3drando/settings.cpp
#	soh/soh/Enhancements/randomizer/3drando/settings.hpp
#	soh/soh/Enhancements/randomizer/randomizer.cpp
#	soh/soh/Enhancements/randomizer/randomizerTypes.h
#	soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp
#	soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp
#	soh/soh/Enhancements/randomizer/randomizer_entrance.c
#	soh/soh/OTRGlobals.cpp
#	soh/src/code/z_sram.c
#	soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
2023-12-10 12:49:15 -05:00
Christopher Leggett dad4ae0095 Rando settings streamline and auto render (#3391)
* Removes cvarSettings map.

Options now link with CVar names directly. So instead of passing the
cvarSettings map, the Option class can check a corresponding CVar
if a cvarName was provided during construction. Of note, it does not
automatically sync the Option selected index with the CVar value, as
we would not want this to happen in all cases, for example when dragging
a spoiler file, we don't want to overwrite all the CVars with the Options
from the spoiler file. Currently all Options are set to the value of the CVar
they are linked to right before generating a new seed, unless a spoiler file
has been dropped in which case those settings are used instead.

* Early version of ImGui Render function

Currently only the slider variant. Will allow for auto rendering of options
in ImGui, with tooltips and automatic display of the values in each Option's
options array while keeping the CVars at the selected index, preventing
Off By One Errors.

* Implementation of Checkbox and Combobox rendering.

Currently only in use for a couple of items, future commit will implement for all
options.

* Auto-render entire first tab of Randomizer Settings

* Switch remaining tabs to auto-render

* Implements disabling options

* Cleanup/Documentation

* Auto-render entire table columns

* Implement OptionGroup rendering for "Sections"

* Automates the rendering of tables in the Settings window.

With the exception of the Locations and Tricks tabs, those are special
and will need a lot more work.

* Adds ability for option groups to have descriptions,

These descriptions will automatically display as tooltips in ImGui,
if the widget container type accounts for it.

* Fix as many IDE warnings as possible in option.h/cpp

Trying out CLion Nova, and it highlighted some things I decided to fix, some from CLion itself and some from CLang-Tidy. Oddly, it didn't like a conversion from size_t to int whether I left it implicit or added a static_cast, so I guess that warning is staying.

* Fixes some simple bugs

* fix another small oopsie

* Fixes parsing some of the option changes

Specifically we went from storing the actual value in the CVar to storing an index, meaning sliders that started with 1 now have the index offset by 1. This is currently only Big Poe Count, Triforce Hunt total/required, and starting hearts. Everything else either already started at 0, or in the case of LACS/Bridge counts, we were starting the sliders at 1 but they would have always worked at 0 according to the 3drando logic.

* Fix bug with status of skip child stealth

* Renames the Settings::Setting function to GetOption

* Add `Settings` pointer as a member of `RandomizerSettingsWindow`.

* Replaces ctx->GetOption with direct access to mOptions

This is equivalent, the access through ctx in this case was completely unnecessary and a muscle-memory mistake on my part.

* Implements a few IDE/Linter suggestions
2023-12-10 11:20:47 -05:00
Pepper0ni 4925abdd67 Fill in textId List (#3499) 2023-12-09 21:55:59 -05:00
Christopher Leggett 65d893bc85 Fix a seed gen bug surrounding new area enum (#3497)
* Fix a seed gen bug surrounding new area enum

* Sets areas after shuffling entrances.
2023-12-08 13:07:27 -05:00
Pepper0ni c5790d9284 Move Barren handling to before hint generation, Add RandomizerArea enum and other cleanups (#3339)
* Initial wothCandidates change, pushed early foreseeing conflicts

* Implement better barren handling, waiting on #3205

* pls save next time VS code

* Finish implementation of barren and randomizer area refactor

* Apply function changes to develop merge

* Fix double default decleration issue

* change some var types for uniformity

* Fix post merge differences to the point of building and generating randos

* Address reviews

* address more reviews
2023-12-07 18:11:44 -05:00
Christopher Leggett 1cc3201c19 Develop rando tidy up (#3425)
* Fixes some IDE warnings/linter-suggestions in context.*

Most of these come from CLion Nova. Some of these may be controversial, such as the if-init-statement related ones. Most of them should not be controversial though, like replacing C-style casts with static casts.

* Fixes IDE warnings/Linter suggestions in option.*

* Fixes some IDE warnings/linter suggestions.

Left a few about "Template Arguments can be deduced", and a "Redundant static_cast" for the sake of clarity.

* Fixes some IDE warnings/linter suggestions in item.*

* Fixes some IDE warnings/linter suggestions in location.*

* Fixes some IDE warnings/linter suggestions in item_location.*

* Fixes some IDE warnings/linter suggestions in item_override.*

* Fixes some IDE warnings/linter suggestions in dungeon.*

* Fixes some IDE warnings/linter suggestions in trial.*

* Use std::ranges::generate rather than manually looping.

* Fixes a typo

* Changes a TODO comment with more info.

Previously this TODO statement was a question of whether or not we ever want to not output a spoiler log. Eventually we may want different amounts or types of data to be output when generating a seed according to certain settings. For instance, maybe we want a human-readable spoiler log, that has item locations and hint content without the formatting info. Maybe we want a "Plandomizer File", which is that but the hint strings include formatting info so that the formatting/colors can be changed, and eventually we may want to let cosmetic info be specified in there as well. Or maybe we just want a Race/Patch file that just has the seed and settings, for Race files we could also specify non-rando settings that should be locked to certain values. Or maybe want one of each. All of that is stuff that should at least start being handled at the location of this TODO statement.

* Fixes a scope issue Windows didn't catch

* Removes std::ranges::generate as apparently AppleClang can't do it.

* Removes std::ranges::any_of as apparently AppleClang can't do it.

* Re-adds what I thought was an unused include.

* An attempt to fix the macos construct_at error
2023-12-05 19:03:36 -05:00
Garrett Cox 2d22a3ebcc Add vanilla logic option (#2191) 2023-12-04 11:29:48 -06:00
Garrett Cox a8c18882f0 Merge pull request #3487 from HarbourMasters/develop-macready
develop-macready -> develop
2023-12-04 14:31:58 +00:00
aMannus 6297df98e9 Fix GBK check for vanilla (#3473) 2023-12-04 08:22:35 -06:00
Garrett Cox 365afe7833 Add tableId to getItemEntry (#3064) 2023-12-04 07:52:39 -06:00
Adam Bird fbc397a131 Tweak skeleton limbs to use OTR path strings for loading DList and improve Alt toggling (#3479)
* set otr string paths for DList on skeleton limbs

* delay toggling alt assets cvar to end of frame
2023-12-04 07:33:14 -06:00
Garrett Cox 1fea642f33 Fix OnItemReceive hook for items in the extendedVanillaGetItem table (#3063) 2023-12-04 07:26:55 -06:00
aMannus 19cede44c3 Merge pull request #3468 from briaguya-ai/delta-to-dev
MacReady Delta -> develop
2023-11-30 00:07:38 +01:00
briaguya b39e6ec5af bump to latest lus main 2023-11-29 02:27:19 -05:00
briaguya 351f896cfa Merge branch 'develop' into delta-to-dev 2023-11-29 02:16:54 -05:00
briaguya 818addfdda delta bump (#3465) 2023-11-29 01:32:15 -05:00
Malkierian f14c390364 [Vanilla Fix] Slow Down Darunia's Dance (#3438)
* Fix Darunia's dancing animation speed (static for now; needs toggle later).

* Moved previous code to toggleable fix in enhancements. Tweaked speed factors, partially successful.
2023-11-29 00:38:48 -05:00
Adam Bird dd5e72a023 limit entrance discovered saving to end of operation (#3459) 2023-11-29 00:29:25 -05:00
rozlette d523b104d8 Change declaration of Morpha tentacle verts to combine them all and avoid overlaps that result in dropped verts 2023-11-28 21:09:34 -08:00
Garrett Cox fdcd9a7508 Race Integrity QoL (#3445)
* Add gDisableChangingSettings

* Add support for dropping a config file to overwrite CVars
2023-11-28 23:42:37 -05:00
Malkierian c4f34624ba Flag tracker (#3447)
* Hook into flagset hooks for processing check tracking. Has some manual workarounds (some breaks still need to be found).
Remove areaChecks and looping functionality as redundant.

* Additional vanilla handling.

* Fix tracker not showing MQ checks in MQ non-rando.
Fix tracker marking non-MQ variants of dungeon checks (e.g. map chest, etc) when collecting in MQ.

* Set all areas to spoiled if not rando.

* Revert attempt to spoil in randomizer based on MQ dungeon count as I don't know how that works at the moment.

* Restore and update spoiling based on MQ dungeon settings (none, selection, or count of 12).
Fix Anju As Adult check.

* Remove Anchor-specific code :baguette:

* Use `ClearAreaTotals()` in `Teardown()` instead of the duplicate code there.

* Update to `ClearAreaChecksAndTotals()` with `vec.clear()` added.

* Fix type spoiling again. Now spoils on 0 MQ dungeons, not rando, if the option is enabled in check tracker settings, selection, or set number of 12.
Fix vanilla checks being marked collected in MQ dungeons.

* Fix 100 GS check.

* ACTUALLY fix 100 GS: change flag type to `RandomizerInf()` in `item_location.cpp`, add RC to RandoInf for it to the table. Also don't send GI for flag if father, falsely triggers ZR frogs minigame.

* Fix gravedigging tour tracking.

* Fix membership card check tracking.
Change scene and flag values to any existing enums.
Clarifying formatting for the checking loop vOrMQ conditions.

* Fix Gravedigging Tour tracking.
Simplify Always Win Gravedigging Tour and Fix Gravedigging Tour Glitch applications.
Modified all necessary paths to use vanilla GDT PoH collection flag instead of randomizer variant.

* Fix Kak Potion Shop being "seen" when entering as child.
2023-11-28 21:25:48 -05:00
Adam Bird 33fe8776bb Fix bugs dont despawn cheat to work with soil patches (#3457) 2023-11-29 02:02:45 +01:00
briaguya 02256fac66 bump LUS to 1.4.0 (#3461) 2023-11-29 01:37:54 +01:00
briaguya 621afc99f0 sort patch otrs (#3430) 2023-11-29 01:34:00 +01:00
inspectredc 9d215b6dce Separate Arrows Equip Dupe Fix (#3450)
* add gseparatearrow check for equip dupe fix

* update gseparatearrows tooltip
2023-11-28 22:13:00 +01:00
aMannus 420bdab328 Random Enemy Sizes fixes (#3452) 2023-11-28 14:30:36 -05:00
Adam Bird 717074ff86 Fix: Missing TextIDs for MQ PAL and change lava size (#3449)
* Fix text offset for MQ pal and add text ID asserts

* correct lava texture size
2023-11-28 20:11:03 +01:00
Malkierian 3ab16b70c2 Changed all checks for !gPlayState to !GameInteractor::IsSaveLoaded() in mods.cpp for all the cheats, and added the same full check to others that really didn't need to be running outside of a game (like infinite rupees, magic, health, etc), and clear any triggering CVars. (#3441)
Changed `RegisterSwitchAge()` to clear the CVar instead of setting it to 0.
2023-11-27 23:00:25 +01:00
Pepe20129 5b81964ea5 Bring over some player documentation from decomp (#3380)
* Document static variables

* Document enums and structs

* Document some functions

* Document more functions

* actionParam to itemAction and fix build

* Document some local variables and a define

* General cleanup

* Use PlayerMeleeWeaponAnimation enum when appropiate

* Document some function parameters and local variables

* Document some of player struct
2023-11-26 11:54:54 -05:00
Malkierian 3cf9d655a7 Disable Fix Vine Fall when Climb Everything is enabled (#3439)
* Disable Fix Vine Fall when Climb Everything is enabled.

* Remove option disabling.
2023-11-26 11:34:54 -05:00
Garrett Cox d0d1d9c487 Merge pull request #3312 from quellen-sol/develop
Add Geo rupee name (Hollow Knight)
2023-11-24 12:27:49 -06:00
Garrett Cox 360b6b88be Merge pull request #3310 from Pepper0ni/NoSwimAnim
Port Faster Swim animations, full credit to kimimaru4000
2023-11-24 12:27:32 -06:00
Garrett Cox 1e4784af8f Merge pull request #3302 from inspectredc/toggle-strength
Toggle Strength Option
2023-11-24 12:26:34 -06:00
Garrett Cox bdc6fad0a9 Merge pull request #3208 from garrettjoecox/valueViewer
MVP ValueViewer
2023-11-24 12:25:39 -06:00
inspectredc 95f27ace2e Fix kokiri sword unequipping when using switch age cheat/enhancements (#3415)
* test fix for ks unequip

* remove unnecessary brackets
2023-11-24 09:40:42 -05:00
Salt d50ad4779d Fix #3417 Symlinks to Directories in Mods Dir Aren't Traversed (#3418) 2023-11-24 09:40:30 -05:00
Adam Bird f2df029efa fix: skybox crash for mask shop (#3427) 2023-11-24 09:38:45 -05:00
Garrett Cox bdb201201e Fix audio cutoff issues (#3428) 2023-11-24 09:38:13 -05:00
Adam Bird f4e4545180 Re-implement King Dodongo's Lava texture effects (#3434)
* fix alt backgrounds not always loading

* include gfx lookup with the original unload

* Add hook for alt toggle

* handle cpu modified texture for kd lava

* malloc array instead of illegal initialize
2023-11-23 09:07:30 -05:00
Garrett Cox c3ae829370 Add enhancement for removing explosive limit (#3242) 2023-11-20 13:25:22 -05:00
briaguya 76e90c0928 Controllers (#3378)
* lay some groundwork

* use custom window (which is currently identical to the LUS window)

* start making it shippy

* start moving stuff out of gamecontroleditor

* clean up shouldrumble

* include the other way

* wii u

* latest lus main

* notch snap angle buttons

* buttons on all the sliders

* just use a hidden id

* handle debug for port 2 and rename tabs so everything fits

* button line buttons look better

* padding fixed

* clang format

* bump to latest LUS main

* big buttons

* just default the analog stick options to open for now

* fix wii u build

* bonus: make it all scale-aware

* clang format

* fix horizontal scrolling

* fix all +/- buttons

* keyboard set defaults

* axis threshold helper text

* bonus: test rumble button

* clang format

* fix otrexporter submodule

* bump to latest lus main
2023-11-20 08:02:15 -05:00
Garrett Cox 3b5497cee3 Merge pull request #3408 from leggettc18/develop-rando-bugfix
Fixes a potential crash with saves made on older commit.
2023-11-19 20:13:18 -06:00
Garrett Cox 21caecab84 Merge pull request #3300 from stratomaster64/soulcalibur
Rando: Boss Soul Shuffle
2023-11-19 20:09:54 -06:00
aMannus 34556e40d6 Clean up Triforce Hunt U16's and GBK (#3355)
* Clean up Triforce Hunt U16's and GBK

* Apply suggestions from code review
2023-11-19 14:45:09 -05:00
inspectredc 80ef399c52 Entrance Docs (#3332)
* transition variables renamed

* transition circle

* transition wipe

* sand storm

* remaining sceneloadflag rename

* transition trigger macros

* transition mode enum

* transition type enum

* tc set params

* creg debug transitions

* introduce entrance table + return entrance indices + entrance info macros

* randomizer entrance pass through

* cleanup some missing scene enums

* randomizer entrance tracker pass through

* randomizer grotto pass through

* gSaveContext.entranceIndex

* misc lists

* z_select pass through

* respawn entrance index

* nextEntranceIndex

* add missing include
2023-11-19 14:29:56 -05:00
briaguya 8dbf738128 macready (charlie) -> dev 2023-11-19 05:52:26 -08:00
inspectredc 2b1327c41a Transition docs (#3322)
* transition variables renamed

* transition circle

* transition wipe

* sand storm

* remaining sceneloadflag rename

* transition trigger macros

* transition mode enum

* transition type enum

* tc set params

* creg debug transitions
2023-11-19 02:38:07 -05:00
briaguya a8e387b949 cache vcpkg on windows ci (#3384) 2023-11-18 21:11:44 -05:00
Ralphie Morell ae715bdc15 put boss souls back on the menu 2023-11-17 16:35:37 -05:00
Ralphie Morell aa00765997 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-11-16 22:51:16 -05:00
Christopher Leggett 4f9ce252e7 Fixes a potential crash with saves made on older commit.
I had an Off By One Bug in a previous commit, and saves made on that commit ended up crashing on boot due to attempting to access a negative index of an array. Added a bounds check to prevent attempting to load that data.
2023-11-16 15:48:32 -05:00
briaguya 0ddb0711ad Version bump to MacReady Charlie (#3406) 2023-11-15 23:22:09 -05:00
briaguya 3234256b03 bump lus (#3405) 2023-11-15 22:45:09 -05:00
inspectredc d8a7a6c764 Use Correct Player Boot Enums in CC (#3403) 2023-11-15 20:38:21 -05:00
Garrett Cox 2075213544 Merge pull request #3399 from HarbourMasters/develop-macready
macready -> dev
2023-11-14 22:24:48 -06:00
Garrett Cox 2dfbbc63e3 Version bump to MacReady Bravo (#3398) 2023-11-14 21:14:47 -05:00
Garrett Cox 044d32a46f Add gFixEyesOpenWhileSleeping (#3365) 2023-11-14 20:47:07 -05:00
Malkierian afe032ea21 [Feature/fix] Save to temp file first (#3376)
* Add temp file flow to `SaveManager::SaveFileThreaded`.
Add "Save finish" info log message.

* Fix WiiU/Switch
2023-11-14 20:46:50 -05:00
Josh Bodner fb45b66903 Fix magic being zeroed out when using fast file select (#3389)
* Move to frame counter init to a place that fast file select also touches

* Undo removing old fix

* Reset on gameover
2023-11-14 17:08:45 -05:00
Malkierian ba987c49e2 SaveManager cleanup (#3386)
* Move threadpool initialization and `OnExitGame` registration from `SaveManager::Init` to SM's constructor.
Comment on `Init` to mention it's not an initializer for `SaveManager`.
Added check for `SaveManager::SaveSection` to prevent firing a save worker if the game is already exited from a reset.

* Removed `IsSaveLoaded` check in favor of another `ThreadPoolWait()` at the start of `SaveManager::Init()`.
2023-11-14 16:46:38 -05:00
AltoXorg bd0672767a Use substr method to determine file extension (#3390)
See https://github.com/HarbourMasters/OTRExporter/pull/12
2023-11-14 16:37:54 -05:00
Adam Bird e66eb8756d Fix: Prevent patching custom models (#3367)
* fix prevent patching custom models

* prevent patching chests textures for custom chest models

* add tooltip for cosmetic editor about custom models

* chest texture handling for alt toggles
2023-11-14 16:37:03 -05:00
Garrett Cox bf31f2b330 Stop hardcoding skeleton type to flex (#3397) 2023-11-14 16:36:05 -05:00
Malkierian 4e9040d761 [Feature] Remove performDelayedSave functionality from Autosave (#3387)
* Removes delayed save functionality, making autosave work everywhere except Ganon and Chamber of Sages scenes.

* Change AutoSave comment to remove the scenarios we no longer block autosave in.

* handle temp B on saving outside of kaleido

---------

Co-authored-by: Adam Bird <archez39@me.com>
2023-11-14 16:35:19 -05:00
Malkierian 304016ddd2 [Feature Fix] Tunics stolen by like likes now removed from the item buttons (#3375)
* Extends `Assignable Boots and Tunics` functionality to check for and remove Goron and Zora tunics from item buttons when like likes steal them.

* Comment documentation.
2023-11-14 00:12:08 -05:00
briaguya fe9c0fa4f7 bump lus (#3394) 2023-11-14 00:10:56 -05:00
Malkierian 384403edb5 Rename all instances of Desert Wasteland to Haunted Wasteland. (#3372) 2023-11-13 23:45:52 -05:00
Malkierian 60687aff0d Move everything in RandomizerCheckTracker::LoadFile() except the block to load the "trackerData" section to a new OnLoadGame hook function to fix crashes on transferred saves. (#3368) 2023-11-13 23:45:41 -05:00
Ralphie Morell cf88b3d2bf Fix edge case of MS shuffle (#3364) 2023-11-13 23:45:15 -05:00
PurpleHato dd6271ecae ADD: No HUD Heart animation (#3348)
* ADD: No HUD Heart Animation

I've seen this requested multiple times for modding purposes for the case of using "lifebars" instead of hearts

* TWEAK: Move it under the the mods

* REM: Whitespace

* REM: Whitespace2

* Tweak: Cvar Oppsie
2023-11-13 18:13:46 -05:00
Malkierian 78ffb41cd2 Moved the check for !seqInfo.canBeUsedAsReplacement in InitializeShufflePool to exclude them before modifying either shuffle pool. (#3370) 2023-11-13 18:11:29 -05:00
Christopher Leggett 2698d453bb More gap-bridging (#3323)
* Initial StaticData and RandoItem class definitions

* Initial implementation of RandoItem class.

* Rerranges RandoItem Constructor parameters

The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.

* Switches static data from map to static array.

Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.

* Defines part of the randomizer item list.

* Adds more item class instances to item_list.cpp

Up through bottles, many more items still to go.

* Adds song items

* Adds Maps and Compasses to the item_list

* Added Key Items to item_list

* Added Key Rings to item_list

* Added Dungeon Rewards to item_list

* Adds generic items and refills to item_list

* Adds shop items, triforce, and hints

Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.

* Adds in the stages of progressive items

These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)

* Remove GetItemEntry data from progressive items

* Moves/adds function definitions to item/item_list

* Refactors GetItemEntry data

It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)

* Adds item class member for if item is progressive

* Removes unneeded stuff from initializer list macro

* Replaces relevant `uint32_t`s w/ `RandomizerGet`s

Also replaces calls to the ItemTable method with StaticData::RetrieveItem

* Switches our runtime code to use the new itemList.

* Changes just enough hint gen code to compile

* Initial Definition of Location Class

* Initial Implementation of Location

* Fixes some names and definitions.

* Extracts ActorID and SceneID enums to separate files.

This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.

* Replaces the forward definitions with the new imports.

* Adds missing data for RandomizerCheckObjects.

* Definition and first entry of locationTable

* Added Mido's House Locations

* Added locations up through lost woods.

* Adds in Hyrule Field locations.

* Adds Lake Hylia locations

* Adds location name comments

* Adds Gerudo Valley Locations

* Adds Gerudo Fortress locations.

* Adds the Wasteland and Collosus locations

* Adds Market locations

* Adds Hyrule Castle locations.

* Adds Kakariko and Graveyard locations.

* Adds Death Mountain checks.

* Adds Goron City locations

* Adds Death Mountain Crater locations

* Adds Zora's River locations

* Added Zora's Domain Locations.

* Added Zora's Fountain locations

* Adds Lon Lon Ranch locations.

* Adds Deku Tree locations

* Adds Dodongo's Cavern Locations.

* Adds Jabu Jabu's Belly Locations

* Adds Forest Temple Locations

* Adds Fire Temple Locations

* Adds Water Temple Locations

* Added Spirit Temple Locations

* Some of shadow temple locations.

* Adds remaining Shadow Temple locations

* Fixes a leftover merge conflict

* Adds Bottom of the Well locations.

* Adds Ice Cavern locations

* Adds GTG locations.

* Adds Ganon's Castle and Tower locations

* Adds dungeon Gold Skulltula locations.

* Adds Overworld Gold Skulltula locations

* Adds dungeon reward locations

* Adds Heart Container Locations

* Adds Cutscene and Song locations

* Adds Cow locations

* Adds Shop locations.

* Adds hint locations

* Adds function for retrieving the Location data.

* Initial definition of ItemLocation structure for tracking runtime data

* First push on converting code to use new location definitions

* Changes hints to use the new tables

* Further conversion of hints to new definitions.

* Adds new Hint and Location IDs to area tables

* Moves areaTable to use new RandomizerRegion keys

* Removal of 3drando/item_location files.

* Uses new RandomizerRegion keys in entrance.cpp

* Final push for removal of massive keys.hpp enum

* Uses new SceneID Enum Values

* Remove RandomizerCheckObject structs in favor of new location list.

* Fix a few stragglers to successfully build

* Rename of RandoItem to just Item, but in the Rando namespace

* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.

* More hint related fixes/edits

* small fix for #include path

* Fix various miscellaneous issues related to seed gen and spoiler parsing.

* Handle progressive items correctly.

* Fixes some hint generation logic

* Fix a few GetItemEntry niche bugs.

* Adds missing shop GI Entries

* Formatting fixes

* small formatting fix

* Namespace StaticData under Rando

* Added a note about a potential use-after-free.

I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.

* Fixes missing location table entries

* Fixes LUS submodule and removes now-unused code

* Resolves weird duplicate definition issue

* Fix missing include

It was missed because not being included wasn't an issue on Windows.

* Fixes error present on Linux builds

* Fixes some issues with excluding locations

* Updates the Resolve Exclusion conflicts function

not sure if actually used, will look into that more later

* Removes some duplicate RGs

* More fixes of duplicate RG values.

* Fix a few duplication issues in the check tracker.

* Fix progressive bombchus.

* Minor typo fix, shouldn't really be affecting anything though

* Should fix some of the remaining check tracker issues.

* oops wrong boolean operator

* Fix skulltulas in the check tracker.

* oops, missing comma

* re-formatting of HintStone locations

* Fixes issue when picking up second Progressive Bullet Bag

* Hide bombchu bowling bombchus

* Fixes missed skullScene in location_list

* Reformats shop items

* Re-formats cow checks

* reformat song locations

* reformat "cutscene" checks

* reformat heart container locaitons

* reformat Boss/Dungeon reward checks

* Hide Triforce Completed if not playing Triforce Hunt

* Fixes incorrect chest param

* reformat GS Tokens locations and cuts down on duplicate data

* reformat Ganons Castle checks

* reformat GTG check locations

* Prevents Gift from Raoru from appearing in the check tracker

* more reformatting (botw, ice cavern, shadow temple)

* Should fix a couple more check tracker checks

* reformat spirit temple checks

* reformat water and fire temple checks

* fix RC_ZR_GS_ABOVE_BRIDGE flag typo

* reformat Forest Temple checks

* Fix RC_LW_TRADE_ODD_POTION in check tracker

* reformat child dungeon locations

* reformat overworld locations

* reformat item entries

* New Item Override system

* use new ItemOverrides and use ItemLocations table for getting items

* Saves/Loads directly from/to new ItemLocation table with overrides for traps

* Removes gSaveContext.itemLocations

* Don't load spoiler file on boot automatically.

Currently this means the old spoiler will have to be manually dropped or a new one generated in order to make a new rando file. Next I want to make it so that:
1. The Randomizer Quest button on the file select menu is always unlocked, even if a spoiler is not loaded.
2. If it's selected and a spoiler is not loaded, a menu will appear that asks if you want to generate a new seed or re-generate the previous one (if a spoiler file is present).
3. On choosing to generate a new one, you may also get an in-game menu to quickly apply a preset before generating (not sure if I'm going that far just yet).
4. After that, a seed is generated and you are taken back to the file select screen with the new file present.
5. If a seed is generated via the menu ahead of time, the CVar for loading the spoiler file will be set, but the spoiler file will not be parsed. All the data needed to actually play the randomizer at that point is
already in memory and in the save file (or at least I'll make it so that it is if it isn't already).
6. If a spoiler file is dropped over the window, the spoiler file is loaded, but it will only be parsed to get the seed and the settings, then the playthrough will be generated from scratch with that data. Thus allowing
for hints to be in the user's language of choice no matter what language the spoiler file was generated in.
7. Additionally, there will be a plandomizer mode that, if enabled, causes dragging and dropping a spoiler file to read the entire spoiler file instead of just the seed, and making a new file will use the data from there
instead of generating a new seed. This in particular may be expanded to have a "plando file" that contains more info than a spoiler file would normally have, such as cosmetic data and a more fleshed out
custom message syntax for various types of custom hints and whatnot. But that will be probably much later.

* Auto-gen rando seed when making a new rando file.

Also adds new logic for displaying the seed hash icons. Now, it is displayed in the following situations:
1. On the confirmation page when loading a rando save, the hash icons for *that save* are displayed.
2. On the name select screen after generating a seed, the hash icons for the seed that was just generated will be shown.
3. If you have dragged a spoiler log onto the window, the hash icons for that seed will be displayed while randomizer is selected on the quest select screen.
Currently the spoiler is just ignored, as the logic for pulling the settings from the spoiler file and regenerating the same seed has not been coded yet.

* Fix a few typos/bugs

* Partial conversion to new Settings/Option class

* Further conversion to new settings/options classes

* New settings struct (not fully working, need to wire it up to SaveManager)

* Move save files to new settings struct. Also fixes MQ options to match 3drando

* Fixes some spoilerfile related issues

* Cleans up now unused arrays

* Fixes some unhandled entries in parse settings switch case

* Reimplements parsing of settings on file drop to re-generate seeds

* Move merchantPrices into ItemLocation tables.

* Move hints to new struct

* Fixes a few seed gen bugs surrounding hints

* Fix treasure chest game.

* Relocate Entrance Shuffle code into ctx

* Move entrances to new context at runtime

* Remove now unused code from SaveContext and randomizer.cpp/.h

* Fix non-windows builds?

* Moves Dungeon Quests to new context

* Move trials into new context

* Whoops, forgot to construct the Trials in the context.

* Fixes accidental nullptr reference

* Fixes bug with saving MQ dungeons

* Implements plando mode and removes now unused code.

Largely untested, expect some bugfixes.

* prevent a multiple definition bug

* another attempt to fix the gSeedTextures multiple def error

* Fixes some minor hint issues from conflict resolution

* Some additional glue needed for merge

* Fixes another couple of miscellaneous issues/inconsistencies.

* A few french corrections

* Makes CVar gRandomizeWarpSongText match the checkbox default value.
2023-11-13 13:25:37 -05:00
Adam Bird 30ab8e9ed7 version bump to MacReady Alfa (#3363) 2023-11-06 20:55:50 -05:00
Adam Bird b6a3ed93a2 bump lus (#3361) 2023-11-06 20:05:18 -05:00
Pepe20129 1d3e7d4be9 Add MS shuffle to the hell mode preset (#3360) 2023-11-06 16:48:20 -06:00
Adam Bird 959b307b9e Fix: Repair working directory on Mac and use app directory for extractor search paths (#3359)
* fix otr regen on mac release

* linux args
2023-11-06 16:46:48 -06:00
Adam Bird 460b3d02f5 [OTR Archive] Move shared scenes out of nonmq/mq folders (#3191)
* share common scenes between mq and nonmq

* move shared scenes under shared folder and bring back thieves hideout mq handling

* update headers for shared scenes

* bump submodules

* remove mq handling for mirror world song patch

* only have unique dungeons be nomq/mq variants

* bump submodules
2023-11-06 16:44:49 -06:00
inspectredc 8b78cb832a items tied to items rather than slots + dpad items now work (#2884) 2023-11-05 22:33:51 -06:00
Malkierian 8e00265ff8 Add checks to Windows for running in temp directory (running from archive), and proper file permissions (write/modify, to prevent things like Program Files or Windows, or other folders we couldn't know about that don't have proper file permissions). Instructs users as to what it discovered and how to fix, then exits. (#3097) 2023-11-05 22:04:21 -05:00
Malkierian 8745881815 Add UI scaling combobox with 4 options (one smaller than default, two larger) and experimental tag. (#3037) 2023-11-05 21:21:44 -05:00
Caladius ecafa87195 Updates from Feedback, Wallet size affects reduction rate and wider range of interval options. (#3335) 2023-11-05 19:53:46 -05:00
Ralphie Morell e90dc91767 gee bill how come you had TWO master swords? 2023-11-05 13:52:19 -05:00
Ralphie Morell 05ba7874ae does this work? 2023-11-05 13:42:31 -05:00
Ralphie Morell 5de2e731c8 move boss soul assets 2023-11-05 13:33:28 -05:00
Ralphie Morell 4ff7e54426 clean out old OTRExporter 2023-11-05 13:24:07 -05:00
Ralphie Morell f7b8e8ed65 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-11-05 13:18:43 -05:00
krm01 127f2651df vanilla bugfix for wall climbing on edge of polys (#3358)
* vanilla bugfix for wall climbing on edge of polys

* rename missed vars

* add CVar toggle
2023-11-05 12:07:44 -06:00
Adam Bird f1f04a5583 Add TTS for Game Over menu (#3338) 2023-11-05 12:06:21 -06:00
Ralphie Morell 8ad79a7855 horseshit 2023-11-05 12:50:41 -05:00
Adam Bird 7e9efeeadb [OTR Archive] Store soh version in OTR files and verify on launch/ask to regenerate (#3218)
* parse sohver arg and store version file in otr

* parse args for soh.otr gen only

* pass soh version from built in extractor

* update launch scripts, cmake and extract steps to pass soh version

* check otr versions and error or ask to regenerate

* add wiiu core header for osfatal

* review feedback

* remove soh dummy version for lus change instead

* only configure linux script for linux

* change lus commit

* rename soh version to port version

* fix submodules

* bump OTRExporter

* clean up error messages for switch/wiiu

* strings not char array

* typo

* init wiiu before otr detection

* Add message for mac/linux extraction

* remove unneeded exits

* change version number types to u16 to fix 32bit devices

* bump otrexporter
2023-11-05 12:34:39 -05:00
aMannus 13a8a1a5cc Randomized Enemy Sizes (#3321) 2023-11-05 07:54:23 -06:00
Garrett Cox 20bb36c164 Merge pull request #3352 from Archez/mergeDevelopIntoRando4
Merge develop into develop-rando
2023-11-05 07:43:24 -06:00
Malkierian 39a7437fc8 [Bugfix] Prevent crash in audio editor when shuffling over old CVar format (#3337)
* Add a `CVarClear` inside the check for a sequence's lock to get rid of old data.

* Rework all replacement and lock `CVarSetInteger` calls to call a function which checks for previous format with `CVarGet` to know if it needs clearing before setting either the lock or the sequence

* Swapped everything over to a migrator where it loops through the `sequenceMap` and just clears everything from there in "gAudioEditor.ReplacedSequences"
2023-11-05 08:57:59 +01:00
aMannus e60761eb61 Fix audio editor mistake (#3356) 2023-11-04 23:30:01 +01:00
Adam Bird 6d8dfe7933 Fix: MQ logic for Ganons Castle main area (#3275)
* fix mq logic for ganons castle main area

* update logic to use logic helpers

* add hammer check

* grouping
2023-11-04 23:08:09 +01:00
Pepper0ni 02afac704e Force the Sarias Song magic hint to replace all other Sarias Song text. (#3296) 2023-11-04 22:56:03 +01:00
Malkierian e88c8e68b6 [Bugfix] Fixes check tracker crash on max debug file creation (#3309)
* Change initialization of `areasSpoiled` to improve utilization and fix crash during max debug file creation.

* Renamed `RCAreaFromSceneID` to `DungeonRCAreasBySceneID` for clarification.
2023-11-04 22:53:29 +01:00
Adam Bird 44ee6da0aa fix quest assignment (#3343) 2023-11-04 22:52:09 +01:00
Adam Bird 25f05e68b3 fix entrance rando validation missing edge cases (#3344) 2023-11-04 22:50:28 +01:00
Eric Hoey 678578823f Fix preset strings for spocks (#3349) 2023-11-04 22:49:41 +01:00
Adam Bird 36617cb77d fix master sword check not being behind door of time and some other logic checks (#3353) 2023-11-04 22:48:43 +01:00
Adam Bird 129f410aba Merge remote-tracking branch 'origin/develop' into 'origin/develop-rando' 2023-11-04 00:13:14 -04:00
Pepper0ni 051314e8b1 Refactor Hint Creation and add support for hint Copies and fixed number of hints. (#3205)
* Initial implementation of no-duplicates of special hints

* stupid fixes

* Impa's song will no longer be hinted when you skip child zelda

* fix building

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* Fix building after rebasing in deduplication

* redelete keys.hpp

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* First part of copies implementation

* Refactor hint system (broken)

* fix building

* fix obvious errors

* fix fixed hints doubling after failing to place a hint

* Fix bugs with hint distrabution

* Split PlaceRandomHint and fix hint bugs

* Merge special hint functions, move special hint text to the HintTable, expand LightArrow hint category into OtherHint category.

* Fix remaining hint distribution errors

* Forgot to stage dampe diary update

* Restore building after conflict resolution

* fix SetAllInRegionAsHinted
2023-11-02 11:42:33 -05:00
Ralphie Morell 4006c10bda don't kill ganon if no ganon boss soul setting;
save editor support
2023-11-01 22:15:03 -04:00
Ralphie Morell 58aab05e41 cleanup hook 2023-10-31 23:54:05 -04:00
Ralphie Morell b34471030c refine boss soul model (thanks sitton76!) 2023-10-31 20:31:27 -04:00
Ralphie Morell e1706e2aa1 test model v1 2023-10-30 21:50:00 -04:00
Ralphie Morell 0a5722d3ef Fix map/compass hints not showing V/MQ status 2023-10-30 17:44:21 -04:00
Caladius ff7fa77427 Addresses Forest Temple Poes and NPC Dialogue issues. (#3334) 2023-10-30 11:00:24 -05:00
Pepper0ni 2810996475 Fix Entrance hubs having no HintKey, causing hints to No Item (#3295)
* Fix Entrance hubs having no HintKey, causing hints to No Item

* Add castle grounds hint area to cover the OGC/HC to market entrence
2023-10-30 10:57:36 -05:00
inspectredc 5dd82f59e2 Player Equip Docs (#3282)
* hopefully everything

* update docs for MS shuffle sections
2023-10-30 10:56:36 -05:00
Tina H. (sheepytina) a04ee354d4 Add "Navi Targeting Colors" options to Controller LED Color (#3254)
* Add a (not yet functional) "Navi" option.

* It works!

* Slightly better name for this menu option.

* Revert accidental commit of comments in z_en_elf.c

* Renaming and tweaks.

* Temporary fix(?) for compile error on non-Windows platforms.

* … Just pretend this particular commit doesn't exist. :OHYEAH:

* A more suitable fix. + Partial suggestions from review.

In-progress implementation of Cosmetics Navi colours.

* Convert relevant code to use Color_RGB8 sans alpha, matching the controller LED.

Defaults are now labeled for clarity.

* Revert back to Color_RGBA8. + Implement Cosmetics Navi colours.

Add Color conversion functions.

* Tidy comments.

* Changed mind yet a third time. Uses Color_RGB8 sans alpha again.

Uses CVarGetColor24 instead of CVarGetColor to drop alpha from cosmetics editor values, like how Tunic Colors does it.
This of course does require me to go with the prior idea of storing the Navi colours without alpha channels.

* Color type conversion functions removed

as they're no longer needed.

* Tidy up commented out code once more.

* Fix a typo

* Suggestion from code review. (Yeah nah you're totally right though.)

* Correct indentation.

* A minor goof in the comments was bothering me.
2023-10-30 10:55:53 -05:00
Adam Bird 671ce062d0 improve free camera reset (#3225) 2023-10-30 10:55:26 -05:00
Andrew Van Caem dab070a8a1 Added 'Fix enemies not spawning near water' checkbox to Fixes (#3179) 2023-10-30 10:55:02 -05:00
Pepe20129 e4cfc8852d Add gRegEditEnabled (#3173)
* Add gRegEditEnabled

* Remove TCRF link
2023-10-30 10:54:53 -05:00
Ralphie Morell 279af81ead Implement custom draw for souls;
change souls from tokens to blue fire
2023-10-30 01:13:26 -04:00
Ralphie Morell 9b49d73814 playtest feedback; cleanup 2023-10-29 21:48:57 -04:00
Ralphie Morell be37cabaa9 pls build on mac 2023-10-28 01:20:13 -04:00
Adam Bird fd09a12fff String copy util method and fix Save Manager string copy overflows (#3274)
* add safe string copy method

* use string copy for save manager

* use string copy in spoiler log hint parsing

* remove intermediate string vars

* more string copy use in randomizer methods

* use string copy in gameplay stats

* add load char array method to remove string intermediate var

* try string.h import instead
2023-10-27 15:18:56 -04:00
Ralphie Morell 2e50fbb0d2 Rework boss soul helper 2023-10-27 00:48:36 -04:00
louist103 837072f80f Check for compressed files in the extractor (#3292)
* Check for zip/rar header in the extractor.

* 7z
2023-10-26 19:39:26 -05:00
Eric Hoey 7d120a021f Apply Goron Neck Length to Goron City Shopkeeper (#3289)
* Add limb override for Goron shopkeep

* Remove extra line breaks

* Fix bug with goron neck length

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-10-26 19:39:18 -05:00
inspectredc a6de59e09f model docs (#3281) 2023-10-26 19:38:43 -05:00
Malkierian de430dc256 Fix for "Fewer Tunic Requirements" allowing child access to Fire Temple Boulder Maze (#3273)
* Add `IsAdult` to Fewer Tunic Requirements check for `FireTimer` in rando logic to preven placing items in lower maze expecting child to get them.

* After discussion, decided to change it to lock access only to lower maze so child access with dungeon shuffle remains intact.
Also changed the tooltip for Fewer Tunic Requirements to reflect the current status of what the trick enables.

* Further update to tooltip.
2023-10-26 19:38:10 -05:00
DeusVexus 743be7b684 Adds the easy Quick Put Away (QPA) cheat (#3268)
* Adds an easy qpa cheat that gives the
glitched damage value of the quick put away glitch

* Adds RegisterEzQPA(); under InitMods()
2023-10-26 19:38:02 -05:00
Pepe20129 c031edae98 Add no rando generated warning (#3263)
* Add no rando generated warning

* Update texts

* Randomizer warning messages (#4)

* Fix french typo

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2023-10-26 19:37:51 -05:00
inspectredc 2cbbaba9cc draw a button 2023-10-26 18:41:45 +01:00
Malkierian b47164a110 Fixes custom sequences not being listed in Audio Manager dropdowns, and adds a check to the shuffle function to make sure sequences with canBeUsedAsReplacement = false can't be shuffled in. (#3324) 2023-10-25 13:14:26 -05:00
Adam Bird 4fc0d5a753 Fix CMake extract targets to not use absolute path for xml root (#3330)
* extract using a relative path to xmls

* pass xml root for header generation
2023-10-25 02:36:15 -04:00
Adam Bird e369ad4c86 Pass in custom assets to OTRExporter (#3328)
* bump submodules and use custom assets dir

* bump submodules
2023-10-24 20:51:54 -07:00
Adam Bird 3558a32222 Merge pull request #3315 from Archez/move-soh-assets
Move SoH custom assets out of OTRExporter
2023-10-24 20:12:14 -07:00
Garrett Cox 02f61bc3fa Fix two missing changes after ms GI enum was changed & hint fix (#3319)
* Fix two missing changes after ms GI enum was changed

* Remove unnecessary line break from hint, and fix infinite loop within AutoFormatHintTextString

* Update soh/soh/Enhancements/randomizer/3drando/hints.cpp
2023-10-22 20:08:56 +00:00
Pepper0ni 15ebcd30fb Remove disabled special hints and warp song hints from the spoiler log (#3110)
* Initial implementation of no-duplicates of special hints

* stupid fixes

* fix always hints being suppressed by special hints

* Impa's song will no longer be hinted when you skip child zelda

* fix building

* Remove disabled special hints from the spoiler log

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Fix not detecting text size correctly and badly named greg hint

* Remove disabled special hints from the spoiler log

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* Fix building after rebasing in deduplication

* redelete keys.hpp
2023-10-22 10:11:36 -05:00
inspectredc 77c8c832c0 Use correct save context for triforce piece collected save data (#3301)
* gSaveContext->saveContext for triforce piece save manager save

* use an arrow..
2023-10-21 20:55:55 -05:00
Adam Bird 3516b4443d fix triforce transition offset values (#3285) 2023-10-21 20:55:41 -05:00
Ralphie Morell 2eaed8d81e Rando: Master Sword Shuffle (#2981)
* The mother of all commits

* Removed `GI_SWORD_MASTER`;
"Master Sword" Items now actually give MS

* Removed dupe MS entries in item pool;
updated GIMESSAGE (should stop crashing on non-Windows);
re-added MS in item list

* Give Adult Link a freebie with shuffle MS on;
cihld -> adult no longer gives MS;
ToT Master Sword now gives correct item

* add master sword GI draw func based on ToT MS object

* Force `MasterSword` logic var to only update upon getting MS

* Dorf funny line now activates with LA and MS in inv

* Apply suggestions

* Updated RAND_INF;
Check Tracker changes;
Gave RAND_INF and ice trap logic to ToT MS check;
Fixed swordless behavior for HBA/fishing

* ToT MS Check now works in check tracker;
Visual bug where box hovers over non-existent MS gone;
Fixed RAND_INF check with ToT MS pedestal;
Ganon no longer gives free MS

* adult equips no longer reset in MS shuffle

* Apply (most) locacc review suggestions

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

* Reorganized swordless check for interface to fit edge cases;
getting master sword no longer highlights box

* Edge case for BGS but no bow

* Fix implicit declaration error for GI hooks (#9)

* Adjusted `CanAdultAttack/Damage`; applied logic suggestions

* Fixed build errors (hopefully)

* Cleanup merge

* get shit working again

* Tidied up remaining uses of DD flag as rando indicator

* make master sword invisible and fix ms flag (#10)

* Add text to sheik if go mode is obtained but barrier is still up

* overhaul swordless behavior in `func_80083108`

* reworked ToT MS Check to have an actual GI

* suggestions

* Apply suggestions

* Better swordless handling with temp B (#11)

* better swordless handling with temp B

* prevent auto save in fishing pond

* prevent auto save during bombchu bowling

* enum fix

---------

Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-10-21 20:51:37 -05:00
Adam Bird 12c09ecc3d Merge remote-tracking branch 'origin/develop' into move-soh-assets 2023-10-20 21:09:32 -04:00
Christopher Leggett 2a52493d1f 100GS Tracker Fix (#3314)
* Fix 100 GS check in check tracker

* Add missing rcToRandomizerInf entry for 100 GS tokens
2023-10-21 00:43:25 +00:00
Adam Bird c61f519f17 move soh assets out of otrexporter 2023-10-20 20:23:41 -04:00
inspectredc e6445e0ce3 Age Requirement Docs (#3277)
* age req docs

* move macros

* use decomp names
2023-10-20 18:40:10 -05:00
quellen-sol f56e839480 Add Geo rupee name (Hollow Knight) 2023-10-20 15:40:28 -07:00
Christopher Leggett 4d7fb88e2e Fix 100 GS check in check tracker (#3311) 2023-10-20 19:37:59 +00:00
Pepper0ni b294188782 Faster Swim animations, full credit to kimimaru4000
Co-authored-by: kimimaru4000 <kimimaru@posteo.net>
2023-10-20 12:35:05 +01:00
Ralphie Morell 9d8eab4511 add souls back to item list 2023-10-20 00:16:21 -04:00
Malkierian 35b4357776 Moved Heaps_Free outside Main after DeinitOTR, and mirrored Heaps_Alloc before and outside of Main. (#3279) 2023-10-20 03:36:52 +00:00
Ralphie Morell f41bbeab06 actually get it running 2023-10-19 23:14:51 -04:00
Ralphie Morell 4d31463044 merge pt 2 2023-10-19 21:21:00 -04:00
Ralphie Morell ce94c047b5 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-10-19 21:20:43 -04:00
Christopher Leggett 92028aa8d8 Rando Definition Deduplication (#3284)
* Initial StaticData and RandoItem class definitions

* Initial implementation of RandoItem class.

* Rerranges RandoItem Constructor parameters

The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.

* Switches static data from map to static array.

Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.

* Defines part of the randomizer item list.

* Adds more item class instances to item_list.cpp

Up through bottles, many more items still to go.

* Adds song items

* Adds Maps and Compasses to the item_list

* Added Key Items to item_list

* Added Key Rings to item_list

* Added Dungeon Rewards to item_list

* Adds generic items and refills to item_list

* Adds shop items, triforce, and hints

Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.

* Adds in the stages of progressive items

These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)

* Remove GetItemEntry data from progressive items

* Moves/adds function definitions to item/item_list

* Refactors GetItemEntry data

It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)

* Adds item class member for if item is progressive

* Removes unneeded stuff from initializer list macro

* Replaces relevant `uint32_t`s w/ `RandomizerGet`s

Also replaces calls to the ItemTable method with StaticData::RetrieveItem

* Switches our runtime code to use the new itemList.

* Changes just enough hint gen code to compile

* Initial Definition of Location Class

* Initial Implementation of Location

* Fixes some names and definitions.

* Extracts ActorID and SceneID enums to separate files.

This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.

* Replaces the forward definitions with the new imports.

* Adds missing data for RandomizerCheckObjects.

* Definition and first entry of locationTable

* Added Mido's House Locations

* Added locations up through lost woods.

* Adds in Hyrule Field locations.

* Adds Lake Hylia locations

* Adds location name comments

* Adds Gerudo Valley Locations

* Adds Gerudo Fortress locations.

* Adds the Wasteland and Collosus locations

* Adds Market locations

* Adds Hyrule Castle locations.

* Adds Kakariko and Graveyard locations.

* Adds Death Mountain checks.

* Adds Goron City locations

* Adds Death Mountain Crater locations

* Adds Zora's River locations

* Added Zora's Domain Locations.

* Added Zora's Fountain locations

* Adds Lon Lon Ranch locations.

* Adds Deku Tree locations

* Adds Dodongo's Cavern Locations.

* Adds Jabu Jabu's Belly Locations

* Adds Forest Temple Locations

* Adds Fire Temple Locations

* Adds Water Temple Locations

* Added Spirit Temple Locations

* Some of shadow temple locations.

* Adds remaining Shadow Temple locations

* Fixes a leftover merge conflict

* Adds Bottom of the Well locations.

* Adds Ice Cavern locations

* Adds GTG locations.

* Adds Ganon's Castle and Tower locations

* Adds dungeon Gold Skulltula locations.

* Adds Overworld Gold Skulltula locations

* Adds dungeon reward locations

* Adds Heart Container Locations

* Adds Cutscene and Song locations

* Adds Cow locations

* Adds Shop locations.

* Adds hint locations

* Adds function for retrieving the Location data.

* Initial definition of ItemLocation structure for tracking runtime data

* First push on converting code to use new location definitions

* Changes hints to use the new tables

* Further conversion of hints to new definitions.

* Adds new Hint and Location IDs to area tables

* Moves areaTable to use new RandomizerRegion keys

* Removal of 3drando/item_location files.

* Uses new RandomizerRegion keys in entrance.cpp

* Final push for removal of massive keys.hpp enum

* Uses new SceneID Enum Values

* Remove RandomizerCheckObject structs in favor of new location list.

* Fix a few stragglers to successfully build

* Rename of RandoItem to just Item, but in the Rando namespace

* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.

* More hint related fixes/edits

* small fix for #include path

* Fix various miscellaneous issues related to seed gen and spoiler parsing.

* Handle progressive items correctly.

* Fixes some hint generation logic

* Fix a few GetItemEntry niche bugs.

* Adds missing shop GI Entries

* Formatting fixes

* small formatting fix

* Namespace StaticData under Rando

* Added a note about a potential use-after-free.

I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.

* Fixes missing location table entries

* Fixes LUS submodule and removes now-unused code

* Resolves weird duplicate definition issue

* Fix missing include

It was missed because not being included wasn't an issue on Windows.

* Fixes error present on Linux builds

* Fixes some issues with excluding locations

* Updates the Resolve Exclusion conflicts function

not sure if actually used, will look into that more later

* Removes some duplicate RGs

* More fixes of duplicate RG values.

* Fix a few duplication issues in the check tracker.

* Fix progressive bombchus.

* Minor typo fix, shouldn't really be affecting anything though

* Should fix some of the remaining check tracker issues.

* oops wrong boolean operator

* Fix skulltulas in the check tracker.

* oops, missing comma

* re-formatting of HintStone locations

* Fixes issue when picking up second Progressive Bullet Bag

* Hide bombchu bowling bombchus

* Fixes missed skullScene in location_list

* Reformats shop items

* Re-formats cow checks

* reformat song locations

* reformat "cutscene" checks

* reformat heart container locaitons

* reformat Boss/Dungeon reward checks

* Hide Triforce Completed if not playing Triforce Hunt

* Fixes incorrect chest param

* reformat GS Tokens locations and cuts down on duplicate data

* reformat Ganons Castle checks

* reformat GTG check locations

* Prevents Gift from Raoru from appearing in the check tracker

* more reformatting (botw, ice cavern, shadow temple)

* Should fix a couple more check tracker checks

* reformat spirit temple checks

* reformat water and fire temple checks

* fix RC_ZR_GS_ABOVE_BRIDGE flag typo

* reformat Forest Temple checks

* Fix RC_LW_TRADE_ODD_POTION in check tracker

* reformat child dungeon locations

* reformat overworld locations

* reformat item entries
2023-10-19 18:48:25 -05:00
inspectredc c3784b9758 Fix greg as reward logic (#3297) 2023-10-19 18:14:23 -05:00
inspectredc 9d581f10e7 magic (#3278) 2023-10-19 18:13:33 -05:00
Ralphie Morell e005985559 Added tracker support 2023-10-19 17:17:45 -04:00
Ralphie Morell 0751c59530 also remove phantom ganon's horses if he's not there 2023-10-19 00:23:05 -04:00
Ralphie Morell db4a30a7ff don't commit at fucking 2am 2023-10-18 23:58:14 -04:00
Ralphie Morell 51e965cf7e Cleaned up soul helpers; added check for ganon soul 2023-10-18 20:58:09 -04:00
inspectredc 38d70dd12f update tooltip to mention glitch use 2023-10-18 23:04:55 +01:00
inspectredc 1b2a31e34b Add success sound for toggle and equipping delay 2023-10-18 22:11:04 +01:00
inspectredc 9950c02fb2 Strength name un-greyed out and apply zoom regardless of strength disabled 2023-10-18 21:39:04 +01:00
inspectredc c22d1e724d No longer grey out bracelet as adult when toggle option is on and strength enabled 2023-10-18 21:29:00 +01:00
inspectredc 03ea465251 Toggle Strength 2023-10-18 21:21:50 +01:00
Ralphie Morell 582771ab48 insert witty commit message here 2023-10-18 01:30:49 -04:00
inspectredc cff2e37287 Restoration: RBA Values (#2672)
* Restore RBA Values

Matches all rba scenarios achievable in game to their original outcomes. This only ends up affecting certain trade items.

* tooltip rewrite

* rba cases generalised

* re-add to menu bar

* better byteswap and checks for endianness

* remove leftover defines
2023-10-17 09:25:09 -05:00
Garrett Cox f30e76e7b1 MVP ValueViewer 2023-10-17 08:54:52 -05:00
aMannus da92ac6a37 Audio Editor clean-up (#3256)
* Progress on SFX cleanup/sorting

* Fix crash after dev merge

* Rename vars
2023-10-17 08:29:13 -05:00
louist103 4a70fea67f Move ZAPDTR and OTRExporter to sub modules (#3298) 2023-10-17 00:32:42 -04:00
Garrett Cox 8357c2aa1b Merge pull request #3294 from HarbourMasters/develop
develop -> develop-rando (10/16/23) 2: Electric Boogaloo
2023-10-16 09:22:39 -05:00
inspectredc fe90ad0268 MM Bunny Hood effect separated from ability to equip as adult (#3253)
* adult separator

* use cross instead of checkmark

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* suggested load fix

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-10-15 18:10:24 -05:00
PurpleHato 3ed976e6af TWEAK: Add transition to the Time Travel feature (#3276)
* ADD/ Proper Transition

* REM: Dupe
2023-10-15 18:09:55 -05:00
Adam Bird 42f6cfe66b add save editor field for current b button item (#3262) 2023-10-15 17:25:52 -05:00
aMannus a3c52626e6 Randomizer - Colored hints (#3259)
* Colored hints

* Missed 2 french translations
2023-10-15 17:25:43 -05:00
Patrick12115 784737dc7b [Difficulty Options] All Dogs are Richard (#3243)
* Oops, all Richards!

* Sure is
2023-10-15 17:22:47 -05:00
inspectredc 041a3792fc Equip Tunic and Boots while performing most actions (#3239)
* tunics and boot equips initial

todo: find an appropriate place to first put Player_AssignTunicBoots

* move to more appropriate place

* assign -> use
2023-10-15 17:22:31 -05:00
Adam Bird 5ddc418777 redicle -> reticle (#3257) 2023-10-13 23:14:18 +00:00
Patrick12115 260078c871 [Cosmetic] Adds Bunny Hood to Cosmetic Editor (#3245)
* Color and Invisible Checkbox

GI model crashes when talking to mask salesman

* Update z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Update z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Move bunny hood coloring to patch

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-10-13 23:13:17 +00:00
Adam Bird 57d4d1ae20 typo on asset attribute for pal1.1 (#3264)
* typo on asset attribute

* base address fix
2023-10-13 23:12:16 +00:00
inspectredc 8c7786d4bb Replace Race Preset Magic Numbers and Remove gPreset1 from No Logic Preset (#3255)
* magic

* Remove gpreset1
2023-10-11 15:11:04 +00:00
Adam Bird 2a356b6e9a bump lus to latest main (#3249) 2023-10-11 15:10:47 +00:00
Adam Bird 1829a6a154 Update buildBUILDING.md and adjust cpack for Windows (#3229) 2023-10-09 15:28:22 +00:00
briaguya 7e0cb66c58 Create GAME_CONTROLLER_DB.md (#3219) 2023-10-09 15:27:31 +00:00
Julian Garritano bb23fbc143 Fix Warp Song Hints option (#3260) 2023-10-07 10:33:35 -05:00
inspectredc 095fd8b625 done (#3248) 2023-10-07 10:32:02 -05:00
Adam Bird e66be83eb7 Fix quest type bleeding through saves (#3241) 2023-10-05 15:35:49 -04:00
Christopher Leggett 85432ce496 Adds option for Lost Woods leading music to be disabled. (#3233)
In the Audio Editor Options tab, useful for hearing Custom Sequences more clearly in the Lost Woods.
2023-10-04 10:09:37 -05:00
inspectredc a92844fa92 Remove rando specific getitemid check (#3237) 2023-10-04 10:09:00 -05:00
Adam Bird b70837f5ea N64 PAL 1.0 support (#3182)
* initial n64 pal 1.0 support - hashes and rominfo

* initial xml copy pal 1.0

* initial offset fixes

* update title copyright to be platform based

* bump lus for clearMtx

* add scripted xml definitions

* offset fixes and xml fixups

* rename and sort pal mq definition

* more offset fixes
2023-10-04 10:05:02 -05:00
Malkierian 70a83f647f Check Tracker Update (#2668)
* Initial commit. What works so far:

Data file loads, saves, deletes, and is created properly.
 - Need to run `HasItemBeenCollected` when creating in case of mid-seed regen.
Organized checks into maps set by area.
Areas show in tracker.

 - Checks pulled from checkObjectsByArea are not currently listed.
 - Areas are being assumed completed and hidden at the start.

* Checks now populate. Still not counting area totals properly.

* Don't track RC_LINKS_POCKET in the data file, and instead manually add it in every time a save is load. rcObjects doesn't contain Link's Pocket location (duh).

* Moved ItemReceive hook to randomizer_check_tracker.cpp.

Skipped items are properly sorted and formatted.

Saved items contribute to an area's gotten/skipped checks on load.

Changed skipped items default main color to gray.

General code cleanup.

* Skipped checks now contribute to area totals for area completion logic.

* Mid-menu rework transfer.

* Started check lookup on item receive.
Tried to enable scum checking on save.

* Fixed scum check on save.

* More code cleanup, which revealed some issues with loading and saving. Loading now works 100%, but entries in checkTrackerData are disappearing in code somewhere, causing issues with later checks.

Scummed color now displays properly.

Collected but unsaved displays properly.

Unchecked, Skipped, Seen and Scummed checks all have arrows for skipping/unskipping.

Counts a little messed up, probably double adding skips.

* Fixed item counts being off across resets. Restarts were fine.

* Beginning of rework for individual check updates. Adds `Actor lastCheck` to PlayState to allow assigning of last actor to give an item. This allows precise tracking of GS, freestanding PoH, etc. Works for chests too. Currently does not work for shops, unknown for normal NPC gives. Doesn't track last gives for non-checks, like drops from grass, pots, crates, etc.

* Actor-based checks fully fleshed out, but can't help with sale-based checks. Implemented `pendingSaleCheck` to back out of an RC check cycle if `gSaveContext->pendingSale` is not NONE when `OnItemReceive` is called, processed through `OnSaleEnd`. This should be the final change necessary to streamline the checks.

* Temporary hook to message box close to tie in trackers for non-gs/chest actors that aren't added to `GetCheckFromActor`. This triggers a 2-frame countdown to check with `HasItemBeenCollected` since half of the methods in there aren't updated until after a text box closes.

Added scene tracking to get last scene so that checks in scenes that span several overworld areas could be tied to their areas properly.

Modified tracker data creation to apply Link's Pocket and Song from Impa conditionally based on randomizer settings instead of just being assumed to be done. May need modification for checking click and drag spoiler loading.

Removed the scene equivalence check from CheckChecks so that an entire area is checked each time to avoid issues with, e.g., leaving a shop before a pending sale finishes.

* Changed check data creation to use RSKs from gRandomizer to account for settings loaded from drag and drop spoilers.

* Beginning of tracker code organization.

Changed check color defaults.

* Reverted moving tracker colors to header.

Some individual check fixes.

* Missed something from previous merge?

* Removed last remnant of removed performance mode.

* Better handle checking when skullsanity is off.

* Song checks sceneIDs don't match the scenes they're actually in for some reason. Removed that check.

* SaleEnd checks don't need the GetItemEntry parameter. Also set a flag that should prevent the check tracker from running during vanilla saves should that not be resolved by the time it's merged.

* Attempting to have only the relevant checks added to the tracker data, as well as showing vanilla checks for non-rando saves. Not working yet (everything is displayed in vanilla).

* Added vanilla check tracker population via `vanillaCheck` bool in `RandomizerCheckObject`. This is also added to `IsVisibleInImGui` to handle file loading and saving to eliminate checks that aren't part of vanilla or the rando seed.

Implemented deleted tracker data file recreation.

Added some extra item name text checks. Songs are still... tricky, so they stay blank.

Utilize local copies of the randomizer check objects that are applicable for performance purposes.

Fixed vanilla item-giving cutscene crashes when triggered mid-transition.

* Apparently not all toolchains can handle macro instantiation without all parameters, like VS can.

* Fixed scummed detail color not showing properly on tracker.

* Fixed dungeon area totals and GS checks not functioning properly.

* Major revamp of checking code. Doesn't rely on `GetCheckFromActor` at all anymore, but instead simply sets a flag to evaluate a number of checks in an area every frame until the check that was gotten is identified. With the new setup, it's much less hardware intensive, and at 60fps 6 checks per frame shows no noticeable effect on framerate. I can envision needing to add a collectedCount in order to account for times when two checks are gotten one right after the other.

Changed area scroll to happen from `OnTransitionEnd`, and allow for scrolling in bazaar (was disabled previously because it would jump back and forth between Kak and Market while you were in one).

Also setup area check order updating by area instead of all at the same time.

* Fixed shooting gallery not reporting proper area.

Prevent checks from actually happening if area is RCAREA_INVALID, now that all areas are reporting something if they have checks.

Fixed `GetCheckArea()` not updating checks for standard scenes.

Lots of vanilla tracking updates, mainly manual checks for gems, medallions and songs, since the often don't have proper scenes in the data.

Prevent vanilla from triggering check loops if junk items are collected.

Fixed sorting based on saved vs collected.

Prevent item name display for vanilla runs.

Change coloring of checks so the check name reflects status in vanilla runs.

* Fixed "Recheck Area" button erroneously adding to an area's check totals?

* Fix DMC vanilla checks.

* Fix check tracker data recreation on data file loss.

Removed redundant file exists check from SaveTrackerDataHook, as it doesn't matter if it exists or not at that point.

Limited check loops to 3 to avoid infinite check loops on non-check/junk item pickup.

Added more checks to disable tracker operations if a save is not running.

Changed check ordering to put boss reward and heart container checks at the end of whatever RCSHOW group they belong to.

* Fixed IsRunning calculation.

Further improving vanilla checking.

Starting framework for checking medallions, stones, and songs on data file recreation.

Fixed medallion check collection.

Added GIFT_FROM_SAGES to check list for vanilla file for tracking light medallion.

Added check loop limitation to prevent infinite checking after picking up junk item from the ground.

* Finished vanilla file recreation and recheck (songs and dungeon rewards all check properly now). This includes deku shield with KF shop item 3.

Finished Gift from Raoru light medallion tracking for vanilla.

Commented all CheckByScene functionality for now.

* Fixed new save data file creation.

Disabled entrance area calculation for now, as it only tracks the previous entrance for some reason.

Fixed area detection for ToT checks.

* GetCheckArea() now utilizes EntranceData almost exclusively, via either `gSaveContext.entranceIndex` or the entrance tracker's `currentGrottoId` in the case of grottos.

This also means that EVERYTHING CAN AUTOSCROLL NOW. Entrance shuffles are now much easier to track.

Autoscroll is now also triggered on save, just in case someone isn't autosaving and has a lot of checks that get converted to saved.

* Fixed missing GS check in LW.

* Added area scroll on toggling Show Hidden Items. May configure differently later.

Fixed area detection for entrances in Gerudo Fortress/Valley and Collossus. Haunted wasteland doesn't autoscroll due to a bug in `OnTransitionEnd` hook, but checks still evaluate properly there.

Rely on scene-based area detection if scene is a main overworld or dungeon scene.

* Fixed grotto detection when shuffle is off.

* Small code cleanup.

Fixed Colossus hand chest checks.

* Missing lus bump from merge conflict resolution

* Fixed Colossus Grotto making `GetCheckArea` return Wasteland.

* Improved OnItemReceive processing for non-token GS checks, since they can sometimes take long enough for the checking process to time out before the item is registered as received.

* First attempt at thread safety for tracker data file writing. Seems to work, but might need more testing.

* Fixed Recheck Area not unskipping items that register as saved.

Improved delayed saving with autosaving, as the autosave triggered quite often before the tracker data save, making things not properly register as saved.

* merge cleanup

* Converted check tracker data to the sectional saves, adding `CheckTrackerData` to `SaveContext`.

Implemented section ID returning and fullSave boolean passing to section functions from my PR temporarily for it to work properly.

Moved `RandomizerCheckTrackerData` enum to `randomizerTypes.h` to accommodate that.

Changed `Randomizer_SaveInit` to a `SaveManager::InitFunc` to allow for other randomizer-dependent sections to be initialized after that. Required a little refactoring to maintain intro cutscene skip when starting a randomizer file.

* Revert section index return and randomizer init changes. Will need to wait on yet more changes to main.

* Fixed check tracker initialization (shouldn't be tied to window initialization), restored saving/loading functionality.

* Removed `CheckTracker::Init` and put SaveManager calls in `CheckTrackerWindow::InitElement`. Also a bit of cleanup from transition back to save file use.

* Fixed tracker displaying check categories while file not loaded.

* Fix Darunia's Joy check not marking in vanilla.

* Fix autosave not triggering change from collected to saved in tracker data.

* Changed default colors for scummed and collected display.

* Merge upgrade code cleanup.

* Add `OnTransitionEnd` calls to sandstorm transitions both to and from Wasteland. Also improved `gSaveContext.lastScene` assignment for both transition types. Allowed a bit of cleanup in `GetCheckArea`.

* Added `StateButton`, a button like `ArrowButton` but that allows text instead of arrow icons. Apparently the changes from ArrowButton to StateButton happened in a previous commit...

* Changed section name to `trackerDataCheck` to force SoH to load it after the randomizer section, as it required some randoSettings to be loaded first, and nothing else I tried to make the randomizer section load before it worked. This hacks a solution to checks not displaying on fast file load to a specific slot.

F*** you, SaveManager, and f*** you too, JSON.

* Forgot to change the section string for loading with the name change.

* Fix check ordering for checks that trigger the autosave.

* Adds option to remove right-side shop items (slots 1-4) from the tracker list. Enabled by default.

* Fix default state of Hide Shop Right Checks checkbox.

* Fixes grotto and great fairy scrolling and checks.

Fixes array overflow from `checkTrackerData` which was creating the issue trying to load the base and randomizer sections first, among other things.

That also fixed the massive file loads that were being exhibited in debug mode.

* Fix shooting galleries being set as collected again when being played a second time after getting the checks.

* Fix Bazaar autoscroll.

* Add Saria's Song to `GetCheckFromActor` and removed some limitations from the messageCloseCheck function to make that check track properly.

* Fix Song from Impa check.

Implemented prevention for multiple "collections" of great fairies, just in case getting the health refill would trigger it with the previous setup.

* Fix ice traps on GS tokens not triggering OnItemReceive.

* Complete fix for ice trap collection from GS.

Add autoscroll when clicking "Expand All".

* Add `OnShopSlotChange` with cursorSlot and basePrice parameters.

* Fixed include in en_ossan for shop slot hook.

Added registration for `OnShopSlotChange` in the tracker, storing the price in a new `price` field in `CheckTrackerData`.

Added "seen" functionality to shop checks. Displays the model item name upon first entering a shop, adding the price and switching to trickName (if it's an ice trap) upon navigating to the slot in buy mode, triggered by an invisible "identified" status that mirrors "seen" in every other way.

Added tooltips to most options for check tracker color picking to describe what each status actually means.

* `std::format` pls

* So apparently std::format just decided to break with the latest merge from develop, but fmt::format exists and works?

* Removed the last vestiges of `locationsSkipped`. Other general code and formatting cleanups.

Moved `IsGameRunning` to `OTRGlobals` so the item tracker could also access it.

Used preceding to "fix" item and bottle display in the item tracker on startup.

* Some more code cleanup.

Removed "Recheck Area" button and relevant code.

Backported changes to Anchor branch applicable for single-player, including making a checkAreas vector and structuring the frame by frame checks around that. Also includes fix for Silver Gauntlets and Mirror Shield check collection crash associated with those changes.

Fixed Kakariko Bazaar "seen" updates.

Fixed tracker window not showing on initial load like it should.

* Forgot 1 formatting fix.

* Removed conditions for showing Song from Impa (isn't junk under certain conditions, so should show all the time).

* Fix vanilla checks, add Zelda's Letter and Malon's Egg to manual check collection.

Fix autoscroll while in child stealth section.

* Fix crash in Happy Mask Shop in OnSlotChange (referenced non-existent shop id in a tracker-specific enum).

* General code cleanup.

* Missed one reversion.

* One more.

* Fix column alignment in `randomizer_check_objects`.

* Fix file encoding on `randomizer_check_tracker`. Again.

* Fix indentation for `actualItemtrackerItemMap`. Also removed unnecessary parts of the map.

* Rename `HasEqItem` to `HasEquipment`.

* Slightly better indentation for `actualItemTrackerItemMap`.

* Add magic bean salesman to vanilla check tracking, and genericized deku shield to trigger KF shop item 3 wherever you get the shield.

Renamed `vanillaCheck` to `vanillaHundoCheck` to (supposedly) clarify the meaning of the usage.

* One more rename to `vanillaCompletion` to avoid possible confusion with 100% speedrun conditions.

* give me a break XD

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Changes suggested by briaguya (rename `RandomizerCheckShow` to `Status`, unused code, newline formatting)

* Remove unused `itemNames` table.

* Remove `IsGameRunning` in favor of `GameInteractor::IsSaveLoaded`.

* Restore anti-spoiler functionality for dungeons with dungeon maps.

* Review cleanup.

* Fix prices not showing for Kak bazaar items.

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-10-04 10:03:36 -05:00
inspectredc b1f0c964d2 Item Tracker Combo Button Fix (#3231)
* let words be small

* change >=1 to >0
2023-10-02 14:34:37 +00:00
inspectredc 82d87ff680 Clear Cutscene Pointer Button/Cheat (#2837)
* clear custcene pointer button

* now use RawAction for button

* add button to new menu bar
2023-10-02 14:28:27 +00:00
Malkierian ebfd14974f Modify arrow buttons in Audio Shuffle Pool Manager to be FA times and plus instead of the ImguiArrow to make the difference between "Exclude" and "Play Preview" clearer. (#3226) 2023-09-30 08:55:51 -05:00
Malkierian 6e50d7110a Open App Files Folder (#3221)
* Add "Open App Files Folder" menu item to Ship menu on desktop platforms to open the folder where mods, logs, etc, are found.

* Change to `GetAppDirectoryPath` to get config location instead of executable/bundle path.

Also unified the absolute path creation across all platforms by using `std::filesystem::absolute`. It manages to even expand the "." returned for portable Windows mode.

* Removed unnecessary platform define check.
2023-09-30 08:55:43 -05:00
briaguya 56deb1cf64 unbreakable/always on fire deku stick (#3192)
* Adds Ultra Deku Stick Cheat

Author:    Vexus <vdfk94@gmail.com>

* implement the stuff

* move enum to a resonable spot

* Apply suggestions from code review

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

* i thought i could do everything through the gh web ui but fine i'll fix it locally

---------

Co-authored-by: Vexus <vdfk94@gmail.com>
2023-09-30 08:55:11 -05:00
Adam Bird af19645a88 Fixup remaining n64ddflag after IS_RANDO merge (#3240) 2023-09-29 16:28:16 -04:00
Pepe20129 d63c9d1774 Quest Cleanup (#3178)
* Change most n64ddFlag checks to IS_RANDO checks

* Change most isMasterQuest checks to IS_MASTER_QUEST checks

* Change most isBossRush checks to IS_BOSS_RUSH checks

* Replace isMasterQuest & isBossRush with questId

* Replace n64ddFlag with questId

Also restore authentic n64ddFlag behavior except savefile saving/loading

* Move quest enum from file_choose.h to z64save.h

* Update macros to not take gSaveContext
2023-09-26 09:20:33 -05:00
briaguya 6dd3437ad4 Update README.md (#3228)
* Update README.md

* Update README.md
2023-09-26 08:48:15 -05:00
briaguya 4c693db224 tweak shuffle pool tab to better fit voice option (#3216) 2023-09-26 08:47:18 -05:00
Adam Bird c6356853ae fix better debug warp deku tree entrance (#3195) 2023-09-26 08:47:08 -05:00
aMannus 5d3429e04f CrowdControl bypass voidout/die crash in pre-rendered background areas (#3186)
* Bypass camera crash when voiding/dying in fixed camera areas

* Update comment
2023-09-26 08:46:10 -05:00
Garrett Cox db10864e95 Add flag set/unset hooks and GI actions (#3065) 2023-09-26 08:45:51 -05:00
aMannus bae6cf4203 Randomizer feature: Triforce Hunt (#3062)
* Initial work to make triforce pieces their own rando item

* Disable triforce greyscaling

* Better triforce model, finish adding triforce pieces to logic

* Triforce model is now a shard

* Credits warp + start of item tracker

* Initial item tracker stuff

* Completed triangle on triforce completion

* Completed triforce model on GI done

* Multiple triforce piece models

* Triforce pieces in save editor & fix build

* Finish item tracker

* Gameplaystats timestamp

* Revert parts of logic

* More reverting

* Start of making Triforce Hunt the win condition

* Bit of cleanup

* Triforce pieces can show up as icetraps

* Grant GBK to player after hunt is completed

* Better text boxes

* Disable GBK option in ImGui with Triforce Hunt on

* Clean-up

* Forced save on completion improvements

* Update Item Tracker Settings initial size

* Small ImGui adjustments

* French translation and update defaults

* Finish translations

* Fix timer completion & 50+ triforce pieces

* Remove GI_ and ITEM_ enum usage, add french ice trap names

* Fix build & small fixes

* Review comments

* Comment clarification
2023-09-26 08:45:37 -05:00
Nicholas Estelami ccd05d8e58 Removed hardcoded skeleton types in actor draw code. (#2979)
* Initial PAL 1.1 support

* Misc fixes

* Updated game to remove hardcoded skeleton types when rendering

* Fixed weird rebase issue

* Replaced remaining skeleton calls

* lus submodule fix

* Remove OTRGui
2023-09-26 08:45:10 -05:00
PoorPockets McNewHold 098d5a8044 Add pulseaudio-libs to the necessaries dependencies (#2928)
Create a crash on extraction for systems using pipewire *(and possibly other sounds systems)*.

Co-authored-by: aMannus <mannusmenting@gmail.com>
2023-09-26 08:44:18 -05:00
briaguya 8fdee66610 [ci] silently continue when trying to delete ccache.exe if it doesn't exist (#3222) 2023-09-22 07:19:33 -05:00
Adam Bird bb643661f6 GC PAL MQ Retail support (#3167)
* initial pal mq retail support

* more mq pal support

* pal mq support in the launch scripts

* more offset fixes

* match tluts with mq debug

* update support hashes doc

* target lus commit for playtesting

* more offset fixes

* add hashes for other formats

* decomp name sync

* add scripted texture definitions

* fix up from other xml changes

* update name
2023-09-19 09:30:48 -05:00
briaguya df6c01732a docs: remove outdated docs from BUILDING.md (#3213) 2023-09-19 09:05:37 -05:00
Ralphie Morell c3a1eb2315 Rando: More Misc. Hints (#2930)
* commit constipation

* fix inconsistencies between 3d and soh settings

* Add RSK check for Saria; Sheik now tells you other reqs for ganon

* Translations (thanks Purple and Timmy_GamerNepgear);
Retain Saria's "face-to-face" text in rando if you're too close

* fix scene renames for sheik

* whoops

* Undo LA hint setting erasure from conflict

* Clarified Sheik text IDs; Clarified final frogs hint

* Fixed Sheik text ID assignment; Fixed Saria's messages in `OTRGlobals`

* Added hint locs for sheik and saria

* Set up hook for Sheik spawn;
Sheik no longer cheats with room transitions;
Enforced text IDs on saria msg function

* Set up hook for Sheik spawn;
Sheik no longer cheats with room transitions;
Enforced text IDs on saria msg function

* Update soh/soh/SaveManager.cpp

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* nice.gif

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* got ahead of myself

* Conquered and divided; simplified stuff

* nitpicking

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* the little things i stg

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-09-18 21:02:51 -05:00
Garrett Cox 18e21e12c8 Use randomizerInf for fishing and big poes (#3088) 2023-09-18 21:34:25 +00:00
Malkierian 356e305bd3 Fixes erroneous formatting in randomizer.cpp. (#3194) 2023-09-16 15:59:20 -05:00
Malkierian 533f29bce9 Update to RCObjects (#3193)
* Add `vanillaCheck` to `RandomizerCheckObjects` and update the `RCObjects` table and macro.

Update `ogItemId` for many checks.

* Rename `vanillaCheck` to `vanillaHundoCheck`.

* baguette

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Bean Salesman should be true for `vanillaHundoCheck`

* One more rename to `vanillaCompletion` to avoid possible confusion with 100% speedrun conditions.

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-09-16 15:59:03 -05:00
Garrett Cox c11a6a17e9 Some documentation changes for zplayer (#3172)
* Documentation changes for zplayer

* Update soh/include/z64player.h

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-09-15 18:39:46 +00:00
Adam Bird a4b5d569b1 bump lus 1.2.2 (#3189) 2023-09-14 23:24:31 -05:00
Malkierian 328e6da46b Fix warp song hints setting not loading and the check being inverted. (#3197) 2023-09-14 23:19:06 -05:00
Garrett Cox b6ce810d36 Store seed string in the save, and use it for mirror mode & enemy rando (#3175) 2023-09-14 22:15:21 -05:00
aMannus d32d8836f8 Disable CC knockback while crawling (#3187) 2023-09-14 21:54:04 -05:00
aMannus 3235f88ef6 Update CC .cs file (#3183) 2023-09-14 21:53:42 -05:00
Patrick12115 0132d3b5e2 [Difficulty Enhancement] Tree Stick Drops (#3171)
* Tree Stick Drops

* Removed Unneeded i

* formatting blunder

* Stick Lottery

* Change rand functions

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-09-14 21:52:14 -05:00
Pepe20129 3116a9c8b5 Add gDebugSaveFileMode (#3170)
* Add gDebugSaveFileMode

* Don't apply gDebugSaveFileMode on the title screen

* Re-run build

* Re-run build

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-09-14 21:51:49 -05:00
aMannus 8d3adb4c6f Rotation options for bombs and grottos (#3146)
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-09-14 21:51:38 -05:00
Garrett Cox 7dffd63c39 Initial pass on some logging that would be helpful for debugging crashes/problems (#1457) 2023-09-14 21:31:05 -05:00
Malkierian 0a1e70ebaa Test Tracker Rework Breakout (#3180)
* Fix indentation for `actualItemtrackerItemMap`.

Abstract equipment, quest item, and song checking for the item tracker.

* Simplify `HasSong`

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Rename `HasEqItem` to `HasEquipment`.

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-09-13 10:09:45 +02:00
Malkierian 79b5301165 [Tweak] Better GS Ice Trap Collection Handling (#3077)
* Make ice traps kick the player out of first person when collecting with the hookshot.

* Forgot the `extern`s XD
2023-09-10 12:54:18 -05:00
Caladius 023654f617 Update No Logic for previous rule set (#3159) 2023-09-10 12:53:05 -05:00
inspectredc e31b2fd9a4 Bunny hood Equip Swap Fix in Scene Transition (#3152)
* test?

no clue why this section was added

* committing to commit the commit
2023-09-10 12:52:46 -05:00
Malkierian 3d0075e6ef Audio Editor Lock Button and Cleanup (#3140)
* Changed Audio Editor buttons to use FontAwesome icons instead of words.

Added the locked/unlocked button.

* Added functionality to lock button. "Randomize All" respects the lock, individual shuffle buttons bypass and the lock and unlock the sound.

Added tooltips to all the FA buttons.

Shrunk right side of Audio Editor window to match width of new buttons.

Unified all references to the randomized value and lock to two functions that automatically applied prefix and suffix.

Changed "Reset All" to clear the cvars instead of changing them to default.

* Fixed bug where individual randomize button didn't change the BGM if randomizing current sequence.

* Added check for unchanged BGM in Reset All and Randomize All to account for lock button blocking changes.
2023-09-10 12:48:34 -05:00
inspectredc 0f41b25918 bush drop fix (#3148) 2023-09-10 12:48:17 -05:00
Pepe20129 ccc933c59a Rando cleanup (#3157)
* Remove 3drando setting descriptions

* Remove 3drando cosmetics

* Remove part of 3drando's menu

* Remove 3drando's music & sfx randomizers

* Remove 3drando's patch system

* Remove 3drando's citra logging

* Remove some of 3drando's custom messages

Some can't be removed (like the ganon la hint) as they are used

* Remove useless params in item_location.cpp

These types of SpoilerCollectionCheck just checked the rand inf corresponding to check and ignored the scene & flags params.

* Remove 3drando's unused check categories

* Remove some of 3drando's menu system

* Remove 3drando's preset system

* Remove some unused settings code

* Remove some unused settings

* Remove some unused ItemLocation params

* Remove SpoilerCollectionCheck::Fishing param
2023-09-10 12:46:35 -05:00
Pepe20129 5cf0eeef52 Add OnActorKill & OnEnemyDefeat hooks (#3112)
* Add OnActorKill & OnEnemyDefeat hooks

* Remove commented out code

* Re-run build

* Add missing include statements
2023-09-10 12:23:43 -05:00
Adam Bird bba0a54dbf [Tweak] Update Rando save warning message for new file info screen (#3163)
* tweak rando save warning message

* french typo
2023-09-10 12:22:45 -05:00
Adam Bird 90af84601a add xml definitions for all textures (#3161) 2023-09-10 12:22:24 -05:00
Adam Bird 024c5e0b5f Sync asset names with decomp documentation (#3153)
* sync asset names with decomp

* whitespace and tweak
2023-09-10 12:21:56 -05:00
Adam Bird c3d32182a5 fix hookshot texture for hd and alt assets (#3149) 2023-09-10 12:21:38 -05:00
Adam Bird 1d9adcd5a5 fix remaining unaligned assets for mac (#3138) 2023-09-10 12:21:26 -05:00
Adam Bird b2ad348508 support for pal 1.1 change language option (#3124) 2023-09-10 12:21:13 -05:00
Adam Bird a129371923 Add extraction support for ByteSwapped and LittleEndian formats (#3042)
* add extraction support for byteswapped and littleendian formats

* update linux/mac scripts to handle v64 and n64
2023-09-10 12:20:58 -05:00
Malkierian 644ab7f498 Added a 2-second timer to autosave personal notes, based on frames idle after editing and ticked by OnGameFrameUpdate. (#3155) 2023-09-01 13:43:25 -05:00
Adam Bird dd37d4f9b8 regenerate asset headers with include guards (#3132) 2023-09-01 11:47:51 -05:00
Pepe20129 45b7520dcb Add scene table (#3131)
* Add scene table

* Re-add accidentally deleted entry

* Update CrashHandlerExt.cpp

* Update CrashHandlerExt.cpp
2023-09-01 11:46:19 -05:00
Caladius 0e7c658523 V1 - Chestapalooza (#2922)
* V1- Adds additional trap variants to Chests

* Create and use OnTrapProcessed hook

* Update naming for Traps, extends to NPC and Token Rewards.

New Hook for Rando traps.

Restore Vanilla code for ice traps.

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* More tweaks, remove processed trap hook

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-08-30 17:34:06 +00:00
Adam Bird bea24fcde7 fix audio crash when trying to detect BGM_DISABLED (#3150) 2023-08-30 17:07:21 +00:00
aMannus 7c31eafc1e Fix ice trap message (#3158) 2023-08-30 17:05:48 +00:00
inspectredc c00ac9b878 fix mistake (#3147) 2023-08-30 17:05:08 +00:00
aMannus 8ab9346f76 Fix bombs not showing up (#3145) 2023-08-30 17:04:51 +00:00
Adam Bird f6c6bd0bec Fix: Check for debug mode when watching cutscene debug inputs (#3133)
* fix check for debug mode when watching cutscene debug inputs

* update other cvar to debug enabled
2023-08-30 17:04:21 +00:00
louist103 4aadf4c14c Fix more warnings. (#3101)
* Fix warnings

* Submodule
2023-08-30 17:02:07 +00:00
PhysicBerry 738172d9ed Add Shield Aim Invert X & Y Axis Options (#3055)
* Added Shield Aim Invert Y Axis Option

Adds an option in the menu that allows players to invert the shield aiming across the Y Axis. Defaults as checked to replicate original behavior.

* Shield Aiming Improvements

Added an option to invert X Axis Shield Aiming and corrected the default value for Y Axis Shield Aiming.
2023-08-25 13:00:11 -05:00
LuigiXHero 188ec26f5a Fix the preview in voice tab (#3142)
I forgot to add seq_voice to a line also fixed voice count and fixed the capitalization on voice

Co-authored-by: LuigiXHero <LuigiXHero@gmail.com>
2023-08-25 12:59:16 -05:00
louist103 f0035e3090 Fix hookshot dot (#3137) 2023-08-21 19:20:17 -04:00
LuigiXHero 3fb698bab8 Selection for Vanilla/MQ dungeons (#3058)
* Selection for Vanilla/MQ dungeons

* Match names to exclude location list

---------

Co-authored-by: LuigiXHero <LuigiXHero@gmail.com>
2023-08-20 13:24:08 -05:00
Adam Bird 0ce2d30605 add visualization for pause menu item cycling (#3118) 2023-08-20 13:00:43 -05:00
louist103 155f5e165a Use a different color when aiming at hookshotable collision (#3105)
* Colors

* Use VTX data in OTR file

* Move to equipment
2023-08-20 13:00:28 -05:00
Malkierian 61eba0efad Add toggle option for save states (#3095)
* Add toggle option for save states, off by default, with significant warning about what they actually do before enabling (double checkbox confirmation).

Add overlay text notification when attempting to use any of the state hotkeys if save states aren't enabled. Stays up for 6 seconds.

* Added coloration (yellow and orange) to the warning header.

* A little more clarification in the warning.
2023-08-20 13:00:04 -05:00
aMannus b040a894d1 Remove debug elements and visual SoA (#3086) 2023-08-20 12:59:39 -05:00
Adam Bird f19f303651 Actor Nametag System (#3083)
* initial nametag system

* add debug name tags in actor viewer
2023-08-20 12:59:23 -05:00
LuigiXHero 2da8be331b Add voice tab to Audio Editor (#3080)
* Work on Voice rando

Todo: rename rest of entries and reorganize it into a new tab

* Finish going through voices for audio editor

Also make it, it's own tab. Added the option.

* Fixed adult link voices and recounted sound effects/voices

* Remove option

* Update soh/soh/Enhancements/audio/AudioCollection.h

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Remove commented out voices from sfx section

* fix spacing

---------

Co-authored-by: LuigiXHero <LuigiXHero@gmail.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-08-20 12:59:10 -05:00
Adam Bird ff4d1b9f77 Tweak: Refactor 3D drops handling (#3071)
* tweak: refactor 3d drops handling

* cleanup

* add 2d bombchu drop support
2023-08-20 12:58:39 -05:00
LuigiXHero d12592377c Change GTG to Gerudo Training Grounds in key ring settings (#3059)
Sorry it was bugging me too much

Co-authored-by: LuigiXHero <LuigiXHero@gmail.com>
2023-08-20 12:58:24 -05:00
inspectredc 55cd8c1539 Update z_kaleido_item.c to include additional bow swapping scenario on equip (#2655) 2023-08-20 12:57:27 -05:00
Pepe20129 d06e6af306 Add glitch practice cheats (#2570)
* Add fish don't despawn cheat

* Add bugs don't despawn cheat

* Add bomb timer multiplier cheat

* Only do float logic when multiplier isn't 1

* Move don't despawn cheats and fix capitalization

* Fix LUS commit change

* Re-add the bomb timer multiplier slider

* Add cvars to cheatCvars
2023-08-20 12:57:09 -05:00
Pepe20129 8872a59284 Add "More info in file select" enhancement (#3053)
* Initial attempt

* Fix rendering for most items

* Fixed icon sizes and reorganized icons

* Fix equipment, quest & upgrade icons

* Add colors to the song icons

* Remove box, clean up code & move seed hash icons to top

* Start with counters, fix copy & erase and show spoiler log hash icons

* Add icons for upgrades

* Draw icons for counters

* Initial counter work

* Fix counter digits positioning

* Prevent crashes when over 999 deaths (save editor)

* Add greg to tracker when in a rando save

* Fix color for counter digits using the wrong buffer

* Add double defense icon

* Addressed code review

* Remove unneeded checks against 0
2023-08-15 19:26:43 -05:00
AltoXorg 6923c2d3c0 Opt-in for an easy-way CMake target to create soh.otr file (#3057)
* use a convenient cmake target for gen soh otr

* Update generate-builds.yml

* Apply for all conditions

* grandma change
2023-08-15 19:26:23 -05:00
Adam Bird 74d6678543 Merge pull request #3121 from Archez/mergeSuluBravo
Merge Sulu Bravo -> develop
2023-08-14 22:01:36 -04:00
Adam Bird 633bec3a1c Merge remote-tracking branch 'origin/develop' into mergeSuluBravo 2023-08-13 20:50:59 -04:00
Christopher Leggett 8bc3077529 version bump to Sulu Bravo (#3120) 2023-08-13 20:41:57 -04:00
Christopher Leggett b94d7f135d #3040 give em to the distro packagers + LUS submodule bump (#3119)
* implement for install method packagers

* use std::filesystem::temp_directory_path

* absolutely impeccable

* include libultraship proof

* fix windows compilation

* rename "Installation" back to "Bundle"

---------

Co-authored-by: Alto1772 <56553686+Alto1772@users.noreply.github.com>
2023-08-13 18:45:45 -04:00
Spodi fafd35cbeb Update libultraship (OpenGL window position fix) (#3113) 2023-08-13 11:41:43 -04:00
Adam Bird 91c6eba0d0 tweak: easy pause buffer to track inputs better (#3054) 2023-08-13 11:41:19 -04:00
Adam Bird 78790fe8aa [Accessibility] Tweak Pause menu TTS functions (#3098)
* tweak kaleido tts

* tts announce what items are assigned to buttons; announce page on open
2023-08-13 11:41:04 -04:00
Malkierian 05dde45a75 Update AudioEditor.cpp (#3115) 2023-08-13 11:40:44 -04:00
Adam Bird 535157ce00 Fix: Various Rando generation crashes (#3108)
* fix rando gen crash when not enough remaining items to place

* fix rando gen crash due to missing granny shop hint

* add error sound if rando gen fails
2023-08-11 23:06:38 -04:00
Adam Bird b2e9d547ba fix anju rando item gives when performing an action (#3107) 2023-08-11 23:05:54 -04:00
Adam Bird 325c7fe365 fix dark links input in mirror mode (#3109) 2023-08-11 23:05:26 -04:00
louist103 d22ca3cfc3 Rewrite the logic to check for CRC32 at runtime (#3072)
* rewrite the logic to check for CRC32 at runtime

* fix include for windows

* fix pragmas

* more clang fixes

* MORE

* Please apple

* I hate this

* MAC AGAIN

* Clarify the ifdefs

* ARM64 fixes
2023-08-11 23:02:05 -04:00
Garrett Cox b2aa24b8b0 Always use dungeon specific items in randomizer, replace message on the fly (#3041) 2023-08-06 20:58:01 -05:00
Garrett Cox 1fe8835d8b Add first draft of MODDING.md (#2954)
Co-authored-by: Ralphie Morell <rafael.morell@techfield.us>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-08-06 20:53:52 -05:00
Pepper0ni 06548b3ceb Fix various randomiser text issues and related improvments. (#3066)
* Reduce length of overflow prone item names

* Overhaul Trick Names and change Desert Waterfall to Valley waterfall

* Readd some old Trick names, Change Trick name table to a vector, improve french translations.

* Resolve #2682
2023-08-06 12:11:14 -04:00
Adam Bird f5ab1a9b5d fix: disable Idle camera re-center no longer stuck on level geometry (#3094) 2023-08-06 12:05:34 -04:00
Adam Bird 04bef2d600 Fix enemy healthbar crashing on Linux (#3092) 2023-08-06 12:02:54 -04:00
Malkierian f68a4e930d [Bugfix] Add check for animation count to prevent continuing final saw textbox while putaway is happening (#3103)
* Add check for animation count to prevent continuing final saw textbox while putaway is happening.

* Added Fix toggle for it. Enabling Skip Text forces the behavior, regardless of previous selection for the Fix toggle itself (so it works if you have the Fix toggle enabled, or if you have Skip Text enabled).

* Clarified the comment in `z_en_toryo`.
2023-08-06 12:01:19 -04:00
Adam Bird 63f61023d4 Fix: Carpet merchant rando item give distance requirement (#3102) 2023-08-06 11:56:43 -04:00
Adam Bird 855e7442ea fix granny not checking for bottle properly (#3068) 2023-07-23 18:13:51 -04:00
Christopher Leggett 861003a093 Update LUS submodule to 1.2.0 (#3087) 2023-07-22 23:23:27 -04:00
Malkierian 93ab9f0072 [Fix] Merchant Check Fixes (#3067)
* Change Granny's Shop collection type to RandomizerInf with proper scene and inf IDs so the tracker tracks it properly.

* Changed pendingSale code to be checked outside of decrementing if block.
2023-07-12 22:03:43 -04:00
Adam Bird 423e8b96b1 fix: add missing hashes in mac and linux launch scripts (#3070) 2023-07-12 21:58:43 -04:00
aMannus 22e4020265 Fix Market Sneak with masks (#3047) 2023-07-12 21:57:43 -04:00
Adam Bird e90c8af452 Enhancement: Enemy Health Bar (#3035)
* add enemy health bar

* add more cosmetic editor options to health bar

* add tooltip

* fix enemy health texture when no magic bar
2023-07-12 21:55:24 -04:00
Adam Bird 360a97ecfd fix: various pal gc asset offset issues (#3052) 2023-07-03 10:29:21 -04:00
Adam Bird b7dca5d5a8 Fix: Various PAL1.1 asset offsets and Main Menu options screen (#3045)
* fix pal11 ganondorf falling platform offsets

* fix pal11 dins fire offsets

* add game region and platform methods

* fix pal11 file menu options

* move
2023-07-03 10:29:06 -04:00
Pepper0ni 531b346fc9 Add exact item and check to the spoiler log for WotH hints (#3043) 2023-07-02 14:50:51 -04:00
briaguya 37f9c895d6 update hash docs (#3039) 2023-06-29 16:32:31 -04:00
briaguya def7a15354 handle random mq dungeon count better (#3036)
Co-authored-by: briaguya <briaguya@alice>
2023-06-27 19:58:36 -04:00
louist103 acfc04d0ac Add an error for implicit functions (#3017)
* Add the flag and fix errors

* switch assert and skin matrix

* new LUS

* Use normal assert

* hopefully fix WiiU

Signed-off-by: Louis <louist103@pop-os.localdomain>

---------

Signed-off-by: Louis <louist103@pop-os.localdomain>
Co-authored-by: Louis <louist103@pop-os.localdomain>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-06-27 19:53:35 -04:00
Adam Bird a05d8131ec invert culling for collision viewer (#3021) 2023-06-20 22:05:52 -04:00
briaguya a5c2bacfe0 fix: restore internal resolution and msaa slider functionality (#3026)
Co-authored-by: briaguya <briaguya@alice>
2023-06-20 22:04:32 -04:00
Garrett Cox 7c5efb2785 Flags stuff (#3014)
* Manual adjustments to flags

* Script run to adjust flags
2023-06-20 11:54:02 -04:00
Christopher Leggett 83ebaa2fce Version Bump to Sulu (#3020) 2023-06-18 21:04:09 -04:00
Adam Bird 39349d8512 fix warp override mq mode room loads (#3019) 2023-06-18 18:23:06 -04:00
Adam Bird d4ff05f51d update mac and linux launch scripts to make mods dir (#3013) 2023-06-17 13:27:59 -04:00
Adam Bird 6fdfcd2a61 More mirror mode fixes and additions (#3009)
* mirror fishing rod

* mirror ivan fairy controls

* add mirror dungeons only option

* mirror sold out GI texture

* update dungeons mirror mode for more options

* maybe don't include that
2023-06-17 13:08:20 -04:00
Malkierian 5daf5a14ac Section Save Modification (#2947)
* Modified `SaveManager::AddSaveFunction` to return the section index assigned to the section name for ease of remembering it on the other end. Also added a clarifying comment.

* Modified SaveFunc to accept a boolean for whether the section is being saved individually or as part of a game save (fullSave == true means game save, so all sections registered for game save sync).
2023-06-14 23:39:14 -04:00
Bytenex 279c40cb7d added option to choose between OoT and any ocarina (#2944) 2023-06-14 23:29:07 -04:00
Garrett Cox f85b04336c Add option to prevent speed modifier from affecting jump velocity (#2874) 2023-06-14 23:25:48 -04:00
Garrett Cox 170c8ce16e Extra modes tweaks (#2985)
* Tweaks to extra modes menu

* Update soh/soh/config/ConfigUpdaters.cpp

Co-authored-by: Christopher Leggett <chris@leggett.dev>

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-06-14 23:24:50 -04:00
Adam Bird 6dc227b5ed order spoiler log print out to match insertion order (#3006) 2023-06-14 23:23:12 -04:00
briaguya ccfc2a84bc hide menu bar from menu bar (#2988)
* hide menu bar from menu bar

* show `-` on switch/wii u

* actually show `-`

* actually put the thing in a place where it works

* spacers

* reorder and use `[-]` instead of `-`

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-14 23:22:48 -04:00
briaguya af33897e4c caps for locations in altar text (#3004)
Co-authored-by: briaguya <briaguya@alice>
2023-06-14 23:22:22 -04:00
Adam Bird a842894d0d Add Mirror World gfx patches and patch Royal Grave Sun Song etching (#3005)
* add mirror world gfx patches and patch royal grave sun song

* simplify nonmq vs mq
2023-06-14 23:22:04 -04:00
briaguya ef6227d8be fully remove OTRGui (#2982)
* linux local debug working

* built in extraction working on linux

* try a thing

* one more thing to try

* try using dir

* does this get the subdirectories?

* component before pattern

* loop i guess

* maybe component was the issue?

* zapd stuff i guess

* maybe this

* this feels promising

* g != q

* appimage is working, try fixing glfw issue on windows

* don't copy zapd.exe

* hopefully this gets the things we need in the assets dir

* is that where those went?

* try another thing

* another thing to try

* grasping at straws

* cmake makes no sense sometimes

* really just trying anything here now

* this is what i was expecting to work

* ls

* try doing it without the cmake again

* i think this might do the trick

* try with a slash

* one more thing to try

* pal_oot.txt

* maybe this makes things work on mac

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-13 09:29:36 -04:00
AltoXorg 621aab3e05 fix ExtractAssets for N64 PAL 1.1 (#2963) 2023-06-13 08:48:31 -04:00
Garrett Cox 7a41bd3878 Mirrored world enhancement (#1569)
* Mirrored world PoC

* invert culling for health meter and A button action

* A few more fixes

* Fix for item equip animations

* Fix for pause triforce

* Mirror scenes with static backgrounds

* mirror minimap for mirror world

* mirror dungeon maps and icons on the pause menu

* mirror overworld map and icons on the pause menu

* mirror debug world movement

* mirror shops cursor and movement

* use flip flag

* Reverse crouch stab x axis for mirror mode

* use invert culling command and clean up culling logic

* Move mirror mode handler to mods and support random modes

* Small cvar tweaks

* mirror billboard score numbers and fix gyro horse mirrored inputs

---------

Co-authored-by: Adam Bird <archez39@me.com>
2023-06-13 08:46:15 -04:00
Garrett Cox 90d45d4397 Rename gDirtPathFix to gZFightingMode (#2959)
* Rename gDirtPathFix to gZFightingMode

* Add config migration
2023-06-12 20:40:29 -04:00
Garrett Cox a6ecb77599 Add spock race preset (#2977) 2023-06-12 19:26:46 -04:00
Adam Bird 90bd072f9b fix string usage for cosmetic hud placement reset corrupting ship json (#2961) 2023-06-12 19:16:39 -04:00
briaguya 6de0d8b69d properly set imgui invert aiming y default (#2956)
Co-authored-by: briaguya <briaguya@alice>
2023-06-12 19:14:42 -04:00
Adam Bird e6e7618b92 fix crash when resetting links scale without a playstate (#2970) 2023-06-12 19:06:41 -04:00
aMannus 971aaeac23 Disable greying out RTA timer in boss rush (#2973) 2023-06-12 19:01:54 -04:00
aMannus daadef5211 Fix missing goron bracelet (#2974) 2023-06-12 19:01:24 -04:00
briaguya 16eb211102 fullscreen with f11 not f9 (#2955)
* fullscreen with f11 not f9

* update readme

* use latest lus main

* latest lus

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-12 18:59:30 -04:00
Christopher Leggett 430d5cddf2 Config versioning to fix the Fullscreen Shortcut debacle (#2966)
* WIP adding new config version.

* Implements a ConfigVersionUpdater

* Updates to account for new LUS-side changes.

* Change `ConfigVersionUpdater` to store `toVersion`

* fix typo
2023-06-12 18:59:23 -04:00
briaguya eba0b4c146 only green the greg bridge not everything else (#2962)
* only green the greg bridge not everything else

* another option

* do it the branch way

* tabs spaces blarg

* new dir

* use latest lus main

* latest lus main

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-12 17:48:26 -04:00
Adam Bird ca9b1614af Fix: Minimap dungeon entrance placement (#2958)
* use correct minimaps in randomizer

* fix minimap dungeon entrance placement

* rework topLeft0 check to be more readable

* who needs topLeft0 anyways

* move minimap hidden checks up higher
2023-06-12 17:10:53 -04:00
Christopher Leggett 21560ecf65 bump up to latest LUS. (#2984) 2023-06-12 16:58:31 -04:00
briaguya d69c07cd75 numbers aren't magic (#2976)
* numbers aren't magic

* chest style matches contents

renamed everything except the cvar itself at this point
(waiting for versioned configs for that)

* tracker as part of names

* finish the tracker rename

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-09 17:22:25 -04:00
Amaro Martínez e46c60a7a1 Fix copyright position for PAL 1.1 (#2952) 2023-06-07 13:02:45 -04:00
Nicholas Estelami 7e1ee6e23e N64 PAL 1.1 Support (#2773)
* Initial PAL 1.1 support

* 1.1 Asset Fixes

* Fixed issue where N64 builds were being flagged as MQ

* Misc fixes

* Updated LUS submodule

* Fixed up logo strings

* Updated readme and linux/mac scripts with new hash
2023-06-05 19:11:22 -04:00
Adam Bird 820fdf78cc Improve TTS for file select menus (#2950)
* improve TTS for file select menus

* french translation change recommendation
2023-06-05 17:18:18 -04:00
Kenix3 451ce8b107 Fixes collision viewer (#2949) 2023-06-05 16:19:42 -04:00
Christopher Leggett f3672a480f Re-adds Wii U nightly build link (#2951)
Now that we have Wii U building again, re-add the nightly link for it to the README.
2023-06-05 15:59:02 -04:00
briaguya a49f197f06 build for wii u (#2946)
* reimplement stuff from 2879

* header include to fix build hopefully

* another header

* fix error

* remove header includes we don't have

* more error things

* a

* b

* c

* d

* e

* f

* g

* h

* use latest lus

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-05 14:16:56 -04:00
briaguya 2308ab8823 build soh with LUS 1.0.0 (#2881)
* Bump LUS

* Ship -> LUS namespace change

* z_scene_otr Ship -> LUS namespace

* Starting to get SoH to build with LUS imgui changes.

* start stuff

* gamecontroleditor build issues resolved maybe

* cosmetics editor and what not

* console

* actor viewer

* more stuff

* more stuff

* on to errors that make sense

* putting this down for a bit

* no idea what these errors mean now

* some kind of progress maybe

* latest lus main

* more

* back to linker errors and being lost

* Fixes command function signature.

* More fixes

* Even more fixes

* Bump LUS

* More Fixes.

* Fixes even more errors.

* lus bump

* input editor as var

* audio editor working

* it builds with this

* bump lus

* it opens

* bump lus to latest main again

* make sure to do all the command registering in debugconsole

* lus and what not

* switch type stuff plz

* undo

* do the thing that fixes the thing

* fix mac?

* correctly show/hide menubar on boot

* bump lus

* input blocking updates

* bump lus

* Bump LUS

* Press F1 to open enhancement menus moved to SoH

* lus and rendering backend stuff

* audio backend and lus

* Bump LUS

* Fixes WindowBackend dropdown

* Bump LUS

* misc -> utils and moves binarytools to utils.

* Window refactor

* bump lus

* make it work

* Fixes for moved files again

* Bump LUS

* Mercury -> Config

* Bump LUS

* Reacts to removed LUS hooks and bump LUS

* Remove Hook: GfxInit

* Removes debug audio_setgamevolume to 1

* use non-crashing branch of lus

* fix: make audio init work without hooks

* game icon stuff

* multifix bmp

* use input viewer class branch for now

* just "Ship" it's cleaner

* Bump LUS

* Removed ExitGame hook.

* Bump LUS

* Hook system removed from LUS.

* More LUS updates

* Changes to make window position saving.

* Bump LUS

* Bump LUS (for real)

* LUS resources now return a specialized pointer.

* Bump LUS

* Fixes issue in SetPathways::GetPointerSize

* Bump LUS to 1.0.0

* builds but crashes

* fix crash

* better macro names in debug console

* remove commeted out line

* remove redundant check tracker settings window logic

* remove commented out line

* move the *

* remove extra seqplayers enum def

* this sneaky little guy was hiding behind a wii u ifdef

* remove extra check tracker header

---------

Co-authored-by: Kenix <kenixwhisperwind@gmail.com>
Co-authored-by: briaguya <briaguya@alice>
2023-06-03 15:27:45 -04:00
inspectredc d922b91e15 Trick logic (#2681)
* Trick and Glitch Rando UI implemented

* initial temp connection between ui and backend trick logic

Hacky way to connect the logic for testing. Ran into 1 crash but cannot reproduce

* UI overhaul to look more like AudioEditor tag section

* Mapped 3d tricks to enums and save cvar bug fixes

* Trick Logic Complete

Testing on whether the logic works as expected needs to be done

* Releasable trick version, tricks match text fixes also

* Remove 3D glitch logic location access

Easier to clean it up now than get confused

* Variable typo fix & initial trick enum reorganisation

* Removal of oot3d glitches

* bongo logic fix

* UI includes difficulty tags + cleanup and removal of glitched logic interface

* Bug fixes

* added enabled tricks to spoiler log

* comment clean up

* completed once over through logic

* merge fix

* update sohimgui to LUS

* Remove redundant 3d rando trick options

* Comment clean up

* Central GS Irons Logic Fix

* Farores wind central logic fix

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-06-02 16:53:07 -04:00
Malkierian c9bcd64beb Improvement: Additional Spoiler Hint Info (#2727)
* First attempt at tracking hinted locations. Not looking promising for more than a hint tracker.

* Spoiler log now generates with human-readable hinted area, type, and item for gossip stone hints.

* Hints now only output location if their hint text specifically states the check. Any overworld or dungeon region hint no longer does.

* Expanded gossip stone hints to include item, hinted location and area, and `RandomizerGet` names. Currently only English names.

Part of this required changing `HintType` into a `typedef enum` instead of an `enum class` to allow usage in a .c filespace, and consolidating types from `randomizer_check_objects.h` to `randomizerTypes.h`.

* Beginning of alter rewards information.

* Step 2 of altar reward info.

* Altar reward info (location and area) now writes to and reads from the spoiler log. Added a few entries to `SpoilerfileAreaNameToEnum` to accommodate area name variants from region hint names.

* Streamlined altar data (only needed location name for `RandomizerCheck` translation. `RandomizerCheck` provides access to `RandomizerCheckArea` via `RandomizerCheckObject`).

Added Light Arrows, Greg, and Dampe's Hookshot hint locations to write and read of the spoiler.

* Fix attempts to lookup values in `hintTypeNames` as array, now uses map's `find()`.
2023-06-02 12:10:25 -04:00
Christopher Leggett f976003563 Randomizer: Fixes defaults for LACS and Rainbow Bridge. (#2937)
* Fixes incompatible default rando settings around Greg as reward.

* Fixes defaults for LACS.
2023-06-02 08:28:32 -04:00
briaguya 598566a556 Update generate-builds.yml (#2941) 2023-06-02 01:09:18 -04:00
Adam Bird c9d24f2e98 Fix: Better debug warp MQ detection and other warp menu bugs (#2932)
* fix: add mq detection to better debug warp

* replace special characters for debug warp translations

* reorder better debug warp printing

* adjust french translation
2023-06-01 22:00:45 -04:00
Josh Bodner 6bf42fd018 Fix order of auto equip message (#2931)
French text was being displayed in English and vice versa due to incorrectly ordered parameters.
2023-06-01 21:40:58 -04:00
aMannus 2957dc61c3 [Feature] Boss Rush (#2923)
* Ganon(dorf) cutscene skips

* Remove leftover code

* Load into chamber of sages

* Fix loading into chamber without fast file select

* Boss warps in chamber done

* Change warps back to chamber

* Initial proof of concept done

* ganon(dorf) cutscene skips

* Code cleanup & auto age equipment

* Gameplay stats timer + tweaks

* Scuffed timer

* Better timer

* remove arena props + fix arena exits

* Fix blue warps

* Attempt to fix build

* Fix build again

* And again..

* Try no. 9001

* Handle dying and saving

* Child link face fire medallion

* Fix build

* Fix warps after reset/death

* Disable doors and move player spawns in boss rooms

* Fix boss rush logo rendering

* Start of ingame options menu

* File Select cleanup

* Fix build

* Render char text PoC

* Move functions to be more generic

* Fix build

* Fix other builds

* Initial text scaling/kerning

* Special characters prep

* All special characters work now

* Attempt to fix build

* Fix build question mark

* Finish all kerning

* Start of ingame options menu with vertical scrolling

* Barebones functional options menu

* More options menu progress

* More visual elements for options menu

* Options menu visual changes, implement all options, tons of cleanup

* Cleanup and comments

* Shorter enums

* More options

* Change default heart count

* Finish French translations

* Implement timer in cosmetics editor

* Uncomment timer requirement

* Variable name change

* German translation & small UI tweaks

* Animated up/down arrows in options UI

* Better arrows in options UI

* Cleaner timer + make it usable for general gameplay

* More cleanup + ganon & ganondorf boss option

* Implement never heal option

* Slight up arrow in options UI tweak

* Add BGS option

* Reintroduce ganondorf cutscene skip

* Change encoding to UTF on bossrush.cpp

* Fix build hopefully

* Fixed static variables leading to options not properly resetting

* Fix BR completed timestamp

* Change timer to render on top of everything

* Offset final BR time by 0.1 second from boss timestamps

* Add missing check for boss rush

* Implement soh_assets.h

* Revert merge mistake

* Fix special characters with UTF-8

* Fix build

* here's the fix you can merge from your phone

* Fix quest select crash with oot.otr only

* Use OoT's kerning

* Fix HD textures on options menu

* Fix special character kerning

* "Heal every boss" fixes

* Seperate headers + bunny hood option

* Remove GetUnixTimestamp() externing

* Clean up extern "C"'s

* Address review comments

* Fix build question mark

* Remove accidental styling change

---------

Co-authored-by: briaguya <briaguya@alice>
2023-06-01 21:40:10 -04:00
Rozelette fdf9086b2a Dynamic Actor IDs (#1729)
* Add dynamic actor IDs

* Convert Ivan to use new actor system

* attempt to fix linux build

* attempt to fix linux build

* merge

* Cleanup

* Fix missing math functions on Windows.

* Removes a stubbed function to fix non-windows builds.

* Update soh/soh/ActorDB.cpp

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-06-01 21:39:50 -04:00
MoriyaFaith 26d934541a main commit (#2918) 2023-06-01 21:38:43 -04:00
aMannus b25e4d4f26 [Feature] In-game gameplay stats timer (#2910)
* Implement in-game gameplay stats timer

* Change timer to render on top of everything
2023-05-30 18:57:45 -04:00
inspectredc e8eaac4d77 Fix: Switch Age with Enchancements giving kokiri sword (#2929)
* fix sword

* separated flow path for switch age enhancements

* Added comments
2023-05-30 18:44:58 -04:00
Ralphie Morell 71662c56b5 Docs: Update Player/Actor Flags (#2765)
* Actor Flags update

* player state1 flags; cleanup; prep for state2 and state3

* Player state2

* player state3

* Rename flags in Player tab
2023-05-30 15:05:04 -04:00
Patrick12115 f544aba647 [Rando] Adds Greg options to the Bridge and LACS reward options (#2663)
* Some reason not working

* Fixes and formatting

Moved the LACS Stones to be before the Medallions in all instances to line up with the Bridge requirements and because it just makes sense

* Removed unnecessary space

* Missed one
2023-05-30 14:25:59 -04:00
Ralphie Morell 507387f618 Enhancement: Better Debug Warp MQ toggle (#2876)
* Implement MQ select on better debug warp

* remove unused macro

* Add sound when selecting MQ; only change if highlighting MQ-able map

* Handles map select from MQ file
2023-05-30 14:01:04 -04:00
Christopher Leggett 700fba28dd Fixes regression in random rupee names (#2927)
Technically was a CustomMessageManager bug but it was in a function that I believe is only used for random rupee names.
2023-05-30 08:45:33 -04:00
Caladius edc5e8f7d4 ShadowTag (7.0.1) (#2825)
* Add Checkbox in Extra Modes
Spawn Code in mods.cpp
Category Change for Clear Room Exclusion
Kill Actor if Mode is Disabled

* Fix non door scene changes and adds a delay to avoid misfiring or not firing on quick room changes like falling to B1 in Tree and Lost Woods loading triggers.

* Requested Updates
2023-05-28 18:46:18 -04:00
Garrett Cox 3ab547c69d Update cvar clear lists and add cheatCvars clear list(not currently used) (#2869) 2023-05-28 18:42:34 -04:00
Malkierian 0c7e80a190 Improve Controller LED Control (#2864)
* Add brightness control and on/off toggle for tunic LED colors.

* Removed toggle, mentioned brightness of 0% for turning off LEDs.

* Set up grabbing tunic color values from Cosmetics Editor for cosmetics sync.

* Why these stupid differences between Windows and Linux compilers?

* Fix Mac build errors? Also try to move the color fetching back into the switch statements to lessen potential computational load.

* Real fix?

* Move "Customize Game Controls" button under "Controller Configuration" button under Settings -> Controller. Renamed "Controller Configuration" to "Configure Controller" and "Customize Game Controls" to "Customize In-game Controls"

* Added LEDColor and LEDColorSource enums for code clarity.

Moved controller LED brightness to new LED Colors group in "Customize In-game Controls" menu.

Added combobox to choose between vanilla tunics, cosmetics tunics, health, and custom as color sources.

Added critical health override checkbox to allow display of red when health is low even when other sources are selected.

Port color pickers have not been implemented yet, default color is white.

* Moved LED control to OTRControllerCallback and wrapped it in a check to `CanSetLed()`.

* Move settings to Port 1 tab in Customize In-game Controls and limited application of colors in `OTRControllerCallback` to port 1.

* UI clarity updates.

* Removed unnecessary LED color enum.

Added custom color picker to port 1 color settings.

* Changed Critical Health Override default to true.

* Modified logic to not do color fetching and instead default to {0,0,0,0} when brightness is off.

* Fix bad cvar string for custom color.

* Cleaning up some post-merge artifacts.

* Update soh/soh/Enhancements/controls/GameControlEditor.h

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Some name changes.

* idea for cleaning up controller callback stuff

* Rearranged color source checks to make sure criticalOverride is applied regardless of other settings.

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: briaguya <briaguya@alice>
2023-05-28 18:40:53 -04:00
aMannus cebfcd1d88 Hyper enemies (#2887) 2023-05-28 18:14:07 -04:00
Garrett Cox b9c2640671 Use gBuildVersion instead of sohStats.buildVersion for gameplay stats (#2913)
Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-05-27 18:09:24 -04:00
Christopher Leggett f4fbc79b5d Merge pull request #2889 from Malkierian/sectional-saves
Sectional Saves
2023-05-27 16:22:36 -04:00
Christopher Leggett a1d22abc1b Merge pull request #2919 from Bytenex/patch-1
Update README to include tools
2023-05-27 15:18:52 -04:00
Christopher Leggett f9a4070225 Merge pull request #2920 from Archez/fix-granny-unshuffled
Fix: Use blue potion refill for Granny Shop item when unshuffled
2023-05-27 15:18:33 -04:00
Christopher Leggett f25c200526 Merge pull request #2890 from Archez/support-thieves-hideout-keyring
Expose Thieves' Hideout selection for keyrings in randomizer settings
2023-05-25 21:06:52 -04:00
Malkierian cab90e9ac6 Removed unused variable. 2023-05-25 16:59:53 -07:00
Malkierian d0c09394ca Re-added removal of empty sceneTimestmps objects for saving and loading, significantly reducing sohStats size. 2023-05-25 16:57:27 -07:00
Adam Bird 015c30d3b6 Merge pull request #2 from leggettc18/gf-keyring
Adds validation to GF Key Ring and Key Ring Count settings
2023-05-25 15:57:56 -04:00
Adam Bird 718ded7c44 fix: use blue potion refill for granny shop item when unshuffled 2023-05-25 15:47:51 -04:00
Christopher Leggett f6b9c227d7 Fixes bad Key Ring Count under certain conditions. 2023-05-25 15:42:22 -04:00
Christopher Leggett 13513345bf Remove magic numbers and fix formatting. 2023-05-25 15:35:38 -04:00
Christopher Leggett 8f5538a700 Adds validation to GF Key Ring and Key Ring Count settings. 2023-05-25 14:50:28 -04:00
Malkierian 1fa99fd50a What a nightmare that was. 2023-05-24 13:00:35 -07:00
Bytenex b46d6e2d19 Update README.md 2023-05-24 16:35:38 +02:00
Bytenex ab4ad42486 Update README.md 2023-05-24 10:34:10 +02:00
Christopher Leggett fe6705cc4d Merge pull request #2906 from HarbourMasters/develop-spock
Spock -> develop
2023-05-23 09:18:15 -04:00
Christopher Leggett e88adbe672 Version Bump (#2916) 2023-05-22 21:34:18 -04:00
aMannus dddd3b14aa Add back missing Greg timestamp (#2911) 2023-05-22 10:56:44 -04:00
briaguya f34df2f064 remove what i assume to be accidentally copied stuff from a diff (#2909) 2023-05-22 09:33:31 -04:00
Rozelette f005bd3b7f add skeleton unregistration to actors that manage their own skeletons (#2908) 2023-05-22 09:20:06 -04:00
Garrett Cox 5de1240391 Cleanup gameplay stats code/UI and support RTA timing (#2862) 2023-05-21 18:35:56 -04:00
Patrick12115 7962e0e6d6 Add Scene Specific Checks to Dirt Path Fixes (#2907)
* Move from Dev to Dev-Spock

* Moved to mod.h

* Update GameInteractor.h
2023-05-21 18:12:25 -04:00
Malkierian cf711d9164 Initialize gSlotAgeReqs[SLOT_TRADE_CHILD] and gItemAgeReqs[ITEM_MASK_BUNNY] on load initialization according to gMMBunnyHood and gTimelessEquipment to prevent bunny hood from being unequipped from adult equips on first load. (#2904)
Move the code to change those values based on the child trade slot item to the selecting mask loop to not be setting them every frame just because you're in the inventory.
2023-05-21 12:13:38 -04:00
Adam Bird cf42057842 Fix: seed srand on launch and fix spoiler log for seed testing generation (#2902) 2023-05-20 16:25:29 -04:00
Malkierian 0b47a19c2c Mask Sale Fix (#2900) 2023-05-20 12:05:47 -04:00
Christopher Leggett 4d02d89e03 Fixes buying songs crash on Switch (#2899) 2023-05-20 09:24:02 -04:00
Malkierian 8d0b83b691 Merge branch 'HarbourMasters:develop' into sectional-saves 2023-05-19 14:56:19 -07:00
Christopher Leggett f2f5a75cb0 Custom message improvements (#2892)
* Adds const specifiers to some appropriate functions.

* Implements move semantics for ReplaceStringInMessage.

Should result in much fewer allocations when rendering custom messages during a Randomizer playthrough.

* Implements some more move semantics.

* First pass on improved Custom Messages API.

This should allow for fewer allocations during randomizer seed generation and runtime, plus a couple of other enhancements that utilize custom messages. It does this by taking advantage of move semantics to prevent extraneous allocations when string literals are passed in. It also takes advantage of OOP to hopefully end up with a cleaner API.

* Additional API/allocation related improvements.

* Removes an unnecessary destructor and constructor.

* Updates documentation

* Adds a bit more documentation.

* Fixes switch build problem and minor syntax error

* Renames slightly unclear operator parameter

* Replaces magic numbers with LANGUAGE_MAX
2023-05-17 22:24:24 -04:00
AltoXorg 30cc61abce fix search rom extension oversight (#2891)
Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-05-17 22:22:57 -04:00
Amaro Martínez b361d5ede1 Use UTF-8 for MSVC and enable visual styles for Windows (#2888)
* Add proper manifest for Windows

* MSVC: Use UTF-8 encoding compile option
2023-05-17 22:21:26 -04:00
Malkierian 099d9cd0fd Threaded save was causing issues for old oot-save.sav conversion. Added an option just for that instance to run SaveManager::SaveFileThreaded outside of a thread. Everything else still runs threaded. (#2894) 2023-05-17 15:51:17 -04:00
Adam Bird 5244cda90e expose thieves hideout selection for keyrings in randomizer settings 2023-05-16 17:40:50 -04:00
Malkierian 4cf3172a3d Fixed trying to emplace in sectionRegistry without index. 2023-05-15 17:40:10 -07:00
Malkierian 1a9ef29ac5 Added function to get sectionID for a specified section name, returning -1 if section name not registered. 2023-05-15 17:32:49 -07:00
Malkierian 50fbe5d00c Modified sectional saving to utilize an integer ID for calling specific sections to cut down on string copying. Utilizes enum values for non-mod sections to allow for cross-project use of those IDs, and sets up AddSaveFunction to add mod sections after that using max value enum. 2023-05-15 17:21:14 -07:00
Malkierian 4bc0d7d60d v3 >:( 2023-05-13 18:41:10 -07:00
Malkierian b5740bc878 v2 2023-05-13 18:35:27 -07:00
Malkierian 374301db9b Formatting and whitespace cleanup. 2023-05-13 18:29:05 -07:00
Malkierian 7861b4c092 Missed baseBlock -> saveBlock change in WiiU/Switch file writing block XD. 2023-05-13 12:33:10 -07:00
Malkierian 22531fed27 A little more code clarification. 2023-05-13 11:47:22 -07:00
Malkierian e2177d7392 Added sanity check to clearing sectionBlock["data"] to only be for randomizer and only when the save file is not randomizer (to clear the existing structure from the loaded spoiler log). 2023-05-13 11:45:20 -07:00
Malkierian 550c10b1c3 Little bit of code clarification. 2023-05-13 11:41:28 -07:00
Malkierian dbe672444c Changed string paramaters for save functions to proper const pointer type.
Implemented subsectional saving (handled in the section's save function, and passed to the save function by & pointer). Default of "all" passed in from SaveFile for game saves.

Implemented subsectional saving for sohStats and entrances/scenes discovered.

Fixed check for game save registry by putting the check against the registry in the "all" section save code.
2023-05-13 11:26:30 -07:00
Malkierian 42b35634a5 Fixed residual values in global save block causing new files to save all sections previously loaded for metadata initialization, regardless of that section's execution during the save process.
Fixed loading and saving of blank sceneTimestamps due to default construction of data structures during JSON loading making all "empty" entries have scene and room of 0.

Moved SoH stats initialization to `gameplaystats.cpp` via `SaveManager::AddInitFunction`.
2023-05-12 15:18:26 -07:00
Malkierian 685925cbb8 Moved sohStats to its own section, and moved the saving and loading to its own registered load and save functions within gameplaystats.cpp. Required making a new loader version for base without sohStats loading code.
Improved save file efficiency by adding code to not write any "empty" entries in `sceneTimestamps` (as determined by room and scene being 254) when saving, and initializing them to 254 if not loaded from the save file.
2023-05-12 13:23:50 -07:00
Malkierian 2ae713464d Moved sohStats to separate section, load and save code now in gameplaystats.cpp. Still needs new load version for base? 2023-05-11 12:02:04 -07:00
Malkierian 2a8810d6a5 Merge branch 'HarbourMasters:develop' into sectional-saves 2023-05-11 09:56:08 -07:00
briaguya 7dff8b6efc Spock Bravo -> Develop 2023-05-11 00:15:37 -04:00
Christopher Leggett d8891f1fe4 Version Bump (#2867) 2023-05-10 21:57:22 -04:00
Garrett Cox 85385db099 Use OnGameFrameUpdate for rainbow tick instead of relying on ImGui hidden window (#2872) 2023-05-10 21:48:01 -04:00
briaguya d1c930b5e5 reserved thread count (#2868)
* reserved thread count

* add comment, use latest main

---------

Co-authored-by: briaguya <briaguya@alice>
2023-05-10 21:32:15 -04:00
aMannus 6d4761f349 Fix several enemy ID's for Hyper Rush (#2871) 2023-05-10 20:44:40 -04:00
Malkierian 07bfba0162 Preliminary work on persistent save data json block.
Added autosaveRegistry to set section to save with overall autosave triggers.
2023-05-10 14:10:13 -07:00
aMannus 23d89122b3 CC: No longer rely on received parameter to be 0 (#2870) 2023-05-10 09:15:33 -04:00
Garrett Cox 2ea72f835a Cleanup cvars that are set on boot (#2863) 2023-05-10 09:08:35 -04:00
Christopher Leggett a72997f12b RANDO: Fix logic with OGC and mixed entrance pools (#2830)
* RANDO: Fix logic with OGC and mixed entrance pools

Adds a `GANONS_CASTLE_LEDGE` area and a `BuiltRainbowBridge` logic var. Added an event to `GANONS_CASTLE_GROUNDS` that sets `BuiltRainbowBridge` to true. Adds Entrances for `GANONS_CASTLE_LEDGE` to `GANONS_CASTLE_GROUNDS` when `IsAdult` and `BuiltRainbowBridge` (or the glitched logic that lets you skip the rainbow bridge) are true, `HYRULE_CASTLE_GROUNDS` when `IsChild` is true, and `GANONS_CASTLE_ENTRYWAY` When IsAdult is true (if child enters `GANONS_CASTLE_LEDGE` in game they are in `HYRULE_CASTLE_GROUNDS` and thus cannot go back into GANONS_CASTLE_ENTRYWAY). Adds Entrance for `GANONS_CASTLE_GROUNDS` to `GANONS_CASTLE_LEDGE` when `BuiltRainbowBridge` is true, or when the glitched logic that lets you skip the Rainbow Bridge is true.

* Adds intermediate area for age-gating

* Fixes the logic for actually killing the skulltula

* Adds hammer crouch stab as a way to kill OGC_GS
2023-05-09 23:41:45 -04:00
Adam Bird c70bdb7700 improve built in extraction detection (#2865) 2023-05-09 23:39:57 -04:00
briaguya 72358eb4d7 fix for day/night textures (#2853)
* hacky fix for deku tree entrance

* lonlon windows

* only hack in one place instead of everywhere

* dehack deku

* goron city entrance

* gerudo cell, zd entrance

* kak windows

* fix pot house

* back to the hacks

* back back

* space

* globals

* just hack it together to fix em all

---------

Co-authored-by: briaguya <briaguya@alice>
2023-05-09 23:33:27 -04:00
briaguya b887d38f5f bump LUS for thread stuff (#2866)
* bump for threads

* use latest lus main

---------

Co-authored-by: briaguya <briaguya@alice>
2023-05-09 23:04:02 -04:00
aMannus 23d40c1ca5 Fixed small error in CC .cs file (#2858) 2023-05-08 20:58:42 -04:00
Adam Bird caf8f1badc fix own dungeon items not using rando GI item when boss rooms are shuffled (#2859) 2023-05-08 15:44:50 -04:00
Kenix3 77987a42cf Bump LUS (#2855)
* Bump LUS

* Ship -> LUS namespace change

* z_scene_otr Ship -> LUS namespace
2023-05-07 23:01:12 -04:00
Christopher Leggett b166bdd3fc Reverts part of PR #2851 that required OTR regen. (#2856) 2023-05-07 22:54:54 -04:00
briaguya f5aacaf38b fix build (#2852)
Co-authored-by: briaguya <briaguya@alice>
2023-05-07 20:48:55 -04:00
Lutzx fac898d759 Add stdint headers (#1) (#2832)
* Add stdint header

* Add stdint header

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-05-07 20:23:12 -04:00
Kenix3 91bd693ff6 Bump LUS version (#2849)
* Bump LUS version

* Removes the "now" boolean from the LUS resource bridge functions.

* Bump LUS

* More LUS bump

* Update soh/soh/resource/importer/AudioSampleFactory.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-05-07 20:18:54 -04:00
louist103 f31a841789 ZAPD Update (#2851)
* git subrepo clone --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/

subrepo:
  subdir:   "ZAPDTR"
  merged:   "6aa54a551"
upstream:
  origin:   "C:/ZeldaStuff/ZAPDTR"
  branch:   "rebase2"
  commit:   "6aa54a551"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* git subrepo clone --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/

subrepo:
  subdir:   "ZAPDTR"
  merged:   "88b012240"
upstream:
  origin:   "C:/ZeldaStuff/ZAPDTR"
  branch:   "rebase2"
  commit:   "88b012240"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* Update (its broken)

* fix the enum

* git subrepo push --remote=C:/ZeldaStuff/ZAPDTR/ ZAPDTR

subrepo:
  subdir:   "ZAPDTR"
  merged:   "b7b6e1c82"
upstream:
  origin:   "C:/ZeldaStuff/ZAPDTR/"
  branch:   "rebase2"
  commit:   "b7b6e1c82"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* New names for LUS actions

* git subrepo push --remote=C:/ZeldaStuff/ZAPDTR/ ZAPDTR

subrepo:
  subdir:   "ZAPDTR"
  merged:   "c5cfebeee"
upstream:
  origin:   "C:/ZeldaStuff/ZAPDTR/"
  branch:   "rebase2"
  commit:   "c5cfebeee"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* git subrepo clone (merge) --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/

subrepo:
  subdir:   "ZAPDTR"
  merged:   "d5f4769b8"
upstream:
  origin:   "C:/ZeldaStuff/ZAPDTR"
  branch:   "rebase2"
  commit:   "d5f4769b8"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* Fix missing commands in the exporter.

* Cleanups.

* git subrepo pull --force --remote=https://github.com/harbourmasters/ZAPDTR --branch=master ZAPDTR

subrepo:
  subdir:   "ZAPDTR"
  merged:   "d4c35b90a"
upstream:
  origin:   "https://github.com/harbourmasters/ZAPDTR"
  branch:   "master"
  commit:   "d4c35b90a"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"

* Add unordered_map include to fix MacOS

* fix string_view

* Update Main.cpp

* fix string view

* So close I can almost taste it

* So close

* Fix missed git marker.

* Fix surface types and

* Update ZFile.cpp

* Delete Jenkinsfile

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-05-07 19:58:50 -04:00
briaguya dd43719a14 Spock -> develop 2023-05-06 16:38:50 -04:00
Malkierian 778f548b01 Move Game Saving to Separate Thread (#2820)
* Refactor `Vec2f`, `Vec3f`, `Vec3s` in `z64math` to avoid reserved identifiers.

* Include `z64save` in SaveManager, which requires encapsulating `#include gameplaystats.h` and `InitStatTracker` in the cpp to fix compile issues.

Adds SaveContext reference parameters to SaveFunc and existing implementations in preparation for threaded saves.

* Threaded saves fully implemented.

Platform-specific save code removed.

Thread safety added. Will wait for thread pool tasks to finish before resetting or closing.

* Converted gSaveContext copy for save threads to the heap with `new`, deleted at the end of the threaded function to prevent possible issues with the stack.

* Turns out leaving the call to `ThreadPoolWait` in a `GameInteractor::OnExitGame` hook seems to be just fine.

* Removed unnecessary references to `SaveManager::ThreadPoolWait()`, game hooks are the only places it's called now.

* Re-added WiiU/Switch performance save code.

* Added call to `SaveManager::ThreadPoolWait` in `Sram_InitSave` to prevent trying to load a newly "created" save before the save file was actually written.

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-05-05 17:20:34 -04:00
aMannus 81372c092d CrowdControl 2.0 compatibility & category tweak (#2814)
* Updated CC 2.0 .cs file and small category fix

* Remove old comments

* Prepare prices and descriptions in .cs file

* Finalize 2.0 files
2023-05-05 17:18:29 -04:00
Adam Bird 79a10c62ef remove tts hotkey for linux and update readme (#2833) 2023-05-05 02:38:54 -04:00
Adam Bird 5f0f2731ee udpate mac launch script to set SHIP_HOME (#2831) 2023-05-05 02:34:07 -04:00
Kenix3 f9cfcde627 Lus updates (#2835)
* Changes for LUS renames in ResourceManager and Archive.

* Moves WriteSaveFile and ReadSaveFile to SaveManager.

* Removes ImGui namespace.

* Bump LUS

* Updates gitignore for intellij projects.

* Controller usage is now up to date with newest LUS.

* Adapters for removal of Controller.WriteToSource from LUS.

* Uses correct capitalization on Controller.GetProfile()

* Bump LUS

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-05-04 23:56:57 -04:00
Christopher Leggett 1fbec4c69c Merge pull request #2829 from HarbourMasters/develop-spock
Spock -> Develop
2023-05-04 08:52:50 -04:00
briaguya c3ba15ed57 fix: don't crash when changing margins (#2828)
for some reason we were getting garbage data in cvarNameMargins when doing things the `const char *` way. i wasn't able to figure out why that was getting garbage but this makes it so we don't get garbage in there

Co-authored-by: briaguya <briaguya@alice>
2023-05-04 00:35:56 -04:00
PurpleHato d025ca0d90 TWEAK: Rupee dash duplication (#2815)
* TWEAK: Rupee dash duplication

Rupee dash was duplicated while being moved over the EXTRA MODES, so this fixes the duplication and put it only there

* Update soh/soh/GameMenuBar.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-05-04 00:31:52 -04:00
Christopher Leggett 071a2d0418 Merge pull request #2826 from HarbourMasters/develop-spock
Spock -> Develop
2023-05-03 23:00:45 -04:00
briaguya c02dcb598a fix: properly load textures for debug text (#2775)
Co-authored-by: briaguya <briaguya@alice>
2023-05-03 22:23:50 -04:00
GaryOderNichts 176650cb3a GCC 13 support (#2780) 2023-05-03 21:55:49 -04:00
briaguya 7d0515c501 fix: properly load custom models on scene transition (#2779)
* hack that makes it so custom models still work on scene transition

* Update soh/soh/OTRGlobals.cpp

Co-authored-by: Nicholas Estelami <NEstelami@users.noreply.github.com>

* naming/formatting

---------

Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: Nicholas Estelami <NEstelami@users.noreply.github.com>
2023-05-03 21:54:23 -04:00
Adam Bird f81b042843 Tweak: Reset trade item cycling when pausing or changing pages (#2808)
* reset trade select when unpausing

* move trade select reset to kaleido init and handle when changing pages
2023-05-03 21:45:41 -04:00
Adam Bird 2845a29e28 more mq only texture lookup fixes (#2803) 2023-05-03 21:35:08 -04:00
AltoXorg f27ef0ec3b fix: extractor dialog No selection (#2798) 2023-05-03 21:29:50 -04:00
Adam Bird f9a696e9bd add back missing early break/return for bottle filling (#2817) 2023-05-03 21:26:03 -04:00
Adam Bird c3c97f207f Fix: add header to align soh.otr file assets and fix asset crash for Mac (#2819)
* add header for aligned assets for soh files

* remove debug statements

* update more string asset usage to aligned vars
2023-05-03 20:58:41 -04:00
Kenix3 4980ae8dcc Lus updates (#2822)
* Changes for LUS renames in ResourceManager and Archive.

* Moves WriteSaveFile and ReadSaveFile to SaveManager.

* Removes ImGui namespace.

* Bump LUS

* Update soh/soh/GameMenuBar.cpp

* Bump LUS

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-05-03 20:46:26 -04:00
AltoXorg 859bf856b8 remove 100 character limit to baseRomPath (#2801) 2023-04-30 19:52:37 -04:00
Adam Bird dac90bb9eb fix mq dungeons crashing by not using mq textures (#2764) 2023-04-27 23:30:14 -04:00
briaguya 3f896f126f bump version (#2752) 2023-04-27 20:21:55 -04:00
briaguya 4166dbf907 spockalicious (#2751)
* Rough mockup of LUS XML loading

* Updated code for merge

* Loading from FS support and custom DList WIP implementation

* Added current directory support to F3D and impl most of the dlist cmds

* WIP Skeleton support

* Almost done

* Rebase fixes

* Submodule updates

* HD Texture Support

* Fixes

* bump lus

* fix exporter build, header update

* soh builds

* setMesh image path cleanup

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

* Update OTRExporter/OTRExporter/Main.cpp

* Update ZAPDTR/ZAPD/ZResource.h

* Update soh/src/code/z_skelanime.c

* Update OTRExporter/OTRExporter/Main.cpp

* Fixed jpeg backgrounds and decreased icon buffer size

* Bump lus

* Increased even more the buffer because it crashes on long texts

* Removed print because sometimes the if is not triggered when the image is already byteswapped

* fix non-windows build

* fix build

Co-authored-by: Kenix <kenixwhisperwind@gmail.com>

* add hd checkbox

* Various fixes for custom model support (#23)

* Some fixes

* Updated LUS Version

* Fixed issue with Link Skirt on pause menu

* Added CVar for custom link model changes

* Fixed headers

* Additional header fixes

* Tweaks

* Unload HD game assets on scene transition. (#16)

* Unload game assets on scene transition.

* Bump LUS

* Unloads all HD assets on scene transition.

* Only unload hd assets if hd assets are turned on.

* Fixes issues on toggling between HD and non HD assets.

---------

Co-authored-by: briaguya <briaguya@alice>

* fix: actually load hd debug font (#27)

* fix: actually load hd debug font

* toggle debug text correctly

---------

Co-authored-by: briaguya <briaguya>

* Yes. (#28)

* Merge branch 'develop' into dev-to-ghost

* HD Skeleton Swapping and Language Fixes (#32)

* Yes.

* HD Skeleton Swapping and Language Fixes

* Test

* Fixed issues with ganon cape (#34)

* Fixed Bongo Bongo Crash (#35)

* Added HD Assets Toggle (#37)

* Ivan the Fairy - Coop Mode (#36)

* wip

* hookshotable ivan

* added hookshot item

* new items & changes & fixes & restored navi

* farore, din and nayru's spells are done

* fixed slingshot & bow

* added more items supported

* done with all main items

* bug fixes & ready

* added imgui button

* wip

* hookshotable ivan

* added hookshot item

* new items & changes & fixes & restored navi

* farore, din and nayru's spells are done

* fixed slingshot & bow

* added more items supported

* fix own dungeon items on shuffled boss rooms (#2683)

* bump lus (#2692)

* fix: lowercase package names for vcpkg (#2693)

vcpkg was throwing an error `error: invalid character in package name (must be lowercase, digits, '-')`
this updates our calls to `vcpkg_install_packages` to use lowercase package names instead of uppercase

* fix death mountain cloud in rando (#2691)

* Fix: Switch Age No Longer Reloads Start Room (#2679)

* [Reduced Clutter] Disable Hot/Underwater Warning Text (#2684)

* Disable Warning Text

* Moved to Reduced Clutter

* done with all main items

* bug fixes & ready

* fix: process roms in consistent order (#2696)

* chore: move rando savefile setup and document flags (#2697)

* remove rando save init from sram

* move rando savefile init logic and set more flags

* document flags for rando save creation

* Fix: Use correct fps value for frame interpolation with match refresh rate (#2694)

* Fix: Kak GS placement on construction site (#2695)

* added imgui button

* addressed kenix's comments

* fixed useless null

* added rupee dash mode in extra modes

* changed menu position

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com>

* LUS Scancodes (#42)

* Added HD Assets Toggle

* Switched out SDL for LUS scancodes

* Ivan tweaks (#45)

* Magic consumption slowed down;
Bosses now affected by Ivan's Din spell

* Adjust magic timer

* clean up imgui

* model fixes/improvements (#50)

* replace `gUseCustomLinkModel` with custom resource check

* handle adult/child

* bump lus

* fix model switching with tab

* use lus main

* fix carpet man (#52)

Co-authored-by: Rozelette <Rozelette@users.noreply.github.com>

* get ship model and lus texture into soh.otr, use `gAuthenticLogo` to toggle between ship and authentic (#55)

* Use libultra features for CPU-modified textures (#40)

* Use libultra features for CPU-modified textures

* Comment

* bump lus on ghost (#58)

* fix: properly use `Interface_LoadActionLabel` to display start button text (#61)

* Changes hd -> alt for texture replacement. (#65)

* Changes hd -> alt for texture replacement.

* Renames variables in gfxprint for hd -> alt change.

* Update soh/soh/resource/type/Skeleton.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Fixes kaleido dungeon maps (#67)

* skeleton stuff (#69)

* comment out wii u build (#70)

* bump lus (#71)

* Rework readme (#72)

* Update README.md

* docs

* put custom music docs somewhere

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* dark/light title image

* lus

* Update README.md

* Fixed vanilla minimap (#73)

* Fixed vanilla minimap

* Workaround for pulsing SD maps with non-broken HD maps.

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>

* Skeleton fix fixed (#75)

* WIP skelton patcher fix

* Fixes skeleton reference change.

* Adds const back to name in ResourceMgr_LoadSkeletonByName

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: Kenix <kenixwhisperwind@gmail.com>

* Fixes z_message_otr memory leak.

* Update soh/soh/z_message_OTR.cpp

* Update soh/src/code/game.c

* docs: add how to find otr files to switch instructions (#78)

* bump lus (#79)

* comment out RegisterBlendedTexture in king d (#80)

---------

Co-authored-by: Nicholas Estelami <NEstelami@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com>
Co-authored-by: KiritoDv <kiritodev01@gmail.com>
Co-authored-by: briaguya <briaguya>
Co-authored-by: Ralphie Morell <stratomaster64@gmail.com>
Co-authored-by: MelonSpeedruns <melonspeedruns@outlook.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com>
Co-authored-by: Rozelette <Rozelette@users.noreply.github.com>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: Lywx <36680385+KiritoDv@users.noreply.github.com>
2023-04-27 19:20:41 -04:00
briaguya 2af99dfc3a ci: don't build/ship OTRGui (#2748) 2023-04-26 22:21:31 -04:00
briaguya 6d2fd664fb fix: support building for switch on selfhosted runners (#2747) 2023-04-25 19:28:41 -04:00
Adam Bird 000a5d28f3 Add version info and other details to windows exe properties (#2743)
* add version info and other details to windows exe properties

* configure properties file directly to src dir

* move version name in properties and change to Title Case
2023-04-25 10:36:35 -04:00
louist103 aea46e7cb2 Implement built in Extractor for Windows (#2730)
* wip

* const

* split zapd into two targets

* Workingish.

* fix working dir and copy xmls on build (#2)

* dont change current working dir with dialog prompts

* copy asset xmls to target dir

* make zpadlib public

* Messagebox.

* Check for WIN32

* threading

* Cleanups to the exporter and main.

* Multi extraction.

* Fix byteswap header includes.

* Fix another byteswap include.

* fix again.

* stddef size_t

* Add other targets for ZAPDLib

* Non windows.

* IDYES IDNO

* Linux fixes

* hopefully remove switch and wiiu from building extractor

* Please?

* validate roms and add another valid rom

* ifdef out extract.h for switch and wiiu

* Maybe update lux

* Remove ZAPDlib from switch and WiiU

* more rules

* Update soh/soh/Extractor/Extract.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update ZAPDTR/ZAPD/ExecutableMain.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update ZAPDTR/ZAPD/CMakeLists.txt

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update ZAPDTR/ZAPD/GameConfig.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update ZAPDTR/ZAPD/Globals.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update ZAPDTR/ZAPD/Main.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/CMakeLists.txt

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/soh/Extractor/Extract.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/soh/Extractor/Extract.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/soh/Extractor/Extract.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* the last fix

* Add context to a comment

---------

Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-04-25 00:01:17 -04:00
briaguya 44d3f1ccbb fix: update xml resolution for FireTempleBigVerticalFlame to match dlist resolution (#2741) 2023-04-24 14:44:30 -04:00
briaguya bd3ee64d81 improve ci compat by not using touch on windows (#2740)
* improve ci compat by not using touch on windows

* try new-item
2023-04-24 01:23:19 -04:00
briaguya 9be85df4b2 bump lus (#2739) 2023-04-23 22:29:56 -04:00
Adam Bird d0041d28ea Implement patches for authentic texture overflows (#2737)
* implement dlist patching for authentic texture overflows

* add overflow patch to deku stick; move toggle
2023-04-23 19:42:59 -04:00
briaguya 5324dfae67 clean up build info on logo screen (#2736) 2023-04-23 19:13:51 -04:00
RaelCappra 25ceca0fbf Enhancement: Aiming reticle for the bow/slingshot (#2715)
* Bow reticle enhancement

* Menu bar checkbox

* fix

* simplify bow/slingshot reticle logic

* Comment on RETICLE_MAX

* Tooltip clarity update

---------

Co-authored-by: briaguya <briaguya@alice>
2023-04-22 21:59:34 -04:00
briaguya c4b90d0bfe chore: add mods dir for windows (#2735)
* chore: add empty mods dir for windows

* add placeholder file to mods dir
2023-04-22 20:06:00 -04:00
briaguya 512336f858 bump lus (#2733) 2023-04-22 02:08:30 -04:00
Adam Bird 42ff9742ed Tweak: Unique GetItemEntry for Progressive Bombchus with particle effects (#2732)
* give progressive bombchus its own getitementry to allow custom draw effects

* fix timestamp item check
2023-04-21 19:01:19 -04:00
aMannus 37c0345529 ImGui Cleanup - Move Experimental entries, clean up presets (#2725)
* ImGui cleanup

* Fix Wii U

* Fix Wii U build 2: Electric Boogaloo

* Review comments

* Review Comments 2: Electric Boogaloo
2023-04-21 16:05:38 -04:00
briaguya 359cc3d5f6 bump lus (#2731) 2023-04-20 21:55:23 -04:00
inspectredc c146ca4aa5 Fix: SoT Time Travel B-Button Behaviour (#2720)
* time travel allows fishing rod + fixes vanilla ToT age change behaviour

* oops removed too much
2023-04-20 21:53:56 -04:00
Adam Bird 8f0f8c7644 Rando: Add Granny's Potion Shop to Merchant Shuffle (#2723)
* add granny shuffle to 3ds code

* add granny shuffle to soh randomizer

* make granny hand out merchant check

* have medigoron set pending sale mod

* capitalize granny shop item
2023-04-20 21:25:11 -04:00
Adam Bird 1b63f4ca1a Tweak: Shopsanity Heart Pieces and Containers now refill Link's health (#2724)
Heart Pieces and Heart Containers normally refill Links health when the text box with their respective textID is closed.
However, with shops and shopsanity, after receiving the heart piece, the textbox isn't actually closed. The shop keeper keeps it open to prompt the player if they want to continue shopping. This prevents the health refill logic from running.

This PR adds a check for these items in the BuyEvent for randomizer items and manually refills Links health.
2023-04-20 21:00:00 -04:00
Adam Bird 7d20509b5b correctly handle vanilla/mq dungeon location exclusions (#2726)
The logic for showing/hiding Vanilla/MQ dungeon locations in the exclusion tab was not accounting for the case if MQ dungeons is set to "Random".

This rewrites the logic check to account for all 3 cases, and only looks at the count value when set to "Set Number".
Also the CVar get for MQ count needs to default to 12 instead 0, to match the declared default behavior everywhere else.
2023-04-20 20:58:43 -04:00
briaguya 37390c441f feat: allow toggling vsync, fix: vrr support (#2716) 2023-04-20 20:57:32 -04:00
briaguya 853bff3e41 dinner room (#2729) 2023-04-20 20:16:21 -04:00
briaguya 7a96e700bf bump lus (#2721) 2023-04-18 02:15:58 -04:00
Adam Bird 16ee259d0b zapd fix text extraction overflowing (#2717) 2023-04-18 01:08:06 -04:00
PurpleHato 6562823b72 Readability - Magic Numbers (#2707) 2023-04-18 00:55:02 -04:00
Adam Bird 4aee3b6cc9 fix lake hylia sun granting multiple fire arrows in vanilla (#2708) 2023-04-18 00:53:38 -04:00
Adam Bird 19d8d38082 Fix: Update GetItem value for freestanding items and shopsanity plentiful (#2718)
* fix freestanding items not changing getItem value on the fly

* fix getItem models in shops for plentiful items
2023-04-18 00:41:08 -04:00
Adam Bird 579087e527 fix tts crash pause menu with any cursor position (#2719) 2023-04-18 00:38:12 -04:00
aMannus 831711a459 Revert FPS slider behaviour for DX11 (#2686) 2023-04-14 10:44:58 -04:00
Adam Bird e72eeb95aa chore: copy otrs in windows into target dir (#2704)
* copy otrs in windows into target dir

* improve status messaging for otr copy script
2023-04-14 09:56:38 -04:00
aMannus ead17892fe Change console commands to bind commands with parameters (#2706) 2023-04-14 09:55:24 -04:00
Adam Bird 1861335cf0 chore: move asset header generation to new ExtractAssetsHeaders target (#2705)
* add dedicated build target for extracting asset headers conditionally

* dont gen otr when generating headers

* simplify python array
2023-04-14 09:54:56 -04:00
Adam Bird 660c3ec3b0 fix soh otr asset building not detecting textures (#2702) 2023-04-13 18:37:10 -04:00
aMannus 92fa54c3f9 Replaces text chevron with Font Awesome icon (#2687) 2023-04-13 09:32:51 -04:00
briaguya 08828da9fc fix: don't try to install deps on selfhosted linux (#2701) 2023-04-12 23:16:33 -04:00
briaguya c4ce2f10cd build/package/ship soh.otr (#2699)
* update

* Update generate-builds.yml

* Update generate-builds.yml

* sohotr in CI?

* paths

* gitignore soh.otr

* Fix

* no COMMAND maybe?

* try generating otr as it's own step

* deps

* f

* g

* h

* a

* cc

* ccc

* m

* blarg

* try uploading

* try

* s

* copy things

* wii u?

* wiiu

* don't fail

* windows without cpack?

* wut

* whoops

* see all the things plz

* b

* v

* zip working maybe

* ok but this tho

* pdb and switch

* mac lus

* soh.otr in appimage

* down first

* mac

* bundle soh otr into mac app and read it from the bundle

* appimage fix

* try just downloading for mac?

* i like to mv it mv it

* mv to the right place

* no more otrgui

* bring back otrgui and assets

* echo blarg

* echo

* zapd.exe

* clean and remove

* a

* space

---------

Co-authored-by: louis <louist103@gmail.com>
Co-authored-by: louist103 <35883445+louist103@users.noreply.github.com>
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: Adam Bird <archez39@me.com>
2023-04-12 21:14:33 -04:00
briaguya 38c31d2d4e bump lus (#2700) 2023-04-12 20:49:40 -04:00
Adam Bird 40b6dae261 Fix: Kak GS placement on construction site (#2695) 2023-04-11 18:56:57 -04:00
Adam Bird ac506c8b3e Fix: Use correct fps value for frame interpolation with match refresh rate (#2694) 2023-04-11 18:54:10 -04:00
Adam Bird 059df8187e chore: move rando savefile setup and document flags (#2697)
* remove rando save init from sram

* move rando savefile init logic and set more flags

* document flags for rando save creation
2023-04-11 18:27:51 -04:00
briaguya 82b6c48497 fix: process roms in consistent order (#2696) 2023-04-11 18:24:36 -04:00
Patrick12115 fe71cdfbb6 [Reduced Clutter] Disable Hot/Underwater Warning Text (#2684)
* Disable Warning Text

* Moved to Reduced Clutter
2023-04-11 08:18:03 -04:00
inspectredc 6f8207d3bb Fix: Switch Age No Longer Reloads Start Room (#2679) 2023-04-11 08:15:47 -04:00
Adam Bird d56899dd0b fix death mountain cloud in rando (#2691) 2023-04-11 08:14:21 -04:00
briaguya b6e9e9cd0f fix: lowercase package names for vcpkg (#2693)
vcpkg was throwing an error `error: invalid character in package name (must be lowercase, digits, '-')`
this updates our calls to `vcpkg_install_packages` to use lowercase package names instead of uppercase
2023-04-11 08:13:21 -04:00
briaguya 6f9c31dd6c bump lus (#2692) 2023-04-11 07:38:36 -04:00
Adam Bird b47d538e62 fix own dungeon items on shuffled boss rooms (#2683) 2023-04-11 07:31:37 -04:00
briaguya 330da0b5ec khan -> dev 2023-04-07 17:06:58 -04:00
inspectredc 1fa31410c2 Switch age fix (#2676)
* specific scenarios for switch age button, non rando

* Working fix for vanilla swordless change age

* Fix now works for randomiser

* Fixed room load on change age transition

* Removed potentially unnecessary function call

Need to investigate this more, maybe wait for more room documentation.

* Suggested Edits

Moves setting cvar back into mods.cpp and makes clear the condition expected for the no sword flag
2023-04-07 17:05:12 -04:00
Adam Bird 2149cd1fdd fix boss clear logic and add bongo logic trick (#2677) 2023-04-07 15:54:49 -04:00
RaelCappra 0f6147f41d Link voice pitch v0 (#2430)
* Link voice pitch v0

* Using a new variable instead

* Move voice pitch slider to Options tab

* fallback to original behavior if freqMultiplier is set to 1

* Move reset button to Options tab with its slider

* Fix voice pitch slider width in Options tab

* [Review] Always use freqMultiplier
2023-04-07 15:54:26 -04:00
Adam Bird 693f778b60 fix jabu mq clear condition for boss entrance rando (#2671) 2023-04-07 11:24:35 -04:00
Adam Bird b10e489cc6 fix cobra statue shadow and small doc updates (#2666) 2023-04-07 11:22:42 -04:00
Adam Bird ad60ad7c2b Fix: Goron Link's text in randomizer and have Big rolling goron continue rolling (#2670)
* fix link the gorons text ids in rando

* document goron link flags

* check for fire temple clear instead of medallion for link goron

* stop goron link from shivering after opening doors and have big rolling goron resume rolling after giving check

* remove unneeded rando check

* add comments
2023-04-07 11:21:28 -04:00
briaguya 196de9d05d build: don't install deps on selfhosted windows (#2675) 2023-04-07 00:57:03 -04:00
briaguya bd05cb8b5d bump lus (#2674) 2023-04-07 00:25:00 -04:00
Ralphie Morell d434941724 Fix: Gameplay Stats OOB (#2673)
* Handle `sceneMapping` OOB behavior

* whoops

* More solid definition of upper bound
2023-04-06 23:09:25 -04:00
briaguya 44906598e4 fix: properly display static background scenes (#2669) 2023-04-04 03:12:09 -04:00
Ralphie Morell ff1d8a9e9d Enhancement: Room/Scene Timers (#2478)
* Groundwork on scene/room timers; naming changes

* added to save manager; reworked storing timestamps

* actually saved stuff to savemanager;
accounted for null playstate

* finally fixed the fucking timers

* Added scene mapping

* Added CVar for room/scene level; fixed some displays

* reworked logic

* increase name spec for scene timestamps

* Actually save item timestamps when loading v3 save

* Cleanup

* fix merge artifact

* apply suggestions
2023-04-03 00:06:55 -04:00
briaguya 0f40472c1a khan -> dev 2023-04-02 21:37:00 -04:00
Patrick12115 2af952b180 [Time Saver Enhancement] Nighttime GS Always Spawn (#2611)
* Nighttime GS Always Spawn

* add hook onSceneSpawnActors

* implement onSceneSpawnActors hook to spawn GS in various day scenes

* handle the kak tree skull during the day

* Update mods.cpp

* Add the &

* Fixes

* Update soh/soh/Enhancements/mods.cpp

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-04-02 21:11:08 -04:00
briaguya 5f708251a6 bump version (#2665) 2023-04-02 15:41:01 -04:00
briaguya 94ad837c02 bump lus (#2661)
* bump lus

* start fixing build errors

* update resources to support lus changes

Co-authored-by: Kenix <kenixwhisperwind@gmail.com>

---------

Co-authored-by: briaguya <briaguya>
Co-authored-by: Kenix <kenixwhisperwind@gmail.com>
2023-04-02 14:18:45 -04:00
Adam Bird 62bd4b0ba7 remove rando allowing grave pulling during day (#2660) 2023-04-02 14:18:21 -04:00
PurpleHato 77cc91d0de ADD: Time Saver --> Time Travel with the Song of Time (#2575)
* ADD: Time Saver --> Time Travel with the Song of Time

Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>

* TWEAK: one liner for the gPlayState check

* ADD: Time Saver --> Time Travel with the Song of Time

Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>

* TWEAK: one liner for the gPlayState check

* Timetravel stuff

* tweazk oopsies

* Fixes timeline

* tweak frog dist

* ADD: Time Saver --> Time Travel with the Song of Time

Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>

* TWEAK: one liner for the gPlayState check

* Timetravel stuff

* tweazk oopsies

* Fixes timeline

* tweak frog dist

* oppsie²

* del dupe

* del dupe

* tweak tooltip

---------

Co-authored-by: aMannus <4244591+aMannus@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
2023-04-02 12:34:02 -04:00
Patrick12115 fb8dacbc69 [Cheat] No ReDead/Gibdo freeze (#2643)
* No freeze

* Simplified

* removed random spaces

* Removed unnecessary parenthesis
2023-04-02 05:13:34 -04:00
pancake-byte f6ce7e6492 Update README.md (#2592)
* Update README.md

Changed some murky language with respect to the "mods" folder location.

* Update README.md

* Update README.md

Readme overhaul for more consistent language and some updated instruction. Truncated certain sections, removed archaic instructions, elaborated where needed.

* Update README.md

* Update README.md

Does version info belong in additional setup info? Changing that.

* Update README.md

Making suggested changes.

* Update README.md

Made recommended changes.
2023-04-02 04:47:54 -04:00
Malkierian 04d0cd8532 Adds OnTransitionEnd hook to GameInteractor, called at the end of a transition after all mid-transition setup is called. (#2635)
Transitions final autosave location to `OnTransitionEnd`.

Adds functionality to autosave to set a delayed save flag if AutoSave is set to Major or All Items and one is obtained in a grotto, to avoid grotto autosaving but still provide for the autosave when location-based saving is off.

Fixes small bug with item lookup where sometimes an item's `modIndex` would sometimes be reported one way, but the way Randomizer does things it would be in a the other `modIndex`, and the lookup would fail.

Minor variable name clarification in ItemTableManager.

Modifies AutoSave to account for item ID overlap from `MOD_RANDOMIZER` table (all items in the randomizer table is considered major for AutoSave purposes except ice traps).
2023-04-02 04:47:23 -04:00
Patrick12115 b099b5649b [Time Saver Enhancement] Dampe Appears All Night (#2618)
* Dampe Appears All Night

* Take out time check
2023-04-02 04:19:58 -04:00
aMannus ca23d87a3a Hyper Bosses (act and move twice as fast) (#2555)
* Hyper bosses

* Actor* to void* + cast to fix build

* Cleaner implementation

* Fix enemies taking double damage

* Fix smaller dodongo's being sped up

* Additional fix and code cleanup

* Proper fix for double damage

* Extern variable -> GI state
2023-04-02 04:00:21 -04:00
Josh Bodner 21d82e7c4c Cleanup of ImGui code (#2576)
* Change sliders to have +/- buttons by default

* Remove unnecessary margin setting

* Add +/- buttons to remaining sliders and fix some broken UI

* Update EnhancementComboBox to not need array size

* Remove redundant widgets from randomizer

* Miscellaneous fixes

* Fix Switch build break

* Consolidate disabled styling in widgets

* Simplify widget logic

* Merge with most recent PRs

* Fix audio fanfare and sound effect sliders mixup

* Fix sliders being one button too wide

* Fix sliders being too long

* Fix sliders being too long on console
2023-04-01 16:10:49 -04:00
briaguya 2aa7c71eac khan -> dev 2023-04-01 15:09:27 -04:00
briaguya 2a0a31ae7e Merge branch 'develop-khan' into khan-to-dev 2023-04-01 14:19:41 -04:00
Adam Bird f5bcc6dccf fix crash when fishing rod is cast and scene is reloaded (#2657) 2023-04-01 14:06:53 -04:00
Malkierian f7703e14e8 Fix Missing Custom Sequences (#2649)
* Modifies custom sequence loading to bypass other sounds being loaded in AudioCollection to fix missing custom sequences on load.

* Modified `audio_load`'s sequenceMap allocation to utilize `AudioCollection`'s sequenceMap size to account for all audio assets already loaded into that sequenceMap. This gives a non-arbitrary number in addition to the vanilla sequence count to allocate with for `audio_load`'s sequenceMap.

Added `HasSequenceNum` to `AudioCollection` as well to streamline the check against `AudioCollection`'s sequenceMap to skip the non-sequence assets in there.

Added clarification comment for seqNum and MAX_AUTHENTIC_SEQID section.

* Clarified comment about AudioCollection seqNum and MAX_AUTHENTIC_SEQID.

* A bit more on comment from the last commit.
2023-03-31 23:35:29 -04:00
Adam Bird 0c43fe7e48 fix mido blocking pathway when link has kokiri emerald (#2653) 2023-03-31 23:13:24 -04:00
Adam Bird 545bc21fbe Tweak: CTMC/CSMC for treasure mini game reward and set loser green rupee as junk (#2652)
* set green rupee to junk category for ctmc

* allow treasure chest game reward to use CSTMC and cleanup logic
2023-03-31 22:22:45 -04:00
Adam Bird 21a3bd9f5c Fix: Actually display correct GS token count in message for vanilla and rando (#2651)
* Revert "fix skulltula token count message on vanilla (#2597)"

This reverts commit 2117d98178.

* fix vanilla vs rando gs token count to be correct
2023-03-31 22:05:14 -04:00
Adam Bird f682102c96 fix theater mask checks not always granting items (#2650) 2023-03-31 21:29:35 -04:00
RaelCappra c9c7fc7df6 Restore 1.0 quick Bongo kill glitch (#2641)
* Restore 1.0 quick Bongo kill glitch

* Address review comments
2023-03-22 20:59:44 -04:00
Malkierian 7f5f4251ca Another Item_Give bug fixed... (#2636) 2023-03-15 13:25:24 -04:00
briaguya bd07a56022 khan -> dev 2023-03-14 07:13:26 -07:00
briaguya b2698fa126 Merge branch 'develop-khan' into khan-dev 2023-03-14 09:45:00 -04:00
Christopher Leggett 58ef377d87 Fixes some XML texture size and offeset errors. (#2621) 2023-03-14 10:46:52 +01:00
Malkierian 1b158015e6 Fixes bug introduced by 73052617ed where keys, among others, would corrupt inventory slots. (#2626) 2023-03-14 10:46:33 +01:00
briaguya 356d959b70 bump lus 2023-03-14 02:45:19 -04:00
briaguya b157cc5a16 khan -> dev 2023-03-13 21:50:15 -07:00
briaguya 2bd8316d54 Merge remote-tracking branch 'hm/develop-khan' into khan-to-dev 2023-03-14 00:29:30 -04:00
aMannus 866882e4c6 CrowdControl V2: Effect Overhaul (#2433) 2023-03-13 11:37:50 +01:00
aMannus 76e99ffe19 Feature - Bonk damage under difficulty options (#2584) 2023-03-12 08:10:03 +01:00
Malkierian 73052617ed [GI] Item_Give and OnReceiveItem updates (#2580)
* Changed OnReceiveItem hook to pass GetItemEntry, which required the following changes:

Reworked the references to it in `z_parameter` to call a single function with the item return and hook call in it for ease of editing.

Modified the pendingSale functionality to set and pass a modIndex value as well, as mod items (like randomizer) in shops still use the vanilla sale path.

* Missed some files for the pendingSale changes.

Also added Randomizer_Item_Give to the OnReceiveItem system.

* Ice traps now trigger OnReceiveItem.

* All ice traps truly do work now.

As a side effect, item autosave doesn't work for shop/scrub/merchant transactions, requires new OnSaleEnded hook that can also call the autosave.

* Removed unnecessary calls to ItemTable_RetrieveEntry where GetItemEntry properties were being used to call it.  General code cleanup.

* Added OnSaleEnd hook for when rupees are finished deducting after a sale.

Migrated AutoSave to its own function, registered AutoSave function to OnReceiveItem and OnSaleEnd hooks to help with autsaving after buying items.

Some futureproofing for AutoSave function with parameters for skipping autosave, for when transition end is migrated to AutoSave function (whether through direct call or through a hook).

* Renamed hook paramaters, and registered hook function parameters, to a more descriptive alternative.

* Missed a couple, fixed a typo.

* One more missed paramater name refactor.

Refactored all references to OnReceiveItem to OnItemReceive to mirror upcoming full hook refactor for name ordering conventions.

Up-to-date with develop.
2023-03-12 08:00:03 +01:00
briaguya 4a89c20ac9 bump lus + resolve lus conflicts (#2598) 2023-03-07 23:03:00 -05:00
briaguya eb28d114cd khan -> dev 2023-03-06 23:39:08 -05:00
Pierre Wendling dbcc6b4818 [CMake] Do not force CMAKE_OSX_DEPLOYMENT_TARGET (#2581)
This leaves the default of 10.15, but allows a user to change it in the
cache. When using Homebrew libraries on newer macOS version, the linker
emits warnings:

```
ld: warning: dylib (/opt/homebrew/lib/libSDL2.dylib) was built
for newer macOS version (13.0) than being linked (11.0)
```
2023-03-05 08:38:22 +01:00
briaguya 76ceda3118 khan -> dev 2023-03-02 17:13:31 -05:00
David Chavez 981c6348ab Fix voice compilation (#2571) 2023-03-02 21:58:27 +01:00
Amaro Martínez d3f864cea9 Simplify Asset Headers (#2474) 2023-03-02 15:37:47 +01:00
David Chavez 21466192e5 [Accessibility] Text to Speech (#2487) 2023-03-02 09:27:28 +01:00
briaguya 72777a0eb2 build: use fromJSON to parse runner repo vars, don't add deps on self-hosted (#2564) 2023-03-01 19:41:04 -05:00
David Chavez b13f6f4b70 [Interpolation] Allow Matching & Limit Max FPS (#2466) 2023-03-01 16:12:55 +01:00
briaguya 7551fba3d2 [CI] Allow selfhosted runner configuration using repository variables (#2560) 2023-03-01 11:50:16 +01:00
David Chavez 109345e94d [Resources] Properly encode soh textures and remove raw load (#2548) 2023-03-01 10:18:26 +01:00
11815 changed files with 676761 additions and 827310 deletions
+55 -3
View File
@@ -1,13 +1,65 @@
FROM mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04
RUN apt-get update && apt-get install -y libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev ninja-build
RUN apt-get update && apt-get upgrade -y \
&& rm -rf /var/lib/apt/lists/*
# download and install cmake from source
# this ensures we use the same version as in the github runner image
RUN apt-get purge -y cmake || true
ARG CMAKE_VERSION=3.31.11
# download
WORKDIR /tmp
RUN curl -fsSL \
https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz \
-o cmake.tar.gz \
&& tar -xzf cmake.tar.gz \
&& rm cmake.tar.gz
# build and install
WORKDIR /tmp/cmake-${CMAKE_VERSION}
RUN ./bootstrap \
--prefix=/usr/local \
--parallel=$(nproc) \
&& make -j$(nproc) \
&& make install
# clean up
WORKDIR /
RUN rm -rf /tmp/cmake-${CMAKE_VERSION}
# download and install tinyxml2 from source
# this ensures we have the cmake files needed for find_package
RUN apt-get purge -y libtinyxml2-dev || true
ARG TINYXML2_VERSION=11.0.0
# download
WORKDIR /tmp
RUN curl -fsSL \
https://github.com/leethomason/tinyxml2/archive/refs/tags/${TINYXML2_VERSION}.tar.gz \
-o tinyxml2.tar.gz \
&& tar -xzf tinyxml2.tar.gz \
&& rm tinyxml2.tar.gz
# build and install
WORKDIR /tmp/tinyxml2-${TINYXML2_VERSION}
RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
&& cmake --build build --parallel $(nproc) \
&& cmake --install build
# clean up
WORKDIR /
RUN rm -rf /tmp/tinyxml2-${TINYXML2_VERSION}
# install apt dependencies
RUN apt-get update && apt-get install -y \
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev \
libglew-dev nlohmann-json3-dev libspdlog-dev ninja-build libogg-dev \
libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev \
lsb-release git clang clang-format-14 zipcmp zipmerge ziptool \
libopengl-dev libbz2-dev libzip-dev \
&& rm -rf /var/lib/apt/lists/*
# Install latest SDL2
RUN wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz && \
tar -xzf SDL2-2.26.1.tar.gz && \
cd SDL2-2.26.1 && \
./configure && \
make && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf SDL2-2.26.1 && \
@@ -19,7 +71,7 @@ RUN wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz &
tar -xzf SDL2_net-2.2.0.tar.gz && \
cd SDL2_net-2.2.0 && \
./configure && \
make && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf SDL2_net-2.2.0 && \
+1
View File
@@ -0,0 +1 @@
* text=auto eol=lf
+1 -1
View File
@@ -1 +1 @@
libsdl2-dev libsdl2-net-dev libpng-dev libglew-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
+21
View File
@@ -0,0 +1,21 @@
name: clang-format
on: [pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 2
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format-14
- name: Run clang-format
run: |
./run-clang-format.sh
git diff --exit-code
+237 -129
View File
@@ -6,216 +6,324 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-macos:
runs-on: macos-12
generate-soh-otr:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2.22
with:
key: ${{ runner.os }}-ccache
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-otr-ccache-${{ github.ref }}
${{ runner.os }}-otr-ccache
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) libzip-dev zipcmp zipmerge ziptool
- name: Restore Cached deps folder
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-deps-${{ github.ref }}-
${{ runner.os }}-deps-
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Install latest SDL
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
fi
cd deps/SDL2-2.30.3
./configure --enable-hidapi-libusb
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- name: Generate soh.o2r
run: |
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 --build build-cmake --config Release --target GenerateSohOtr -j3
- name: Upload soh.o2r
uses: actions/upload-artifact@v7
with:
name: soh.o2r
path: soh.o2r
retention-days: 3
build-macos:
needs: generate-soh-otr
runs-on: macos-14
steps:
- name: Git Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2.22
with:
create-symlink: true
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-ccache-${{ github.ref }}
${{ runner.os }}-14-ccache
# Needed to apply sudo for macports cache restore
- name: Install gtar wrapper
run: |
sudo mv /usr/local/bin/gtar /usr/local/bin/gtar.orig
sudo cp .github/workflows//gtar /usr/local/bin/gtar
sudo chmod +x /usr/local/bin/gtar
- name: Cache MacPorts
id: cache-macports
uses: actions/cache@v2
sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig
sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar
sudo chmod +x /opt/homebrew/bin/gtar
- name: Restore Cached MacPorts
id: restore-cache-macports
uses: actions/cache/restore@v5
with:
path: /opt/local/
key: ${{ runner.os }}-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}
key: ${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-macports-
${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-
${{ runner.os }}-14-macports-
path: /opt/local/
# Updated PATH applies to the next step and onwards
- name: Install MacPorts (if necessary)
run: |
if [ -d /opt/local/ ]; then
if command -v /opt/local/bin/port 2>&1 >/dev/null; then
echo "MacPorts already installed"
else
wget https://github.com/macports/macports-base/releases/download/v2.7.2/MacPorts-2.7.2-12-Monterey.pkg
sudo installer -pkg ./MacPorts-2.7.2-12-Monterey.pkg -target /
echo "Installing MacPorts"
wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target /
fi
echo "/opt/local/bin:/opt/local/sbin" >> $GITHUB_PATH
echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH"
- name: Install dependencies
run: |
brew uninstall --ignore-dependencies libpng
sudo port install $(cat .github/workflows/macports-deps.txt)
brew install ninja
- name: Download soh.o2r
uses: actions/download-artifact@v7
with:
name: soh.o2r
path: build-cmake/soh
- name: Build SoH
run: |
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 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release --parallel 10
(cd build-cmake && cpack)
mv _packages/*.dmg SoH.dmg
mv README.md readme.txt
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: soh-mac
path: |
SoH.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v5
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
build-linux:
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-20.04
gcc: 10
archive-suffix: compatibility
- os: ubuntu-22.04
gcc: 12
archive-suffix: performance
runs-on: ${{ matrix.os }}
needs: generate-soh-otr
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt)
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2.22
with:
key: ${{ matrix.os }}-ccache
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-${{ github.ref }}
${{ runner.os }}-ccache
- name: Restore Cached deps folder
id: restore-cache-deps
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-deps-${{ github.ref }}-
${{ runner.os }}-deps-
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Install latest SDL
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz
tar -xzf SDL2-2.26.1.tar.gz
cd SDL2-2.26.1
./configure
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
fi
cd deps/SDL2-2.30.3
./configure --enable-hidapi-libusb
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest SDL_net
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz
cd SDL2_net-2.2.0
if [ ! -d "deps/SDL2_net-2.2.0" ]; then
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz -C deps
fi
cd deps/SDL2_net-2.2.0
./configure
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- name: Install libzip without crypto
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/libzip-1.10.1" ]; then
wget https://github.com/nih-at/libzip/releases/download/v1.10.1/libzip-1.10.1.tar.gz
tar -xzf libzip-1.10.1.tar.gz -C deps
fi
cd deps/libzip-1.10.1
mkdir -p build
cd build
cmake .. -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF
make
sudo make install
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
- name: Download soh.o2r
uses: actions/download-artifact@v7
with:
name: soh.o2r
path: build-cmake/soh
- name: Build SoH
run: |
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 --build build-cmake --target OTRGui -j3
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
(cd build-cmake && cpack -G External)
mv README.md readme.txt
mv build-cmake/*.appimage soh.appimage
env:
CC: gcc-${{ matrix.gcc }}
CXX: g++-${{ matrix.gcc }}
CC: gcc-12
CXX: g++-12
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: soh-linux-${{ matrix.archive-suffix }}
name: soh-linux
path: |
soh.appimage
readme.txt
build-switch:
runs-on: ubuntu-latest
container:
image: devkitpro/devkita64:latest
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- uses: actions/checkout@v3
- name: Save Cache deps folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v5
with:
submodules: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-switch-ccache
- name: Build SoH
run: |
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
cmake --build build-switch --target soh_nro -j3
key: ${{ steps.restore-cache-deps.outputs.cache-primary-key }}
path: deps
mv build-switch/soh/*.nro soh.nro
mv README.md readme.txt
- name: Upload build
uses: actions/upload-artifact@v3
with:
name: soh-switch
path: |
soh.nro
readme.txt
build-wiiu:
runs-on: ubuntu-latest
container:
image: devkitpro/devkitppc:latest
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- uses: actions/checkout@v3
with:
submodules: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-wiiu-ccache
- name: Build SoH
run: |
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
cmake --build build-wiiu --target soh_wuhb --config Release -j3
mv build-wiiu/soh/*.rpx soh.rpx
mv build-wiiu/soh/*.wuhb soh.wuhb
mv README.md readme.txt
env:
DEVKITPRO: /opt/devkitpro
DEVKITPPC: /opt/devkitpro/devkitPPC
- name: Upload build
uses: actions/upload-artifact@v3
with:
name: soh-wiiu
path: |
soh.rpx
soh.wuhb
readme.txt
build-windows:
needs: generate-soh-otr
runs-on: windows-latest
steps:
- name: Install dependencies
run: |
choco install ninja
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force
- uses: actions/checkout@v3
choco install ninja -y
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
- name: Git Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: ccache
uses: dcvz/ccache-action@27b9f33213c0079872f064f6b6ba0233dfa16ba2
- name: Configure sccache
uses: hendrikmuhs/ccache-action@v1.2.22
with:
key: ${{ runner.os }}-ccache
- uses: ilammy/msvc-dev-cmd@v1
- name: Setup 7-Zip
run: |
"C:\Program Files\7-Zip" >> $env:GITHUB_PATH
variant: sccache
max-size: "2G"
evict-old-files: job
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-${{ github.ref }}
${{ runner.os }}-ccache
- name: Restore Cached VCPKG folder
id: restore-cache-vcpkg
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-vcpkg-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-vcpkg-${{ github.ref }}-
${{ runner.os }}-vcpkg-
path: vcpkg
- name: Configure Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1
- name: Download soh.o2r
uses: actions/download-artifact@v7
with:
name: soh.o2r
path: build-windows/soh
- name: Build SoH
env:
VCPKG_ROOT: ${{github.workspace}}/vcpkg
run: |
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
cmake --build build-windows --target OTRGui --config Release --parallel 10
cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DBUILD_REMOTE_CONTROL=1
cmake --build build-windows --config Release --parallel 10
cd build-windows
cpack -G ZIP
(cd build-windows && cpack)
cd ..
mv _packages/*.zip _packages/soh-windows.zip
- name: Unzip package
run: Expand-Archive -Path _packages/soh-windows.zip -DestinationPath soh-windows
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: soh-windows
path: _packages/*.zip
path: soh-windows
- name: Save Cache VCPKG folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v5
with:
key: ${{ steps.restore-cache-vcpkg.outputs.cache-primary-key }}
path: vcpkg
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh
exec sudo /usr/local/bin/gtar.orig "$@"
exec sudo /opt/homebrew/bin/gtar.orig "$@"
+1 -1
View File
@@ -1 +1 @@
libsdl2 +universal libpng +universal glew +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
+7 -6
View File
@@ -12,7 +12,7 @@ jobs:
if: ${{ github.event.workflow_run.event == 'pull_request' }}
steps:
- id: 'pr-number'
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
result-encoding: string
script: |
@@ -20,8 +20,9 @@ jobs:
const pullHeadSHA = '${{github.event.workflow_run.head_sha}}';
const pullUserId = ${{github.event.sender.id}};
const prNumber = await (async () => {
const pulls = await github.rest.pulls.list({owner, repo});
for await (const {data} of github.paginate.iterator(pulls)) {
for await (const { data } of github.paginate.iterator(
github.rest.pulls.list, { owner, repo }
)) {
for (const pull of data) {
if (pull.head.sha === pullHeadSHA && pull.user.id === pullUserId) {
return pull.number;
@@ -36,7 +37,7 @@ jobs:
return prNumber;
- id: 'artifacts-text'
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
result-encoding: string
script: |
@@ -47,13 +48,13 @@ jobs:
});
return allArtifacts.data.artifacts.reduce((acc, item) => {
if (item.name === "assets") return acc;
if (item.name === "soh.o2r") return acc;
acc += `
- [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`;
return acc;
}, '### Build Artifacts');
- id: 'add-to-pr'
uses: garrettjoecox/pr-section@3.1.0
uses: garrettjoecox/pr-section@4.0.0
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
pr-number: ${{ steps.pr-number.outputs.result }}
@@ -0,0 +1,72 @@
name: test-builds-on-distros
on:
workflow_dispatch: # by request
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
image: ["archlinux:base", "opensuse/tumbleweed:latest", "ubuntu:mantic", "debian:bookworm", "fedora:39"]
cc: ["gcc", "clang"]
include:
- cxx: g++
cc: gcc
- cxx: clang++
cc: clang
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
container:
image: ${{ matrix.image }}
steps:
- name: Install dependencies (pacman)
if: ${{ matrix.image == 'archlinux:base' }}
run: |
echo arch
echo pacman -S ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
- name: Install dependencies (dnf)
if: ${{ matrix.image == 'fedora:39' }}
run: |
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
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
- name: Install dependencies (apt)
if: ${{ matrix.image == 'ubuntu:mantic' || matrix.image == 'debian:bookworm' }}
run: |
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 libopengl-dev
apt-get update
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 libopengl-dev
- name: Install dependencies (zypper)
if: ${{ matrix.image == 'opensuse/tumbleweed:latest' }}
run: |
echo openSUSE
echo zypper in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
zypper --non-interactive dup
zypper --non-interactive in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
- name: Install latest nlohmann
if: ${{ matrix.image == 'fedora:39' }}
run: |
wget https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz
tar -xzvf v3.11.3.tar.gz
cd json-3.11.3
mkdir build
cd build
cmake ..
make
sudo make install
- uses: actions/checkout@v6
with:
submodules: true
- name: Build SoH
run: |
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 -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
+18 -6
View File
@@ -2,12 +2,15 @@
__pycache__/
.pyc
.DS_Store
.cache/*
# Text editor remnants
.vscode/
.vscode/*
!.vscode/tasks.json
.vs/
.idea/
cmake-build-debug
cmake-build-**
venv/
.cache/
@@ -41,6 +44,7 @@ tools/asmsplitter/c/*
ctx.c
tools/*dSYM/
graphs/
.netcoredbg_hist
# Assets
*.png
@@ -399,7 +403,6 @@ ASALocalRun/
lib/libgfxd/libgfxd.a
ExporterTest/ExporterTest.a
ZAPDUtils/ZAPDUtils.a
.vscode/
build/
external/
ZAPDUtils/build/
@@ -409,12 +412,13 @@ DebugObj/*
ReleaseObj/*
.tags
tags
oot.otr
oot-mq.otr
*.otr
*.o2r
*.sav
shipofharkinian.ini
shipofharkinian.json
imgui.ini
timesplitdata.json
# Switch Stuff
@@ -445,6 +449,14 @@ install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
_packages
*/extract_assets_cmake*
/build*
build.c
soh/src/boot/build.c
soh/properties.h
# Tools
/clang-format
/clang-format.exe
*.o2r
+6
View File
@@ -1,3 +1,9 @@
[submodule "libultraship"]
path = libultraship
url = https://github.com/kenix3/libultraship.git
[submodule "ZAPDTR"]
path = ZAPDTR
url = https://github.com/harbourmasters/ZAPDTR
[submodule "OTRExporter"]
path = OTRExporter
url = https://github.com/harbourmasters/OTRExporter
+86
View File
@@ -0,0 +1,86 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Setup CMake Project",
"type": "shell",
"command": "cmake",
"args": [
"-S",
".",
"-B",
"build-cmake",
"-G",
"Ninja"
],
"windows": {
"args": [
"-S",
".",
"-B",
"build/x64",
"-G",
"Visual Studio 17 2022",
"-T",
"v143",
"-A",
"x64"
]
},
"group": "build",
"problemMatcher": []
},
{
"label": "Generate SOH OTR",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"build-cmake",
"--target",
"GenerateSohOtr",
"--parallel"
],
"windows": {
"args": [
"--build",
"./build/x64",
"--target",
"GenerateSohOtr"
]
},
"group": "build",
"problemMatcher": []
},
{
"label": "Build Project",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"build-cmake"
],
"windows": {
"args": [
"--build",
"./build/x64"
]
},
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": ["Generate SOH OTR"],
"problemMatcher": []
},
{
"label": "Build All",
"dependsOrder": "sequence",
"dependsOn": [
"Setup CMake Project",
"Generate SOH OTR",
"Build Project"
]
}
]
}
-232
View File
@@ -1,232 +0,0 @@
# Building Ship of Harkinian
## Windows
Requires:
* At least 8GB of RAM (machines with 4GB have seen complier failures)
* Visual Studio 2022 Community Edition with the C++ feature set
* One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
* The `MSVC v142 - VS 2019 C++ build tools` component of Visual Studio
* Python 3 (can be installed manually or as part of Visual Studio)
* Git (can be installed manually or as part of Visual Studio)
* Cmake (can be installed via chocolatey or manually)
During installation, check the "Desktop development with C++" feature set:
![image](https://user-images.githubusercontent.com/30329717/183511274-d11aceea-7900-46ec-acb6-3f2cc110021a.png)
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v142 toolset.
You can also find the v142 toolset by searching through the individual components tab:
![image](https://user-images.githubusercontent.com/30329717/183521169-ead6a73b-a1bf-4e99-aab8-441746d8f08e.png)
While you're there, you can also install Python 3 and Git if needed.
1. Clone the Ship of Harkinian repository
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule init`` after cloning to pull in the libultraship submodule!_
2. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
_Note: Instructions assume using powershell_
```powershell
# Navigate to the Shipwright repo within powershell. ie: cd "C:\yourpath\Shipwright"
cd Shipwright
# Setup cmake project
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64 # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# or for VS2019
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssets # --config Release (if you're packaging)
# Compile project
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 # --config Release (if you're packaging)
# Now you can run the executable in .\build\x64
# If you need to clean the project you can run
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target clean
```
### Developing SoH
With the cmake build system you have two options for working on the project:
#### Visual Studio
To develop using Visual Studio you only need to use cmake to generate the solution file:
```powershell
# Generates Ship.sln at `build/x64` for Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
# or for Visual Studio 2019
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
```
#### Visual Studio Code or another editor
To develop using Visual Studio Code or another editor you only need to open the repository in it.
To build you'll need to follow the instructions from the building section.
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._
### Generating the distributable
After compiling the project you can generate the distributable by running:
```powershell
# Go to build folder
cd "build/x64"
# Generate
& 'C:\Program Files\CMake\bin\cpack.exe' -G ZIP
```
## Linux
Requires `gcc >= 10, x11, curl, python3, sdl2 >= 2.0.22, libpng, glew >= 2.2, ninja, cmake, lld`
**Important: For maximum performance make sure you have ninja build tools installed!**
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
```bash
# Clone the repo
git clone https://github.com/HarbourMasters/Shipwright.git
cd Shipwright
# Clone the submodule libultraship
git submodule update --init
# Copy the baserom to the OTRExporter folder
cp <path to your ROM> OTRExporter
# Generate Ninja project
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -DPython3_EXECUTABLE=$(which python3) (if you are using non-standard Python installations such as PyEnv)
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Compile the project
cmake --build build-cmake # --config Release (if you're packaging)
# Now you can run the executable in ./build-cmake/soh/soh.elf
# To develop the project open the repository in VSCode (or your preferred editor)
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```
### Generating a distributable
After compiling the project you can generate a distributable by running of the following:
```bash
# Go to build folder
cd build-cmake
# Generate
cpack -G DEB
cpack -G ZIP
cpack -G External (creates appimage)
```
## macOS
Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake` (can be installed via homebrew, macports, etc)
**Important: For maximum performance make sure you have ninja build tools installed!**
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
```bash
# Clone the repo
git clone https://github.com/HarbourMasters/Shipwright.git
cd ShipWright
# Clone the submodule libultraship
git submodule update --init
# Copy the baserom to the OTRExporter folder
cp <path to your ROM> OTRExporter
# Generate Ninja project
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Compile the project
cmake --build build-cmake # --config Release (if you're packaging)
# Copy oot.otr into the Application Support directory
cp build-cmake/soh/oot.otr ~/Library/Application\ Support/com.shipofharkinian.soh/
# Now you can run the executable file:
./build-cmake/soh/soh-macos
# To develop the project open the repository in VSCode (or your preferred editor)
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```
### Generating a distributable
After compiling the project you can generate a distributable by running of the following:
```bash
# Go to build folder
cd build-cmake
# Generate
cpack
```
## Switch
1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the switch build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
```bash
cd Shipwright
# Setup cmake project for your host machine
cmake -H. -Bbuild-cmake -GNinja
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Setup cmake project for building for Switch
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake
# Build project and generate nro
cmake --build build-switch --target soh_nro
# Now you can run the executable in ./build-switch/soh/soh.nro
# To develop the project open the repository in VSCode (or your preferred editor)
```
## Wii U
1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the Wii U build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
```bash
cd Shipwright
# Setup cmake project for your host machine
cmake -H. -Bbuild-cmake -GNinja
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Setup cmake project for building for Wii U
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# Build project and generate rpx
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)
# Now you can run the executable in ./build-wiiu/soh/soh.rpx or the Wii U Homebrew Bundle in ./build-wiiu/soh/soh.wuhb
# To develop the project open the repository in VSCode (or your preferred editor)
```
# Compatible Roms
```
OOT_PAL_GC checksum 0x09465AC3
OOT_PAL_GC_DBG1 checksum 0x871E1C92 (debug non-master quest)
```
# OTRExporter Usage
The OTRExporter exports an `oot.otr` archive file which Ship of Harkinian requires to play.
Use the `extract_assets.py` script file to run the exporter using any of the following methods:
1) Double click on the script after placing one or more roms in the directory.
2) Drag & Drop a rom onto the script.
3) In a terminal run `python3 extract_assets.py` after placing one or more roms in the directory.
4) In a terminal run `python3 extract_assets.py <path_to_rom>`
If the script finds multiple roms the user is prompted which to use. Selection is done using the number keys and then pressing the carriage return key.
## Getting CI to work on your fork
The CI works via [Github Actions](https://github.com/features/actions) where we mostly make use of machines hosted by Github; except for the very first step of the CI process called "Extract assets". This steps extracts assets from the game file and generates an "assets" folder in `soh/`.
To get this step working on your fork, you'll need to add a machine to your own repository as a self-hosted runner via "Settings > Actions > Runners" in your repository settings. Make sure to add the 'asset-builder' tag to your newly added runner to assign it to run this step. To setup your runner as a service read the docs [here](https://docs.github.com/en/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service?platform=linux).
### Runner on Windows
You'll have to enable the ability to run unsigned scripts through PowerShell. To do this, open Powershell as administrator and run `set-executionpolicy remotesigned`. Most dependencies get installed as part of the CI process. You will also need to seperately install 7z and add it to the PATH so `7z` can be run as a command. [Chocolatey](https://chocolatey.org/) or other package managers can be used to install it easily.
### Runner on UNIX systems
If you're on macOS or Linux take a look at `macports-deps.txt` or `apt-deps.txt` to see the dependencies expected to be on your machine.
+5 -1
View File
@@ -8,5 +8,9 @@ if(MSVC)
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Z7")
else()
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
endif()
endif()
+61
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
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)
+63
View File
@@ -0,0 +1,63 @@
# 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)
# Use pkg-config to find opusfile if available
find_package(PkgConf)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_OPUSFILE QUIET opusfile)
endif()
# Search for the OpusFile header
find_path(OPUSFILE_INCLUDE_DIR
NAMES opusfile.h
HINTS ${PC_OPUSFILE_INCLUDE_DIRS}
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
HINTS ${PC_OPUSFILE_LIBRARY_DIRS}
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
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)
+3 -5
View File
@@ -1,9 +1,9 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 0)
set(CPACK_COMPONENTS_ALL "ship" "appimage")
set(CPACK_COMPONENTS_ALL "ship")
if (NOT CPACK_GENERATOR STREQUAL "External")
list(REMOVE_ITEM CPACK_COMPONENTS_ALL "appimage")
if (CPACK_GENERATOR STREQUAL "External")
list(APPEND CPACK_COMPONENTS_ALL "extractor" "appimage")
endif()
if (CPACK_GENERATOR MATCHES "DEB|RPM")
@@ -24,7 +24,5 @@ if (CPACK_GENERATOR MATCHES "Bundle")
set(CPACK_BUNDLE_NAME "soh")
set(CPACK_BUNDLE_PLIST "macosx/Info.plist")
set(CPACK_BUNDLE_ICON "macosx/soh.icns")
set(CPACK_BUNDLE_STARTUP_COMMAND "../soh/macosx/soh-macos.sh")
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
endif()
+1 -1
View File
@@ -60,7 +60,7 @@ if (NOT LINUXDEPLOY_EXECUTABLE)
message(STATUS "Downloading linuxdeploy")
set(LINUXDEPLOY_EXECUTABLE ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/linuxdeploy)
file(DOWNLOAD
https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage
${LINUXDEPLOY_EXECUTABLE}
INACTIVITY_TIMEOUT 10
LOG ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/download.log
+20
View File
@@ -0,0 +1,20 @@
set(CVAR_VSYNC_ENABLED "${CVAR_PREFIX_SETTING}.VsyncEnabled" CACHE STRING "")
set(CVAR_Z_FIGHTING_MODE "${CVAR_PREFIX_SETTING}.ZFightingMode" CACHE STRING "")
set(CVAR_INTERNAL_RESOLUTION "${CVAR_PREFIX_SETTING}.InternalResolution" 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_TEXTURE_FILTER "${CVAR_PREFIX_SETTING}.TextureFilter" CACHE STRING "")
set(CVAR_IMGUI_CONTROLLER_NAV "${CVAR_PREFIX_SETTING}.ControlNav" CACHE STRING "")
set(CVAR_CONSOLE_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.Console" CACHE STRING "")
set(CVAR_CONTROLLER_DISCONNECTED_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.ControllerDisconnected" CACHE STRING "")
set(CVAR_CONTROLLER_REORDERING_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.ControllerReordering" CACHE STRING "")
set(CVAR_GFX_DEBUGGER_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.GfxDebugger" CACHE STRING "")
set(CVAR_STATS_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.Stats" CACHE STRING "")
set(CVAR_ENABLE_MULTI_VIEWPORTS "${CVAR_PREFIX_SETTING}.EnableMultiViewports" CACHE STRING "")
set(CVAR_LOW_RES_MODE "${CVAR_PREFIX_SETTING}.LowResMode" CACHE STRING "")
set(CVAR_SIMULATED_INPUT_LAG "${CVAR_PREFIX_SETTING}.SimulatedInputLag" CACHE STRING "")
set(CVAR_GAME_OVERLAY_FONT "${CVAR_PREFIX_SETTING}.OverlayFont" CACHE STRING "")
set(CVAR_MENU_BAR_OPEN "${CVAR_PREFIX_SETTING}.OpenMenuBar" CACHE STRING "")
set(CVAR_PREFIX_CONTROLLERS "${CVAR_PREFIX_SETTING}.Controllers" CACHE STRING "")
set(CVAR_PREFIX_ADVANCED_RESOLUTION "${CVAR_PREFIX_SETTING}.AdvancedResolution" CACHE STRING "")
include("libultraship/cmake/cvars.cmake")
+30
View File
@@ -0,0 +1,30 @@
set(CVAR_PREFIX_RANDOMIZER_ENHANCEMENT "gRandoEnhancements")
set(CVAR_PREFIX_RANDOMIZER_SETTING "gRandoSettings")
set(CVAR_PREFIX_COSMETIC "gCosmetics")
set(CVAR_PREFIX_AUDIO "gAudioEditor")
set(CVAR_PREFIX_CHEAT "gCheats")
set(CVAR_PREFIX_ENHANCEMENT "gEnhancements")
set(CVAR_PREFIX_SETTING "gSettings")
set(CVAR_PREFIX_WINDOW "gOpenWindows")
set(CVAR_PREFIX_TRACKER "gTrackers")
set(CVAR_PREFIX_DEVELOPER_TOOLS "gDeveloperTools")
set(CVAR_PREFIX_GENERAL "gGeneral")
set(CVAR_PREFIX_REMOTE "gRemote")
set(CVAR_PREFIX_GAMEPLAY_STATS "gGameplayStats")
set(CVAR_PREFIX_TIME_DISPLAY "gTimeDisplay")
add_compile_definitions(
CVAR_PREFIX_RANDOMIZER_ENHANCEMENT="${CVAR_PREFIX_RANDOMIZER_ENHANCEMENT}"
CVAR_PREFIX_RANDOMIZER_SETTING="${CVAR_PREFIX_RANDOMIZER_SETTING}"
CVAR_PREFIX_COSMETIC="${CVAR_PREFIX_COSMETIC}"
CVAR_PREFIX_AUDIO="${CVAR_PREFIX_AUDIO}"
CVAR_PREFIX_CHEAT="${CVAR_PREFIX_CHEAT}"
CVAR_PREFIX_ENHANCEMENT="${CVAR_PREFIX_ENHANCEMENT}"
CVAR_PREFIX_SETTING="${CVAR_PREFIX_SETTING}"
CVAR_PREFIX_WINDOW="${CVAR_PREFIX_WINDOW}"
CVAR_PREFIX_TRACKER="${CVAR_PREFIX_TRACKER}"
CVAR_PREFIX_DEVELOPER_TOOLS="${CVAR_PREFIX_DEVELOPER_TOOLS}"
CVAR_PREFIX_GENERAL="${CVAR_PREFIX_GENERAL}"
CVAR_PREFIX_REMOTE="${CVAR_PREFIX_REMOTE}"
CVAR_PREFIX_GAMEPLAY_STATS="${CVAR_PREFIX_GAMEPLAY_STATS}"
CVAR_PREFIX_TIME_DISPLAY="${CVAR_PREFIX_TIME_DISPLAY}"
)
+165 -51
View File
@@ -1,31 +1,96 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
cmake_minimum_required(VERSION 3.26.0 FATAL_ERROR)
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
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" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
project(Ship VERSION 6.1.1 LANGUAGES C CXX)
set(PROJECT_BUILD_NAME "KHAN BRAVO" CACHE STRING "")
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
project(Ship VERSION 9.2.3 LANGUAGES C CXX)
include(CMake/soh-cvars.cmake)
include(CMake/lus-cvars.cmake)
set(SPDLOG_LEVEL_TRACE 0)
set(SPDLOG_LEVEL_OFF 6)
set(SPDLOG_MIN_CUTOFF SPDLOG_LEVEL_TRACE CACHE STRING "cutoff at trace")
option(SUPPRESS_WARNINGS "Suppress warnings in LUS and src (decomp)" ON)
if(SUPPRESS_WARNINGS)
MESSAGE("Suppressing warnings in LUS and src")
if(MSVC)
set(WARNING_OVERRIDE /w)
else()
set(WARNING_OVERRIDE -w)
endif()
else()
MESSAGE("Skipping warning suppression")
endif()
set(NATO_PHONETIC_ALPHABET
"Alfa" "Bravo" "Charlie" "Delta" "Echo" "Foxtrot" "Golf" "Hotel"
"India" "Juliett" "Kilo" "Lima" "Mike" "November" "Oscar" "Papa"
"Quebec" "Romeo" "Sierra" "Tango" "Uniform" "Victor" "Whiskey"
"Xray" "Yankee" "Zulu"
)
# Get the patch version number from the project version
math(EXPR PATCH_INDEX "${PROJECT_VERSION_PATCH}")
# Use the patch number to select the correct word
list(GET NATO_PHONETIC_ALPHABET ${PATCH_INDEX} PROJECT_PATCH_WORD)
set(PROJECT_BUILD_NAME "Ackbar ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE)
execute_process(
COMMAND git branch --show-current
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(CMAKE_PROJECT_GIT_BRANCH "${GIT_BRANCH}" CACHE STRING "Git branch" FORCE)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get only the first 7 characters of the hash
string(SUBSTRING "${GIT_COMMIT_HASH}" 0 7 SHORT_COMMIT_HASH)
set(CMAKE_PROJECT_GIT_COMMIT_HASH "${SHORT_COMMIT_HASH}" CACHE STRING "Git commit hash" FORCE)
execute_process(
COMMAND git describe --tags --abbrev=0 --exact-match HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_COMMIT_TAG)
set(GIT_COMMIT_TAG "" CACHE STRING "Git commit tag" FORCE)
endif()
set(CMAKE_PROJECT_GIT_COMMIT_TAG "${GIT_COMMIT_TAG}" CACHE STRING "Git commit tag" FORCE)
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
if (CMAKE_SYSTEM_NAME MATCHES "Windows|Linux")
if(NOT DEFINED BUILD_CROWD_CONTROL)
set(BUILD_CROWD_CONTROL ON)
endif()
endif()
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/utf-8>)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/Zc:preprocessor>)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
include(CMake/automate-vcpkg.cmake)
include(CMake/automate-vcpkg.cmake)
set(VCPKG_TRIPLET x64-windows-static)
set(VCPKG_TARGET_TRIPLET x64-windows-static)
set(VCPKG_TRIPLET x64-windows-static)
set(VCPKG_TARGET_TRIPLET x64-windows-static)
vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libpng SDL2 SDL2-net GLEW glfw3)
vcpkg_bootstrap()
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")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif()
endif()
################################################################################
@@ -83,44 +148,100 @@ include(CMake/GlobalSettingsInclude.cmake OPTIONAL)
################################################################################
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
################################################################################
# Set LUS vars
################################################################################
# Enable the Gfx debugger in LUS to use libgfxd from ZAPDTR
set(GFX_DEBUG_DISASSEMBLER ON)
# Tell LUS we're using F3DEX_GBI_2 (in a way that doesn't break libgfxd)
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
################################################################################
add_compile_definitions(CONTROLLERBUTTONS_T=uint32_t)
################################################################################
# Sub-projects
################################################################################
add_subdirectory(libultraship ${CMAKE_BINARY_DIR}/libultraship)
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(OTRExporter)
add_subdirectory(soh)
if(CMAKE_SYSTEM_NAME MATCHES "Windows|Linux")
add_subdirectory(OTRGui)
endif()
set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE_TERMINAL YES)
set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/scripts/linux/appimage/soh.desktop")
set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon.png")
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
install(PROGRAMS "${CMAKE_SOURCE_DIR}/scripts/linux/appimage/soh.sh" DESTINATION . COMPONENT appimage)
install(FILES "${CMAKE_BINARY_DIR}/soh/soh.o2r" DESTINATION . COMPONENT ship)
install(TARGETS ZAPD 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/xml COMPONENT extractor)
endif()
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/ COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml COMPONENT ship)
endif()
find_package(Python3 COMPONENTS Interpreter)
# Target to generate OTRs
add_custom_target(
ExtractAssets
# CMake versions prior to 3.17 do not have the rm command, use remove instead for older versions
COMMAND ${CMAKE_COMMAND} -E $<IF:$<VERSION_LESS:${CMAKE_VERSION},3.17>,remove,rm> -f oot.otr oot-mq.otr
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive
COMMAND ${CMAKE_COMMAND} -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
COMMAND ${CMAKE_COMMAND} -E rm -f oot.o2r oot-mq.o2r soh.o2r
# 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 copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/fast/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 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
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Running asset extraction..."
DEPENDS ZAPD
BYPRODUCTS oot.otr ${CMAKE_SOURCE_DIR}/oot.otr oot-mq.otr ${CMAKE_SOURCE_DIR}/oot-mq.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
add_custom_target(
ExtractAssetHeaders
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}/soh
COMMENT "Generating asset headers..."
DEPENDS ZAPD
)
# Target to generate only soh.o2r
add_custom_target(
GenerateSohOtr
COMMAND ${CMAKE_COMMAND} -E rm -f soh.o2r
# 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 copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/fast/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.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
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Generating soh.o2r..."
DEPENDS ZAPD
)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
find_package(ImageMagick COMPONENTS convert)
if (ImageMagick_FOUND)
execute_process (
COMMAND ${ImageMagick_convert_EXECUTABLE} soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/sohIcon.png
COMMAND ${ImageMagick_convert_EXECUTABLE} ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/sohIcon.png
OUTPUT_VARIABLE outVar
)
endif()
@@ -129,42 +250,35 @@ endif()
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_custom_target(CreateOSXIcons
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/soh.iconset
COMMAND sips -z 16 16 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
COMMAND sips -z 64 64 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
COMMAND sips -z 128 128 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
COMMAND cp soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
COMMAND sips -z 16 16 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
COMMAND sips -z 32 32 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
COMMAND sips -z 32 32 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
COMMAND sips -z 64 64 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
COMMAND sips -z 128 128 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
COMMAND sips -z 256 256 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
COMMAND sips -z 256 256 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
COMMAND sips -z 512 512 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
COMMAND sips -z 512 512 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
COMMAND cp ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
COMMAND iconutil -c icns -o ${CMAKE_BINARY_DIR}/macosx/soh.icns ${CMAKE_BINARY_DIR}/macosx/soh.iconset
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Creating OSX icons ..."
)
add_dependencies(soh CreateOSXIcons)
add_custom_target(Assets ALL
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/OTRGui/assets/extractor" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/extractor" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/OTRExporter/assets" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/game" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/soh/assets/xml" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/extractor/xmls" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
)
add_dependencies(soh Assets)
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)
install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
DESTINATION .
PATTERN ZAPD.out
PERMISSIONS ${PROGRAM_PERMISSIONS_EXECUTE}
)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml)
# 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 "
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/soh-macos\" \"\" \"${dirs}\")
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/../MacOS/soh\" \"\" \"${dirs}\")
")
endif()
Submodule
+1
Submodule OTRExporter added at 32e088e28c
-353
View File
@@ -1,353 +0,0 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
*.out
*.o
*.d
lib/libgfxd/libgfxd.a
ExporterTest/ExporterTest.a
ZAPDUtils/ZAPDUtils.a
.vscode/
build/
ZAPDUtils/build/
ZAPD/BuildInfo.h
baserom/
baserom_ntsc/
*.vtx.inc
*.otr
*.swp
*.a
*.z64
*.n64
Extract/
tmp.txt
-12
View File
@@ -1,12 +0,0 @@
; DO NOT EDIT (unless you know what you are doing)
;
; This subdirectory is a git "subrepo", and this file is maintained by the
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
;
[subrepo]
remote = https://github.com/HarbourMasters/OTRExporter.git
branch = master
commit = 1503d3eefa0b51164371c60c2aae8ad057678319
parent = d24c8453db1035f382e1b0853be00ebd281bbbdd
method = rebase
cmdver = 0.4.1
-8
View File
@@ -1,8 +0,0 @@
<Root>
<SymbolMap File="SymbolMap_OoTMqDbg.txt"/>
<ActorList File="ActorList_OoTMqDbg.txt"/>
<ObjectList File="ObjectList_OoTMqDbg.txt"/>
<ExternalXMLFolder Path="../soh/assets/xml/GC_NMQ_PAL_F/"/>
<TexturePool File="TexturePool.xml"/>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
</Root>
-65
View File
@@ -1,65 +0,0 @@
################################################################################
# Command for variable_watch. This command issues error message, if a variable
# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
# variable_watch(<variable> property_reader_guard)
################################################################################
function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
if("${PROPERTY_READER_GUARD_DISABLED}")
return()
endif()
if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
message(FATAL_ERROR
" Variable ${VARIABLE} is not supposed to be changed.\n"
" It is used only for reading target property ${VARIABLE}.\n"
" Use\n"
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}\" \"<value>\")\n"
" or\n"
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}_<CONFIG>\" \"<value>\")\n"
" instead.\n")
endif()
endfunction()
################################################################################
# Create variable <name> with generator expression that expands to value of
# target property <name>_<CONFIG>. If property is empty or not set then property
# <name> is used instead. Variable <name> has watcher property_reader_guard that
# doesn't allow to edit it.
# create_property_reader(<name>)
# Input:
# name - Name of watched property and output variable
################################################################################
function(create_property_reader NAME)
set(PROPERTY_READER_GUARD_DISABLED TRUE)
set(CONFIG_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}_$<UPPER_CASE:$<CONFIG>>>>")
set(IS_CONFIG_VALUE_EMPTY "$<STREQUAL:${CONFIG_VALUE},>")
set(GENERAL_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}>>")
set("${NAME}" "$<IF:${IS_CONFIG_VALUE_EMPTY},${GENERAL_VALUE},${CONFIG_VALUE}>" PARENT_SCOPE)
variable_watch("${NAME}" property_reader_guard)
endfunction()
################################################################################
# Set property $<name>_${PROPS_CONFIG_U} of ${PROPS_TARGET} to <value>
# set_config_specific_property(<name> <value>)
# Input:
# name - Prefix of property name
# value - New value
################################################################################
function(set_config_specific_property NAME VALUE)
set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
endfunction()
################################################################################
create_property_reader("TARGET_NAME")
create_property_reader("OUTPUT_DIRECTORY")
set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
-12
View File
@@ -1,12 +0,0 @@
include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_SOURCE_DIR}$<$<NOT:$<STREQUAL:${CMAKE_VS_PLATFORM_NAME},Win32>>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
if(MSVC)
create_property_reader("DEFAULT_CXX_EXCEPTION_HANDLING")
create_property_reader("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT")
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
endif()
-233
View File
@@ -1,233 +0,0 @@
# utils file for projects came from visual studio solution with cmake-converter.
################################################################################
# Wrap each token of the command with condition
################################################################################
cmake_policy(PUSH)
cmake_policy(SET CMP0054 NEW)
macro(prepare_commands)
unset(TOKEN_ROLE)
unset(COMMANDS)
foreach(TOKEN ${ARG_COMMANDS})
if("${TOKEN}" STREQUAL "COMMAND")
set(TOKEN_ROLE "KEYWORD")
elseif("${TOKEN_ROLE}" STREQUAL "KEYWORD")
set(TOKEN_ROLE "CONDITION")
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
set(TOKEN_ROLE "COMMAND")
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
set(TOKEN_ROLE "ARG")
endif()
if("${TOKEN_ROLE}" STREQUAL "KEYWORD")
list(APPEND COMMANDS "${TOKEN}")
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
set(CONDITION ${TOKEN})
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
list(APPEND COMMANDS "$<$<NOT:${CONDITION}>:${DUMMY}>$<${CONDITION}:${TOKEN}>")
elseif("${TOKEN_ROLE}" STREQUAL "ARG")
list(APPEND COMMANDS "$<${CONDITION}:${TOKEN}>")
endif()
endforeach()
endmacro()
cmake_policy(POP)
################################################################################
# Transform all the tokens to absolute paths
################################################################################
macro(prepare_output)
unset(OUTPUT)
foreach(TOKEN ${ARG_OUTPUT})
if(IS_ABSOLUTE ${TOKEN})
list(APPEND OUTPUT "${TOKEN}")
else()
list(APPEND OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${TOKEN}")
endif()
endforeach()
endmacro()
################################################################################
# Parse add_custom_command_if args.
#
# Input:
# PRE_BUILD - Pre build event option
# PRE_LINK - Pre link event option
# POST_BUILD - Post build event option
# TARGET - Target
# OUTPUT - List of output files
# DEPENDS - List of files on which the command depends
# COMMANDS - List of commands(COMMAND condition1 commannd1 args1 COMMAND
# condition2 commannd2 args2 ...)
# Output:
# OUTPUT - Output files
# DEPENDS - Files on which the command depends
# COMMENT - Comment
# PRE_BUILD - TRUE/FALSE
# PRE_LINK - TRUE/FALSE
# POST_BUILD - TRUE/FALSE
# TARGET - Target name
# COMMANDS - Prepared commands(every token is wrapped in CONDITION)
# NAME - Unique name for custom target
# STEP - PRE_BUILD/PRE_LINK/POST_BUILD
################################################################################
function(add_custom_command_if_parse_arguments)
cmake_parse_arguments("ARG" "PRE_BUILD;PRE_LINK;POST_BUILD" "TARGET;COMMENT" "DEPENDS;OUTPUT;COMMANDS" ${ARGN})
if(WIN32)
set(DUMMY "cd.")
elseif(UNIX)
set(DUMMY "true")
endif()
prepare_commands()
prepare_output()
set(DEPENDS "${ARG_DEPENDS}")
set(COMMENT "${ARG_COMMENT}")
set(PRE_BUILD "${ARG_PRE_BUILD}")
set(PRE_LINK "${ARG_PRE_LINK}")
set(POST_BUILD "${ARG_POST_BUILD}")
set(TARGET "${ARG_TARGET}")
if(PRE_BUILD)
set(STEP "PRE_BUILD")
elseif(PRE_LINK)
set(STEP "PRE_LINK")
elseif(POST_BUILD)
set(STEP "POST_BUILD")
endif()
set(NAME "${TARGET}_${STEP}")
set(OUTPUT "${OUTPUT}" PARENT_SCOPE)
set(DEPENDS "${DEPENDS}" PARENT_SCOPE)
set(COMMENT "${COMMENT}" PARENT_SCOPE)
set(PRE_BUILD "${PRE_BUILD}" PARENT_SCOPE)
set(PRE_LINK "${PRE_LINK}" PARENT_SCOPE)
set(POST_BUILD "${POST_BUILD}" PARENT_SCOPE)
set(TARGET "${TARGET}" PARENT_SCOPE)
set(COMMANDS "${COMMANDS}" PARENT_SCOPE)
set(STEP "${STEP}" PARENT_SCOPE)
set(NAME "${NAME}" PARENT_SCOPE)
endfunction()
################################################################################
# Add conditional custom command
#
# Generating Files
# The first signature is for adding a custom command to produce an output:
# add_custom_command_if(
# <OUTPUT output1 [output2 ...]>
# <COMMANDS>
# <COMMAND condition command1 [args1...]>
# [COMMAND condition command2 [args2...]]
# [DEPENDS [depends...]]
# [COMMENT comment]
#
# Build Events
# add_custom_command_if(
# <TARGET target>
# <PRE_BUILD | PRE_LINK | POST_BUILD>
# <COMMAND condition command1 [args1...]>
# [COMMAND condition command2 [args2...]]
# [COMMENT comment]
#
# Input:
# output - Output files the command is expected to produce
# condition - Generator expression for wrapping the command
# command - Command-line(s) to execute at build time.
# args - Command`s args
# depends - Files on which the command depends
# comment - Display the given message before the commands are executed at
# build time.
# PRE_BUILD - Run before any other rules are executed within the target
# PRE_LINK - Run after sources have been compiled but before linking the
# binary
# POST_BUILD - Run after all other rules within the target have been
# executed
################################################################################
function(add_custom_command_if)
add_custom_command_if_parse_arguments(${ARGN})
if(OUTPUT AND TARGET)
message(FATAL_ERROR "Wrong syntax. A TARGET and OUTPUT can not both be specified.")
endif()
if(OUTPUT)
add_custom_command(OUTPUT ${OUTPUT}
${COMMANDS}
DEPENDS ${DEPENDS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT ${COMMENT})
elseif(TARGET)
if(PRE_BUILD AND NOT ${CMAKE_GENERATOR} MATCHES "Visual Studio")
add_custom_target(
${NAME}
${COMMANDS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT ${COMMENT})
add_dependencies(${TARGET} ${NAME})
else()
add_custom_command(
TARGET ${TARGET}
${STEP}
${COMMANDS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT ${COMMENT})
endif()
else()
message(FATAL_ERROR "Wrong syntax. A TARGET or OUTPUT must be specified.")
endif()
endfunction()
################################################################################
# Use props file for a target and configs
# use_props(<target> <configs...> <props_file>)
# Inside <props_file> there are following variables:
# PROPS_TARGET - <target>
# PROPS_CONFIG - One of <configs...>
# PROPS_CONFIG_U - Uppercase PROPS_CONFIG
# Input:
# target - Target to apply props file
# configs - Build configurations to apply props file
# props_file - CMake script
################################################################################
macro(use_props TARGET CONFIGS PROPS_FILE)
set(PROPS_TARGET "${TARGET}")
foreach(PROPS_CONFIG ${CONFIGS})
string(TOUPPER "${PROPS_CONFIG}" PROPS_CONFIG_U)
get_filename_component(ABSOLUTE_PROPS_FILE "${PROPS_FILE}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
if(EXISTS "${ABSOLUTE_PROPS_FILE}")
include("${ABSOLUTE_PROPS_FILE}")
else()
message(WARNING "Corresponding cmake file from props \"${ABSOLUTE_PROPS_FILE}\" doesn't exist")
endif()
endforeach()
endmacro()
################################################################################
# Add compile options to source file
# source_file_compile_options(<source_file> [compile_options...])
# Input:
# source_file - Source file
# compile_options - Options to add to COMPILE_FLAGS property
################################################################################
function(source_file_compile_options SOURCE_FILE)
if("${ARGC}" LESS_EQUAL "1")
return()
endif()
get_source_file_property(COMPILE_OPTIONS "${SOURCE_FILE}" COMPILE_OPTIONS)
if(COMPILE_OPTIONS)
list(APPEND COMPILE_OPTIONS ${ARGN})
else()
set(COMPILE_OPTIONS "${ARGN}")
endif()
set_source_files_properties("${SOURCE_FILE}" PROPERTIES COMPILE_OPTIONS "${COMPILE_OPTIONS}")
endfunction()
################################################################################
# Default properties of visual studio projects
################################################################################
set(DEFAULT_CXX_PROPS "${CMAKE_CURRENT_LIST_DIR}/DefaultCXX.cmake")
-96
View File
@@ -1,96 +0,0 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
#set(CMAKE_C_STANDARD 11 CACHE STRING "The C standard to use")
set(CMAKE_C_STANDARD 11)
project(OTRExporter C CXX)
################################################################################
# Set target arch type if empty. Visual studio solution generator provides it.
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
if(NOT CMAKE_VS_PLATFORM_NAME)
set(CMAKE_VS_PLATFORM_NAME "x64")
endif()
message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
endif()
endif()
################################################################################
# Global configuration types
################################################################################
set(CMAKE_CONFIGURATION_TYPES
"Debug"
"Release"
CACHE STRING "" FORCE
)
################################################################################
# Global compiler options
################################################################################
if(MSVC)
# remove default flags provided with CMake for MSVC
set(CMAKE_C_FLAGS "")
set(CMAKE_C_FLAGS_DEBUG "")
set(CMAKE_C_FLAGS_RELEASE "")
set(CMAKE_CXX_FLAGS "")
set(CMAKE_CXX_FLAGS_DEBUG "")
set(CMAKE_CXX_FLAGS_RELEASE "")
endif()
################################################################################
# Global linker options
################################################################################
if(MSVC)
# remove default flags provided with CMake for MSVC
set(CMAKE_EXE_LINKER_FLAGS "")
set(CMAKE_MODULE_LINKER_FLAGS "")
set(CMAKE_SHARED_LINKER_FLAGS "")
set(CMAKE_STATIC_LINKER_FLAGS "")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS}")
set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS}")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS}")
endif()
################################################################################
# Common utils
################################################################################
include(CMake/Utils.cmake)
################################################################################
# Additional Global Settings(add specific info there)
################################################################################
include(CMake/GlobalSettingsInclude.cmake OPTIONAL)
################################################################################
# Use solution folders feature
################################################################################
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
################################################################################
# Sub-projects
################################################################################
if (NOT TARGET libultraship)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libultraship ${CMAKE_BINARY_DIR}/libultraship)
endif()
if (NOT TARGET ZAPD)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
endif()
if (NOT TARGET ZAPDUtils)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/extern/ZAPDUtils ${CMAKE_BINARY_DIR}/ZAPDUtils)
endif()
add_subdirectory(OTRExporter)
-9
View File
@@ -1,9 +0,0 @@
Copyright (c) 2022 Harbour Masters
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,70 +0,0 @@
#include "AnimationExporter.h"
#include <resource/type/Animation.h>
void OTRExporter_Animation::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZAnimation* anim = (ZAnimation*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_Animation);
ZNormalAnimation* normalAnim = dynamic_cast<ZNormalAnimation*>(anim);
ZCurveAnimation* curveAnim = dynamic_cast<ZCurveAnimation*>(anim);
ZLinkAnimation* linkAnim = dynamic_cast<ZLinkAnimation*>(anim);
if (linkAnim != nullptr)
{
writer->Write((uint32_t)Ship::AnimationType::Link);
writer->Write((uint16_t)linkAnim->frameCount);
writer->Write((uint32_t)linkAnim->segmentAddress);
}
else if (curveAnim != nullptr)
{
writer->Write((uint32_t)Ship::AnimationType::Curve);
writer->Write((uint16_t)curveAnim->frameCount);
writer->Write((uint32_t)curveAnim->refIndexArr.size());
for (auto val : curveAnim->refIndexArr)
writer->Write(val);
writer->Write((uint32_t)curveAnim->transformDataArr.size());
for (auto val : curveAnim->transformDataArr)
{
writer->Write(val.unk_00);
writer->Write(val.unk_02);
writer->Write(val.unk_04);
writer->Write(val.unk_06);
writer->Write(val.unk_08);
}
writer->Write((uint32_t)curveAnim->copyValuesArr.size());
for (auto val : curveAnim->copyValuesArr)
writer->Write(val);
}
else if (normalAnim != nullptr)
{
writer->Write((uint32_t)Ship::AnimationType::Normal);
writer->Write((uint16_t)normalAnim->frameCount);
writer->Write((uint32_t)normalAnim->rotationValues.size());
for (size_t i = 0; i < normalAnim->rotationValues.size(); i++)
writer->Write(normalAnim->rotationValues[i]);
writer->Write((uint32_t)normalAnim->rotationIndices.size());
for (size_t i = 0; i < normalAnim->rotationIndices.size(); i++)
{
writer->Write(normalAnim->rotationIndices[i].x);
writer->Write(normalAnim->rotationIndices[i].y);
writer->Write(normalAnim->rotationIndices[i].z);
}
writer->Write(normalAnim->limit);
}
else
{
writer->Write((uint32_t)Ship::AnimationType::Legacy);
}
}
@@ -1,13 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "ZAnimation.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Animation : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-108
View File
@@ -1,108 +0,0 @@
#include "ArrayExporter.h"
#include "VtxExporter.h"
#include <ZVector.h>
void OTRExporter_Array::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZArray* arr = (ZArray*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::Array);
writer->Write((uint32_t)arr->resList[0]->GetResourceType());
writer->Write((uint32_t)arr->arrayCnt);
for (size_t i = 0; i < arr->arrayCnt; i++)
{
if (arr->resList[i]->GetResourceType() == ZResourceType::Vertex)
{
ZVtx* vtx = (ZVtx*)arr->resList[i];
writer->Write(vtx->x);
writer->Write(vtx->y);
writer->Write(vtx->z);
writer->Write(vtx->flag);
writer->Write(vtx->s);
writer->Write(vtx->t);
writer->Write(vtx->r);
writer->Write(vtx->g);
writer->Write(vtx->b);
writer->Write(vtx->a);
}
else if (arr->resList[i]->GetResourceType() == ZResourceType::Vector)
{
ZVector* vec = (ZVector*)arr->resList[i];
writer->Write((uint32_t)vec->scalarType);
writer->Write((uint32_t)vec->dimensions);
for (size_t k = 0; k < vec->dimensions; k++)
{
// OTRTODO: Duplicate code here. Cleanup at a later date...
switch (vec->scalarType)
{
case ZScalarType::ZSCALAR_U8:
writer->Write(vec->scalars[k].scalarData.u8);
break;
case ZScalarType::ZSCALAR_S8:
writer->Write(vec->scalars[k].scalarData.s8);
break;
case ZScalarType::ZSCALAR_U16:
writer->Write(vec->scalars[k].scalarData.u16);
break;
case ZScalarType::ZSCALAR_S16:
writer->Write(vec->scalars[k].scalarData.s16);
break;
case ZScalarType::ZSCALAR_S32:
writer->Write(vec->scalars[k].scalarData.s32);
break;
case ZScalarType::ZSCALAR_U32:
writer->Write(vec->scalars[k].scalarData.u32);
break;
case ZScalarType::ZSCALAR_S64:
writer->Write(vec->scalars[k].scalarData.s64);
break;
case ZScalarType::ZSCALAR_U64:
writer->Write(vec->scalars[k].scalarData.u64);
break;
// OTRTODO: ADD OTHER TYPES
default:
break;
}
}
}
else
{
ZScalar* scal = (ZScalar*)arr->resList[i];
writer->Write((uint32_t)scal->scalarType);
switch (scal->scalarType)
{
case ZScalarType::ZSCALAR_U8:
writer->Write(scal->scalarData.u8);
break;
case ZScalarType::ZSCALAR_S8:
writer->Write(scal->scalarData.s8);
break;
case ZScalarType::ZSCALAR_U16:
writer->Write(scal->scalarData.u16);
break;
case ZScalarType::ZSCALAR_S16:
writer->Write(scal->scalarData.s16);
break;
case ZScalarType::ZSCALAR_S32:
writer->Write(scal->scalarData.s32);
break;
case ZScalarType::ZSCALAR_U32:
writer->Write(scal->scalarData.u32);
break;
case ZScalarType::ZSCALAR_S64:
writer->Write(scal->scalarData.s64);
break;
case ZScalarType::ZSCALAR_U64:
writer->Write(scal->scalarData.u64);
break;
// OTRTODO: ADD OTHER TYPES
default:
break;
}
}
}
}
-12
View File
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZArray.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Array : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-191
View File
@@ -1,191 +0,0 @@
#include "AudioExporter.h"
#include "Main.h"
#include <Utils/MemoryStream.h>
#include <Globals.h>
#include <Utils/File.h>
#include "DisplayListExporter.h"
void OTRExporter_Audio::WriteSampleEntryReference(ZAudio* audio, SampleEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer)
{
writer->Write((uint8_t)(entry != nullptr ? 1 : 0));
if (entry != nullptr)
{
if (audio->sampleOffsets[entry->bankId].find(entry->sampleLoopOffset) != audio->sampleOffsets[entry->bankId].end())
{
if (audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset].find(entry->sampleDataOffset) != audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset].end())
{
writer->Write(StringHelper::Sprintf("audio/samples/%s", audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset][entry->sampleDataOffset].c_str()));
}
else
writer->Write(entry->fileName);
}
else
writer->Write(entry->fileName);
}
else
writer->Write("");
}
void OTRExporter_Audio::WriteSampleEntry(SampleEntry* entry, BinaryWriter* writer)
{
WriteHeader(nullptr, "", writer, Ship::ResourceType::SOH_AudioSample, Ship::Version::Rachael);
writer->Write(entry->codec);
writer->Write(entry->medium);
writer->Write(entry->unk_bit26);
writer->Write(entry->unk_bit25);
writer->Write((uint32_t)entry->data.size());
writer->Write((char*)entry->data.data(), entry->data.size());
writer->Write((uint32_t)(entry->loop.start));
writer->Write((uint32_t)(entry->loop.end));
writer->Write((uint32_t)(entry->loop.count));
writer->Write((uint32_t)entry->loop.states.size());
for (size_t i = 0; i < entry->loop.states.size(); i++)
writer->Write((entry->loop.states[i]));
writer->Write((uint32_t)(entry->book.order));
writer->Write((uint32_t)(entry->book.npredictors));
writer->Write((uint32_t)entry->book.books.size());
for (size_t i = 0; i < entry->book.books.size(); i++)
writer->Write((entry->book.books[i]));
}
void OTRExporter_Audio::WriteSoundFontEntry(ZAudio* audio, SoundFontEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer)
{
writer->Write((uint8_t)(entry != nullptr ? 1 : 0));
if (entry != nullptr)
{
WriteSampleEntryReference(audio, entry->sampleEntry, samples, writer);
writer->Write(entry->tuning);
}
}
void OTRExporter_Audio::WriteEnvData(std::vector<AdsrEnvelope*> envelopes, BinaryWriter* writer)
{
writer->Write((uint32_t)envelopes.size());
for (auto env : envelopes)
{
writer->Write(env->delay);
writer->Write(env->arg);
}
}
void OTRExporter_Audio::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZAudio* audio = (ZAudio*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_Audio, Ship::Version::Rachael);
// Write Samples as individual files
for (auto pair : audio->samples)
{
MemoryStream* sampleStream = new MemoryStream();
BinaryWriter sampleWriter = BinaryWriter(sampleStream);
writer->Write((uint32_t)pair.first);
WriteSampleEntry(pair.second, &sampleWriter);
std::string basePath = "";
if (audio->sampleOffsets[pair.second->bankId].find(pair.second->sampleLoopOffset) != audio->sampleOffsets[pair.second->bankId].end())
{
if (audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset].find(pair.second->sampleDataOffset) != audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset].end())
basePath = StringHelper::Sprintf("samples/%s", audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset][pair.second->sampleDataOffset].c_str());
else
basePath = StringHelper::Sprintf("samples/sample_%08X", pair.first);
}
else
basePath = StringHelper::Sprintf("samples/sample_%08X", pair.first);
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, basePath);
AddFile(fName, sampleStream->ToVector());
}
// Write the soundfont table
for (size_t i = 0; i < audio->soundFontTable.size(); i++)
{
MemoryStream* fntStream = new MemoryStream();
BinaryWriter fntWriter = BinaryWriter(fntStream);
WriteHeader(nullptr, "", &fntWriter, Ship::ResourceType::SOH_AudioSoundFont, Ship::Version::Rachael);
fntWriter.Write((uint32_t)i);
fntWriter.Write(audio->soundFontTable[i].medium);
fntWriter.Write(audio->soundFontTable[i].cachePolicy);
fntWriter.Write(audio->soundFontTable[i].data1);
fntWriter.Write(audio->soundFontTable[i].data2);
fntWriter.Write(audio->soundFontTable[i].data3);
fntWriter.Write((uint32_t)audio->soundFontTable[i].drums.size());
fntWriter.Write((uint32_t)audio->soundFontTable[i].instruments.size());
fntWriter.Write((uint32_t)audio->soundFontTable[i].soundEffects.size());
for (size_t k = 0; k < audio->soundFontTable[i].drums.size(); k++)
{
fntWriter.Write(audio->soundFontTable[i].drums[k].releaseRate);
fntWriter.Write(audio->soundFontTable[i].drums[k].pan);
fntWriter.Write(audio->soundFontTable[i].drums[k].loaded);
WriteEnvData(audio->soundFontTable[i].drums[k].env, &fntWriter);
WriteSampleEntryReference(audio, audio->soundFontTable[i].drums[k].sample, audio->samples, &fntWriter);
fntWriter.Write(audio->soundFontTable[i].drums[k].tuning);
}
for (size_t k = 0; k < audio->soundFontTable[i].instruments.size(); k++)
{
fntWriter.Write((uint8_t)audio->soundFontTable[i].instruments[k].isValidInstrument);
fntWriter.Write(audio->soundFontTable[i].instruments[k].loaded);
fntWriter.Write(audio->soundFontTable[i].instruments[k].normalRangeLo);
fntWriter.Write(audio->soundFontTable[i].instruments[k].normalRangeHi);
fntWriter.Write(audio->soundFontTable[i].instruments[k].releaseRate);
WriteEnvData(audio->soundFontTable[i].instruments[k].env, &fntWriter);
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].lowNotesSound, audio->samples, &fntWriter);
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].normalNotesSound, audio->samples, &fntWriter);
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].highNotesSound, audio->samples, &fntWriter);
}
for (size_t k = 0; k < audio->soundFontTable[i].soundEffects.size(); k++)
{
WriteSoundFontEntry(audio, audio->soundFontTable[i].soundEffects[k], audio->samples, &fntWriter);
}
//std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("fonts/font_%02X", i));
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("fonts/%s", audio->soundFontNames[i].c_str()));
AddFile(fName, fntStream->ToVector());
}
// Write Sequences
for (size_t i = 0; i < audio->sequences.size(); i++)
{
auto seq = audio->sequences[i];
MemoryStream* seqStream = new MemoryStream();
BinaryWriter seqWriter = BinaryWriter(seqStream);
WriteHeader(nullptr, "", &seqWriter, Ship::ResourceType::SOH_AudioSequence, Ship::Version::Rachael);
seqWriter.Write((uint32_t)seq.size());
seqWriter.Write(seq.data(), seq.size());
seqWriter.Write((uint8_t)i);
seqWriter.Write((uint8_t)audio->sequenceTable[i].medium);
seqWriter.Write((uint8_t)audio->sequenceTable[i].cachePolicy);
seqWriter.Write((uint32_t)audio->fontIndices[i].size());
for (size_t k = 0; k < audio->fontIndices[i].size(); k++)
seqWriter.Write((uint8_t)audio->fontIndices[i][k]);
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("sequences/%s", audio->seqNames[i].c_str()));
AddFile(fName, seqStream->ToVector());
}
}
-16
View File
@@ -1,16 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZAudio.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Audio : public OTRExporter
{
public:
void WriteSampleEntry(SampleEntry* entry, BinaryWriter* writer);
void WriteSampleEntryReference(ZAudio* audio, SampleEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer);
void WriteSoundFontEntry(ZAudio* audio, SoundFontEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer);
void WriteEnvData(std::vector<AdsrEnvelope*> envelopes, BinaryWriter* writer);
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,14 +0,0 @@
#include "BackgroundExporter.h"
#include "../ZAPD/ZFile.h"
void OTRExporter_Background::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZBackground* bg = (ZBackground*)res;
WriteHeader(bg, outPath, writer, Ship::ResourceType::SOH_Background);
writer->Write((uint32_t)bg->GetRawDataSize());
auto data = bg->parent->GetRawData();
writer->Write((char*)data.data() + bg->GetRawDataIndex(), bg->GetRawDataSize());
}
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZBackground.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Background : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-21
View File
@@ -1,21 +0,0 @@
#include "BlobExporter.h"
#include "../ZAPD/ZFile.h"
void OTRExporter_Blob::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZBlob* blob = (ZBlob*)res;
WriteHeader(blob, outPath, writer, Ship::ResourceType::Blob);
auto start = std::chrono::steady_clock::now();
writer->Write((uint32_t)blob->GetRawDataSize());
auto data = blob->parent->GetRawData();
for (size_t i = blob->GetRawDataIndex(); i < blob->GetRawDataIndex() + blob->GetRawDataSize(); i++)
writer->Write(data[i]);
auto end = std::chrono::steady_clock::now();
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
}
-12
View File
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZBlob.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Blob : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-245
View File
@@ -1,245 +0,0 @@
set(PROJECT_NAME OTRExporter)
################################################################################
# Source groups
################################################################################
set(Header_Files
"AnimationExporter.h"
"ArrayExporter.h"
"AudioExporter.h"
"BackgroundExporter.h"
"BlobExporter.h"
"CollisionExporter.h"
"command_macros_base.h"
"CutsceneExporter.h"
"DisplayListExporter.h"
"Exporter.h"
"Main.h"
"MtxExporter.h"
"PathExporter.h"
"PlayerAnimationExporter.h"
"RoomExporter.h"
"SkeletonExporter.h"
"SkeletonLimbExporter.h"
"TextExporter.h"
"TextureExporter.h"
"VersionInfo.h"
"VtxExporter.h"
"z64cutscene.h"
"z64cutscene_commands.h"
)
source_group("Header Files" FILES ${Header_Files})
set(Source_Files
"AnimationExporter.cpp"
"ArrayExporter.cpp"
"AudioExporter.cpp"
"BackgroundExporter.cpp"
"BlobExporter.cpp"
"CollisionExporter.cpp"
"CutsceneExporter.cpp"
"DisplayListExporter.cpp"
"Exporter.cpp"
"Main.cpp"
"MtxExporter.cpp"
"PathExporter.cpp"
"PlayerAnimationExporter.cpp"
"RoomExporter.cpp"
"SkeletonExporter.cpp"
"SkeletonLimbExporter.cpp"
"TextExporter.cpp"
"TextureExporter.cpp"
"VersionInfo.cpp"
"VtxExporter.cpp"
)
source_group("Source Files" FILES ${Source_Files})
set(ALL_FILES
${Header_Files}
${Source_Files}
)
################################################################################
# Target
################################################################################
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
endif()
set(ROOT_NAMESPACE OTRExporter)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Win32Proj"
)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
)
endif()
endif()
################################################################################
# MSVC runtime library
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
MultiThreadedDebug
>
$<$<CONFIG:Release>:
MultiThreaded
>
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif()
################################################################################
# Compile definitions
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG"
">"
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"_CONSOLE;"
"_CRT_SECURE_NO_WARNINGS;"
"UNICODE;"
"_UNICODE"
STORMLIB_NO_AUTO_LINK
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG;"
"_CRT_SECURE_NO_WARNINGS"
">"
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"WIN32;"
"_CONSOLE;"
"UNICODE;"
"_UNICODE"
STORMLIB_NO_AUTO_LINK
)
endif()
endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG"
">"
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"_CONSOLE;"
"_CRT_SECURE_NO_WARNINGS;"
"UNICODE;"
"_UNICODE"
)
endif()
################################################################################
# Compile and link options
################################################################################
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../../ZAPDTR/ZAPD/
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/include
# TODO: these should no longer be necessary if we were to link against LUS
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/src
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/Mercury
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/tinyxml2
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/ZAPDUtils
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/StormLib/src
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/spdlog/include
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/extern/nlohmann-json/include
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/src/resource
${CMAKE_CURRENT_SOURCE_DIR}/../../soh/soh
.
)
if(MSVC)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/Oi;
/Gy
>
/permissive-;
/sdl;
/W3;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/Oi;
/Gy
>
/permissive-;
/sdl;
/W3;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/OPT:REF;
/OPT:ICF
>
/SUBSYSTEM:CONSOLE
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Release>:
/DEBUG;
/OPT:REF;
/OPT:ICF;
/INCREMENTAL:NO
>
/SUBSYSTEM:CONSOLE
)
endif()
endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wno-unused-parameter
-Wno-unused-function
-Wno-unused-variable
-Wno-missing-field-initializers
-Wno-parentheses
-Wno-narrowing
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
)
endif()
################################################################################
# Dependencies
################################################################################
add_dependencies(${PROJECT_NAME}
libultraship
)
# Link with other targets.
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
@@ -1,82 +0,0 @@
#include "CollisionExporter.h"
#include <libultraship/bridge.h>
void OTRExporter_Collision::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZCollisionHeader* col = (ZCollisionHeader*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_CollisionHeader);
writer->Write(col->absMinX);
writer->Write(col->absMinY);
writer->Write(col->absMinZ);
writer->Write(col->absMaxX);
writer->Write(col->absMaxY);
writer->Write(col->absMaxZ);
writer->Write((uint32_t)col->vertices.size());
for (uint16_t i = 0; i < col->vertices.size(); i++)
{
writer->Write(col->vertices[i].scalars[0].scalarData.s16);
writer->Write(col->vertices[i].scalars[1].scalarData.s16);
writer->Write(col->vertices[i].scalars[2].scalarData.s16);
}
writer->Write((uint32_t)col->polygons.size());
for (uint16_t i = 0; i < col->polygons.size(); i++)
{
writer->Write(col->polygons[i].type);
writer->Write(col->polygons[i].vtxA);
writer->Write(col->polygons[i].vtxB);
writer->Write(col->polygons[i].vtxC);
writer->Write(col->polygons[i].a);
writer->Write(col->polygons[i].b);
writer->Write(col->polygons[i].c);
writer->Write(col->polygons[i].d);
}
writer->Write((uint32_t)col->polygonTypes.size());
for (uint16_t i = 0; i < col->polygonTypes.size(); i++)
writer->Write(col->polygonTypes[i]);
writer->Write((uint32_t)col->camData->entries.size());
for (auto entry : col->camData->entries)
{
auto camPosDecl = col->parent->GetDeclarationRanged(Seg2Filespace(entry->cameraPosDataSeg, col->parent->baseAddress));
int idx = 0;
if (camPosDecl != nullptr)
idx = ((entry->cameraPosDataSeg & 0x00FFFFFF) - camPosDecl->address) / 6;
writer->Write(entry->cameraSType);
writer->Write(entry->numData);
writer->Write((uint32_t)idx);
}
writer->Write((uint32_t)col->camData->cameraPositionData.size());
for (auto entry : col->camData->cameraPositionData)
{
writer->Write(entry->x);
writer->Write(entry->y);
writer->Write(entry->z);
}
writer->Write((uint32_t)col->waterBoxes.size());
for (auto waterBox : col->waterBoxes)
{
writer->Write(waterBox.xMin);
writer->Write(waterBox.ySurface);
writer->Write(waterBox.zMin);
writer->Write(waterBox.xLength);
writer->Write(waterBox.zLength);
writer->Write(waterBox.properties);
}
}
@@ -1,11 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZCollision.h"
#include "Exporter.h"
class OTRExporter_Collision : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,431 +0,0 @@
#include "CutsceneExporter.h"
#include <libultraship/bridge.h>
void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZCutscene* cs = (ZCutscene*)res;
WriteHeader(cs, outPath, writer, Ship::ResourceType::SOH_Cutscene);
//writer->Write((uint32_t)cs->commands.size() + 2 + 2);
writer->Write((uint32_t)0);
int currentStream = writer->GetBaseAddress();
writer->Write(CS_BEGIN_CUTSCENE(cs->numCommands, cs->endFrame));
for (size_t i = 0; i < cs->commands.size(); i++)
{
switch (cs->commands[i]->commandID)
{
case (uint32_t)CutsceneCommands::SetCameraPos:
{
CutsceneCommandSetCameraPos* cmdCamPos = (CutsceneCommandSetCameraPos*)cs->commands[i];
writer->Write(CS_CMD_CAM_EYE);
writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame));
writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000));
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
{
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
writer->Write(e->viewAngle);
writer->Write(CMD_HH(e->posX, e->posY));
writer->Write(CMD_HH(e->posZ, e->unused));
}
}
break;
case (uint32_t)CutsceneCommands::SetCameraFocus:
{
CutsceneCommandSetCameraPos* cmdCamPos = (CutsceneCommandSetCameraPos*)cs->commands[i];
writer->Write(CS_CMD_CAM_AT);
writer->Write(CMD_HH(0x0001, cmdCamPos->startFrame));
writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000));
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
{
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
writer->Write(e->viewAngle);
writer->Write(CMD_HH(e->posX, e->posY));
writer->Write(CMD_HH(e->posZ, e->unused));
}
break;
}
case (uint32_t)CutsceneCommands::SpecialAction:
{
writer->Write(CS_CMD_MISC);
writer->Write((uint32_t)CMD_W(((CutsceneCommandSpecialAction*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandSpecialAction*)cs->commands[i])->entries) //All in OOT seem to only have 1 entry
{
writer->Write(CMD_HH(e->base, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->unused0));
writer->Write(CMD_W(e->unused1));
writer->Write(CMD_W(e->unused2));
writer->Write(CMD_W(e->unused3));
writer->Write(CMD_W(e->unused4));
writer->Write(CMD_W(e->unused5));
writer->Write(CMD_W(e->unused6));
writer->Write(CMD_W(e->unused7));
writer->Write(CMD_W(e->unused8));
writer->Write(CMD_W(e->unused9));
writer->Write(CMD_W(e->unused10));
}
break;
}
case (uint32_t)CutsceneCommands::SetLighting:
{
writer->Write(CS_CMD_SET_LIGHTING);
writer->Write((uint32_t)CMD_W(((CutsceneCommandEnvLighting*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandEnvLighting*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->setting, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->unused0));
writer->Write(CMD_W(e->unused1));
writer->Write(CMD_W(e->unused2));
writer->Write(CMD_W(e->unused3));
writer->Write(CMD_W(e->unused4));
writer->Write(CMD_W(e->unused5));
writer->Write(CMD_W(e->unused6));
writer->Write(CMD_W(e->unused7));
writer->Write((uint32_t)0x0);
writer->Write((uint32_t)0x0);
writer->Write((uint32_t)0x0);
}
break;
}
case (uint32_t)CutsceneCommands::SetCameraPosLink:
{
CutsceneCommandSetCameraPos* cmdCamPos = (CutsceneCommandSetCameraPos*)cs->commands[i];
writer->Write(CS_CMD_CAM_EYE_REL_TO_PLAYER);
writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame));
writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000));
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
{
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
writer->Write(e->viewAngle);
writer->Write(CMD_HH(e->posX, e->posY));
writer->Write(CMD_HH(e->posZ, e->unused));
}
break;
}
case (uint32_t)CutsceneCommands::SetCameraFocusLink:
{
CutsceneCommandSetCameraPos* cmdCamPos = (CutsceneCommandSetCameraPos*)cs->commands[i];
writer->Write(CS_CMD_CAM_AT_REL_TO_PLAYER);
writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame));
writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000));
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
{
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
writer->Write(e->viewAngle);
writer->Write(CMD_HH(e->posX, e->posY));
writer->Write(CMD_HH(e->posZ, e->unused));
}
break;
}
case (uint32_t)CutsceneCommands::Cmd07: // Not used in OOT
break;
case (uint32_t)CutsceneCommands::Cmd08: // Not used in OOT
break;
case (uint32_t)CutsceneCommands::Cmd09:
{
writer->Write(CS_CMD_09);
writer->Write((uint32_t)CMD_W(((CutsceneCommandUnknown9*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandUnknown9*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->base, e->startFrame));
writer->Write(CMD_HBB(e->endFrame, e->unk2, e->unk3));
writer->Write(CMD_BBH(e->unk4, e->unused0, e->unused1));
}
break;
}
case 0x15:
case (uint32_t)CutsceneCommands::Unknown:
{
CutsceneCommandUnknown* cmdUnk = (CutsceneCommandUnknown*)cs->commands[i];
writer->Write((uint32_t)cs->commands[i]->commandID);
writer->Write((uint32_t)cmdUnk->entries.size());
for (auto e : cmdUnk->entries)
{
writer->Write(CMD_W(e->unused0));
writer->Write(CMD_W(e->unused1));
writer->Write(CMD_W(e->unused2));
writer->Write(CMD_W(e->unused3));
writer->Write(CMD_W(e->unused4));
writer->Write(CMD_W(e->unused5));
writer->Write(CMD_W(e->unused6));
writer->Write(CMD_W(e->unused7));
writer->Write(CMD_W(e->unused8));
writer->Write(CMD_W(e->unused9));
writer->Write(CMD_W(e->unused10));
writer->Write(CMD_W(e->unused11));
}
}
break;
case (uint32_t)CutsceneCommands::Textbox:
{
writer->Write(CS_CMD_TEXTBOX);
writer->Write((uint32_t)CMD_W(((CutsceneCommandTextbox*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandTextbox*)cs->commands[i])->entries)
{
if (e->base == 0xFFFF) // CS_TEXT_NONE
{
writer->Write(CMD_HH(0xFFFF, e->startFrame));
writer->Write(CMD_HH(e->endFrame, 0xFFFF));
writer->Write(CMD_HH(0xFFFF, 0xFFFF));
}
else // CS_TEXT_DISPLAY_TEXTBOX
{
writer->Write(CMD_HH(e->base, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->type));
writer->Write(CMD_HH(e->textID1, e->textID2));
}
}
break;
}
case (uint32_t)CutsceneCommands::SetActorAction0:
case (uint32_t)CutsceneCommands::SetActorAction1:
case 17:
case 18:
case 23:
case 34:
case 39:
case 46:
case 76:
case 85:
case 93:
case 105:
case 107:
case 110:
case 119:
case 123:
case 138:
case 139:
case 144:
case (uint32_t)CutsceneCommands::SetActorAction2:
case 16:
case 24:
case 35:
case 40:
case 48:
case 64:
case 68:
case 70:
case 78:
case 80:
case 94:
case 116:
case 118:
case 120:
case 125:
case 131:
case 141:
case (uint32_t)CutsceneCommands::SetActorAction3:
case 36:
case 41:
case 50:
case 67:
case 69:
case 72:
case 74:
case 81:
case 106:
case 117:
case 121:
case 126:
case 132:
case (uint32_t)CutsceneCommands::SetActorAction4:
case 37:
case 42:
case 51:
case 53:
case 63:
case 65:
case 66:
case 75:
case 82:
case 108:
case 127:
case 133:
case (uint32_t)CutsceneCommands::SetActorAction5:
case 38:
case 43:
case 47:
case 54:
case 79:
case 83:
case 128:
case 135:
case (uint32_t)CutsceneCommands::SetActorAction6:
case 55:
case 77:
case 84:
case 90:
case 129:
case 136:
case (uint32_t)CutsceneCommands::SetActorAction7:
case 52:
case 57:
case 58:
case 88:
case 115:
case 130:
case 137:
case (uint32_t)CutsceneCommands::SetActorAction8:
case 60:
case 89:
case 111:
case 114:
case 134:
case 142:
case (uint32_t)CutsceneCommands::SetActorAction9:
case (uint32_t)CutsceneCommands::SetActorAction10:
{
writer->Write((uint32_t)(CutsceneCommands)cs->commands[i]->commandID);
writer->Write((uint32_t)CMD_W(((CutsceneCommandActorAction*)cs->commands[i])->entries.size()));
for (auto& actorAct : ((CutsceneCommandActorAction*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(actorAct->action, actorAct->startFrame));
writer->Write(CMD_HH(actorAct->endFrame, actorAct->rotX));
writer->Write(CMD_HH(actorAct->rotY, actorAct->rotZ));
writer->Write(CMD_W(actorAct->startPosX));
writer->Write(CMD_W(actorAct->startPosY));
writer->Write(CMD_W(actorAct->startPosZ));
writer->Write(CMD_W(actorAct->endPosX));
writer->Write(CMD_W(actorAct->endPosY));
writer->Write(CMD_W(actorAct->endPosZ));
writer->Write(CMD_W(actorAct->normalX));
writer->Write(CMD_W(actorAct->normalY));
writer->Write(CMD_W(actorAct->normalZ));
}
break;
}
case (uint32_t)CutsceneCommands::SetSceneTransFX:
{
CutsceneCommandSceneTransFX* cmdTFX = (CutsceneCommandSceneTransFX*)cs->commands[i];
writer->Write(CS_CMD_SCENE_TRANS_FX);
writer->Write((uint32_t)1);
writer->Write(CMD_HH((((CutsceneCommandSceneTransFX*)cs->commands[i])->base), ((CutsceneCommandSceneTransFX*)cs->commands[i])->startFrame));
writer->Write(CMD_HH((((CutsceneCommandSceneTransFX*)cs->commands[i])->endFrame), ((CutsceneCommandSceneTransFX*)cs->commands[i])->endFrame));
break;
}
case (uint32_t)CutsceneCommands::Nop: //Not used in OOT
break;
case (uint32_t)CutsceneCommands::PlayBGM:
{
writer->Write(CS_CMD_PLAYBGM);
writer->Write((uint32_t)CMD_W(((CutsceneCommandPlayBGM*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandPlayBGM*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->sequence, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->unknown0));
writer->Write(CMD_W(e->unknown1));
writer->Write(CMD_W(e->unknown2));
writer->Write(CMD_W(e->unknown3));
writer->Write(CMD_W(e->unknown4));
writer->Write(CMD_W(e->unknown5));
writer->Write(CMD_W(e->unknown6));
writer->Write(CMD_W(e->unknown7));
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
}
break;
}
case (uint32_t)CutsceneCommands::StopBGM:
{
writer->Write(CS_CMD_STOPBGM);
writer->Write((uint32_t)CMD_W(((CutsceneCommandStopBGM*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandStopBGM*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->sequence, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->unknown0));
writer->Write(CMD_W(e->unknown1));
writer->Write(CMD_W(e->unknown2));
writer->Write(CMD_W(e->unknown3));
writer->Write(CMD_W(e->unknown4));
writer->Write(CMD_W(e->unknown5));
writer->Write(CMD_W(e->unknown6));
writer->Write(CMD_W(e->unknown7));
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
}
break;
}
case (uint32_t)CutsceneCommands::FadeBGM:
{
writer->Write(CS_CMD_FADEBGM);
writer->Write((uint32_t)CMD_W(((CutsceneCommandFadeBGM*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandFadeBGM*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->base, e->startFrame));
writer->Write(CMD_HH(e->endFrame, e->unknown0));
writer->Write(CMD_W(e->unknown1));
writer->Write(CMD_W(e->unknown2));
writer->Write(CMD_W(e->unknown3));
writer->Write(CMD_W(e->unknown4));
writer->Write(CMD_W(e->unknown5));
writer->Write(CMD_W(e->unknown6));
writer->Write(CMD_W(e->unknown7));
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
writer->Write((uint32_t)0);
}
break;
}
case (uint32_t)CutsceneCommands::SetTime:
{
writer->Write(CS_CMD_SETTIME);
writer->Write((uint32_t)CMD_W(((CutsceneCommandDayTime*)cs->commands[i])->entries.size()));
for (auto& e : ((CutsceneCommandDayTime*)cs->commands[i])->entries)
{
writer->Write(CMD_HH(e->base, e->startFrame));
writer->Write(CMD_HBB(e->endFrame, e->hour, e->minute));
writer->Write((uint32_t)CMD_W(e->unused));
}
break;
}
case (uint32_t)CutsceneCommands::Terminator:
{
writer->Write(CS_CMD_TERMINATOR);
writer->Write((uint32_t)1);
writer->Write(CMD_HH(((CutsceneCommandTerminator*)cs->commands[i])->base, ((CutsceneCommandTerminator*)cs->commands[i])->startFrame));
writer->Write(CMD_HH(((CutsceneCommandTerminator*)cs->commands[i])->endFrame, ((CutsceneCommandTerminator*)cs->commands[i])->endFrame));
break;
}
default:
{
//writer->Write((uint32_t)cs->commands[i]->commandID);
printf("Undefined CS Opcode: %04X\n", cs->commands[i]->commandID);
}
break;
}
}
//CS_END
writer->Write(0xFFFFFFFF);
writer->Write((uint32_t)0);
int endStream = writer->GetBaseAddress();
writer->Seek(currentStream - 4, SeekOffsetType::Start);
writer->Write((uint32_t)((endStream - currentStream) / 4));
writer->Seek(endStream, SeekOffsetType::Start);
}
@@ -1,11 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZCutscene.h"
#include "z64cutscene_commands.h"
#include "Exporter.h"
class OTRExporter_Cutscene : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,907 +0,0 @@
#include "DisplayListExporter.h"
#include "Main.h"
#include "../ZAPD/ZFile.h"
#include <Utils/MemoryStream.h>
#include <Utils/BitConverter.h>
#include "StrHash64/StrHash64.h"
#include "spdlog/spdlog.h"
#include <libultraship/libultra/gbi.h>
#include <Globals.h>
#include <iostream>
#include <string>
#include "MtxExporter.h"
#include <Utils/File.h>
#include "VersionInfo.h"
#define GFX_SIZE 8
#define gsDPSetCombineLERP2(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \
a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \
{ \
_SHIFTL(G_SETCOMBINE, 24, 8) | \
_SHIFTL(GCCc0w0(a0, c0, \
Aa0, Ac0) | \
GCCc1w0(a1, c1), 0, 24), \
(unsigned int)(GCCc0w1(b0, d0, \
Ab0, Ad0) | \
GCCc1w1(b1, Aa1, \
Ac1, d1, \
Ab1, Ad1)) \
}
#define gsSPBranchLessZraw2(dl, vtx, zval) \
{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\
(unsigned int)(zval), }
#define gsSPBranchLessZraw3(dl) \
{ _SHIFTL(G_RDPHALF_1,24,8), \
(unsigned int)(dl), }
#define gsDPWordLo(wordlo) \
gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo))
#define gsSPTextureRectangle2(xl, yl, xh, yh, tile) \
{ (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\
(_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)) }
void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZDisplayList* dList = (ZDisplayList*)res;
//printf("Exporting DList %s\n", dList->GetName().c_str());
WriteHeader(res, outPath, writer, Ship::ResourceType::DisplayList);
while (writer->GetBaseAddress() % 8 != 0)
writer->Write((uint8_t)0xFF);
// DEBUG: Write in a marker
Declaration* dbgDecl = dList->parent->GetDeclaration(dList->GetRawDataIndex());
std::string dbgName = StringHelper::Sprintf("%s/%s", GetParentFolderName(res).c_str(), dbgDecl->varName.c_str());
uint64_t hash = CRC64(dbgName.c_str());
writer->Write((uint32_t)(G_MARKER << 24));
writer->Write((uint32_t)0xBEEFBEEF);
writer->Write((uint32_t)(hash >> 32));
writer->Write((uint32_t)(hash & 0xFFFFFFFF));
auto dlStart = std::chrono::steady_clock::now();
//for (auto data : dList->instructions)
for (size_t dataIdx = 0; dataIdx < dList->instructions.size(); dataIdx++)
{
auto data = dList->instructions[dataIdx];
uint32_t word0 = 0;
uint32_t word1 = 0;
uint8_t opcode = (uint8_t)(data >> 56);
F3DZEXOpcode opF3D = (F3DZEXOpcode)opcode;
if ((int)opF3D == G_DL)// || (int)opF3D == G_BRANCH_Z)
opcode = (uint8_t)G_DL_OTR;
if ((int)opF3D == G_MTX)
opcode = (uint8_t)G_MTX_OTR;
if ((int)opF3D == G_BRANCH_Z)
opcode = (uint8_t)G_BRANCH_Z_OTR;
if ((int)opF3D == G_VTX)
opcode = (uint8_t)G_VTX_OTR;
if ((int)opF3D == G_SETTIMG)
opcode = (uint8_t)G_SETTIMG_OTR;
word0 += (opcode << 24);
switch ((int)opF3D)
{
case G_NOOP:
{
Gfx value = {gsDPNoOp()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_ENDDL:
{
Gfx value = {gsSPEndDisplayList()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_MODIFYVTX:
{
int32_t ww = (data & 0x00FF000000000000ULL) >> 48;
int32_t nnnn = (data & 0x0000FFFF00000000ULL) >> 32;
int32_t vvvvvvvv = (data & 0x00000000FFFFFFFFULL);
Gfx value = {gsSPModifyVertex(nnnn / 2, ww, vvvvvvvv)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
default:
{
printf("Undefined opcode: %02X\n", opcode);
//word0 = _byteswap_ulong((uint32_t)(data >> 32));
//word1 = _byteswap_ulong((uint32_t)(data & 0xFFFFFFFF));
}
break;
case G_GEOMETRYMODE:
{
int32_t cccccc = (data & 0x00FFFFFF00000000) >> 32;
int32_t ssssssss = (data & 0xFFFFFFFF);
Gfx value = {gsSPGeometryMode(~cccccc, ssssssss)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPPIPESYNC:
{
Gfx value = {gsDPPipeSync()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPLOADSYNC:
{
Gfx value = {gsDPLoadSync()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPTILESYNC:
{
Gfx value = {gsDPTileSync()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPFULLSYNC:
{
Gfx value = {gsDPFullSync()};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPSETOTHERMODE:
{
int32_t hhhhhh = (data & 0x00FFFFFF00000000) >> 32;
int32_t llllllll = (data & 0x00000000FFFFFFFF);
Gfx value = {gsDPSetOtherMode(hhhhhh, llllllll)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_POPMTX:
{
Gfx value = {gsSPPopMatrix(data)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETENVCOLOR:
{
uint8_t r = (uint8_t)((data & 0xFF000000) >> 24);
uint8_t g = (uint8_t)((data & 0x00FF0000) >> 16);
uint8_t b = (uint8_t)((data & 0xFF00FF00) >> 8);
uint8_t a = (uint8_t)((data & 0x000000FF) >> 0);
Gfx value = {gsDPSetEnvColor(r, g, b, a)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_MTX:
{
if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID)) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7
{
uint32_t pp = (data & 0x000000FF00000000) >> 32;
uint32_t mm = (data & 0x00000000FFFFFFFF);
pp ^= G_MTX_PUSH;
mm = (mm & 0x0FFFFFFF) + 1;
Gfx value = {gsSPMatrix(mm, pp)};
word0 = value.words.w0;
word1 = value.words.w1;
}
else
{
uint32_t pp = (data & 0x000000FF00000000) >> 32;
uint32_t mm = (data & 0x00000000FFFFFFFF);
pp ^= G_MTX_PUSH;
Gfx value = {gsSPMatrix(mm, pp)};
word0 = value.words.w0;
word1 = value.words.w1;
word0 = (word0 & 0x00FFFFFF) + (G_MTX_OTR << 24);
Declaration* mtxDecl = dList->parent->GetDeclaration(GETSEGOFFSET(mm));
int bp = 0;
writer->Write(word0);
writer->Write(word1);
if (mtxDecl != nullptr)
{
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), mtxDecl->varName.c_str());
uint64_t hash = CRC64(vName.c_str());
word0 = hash >> 32;
word1 = hash & 0xFFFFFFFF;
}
else
{
word0 = 0;
word1 = 0;
spdlog::error(StringHelper::Sprintf("dListDecl == nullptr! Addr = {:08X}", GETSEGOFFSET(data)));
}
}
}
break;
case G_LOADBLOCK:
{
int32_t sss = (data & 0x00FFF00000000000) >> 48;
int32_t ttt = (data & 0x00000FFF00000000) >> 36;
int32_t i = (data & 0x000000000F000000) >> 24;
int32_t xxx = (data & 0x0000000000FFF000) >> 12;
int32_t ddd = (data & 0x0000000000000FFF);
Gfx value = {gsDPLoadBlock(i, sss, ttt, xxx, ddd)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_CULLDL:
{
int32_t vvvv = (data & 0xFFFF00000000) >> 32;
int32_t wwww = (data & 0x0000FFFF);
Gfx value = {gsSPCullDisplayList(vvvv / 2, wwww / 2)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_RDPHALF_1:
{
auto data2 = dList->instructions[dataIdx + 1];
if ((data2 >> 56) != G_BRANCH_Z)
{
uint32_t a = (data & 0x00FFF00000000000) >> 44;
uint32_t b = (data & 0x00000FFF00000000) >> 32;
uint32_t z = (data & 0x00000000FFFFFFFF) >> 0;
uint32_t h = (data & 0xFFFFFFFF);
Gfx value = {gsSPBranchLessZraw3(h & 0x00FFFFFF)};
word0 = value.words.w0;
word1 = value.words.w1;
}
else
{
word0 = (G_NOOP << 24);
word1 = 0;
}
}
break;
case G_RDPHALF_2:
{
Gfx value = {gsDPWordLo(data & 0xFFFFFFFF)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_TEXRECT:
{
int32_t xxx = (data & 0x00FFF00000000000) >> 44;
int32_t yyy = (data & 0x00000FFF00000000) >> 32;
int32_t i = (data & 0x000000000F000000) >> 24;
int32_t XXX = (data & 0x0000000000FFF000) >> 12;
int32_t YYY = (data & 0x0000000000000FFF);
Gfx value = {gsSPTextureRectangle2(XXX, YYY, xxx, yyy, i)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_BRANCH_Z:
{
uint32_t a = (data & 0x00FFF00000000000) >> 44;
uint32_t b = (data & 0x00000FFF00000000) >> 32;
uint32_t z = (data & 0x00000000FFFFFFFF) >> 0;
uint32_t h = (data & 0xFFFFFFFF);
auto data2 = dList->instructions[dataIdx - 1];
uint32_t dListPtr = GETSEGOFFSET(data2);
Declaration* dListDecl = dList->parent->GetDeclaration(dListPtr);
int bp = 0;
Gfx value = {gsSPBranchLessZraw2(0xDEADABCD, (a / 5) | (b / 2), z)};
word0 = (value.words.w0 & 0x00FFFFFF) + (G_BRANCH_Z_OTR << 24);
word1 = value.words.w1;
writer->Write(word0);
writer->Write(word1);
if (dListDecl != nullptr)
{
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
uint64_t hash = CRC64(vName.c_str());
word0 = hash >> 32;
word1 = hash & 0xFFFFFFFF;
}
else
{
word0 = 0;
word1 = 0;
spdlog::error(StringHelper::Sprintf("dListDecl == nullptr! Addr = {:08X}", GETSEGOFFSET(data)));
}
for (size_t i = 0; i < dList->otherDLists.size(); i++)
{
Declaration* dListDecl2 = dList->parent->GetDeclaration(GETSEGOFFSET(dList->otherDLists[i]->GetRawDataIndex()));
if (dListDecl2 != nullptr)
{
//std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str());
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str());
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
{
MemoryStream* dlStream = new MemoryStream();
BinaryWriter dlWriter = BinaryWriter(dlStream);
Save(dList->otherDLists[i], outPath, &dlWriter);
AddFile(fName, dlStream->ToVector());
}
}
else
{
spdlog::error(StringHelper::Sprintf("dListDecl2 == nullptr! Addr = {:08X}", GETSEGOFFSET(data)));
}
}
//Gfx value = gsSPBranchLessZraw2(h & 0x00FFFFFF, (a / 5) | (b / 2), z);
//word0 = value.words.w0;
//word1 = value.words.w1;
}
break;
//case G_BRANCH_Z:
case G_DL:
{
if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID) && (int)opF3D != G_BRANCH_Z)
|| ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7
{
int32_t pp = (data & 0x00FF000000000000) >> 56;
Gfx value;
u32 dListVal = (data & 0x0FFFFFFF) + 1;
if (pp != 0)
value = {gsSPBranchList(dListVal)};
else
value = {gsSPDisplayList(dListVal)};
word0 = value.words.w0;
word1 = value.words.w1;
}
else
{
uint32_t dListPtr = GETSEGOFFSET(data);
if ((int)opF3D == G_BRANCH_Z)
{
auto data2 = dList->instructions[dataIdx - 1];
dListPtr = GETSEGOFFSET(data2);
}
else
{
int bp = 0;
}
Declaration* dListDecl = dList->parent->GetDeclaration(dListPtr);
int bp = 0;
writer->Write(word0);
writer->Write(word1);
if (dListDecl != nullptr)
{
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
uint64_t hash = CRC64(vName.c_str());
word0 = hash >> 32;
word1 = hash & 0xFFFFFFFF;
}
else
{
word0 = 0;
word1 = 0;
spdlog::error(StringHelper::Sprintf("dListDecl == nullptr! Addr = {:08X}", GETSEGOFFSET(data)));
}
for (size_t i = 0; i < dList->otherDLists.size(); i++)
{
Declaration* dListDecl2 = dList->parent->GetDeclaration(GETSEGOFFSET(dList->otherDLists[i]->GetRawDataIndex()));
if (dListDecl2 != nullptr)
{
//std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str());
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str());
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
{
MemoryStream* dlStream = new MemoryStream();
BinaryWriter dlWriter = BinaryWriter(dlStream);
Save(dList->otherDLists[i], outPath, &dlWriter);
AddFile(fName, dlStream->ToVector());
}
}
else
{
spdlog::error(StringHelper::Sprintf("dListDecl2 == nullptr! Addr = {:08X}", GETSEGOFFSET(data)));
}
}
}
}
break;
case G_TEXTURE:
{
int32_t ____ = (data & 0x0000FFFF00000000) >> 32;
int32_t ssss = (data & 0x00000000FFFF0000) >> 16;
int32_t tttt = (data & 0x000000000000FFFF);
int32_t lll = (____ & 0x3800) >> 11;
int32_t ddd = (____ & 0x700) >> 8;
int32_t nnnnnnn = (____ & 0xFE) >> 1;
Gfx value = {gsSPTexture(ssss, tttt, lll, ddd, nnnnnnn)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_TRI1:
{
int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2;
int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2;
int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2;
Gfx test = {gsSP1Triangle(aa, bb, cc, 0)};
word0 = test.words.w0;
word1 = test.words.w1;
}
break;
case G_TRI2:
{
int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2;
int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2;
int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2;
int32_t dd = ((data & 0x00000000FF0000ULL) >> 16) / 2;
int32_t ee = ((data & 0x0000000000FF00ULL) >> 8) / 2;
int32_t ff = ((data & 0x000000000000FFULL) >> 0) / 2;
Gfx test = {gsSP2Triangles(aa, bb, cc, 0, dd, ee, ff, 0)};
word0 = test.words.w0;
word1 = test.words.w1;
}
break;
case G_QUAD:
{
int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2;
int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2;
int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2;
int32_t dd = ((data & 0x000000000000FFULL)) / 2;
Gfx test = {gsSP1Quadrangle(aa, bb, cc, dd, 0)};
word0 = test.words.w0;
word1 = test.words.w1;
}
break;
case G_SETPRIMCOLOR:
{
int32_t mm = (data & 0x0000FF0000000000) >> 40;
int32_t ff = (data & 0x000000FF00000000) >> 32;
int32_t rr = (data & 0x00000000FF000000) >> 24;
int32_t gg = (data & 0x0000000000FF0000) >> 16;
int32_t bb = (data & 0x000000000000FF00) >> 8;
int32_t aa = (data & 0x00000000000000FF) >> 0;
Gfx value = {gsDPSetPrimColor(mm, ff, rr, gg, bb, aa)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETOTHERMODE_L:
{
int32_t ss = (data & 0x0000FF0000000000) >> 40;
int32_t len = ((data & 0x000000FF00000000) >> 32) + 1;
int32_t sft = 32 - (len)-ss;
int32_t dd = (data & 0xFFFFFFFF);
// TODO: Output the correct render modes in data
Gfx value = {gsSPSetOtherMode(0xE2, sft, len, dd)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETOTHERMODE_H:
{
int32_t ss = (data & 0x0000FF0000000000) >> 40;
int32_t nn = (data & 0x000000FF00000000) >> 32;
int32_t dd = (data & 0xFFFFFFFF);
int32_t sft = 32 - (nn + 1) - ss;
Gfx value;
if (sft == 14) // G_MDSFT_TEXTLUT
{
const char* types[] = { "G_TT_NONE", "G_TT_NONE", "G_TT_RGBA16", "G_TT_IA16" };
value = {gsDPSetTextureLUT(dd >> 14)};
}
else
{
value = {gsSPSetOtherMode(0xE3, sft, nn + 1, dd)};
}
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETTILE:
{
int32_t fff = (data & 0b0000000011100000000000000000000000000000000000000000000000000000) >> 53;
int32_t ii = (data & 0b0000000000011000000000000000000000000000000000000000000000000000) >> 51;
int32_t nnnnnnnnn =
(data & 0b0000000000000011111111100000000000000000000000000000000000000000) >> 41;
int32_t mmmmmmmmm =
(data & 0b0000000000000000000000011111111100000000000000000000000000000000) >> 32;
int32_t ttt = (data & 0b0000000000000000000000000000000000000111000000000000000000000000) >> 24;
int32_t pppp =
(data & 0b0000000000000000000000000000000000000000111100000000000000000000) >> 20;
int32_t cc = (data & 0b0000000000000000000000000000000000000000000011000000000000000000) >> 18;
int32_t aaaa =
(data & 0b0000000000000000000000000000000000000000000000111100000000000000) >> 14;
int32_t ssss =
(data & 0b0000000000000000000000000000000000000000000000000011110000000000) >> 10;
int32_t dd = (data & 0b0000000000000000000000000000000000000000000000000000001100000000) >> 8;
int32_t bbbb = (data & 0b0000000000000000000000000000000000000000000000000000000011110000) >> 4;
int32_t uuuu = (data & 0b0000000000000000000000000000000000000000000000000000000000001111);
Gfx value = {gsDPSetTile(fff, ii, nnnnnnnnn, mmmmmmmmm, ttt, pppp, cc, aaaa, ssss, dd, bbbb, uuuu)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETCOMBINE:
{
int32_t a0 = (data & 0b000000011110000000000000000000000000000000000000000000000000000) >> 52;
int32_t c0 = (data & 0b000000000001111100000000000000000000000000000000000000000000000) >> 47;
int32_t aa0 = (data & 0b00000000000000011100000000000000000000000000000000000000000000) >> 44;
int32_t ac0 = (data & 0b00000000000000000011100000000000000000000000000000000000000000) >> 41;
int32_t a1 = (data & 0b000000000000000000000011110000000000000000000000000000000000000) >> 37;
int32_t c1 = (data & 0b000000000000000000000000001111100000000000000000000000000000000) >> 32;
int32_t b0 = (data & 0b000000000000000000000000000000011110000000000000000000000000000) >> 28;
int32_t b1 = (data & 0b000000000000000000000000000000000001111000000000000000000000000) >> 24;
int32_t aa1 = (data & 0b00000000000000000000000000000000000000111000000000000000000000) >> 21;
int32_t ac1 = (data & 0b00000000000000000000000000000000000000000111000000000000000000) >> 18;
int32_t d0 = (data & 0b000000000000000000000000000000000000000000000111000000000000000) >> 15;
int32_t ab0 = (data & 0b00000000000000000000000000000000000000000000000111000000000000) >> 12;
int32_t ad0 = (data & 0b00000000000000000000000000000000000000000000000000111000000000) >> 9;
int32_t d1 = (data & 0b000000000000000000000000000000000000000000000000000000111000000) >> 6;
int32_t ab1 = (data & 0b00000000000000000000000000000000000000000000000000000000111000) >> 3;
int32_t ad1 = (data & 0b00000000000000000000000000000000000000000000000000000000000111) >> 0;
Gfx value = {gsDPSetCombineLERP2(a0, b0, c0, d0, aa0, ab0, ac0, ad0, a1, b1, c1, d1, aa1, ab1, ac1, ad1)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETTILESIZE:
{
int32_t sss = (data & 0x00FFF00000000000) >> 44;
int32_t ttt = (data & 0x00000FFF00000000) >> 32;
int32_t uuu = (data & 0x0000000000FFF000) >> 12;
int32_t vvv = (data & 0x0000000000000FFF);
int32_t i = (data & 0x000000000F000000) >> 24;
Gfx value = {gsDPSetTileSize(i, sss, ttt, uuu, vvv)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_LOADTLUT:
{
int32_t t = (data & 0x0000000007000000) >> 24;
int32_t ccc = (data & 0x00000000003FF000) >> 14;
Gfx value = {gsDPLoadTLUTCmd(t, ccc)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_LOADTILE:
{
int sss = (data & 0x00FFF00000000000) >> 44;
int ttt = (data & 0x00000FFF00000000) >> 32;
int i = (data & 0x000000000F000000) >> 24;
int uuu = (data & 0x0000000000FFF000) >> 12;
int vvv= (data & 0x0000000000000FFF);
Gfx value = {gsDPLoadTile(i, sss, ttt, uuu, vvv)};
word0 = value.words.w0;
word1 = value.words.w1;
}
break;
case G_SETTIMG:
{
uint32_t seg = data & 0xFFFFFFFF;
int32_t texAddress = Seg2Filespace(data, dList->parent->baseAddress);
if (!Globals::Instance->HasSegment(GETSEGNUM(seg), res->parent->workerID) || (res->GetName() == "sShadowMaterialDL"))
{
if (res->GetName() == "sShadowMaterialDL") {
// sShadowMaterialDL (In ovl_En_Jsjutan) has a texture in bss. This is a hack to override the reference to one
// to segment C. The actor has been modified to load the texture into segment C.
seg = 0x0C000000;
}
int32_t __ = (data & 0x00FF000000000000) >> 48;
int32_t www = (data & 0x00000FFF00000000) >> 32;
uint32_t fmt = (__ & 0xE0) >> 5;
uint32_t siz = (__ & 0x18) >> 3;
Gfx value = {gsDPSetTextureImage(fmt, siz, www + 1, (seg & 0x0FFFFFFF) + 1)};
word0 = value.words.w0;
word1 = value.words.w1;
writer->Write(word0);
writer->Write(word1);
}
else
{
std::string texName = "";
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", texName, res->parent->workerID);
int32_t __ = (data & 0x00FF000000000000) >> 48;
int32_t www = (data & 0x00000FFF00000000) >> 32;
uint32_t fmt = (__ & 0xE0) >> 5;
uint32_t siz = (__ & 0x18) >> 3;
Gfx value = {gsDPSetTextureImage(fmt, siz, www + 1, __)};
word0 = value.words.w0 & 0x00FFFFFF;
word0 += (G_SETTIMG_OTR << 24);
//word1 = value.words.w1;
word1 = 0;
writer->Write(word0);
writer->Write(word1);
if (foundDecl)
{
ZFile* assocFile = Globals::Instance->GetSegment(GETSEGNUM(seg), res->parent->workerID);
std::string assocFileName = assocFile->GetName();
std::string fName = "";
if (GETSEGNUM(seg) == SEGMENT_SCENE || GETSEGNUM(seg) == SEGMENT_ROOM)
fName = GetPathToRes(res, texName.c_str());
else
fName = GetPathToRes(assocFile->resources[0], texName.c_str());
uint64_t hash = CRC64(fName.c_str());
word0 = hash >> 32;
word1 = hash & 0xFFFFFFFF;
}
else
{
word0 = 0;
word1 = 0;
spdlog::error("texDecl == nullptr! PTR = 0x{:08X}", texAddress);
}
}
}
break;
case G_VTX:
{
if (GETSEGNUM(data) == 0xC || GETSEGNUM(data) == 0x8)
{
// hack for dynamic verticies used in en_ganon_mant and en_jsjutan
// TODO is there a better way?
int32_t aa = (data & 0x000000FF00000000ULL) >> 32;
int32_t nn = (data & 0x000FF00000000000ULL) >> 44;
Gfx value = {gsSPVertex(data & 0xFFFFFFFF, nn, ((aa >> 1) - nn))};
word0 = value.words.w0;
word1 = value.words.w1 | 1;
}
else
{
// Write CRC64 of vtx file name
uint32_t addr = data & 0xFFFFFFFF;
if (GETSEGNUM(data) == 0x80)
addr -= dList->parent->baseAddress;
auto segOffset = GETSEGOFFSET(addr);
Declaration* vtxDecl = dList->parent->GetDeclarationRanged(segOffset);
int32_t aa = (data & 0x000000FF00000000ULL) >> 32;
int32_t nn = (data & 0x000FF00000000000ULL) >> 44;
if (vtxDecl != nullptr && vtxDecl->varType != "Gfx")
{
uint32_t diff = segOffset - vtxDecl->address;
Gfx value = {gsSPVertex(diff, nn, ((aa >> 1) - nn))};
word0 = value.words.w0;
word0 &= 0x00FFFFFF;
word0 += (G_VTX_OTR << 24);
word1 = value.words.w1;
writer->Write(word0);
writer->Write(word1);
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, vtxDecl->varName);
uint64_t hash = CRC64(fName.c_str());
word0 = hash >> 32;
word1 = hash & 0xFFFFFFFF;
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
{
// Write vertices to file
MemoryStream* vtxStream = new MemoryStream();
BinaryWriter vtxWriter = BinaryWriter(vtxStream);
int arrCnt = 0;
auto split = StringHelper::Split(vtxDecl->text, "\n");
for (size_t i = 0; i < split.size(); i++)
{
std::string line = split[i];
if (StringHelper::Contains(line, "VTX("))
arrCnt++;
}
// OTRTODO: Once we aren't relying on text representations, we should call ArrayExporter...
OTRExporter::WriteHeader(nullptr, "", &vtxWriter, Ship::ResourceType::Array);
vtxWriter.Write((uint32_t)ZResourceType::Vertex);
vtxWriter.Write((uint32_t)arrCnt);
auto start = std::chrono::steady_clock::now();
// God dammit this is so dumb
for (size_t i = 0; i < split.size(); i++)
{
std::string line = split[i];
if (StringHelper::Contains(line, "VTX("))
{
auto split2 = StringHelper::Split(StringHelper::Split(StringHelper::Split(line, "VTX(")[1], ")")[0], ",");
vtxWriter.Write((int16_t)std::stoi(split2[0], nullptr, 10)); // v.x
vtxWriter.Write((int16_t)std::stoi(split2[1], nullptr, 10)); // v.y
vtxWriter.Write((int16_t)std::stoi(split2[2], nullptr, 10)); // v.z
vtxWriter.Write((int16_t)0); // v.flag
vtxWriter.Write((int16_t)std::stoi(split2[3], nullptr, 10)); // v.s
vtxWriter.Write((int16_t)std::stoi(split2[4], nullptr, 10)); // v.t
vtxWriter.Write((uint8_t)std::stoi(split2[5], nullptr, 10)); // v.r
vtxWriter.Write((uint8_t)std::stoi(split2[6], nullptr, 10)); // v.g
vtxWriter.Write((uint8_t)std::stoi(split2[7], nullptr, 10)); // v.b
vtxWriter.Write((uint8_t)std::stoi(split2[8], nullptr, 10)); // v.a
}
}
AddFile(fName, vtxStream->ToVector());
auto end = std::chrono::steady_clock::now();
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
}
}
else
{
spdlog::error("vtxDecl == nullptr!");
}
}
}
break;
}
writer->Write(word0);
writer->Write(word1);
}
auto dlEnd = std::chrono::steady_clock::now();
size_t dlDiff = std::chrono::duration_cast<std::chrono::milliseconds>(dlEnd - dlStart).count();
//printf("Display List Gen in %zums\n", dlDiff);
}
std::string OTRExporter_DisplayList::GetPathToRes(ZResource* res, std::string varName)
{
std::string prefix = GetPrefix(res);
std::string fName = StringHelper::Sprintf("%s/%s", GetParentFolderName(res).c_str(), varName.c_str());
return fName;
}
std::string OTRExporter_DisplayList::GetParentFolderName(ZResource* res)
{
std::string prefix = GetPrefix(res);
std::string oName = res->parent->GetOutName();
if (StringHelper::Contains(oName, "_scene"))
{
auto split = StringHelper::Split(oName, "_");
oName = "";
for (size_t i = 0; i < split.size() - 1; i++)
oName += split[i] + "_";
oName += "scene";
}
else if (StringHelper::Contains(oName, "_room"))
{
oName = StringHelper::Split(oName, "_room")[0] + "_scene";
}
if (prefix != "")
oName = prefix + "/" + oName;
return oName;
}
std::string OTRExporter_DisplayList::GetPrefix(ZResource* res)
{
std::string oName = res->parent->GetOutName();
std::string prefix = "";
std::string xmlPath = StringHelper::Replace(res->parent->GetXmlFilePath().string(), "\\", "/");
if (StringHelper::Contains(oName, "_scene") || StringHelper::Contains(oName, "_room")) {
prefix = "scenes";
if (Globals::Instance->rom->IsMQ()) {
prefix += "/mq";
} else {
prefix += "/nonmq";
}
}
else if (StringHelper::Contains(xmlPath, "objects/"))
prefix = "objects";
else if (StringHelper::Contains(xmlPath, "textures/"))
prefix = "textures";
else if (StringHelper::Contains(xmlPath, "overlays/"))
prefix = "overlays";
else if (StringHelper::Contains(xmlPath, "misc/"))
prefix = "misc";
else if (StringHelper::Contains(xmlPath, "text/"))
prefix = "text";
else if (StringHelper::Contains(xmlPath, "code/"))
prefix = "code";
return prefix;
}
@@ -1,17 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "ZDisplayList.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_DisplayList : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
static std::string GetParentFolderName(ZResource* res);
static std::string GetPathToRes(ZResource* res, std::string varName);
static std::string GetPrefix(ZResource* res);
};
-21
View File
@@ -1,21 +0,0 @@
#include "Exporter.h"
#include "VersionInfo.h"
void OTRExporter::WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType, Ship::Version resVersion)
{
writer->Write((uint8_t)Endianness::Little); // 0x00
writer->Write((uint8_t)0); // 0x01
writer->Write((uint8_t)0); // 0x02
writer->Write((uint8_t)0); // 0x03
writer->Write((uint32_t)resType); // 0x04
//writer->Write((uint32_t)MAJOR_VERSION); // 0x08
writer->Write((uint32_t)resVersion); // 0x08
writer->Write((uint64_t)0xDEADBEEFDEADBEEF); // id, 0x0C
writer->Write((uint32_t)resourceVersions[resType]); // 0x10
writer->Write((uint64_t)0); // ROM CRC, 0x14
writer->Write((uint32_t)0); // ROM Enum, 0x1C
while (writer->GetBaseAddress() < 0x40)
writer->Write((uint32_t)0); // To be used at a later date!
}
-13
View File
@@ -1,13 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZArray.h"
//#include "OTRExporter.h"
#include <Utils/BinaryWriter.h>
#include <libultraship/bridge.h>
#include "VersionInfo.h"
class OTRExporter : public ZResourceExporter
{
protected:
static void WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType, Ship::Version resVersion = MAJOR_VERSION);
};
-292
View File
@@ -1,292 +0,0 @@
#include "Main.h"
#include "BackgroundExporter.h"
#include "TextureExporter.h"
#include "RoomExporter.h"
#include "CollisionExporter.h"
#include "DisplayListExporter.h"
#include "PlayerAnimationExporter.h"
#include "SkeletonExporter.h"
#include "SkeletonLimbExporter.h"
#include "ArrayExporter.h"
#include "VtxExporter.h"
#include "AnimationExporter.h"
#include "CutsceneExporter.h"
#include "PathExporter.h"
#include "TextExporter.h"
#include "BlobExporter.h"
#include "MtxExporter.h"
#include "AudioExporter.h"
#include <Globals.h>
#include <Utils/File.h>
#include <Utils/Directory.h>
#include <Utils/MemoryStream.h>
#include <Utils/BinaryWriter.h>
#include <bit>
#include <mutex>
std::string otrFileName = "oot.otr";
std::shared_ptr<Ship::Archive> otrArchive;
BinaryWriter* fileWriter;
std::chrono::steady_clock::time_point fileStart, resStart;
std::map<std::string, std::vector<char>> files;
std::mutex fileMutex;
void InitVersionInfo();
enum class ExporterFileMode
{
BuildOTR = (int)ZFileMode::Custom + 1,
};
static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileMode)
{
if (buildMode == "botr")
{
fileMode = (ZFileMode)ExporterFileMode::BuildOTR;
printf("BOTR: Generating OTR Archive...\n");
if (File::Exists(otrFileName))
otrArchive = std::shared_ptr<Ship::Archive>(new Ship::Archive(otrFileName, true));
else
otrArchive = Ship::Archive::CreateArchive(otrFileName, 40000);
auto lst = Directory::ListFiles("Extract");
for (auto item : lst)
{
auto fileData = File::ReadAllBytes(item);
otrArchive->AddFile(StringHelper::Split(item, "Extract/")[1], (uintptr_t)fileData.data(), fileData.size());
}
}
}
static void ExporterProgramEnd()
{
if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory)
{
printf("Creating version file...\n");
// Get crc from rom
std::string romPath = Globals::Instance->baseRomPath.string();
std::vector<uint8_t> romData = File::ReadAllBytes(romPath);
uint32_t crc = BitConverter::ToUInt32BE(romData, 0x10);
uint8_t endianness = (uint8_t)Endianness::Big;
// Write crc to version file
fs::path versionPath("Extract/version");
MemoryStream* versionStream = new MemoryStream();
BinaryWriter writer(versionStream);
writer.SetEndianness(Endianness::Big);
writer.Write(endianness);
writer.Write(crc);
std::ofstream versionFile(versionPath.c_str(), std::ios::out | std::ios::binary);
versionFile.write(versionStream->ToVector().data(), versionStream->GetLength());
versionFile.flush();
versionFile.close();
writer.Close();
printf("Created version file.\n");
printf("Generating OTR Archive...\n");
otrArchive = Ship::Archive::CreateArchive(otrFileName, 40000);
for (auto item : files) {
std::string fName = item.first;
if (fName.find("gTitleZeldaShieldLogoMQTex") != std::string::npos && !ZRom(romPath).IsMQ())
{
size_t pos = 0;
if ((pos = fName.find("gTitleZeldaShieldLogoMQTex", 0)) != std::string::npos)
{
fName.replace(pos, 27, "gTitleZeldaShieldLogoTex");
}
}
auto fileData = item.second;
otrArchive->AddFile(fName, (uintptr_t)fileData.data(),
fileData.size());
}
// Add any additional files that need to be manually copied...
auto lst = Directory::ListFiles("Extract");
for (auto item : lst)
{
std::vector<std::string> splitPath = StringHelper::Split(item, ".");
if (splitPath.size() >= 3) {
std::string extension = splitPath.at(splitPath.size() - 1);
std::string format = splitPath.at(splitPath.size() - 2);
splitPath.pop_back();
splitPath.pop_back();
std::string afterPath = std::accumulate(splitPath.begin(), splitPath.end(), std::string(""));
if (extension == "png" && (format == "rgba32" || format == "rgb5a1" || format == "i4" || format == "i8" || format == "ia4" || format == "ia8" || format == "ia16" || format == "ci4" || format == "ci8")) {
Globals::Instance->buildRawTexture = true;
Globals::Instance->BuildAssetTexture(item, ZTexture::GetTextureTypeFromString(format), afterPath);
Globals::Instance->buildRawTexture = false;
auto fileData = File::ReadAllBytes(afterPath);
printf("otrArchive->AddFile(%s)\n", StringHelper::Split(afterPath, "Extract/")[1].c_str());
otrArchive->AddFile(StringHelper::Split(afterPath, "Extract/")[1], (uintptr_t)fileData.data(), fileData.size());
}
}
auto fileData = File::ReadAllBytes(item);
printf("otrArchive->AddFile(%s)\n", StringHelper::Split(item, "Extract/")[1].c_str());
otrArchive->AddFile(StringHelper::Split(item, "Extract/")[1], (uintptr_t)fileData.data(), fileData.size());
}
//otrArchive->AddFile("Audiobank", (uintptr_t)Globals::Instance->GetBaseromFile("Audiobank").data(), Globals::Instance->GetBaseromFile("Audiobank").size());
//otrArchive->AddFile("Audioseq", (uintptr_t)Globals::Instance->GetBaseromFile("Audioseq").data(), Globals::Instance->GetBaseromFile("Audioseq").size());
//otrArchive->AddFile("Audiotable", (uintptr_t)Globals::Instance->GetBaseromFile("Audiotable").data(), Globals::Instance->GetBaseromFile("Audiotable").size());
}
}
static void ExporterParseArgs(int argc, char* argv[], int& i)
{
std::string arg = argv[i];
if (arg == "--otrfile")
{
otrFileName = argv[i + 1];
i++;
}
}
static bool ExporterProcessFileMode(ZFileMode fileMode)
{
// Do whatever work is associated with these custom file modes...
// Return true to indicate one of our own file modes is being processed
if (fileMode == (ZFileMode)ExporterFileMode::BuildOTR)
return true;
return false;
}
static void ExporterFileBegin(ZFile* file)
{
fileStart = std::chrono::steady_clock::now();
MemoryStream* stream = new MemoryStream();
fileWriter = new BinaryWriter(stream);
}
static void ExporterFileEnd(ZFile* file)
{
// delete fileWriter;
}
static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer)
{
auto streamShared = writer.GetStream();
MemoryStream* strem = (MemoryStream*)streamShared.get();
auto start = std::chrono::steady_clock::now();
if (res->GetName() != "")
{
std::string oName = res->parent->GetOutName();
std::string rName = res->GetName();
std::string prefix = OTRExporter_DisplayList::GetPrefix(res);
//auto xmlFilePath = res->parent->GetXmlFilePath();
//prefix = StringHelper::Split(StringHelper::Split(xmlFilePath.string(), "xml\\")[1], ".xml")[0];
if (StringHelper::Contains(oName, "_scene"))
{
auto split = StringHelper::Split(oName, "_");
oName = "";
for (size_t i = 0; i < split.size() - 1; i++)
oName += split[i] + "_";
oName += "scene";
}
else if (StringHelper::Contains(oName, "_room"))
{
oName = StringHelper::Split(oName, "_room")[0] + "_scene";
}
std::string fName = "";
if (prefix != "")
fName = StringHelper::Sprintf("%s/%s/%s", prefix.c_str(), oName.c_str(), rName.c_str());
else
fName = StringHelper::Sprintf("%s/%s", oName.c_str(), rName.c_str());
if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory)
{
std::unique_lock Lock(fileMutex);
files[fName] = strem->ToVector();
}
else
File::WriteAllBytes("Extract/" + fName, strem->ToVector());
}
auto end = std::chrono::steady_clock::now();
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
//if (diff > 10)
//printf("Exported Resource End %s in %zums\n", res->GetName().c_str(), diff);
}
static void ExporterXMLBegin()
{
}
static void ExporterXMLEnd()
{
}
void AddFile(std::string fName, std::vector<char> data)
{
if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory)
File::WriteAllBytes("Extract/" + fName, data);
else
{
std::unique_lock Lock(fileMutex);
files[fName] = data;
}
}
static void ImportExporters()
{
// In this example we set up a new exporter called "EXAMPLE".
// By running ZAPD with the argument -se EXAMPLE, we tell it that we want to use this exporter for our resources.
ExporterSet* exporterSet = new ExporterSet();
exporterSet->processFileModeFunc = ExporterProcessFileMode;
exporterSet->parseFileModeFunc = ExporterParseFileMode;
exporterSet->parseArgsFunc = ExporterParseArgs;
exporterSet->beginFileFunc = ExporterFileBegin;
exporterSet->endFileFunc = ExporterFileEnd;
exporterSet->beginXMLFunc = ExporterXMLBegin;
exporterSet->endXMLFunc = ExporterXMLEnd;
exporterSet->resSaveFunc = ExporterResourceEnd;
exporterSet->endProgramFunc = ExporterProgramEnd;
exporterSet->exporters[ZResourceType::Background] = new OTRExporter_Background();
exporterSet->exporters[ZResourceType::Texture] = new OTRExporter_Texture();
exporterSet->exporters[ZResourceType::Room] = new OTRExporter_Room();
exporterSet->exporters[ZResourceType::AltHeader] = new OTRExporter_Room();
exporterSet->exporters[ZResourceType::Scene] = new OTRExporter_Room();
exporterSet->exporters[ZResourceType::CollisionHeader] = new OTRExporter_Collision();
exporterSet->exporters[ZResourceType::DisplayList] = new OTRExporter_DisplayList();
exporterSet->exporters[ZResourceType::PlayerAnimationData] = new OTRExporter_PlayerAnimationExporter();
exporterSet->exporters[ZResourceType::Skeleton] = new OTRExporter_Skeleton();
exporterSet->exporters[ZResourceType::Limb] = new OTRExporter_SkeletonLimb();
exporterSet->exporters[ZResourceType::Animation] = new OTRExporter_Animation();
exporterSet->exporters[ZResourceType::Cutscene] = new OTRExporter_Cutscene();
exporterSet->exporters[ZResourceType::Vertex] = new OTRExporter_Vtx();
exporterSet->exporters[ZResourceType::Array] = new OTRExporter_Array();
exporterSet->exporters[ZResourceType::Path] = new OTRExporter_Path();
exporterSet->exporters[ZResourceType::Text] = new OTRExporter_Text();
exporterSet->exporters[ZResourceType::Blob] = new OTRExporter_Blob();
exporterSet->exporters[ZResourceType::Mtx] = new OTRExporter_MtxExporter();
exporterSet->exporters[ZResourceType::Audio] = new OTRExporter_Audio();
Globals::AddExporter("OTR", exporterSet);
InitVersionInfo();
}
// When ZAPD starts up, it will automatically call the below function, which in turn sets up our exporters.
REGISTER_EXPORTER(ImportExporters);
-8
View File
@@ -1,8 +0,0 @@
#pragma once
#include <libultraship/bridge.h>
extern std::shared_ptr<Ship::Archive> otrArchive;
extern std::map<std::string, std::vector<char>> files;
void AddFile(std::string fName, std::vector<char> data);
-13
View File
@@ -1,13 +0,0 @@
#include "MtxExporter.h"
void OTRExporter_MtxExporter::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZMtx* mtx = (ZMtx*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::Matrix);
for (size_t i = 0; i < 4; i++)
for (size_t j = 0; j < 4; j++)
//TODO possibly utilize the array class better
writer->Write(mtx->mtx[i][j]);
}
-10
View File
@@ -1,10 +0,0 @@
#include "ZResource.h"
#include "ZMtx.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_MtxExporter : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-23
View File
@@ -1,23 +0,0 @@
#include "PathExporter.h"
#include "../ZAPD/ZFile.h"
void OTRExporter_Path::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZPath* path = (ZPath*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_Path);
writer->Write((uint32_t)path->pathways.size());
for (size_t k = 0; k < path->pathways.size(); k++)
{
writer->Write((uint32_t)path->pathways[k].points.size());
for (size_t i = 0; i < path->pathways[k].points.size(); i++)
{
writer->Write(path->pathways[k].points[i].scalars[0].scalarData.s16);
writer->Write(path->pathways[k].points[i].scalars[1].scalarData.s16);
writer->Write(path->pathways[k].points[i].scalars[2].scalarData.s16);
}
}
}
-12
View File
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZPath.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Path : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,21 +0,0 @@
#include "PlayerAnimationExporter.h"
#include <libultraship/bridge.h>
void OTRExporter_PlayerAnimationExporter::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZPlayerAnimationData* anim = (ZPlayerAnimationData*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_PlayerAnimation);
auto start = std::chrono::steady_clock::now();
writer->Write((uint32_t)anim->limbRotData.size());
for (size_t i = 0; i < anim->limbRotData.size(); i++)
writer->Write(anim->limbRotData[i]);
auto end = std::chrono::steady_clock::now();
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
//printf("Exported Player Anim %s in %zums\n", anim->GetName().c_str(), diff);
}
@@ -1,13 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "ZPlayerAnimationData.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_PlayerAnimationExporter : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-523
View File
@@ -1,523 +0,0 @@
#include "RoomExporter.h"
#include "Utils/BinaryWriter.h"
#include "Utils/MemoryStream.h"
#include "Utils/File.h"
#include <ZRoom/Commands/SetMesh.h>
#include <ZRoom/Commands/SetWind.h>
#include <ZRoom/Commands/SetTimeSettings.h>
#include <ZRoom/Commands/SetSkyboxModifier.h>
#include <ZRoom/Commands/SetSoundSettings.h>
#include <ZRoom/Commands/SetCameraSettings.h>
#include <ZRoom/Commands/SetRoomBehavior.h>
#include <ZRoom/Commands/SetCsCamera.h>
#include <ZRoom/Commands/SetRoomList.h>
#include <ZRoom/Commands/SetCollisionHeader.h>
#include <ZRoom/Commands/SetEntranceList.h>
#include <ZRoom/Commands/SetSpecialObjects.h>
#include <ZRoom/Commands/SetStartPositionList.h>
#include <ZRoom/Commands/SetSkyboxSettings.h>
#include <ZRoom/Commands/SetLightingSettings.h>
#include <ZRoom/Commands/SetLightList.h>
#include <ZRoom/Commands/SetEchoSettings.h>
#include <ZRoom/Commands/SetObjectList.h>
#include <ZRoom/Commands/SetAlternateHeaders.h>
#include "CollisionExporter.h"
#include "DisplayListExporter.h"
#include <libultraship/bridge.h>
#include <Globals.h>
#include <ZRoom/Commands/SetExitList.h>
#include <ZRoom/Commands/SetPathways.h>
#include "TextureExporter.h"
#include "Main.h"
#include <ZRoom/Commands/SetCutscenes.h>
#include "CutsceneExporter.h"
#include <ZRoom/Commands/SetTransitionActorList.h>
#include "PathExporter.h"
#undef FindResource
void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZRoom* room = (ZRoom*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_Room);
writer->Write((uint32_t)room->commands.size());
for (size_t i = 0; i < room->commands.size(); i++)
{
ZRoomCommand* cmd = room->commands[i];
writer->Write((uint32_t)cmd->cmdID);
switch (cmd->cmdID)
{
case RoomCommand::SetTransitionActorList:
{
SetTransitionActorList* cmdTrans = (SetTransitionActorList*)cmd;
writer->Write((uint32_t)cmdTrans->transitionActors.size());
for (const TransitionActorEntry& entry : cmdTrans->transitionActors)
{
writer->Write(entry.frontObjectRoom);
writer->Write(entry.frontTransitionReaction);
writer->Write(entry.backObjectRoom);
writer->Write(entry.backTransitionReaction);
writer->Write(entry.actorNum);
writer->Write(entry.posX);
writer->Write(entry.posY);
writer->Write(entry.posZ);
writer->Write(entry.rotY);
writer->Write(entry.initVar);
}
}
break;
case RoomCommand::SetActorList:
{
SetActorList* cmdSetActorList = (SetActorList*)cmd;
// There are instance of the amount of actors in the file differing from the size listed in the command.
// This can cause issues if we export actors with garbage data, so let's trust the command size
writer->Write((uint32_t)cmdSetActorList->numActors);
for (int i = 0; i < cmdSetActorList->numActors; i++)
{
const ActorSpawnEntry& entry = cmdSetActorList->actors[i];
writer->Write(entry.actorNum);
writer->Write(entry.posX);
writer->Write(entry.posY);
writer->Write(entry.posZ);
writer->Write(entry.rotX);
writer->Write(entry.rotY);
writer->Write(entry.rotZ);
writer->Write(entry.initVar);
}
}
break;
case RoomCommand::SetWind:
{
SetWind* cmdSetWind = (SetWind*)cmd;
writer->Write(cmdSetWind->windWest); // 0x04
writer->Write(cmdSetWind->windVertical); // 0x05
writer->Write(cmdSetWind->windSouth); // 0x06
writer->Write(cmdSetWind->clothFlappingStrength); // 0x07
}
break;
case RoomCommand::SetTimeSettings:
{
SetTimeSettings* cmdTime = (SetTimeSettings*)cmd;
writer->Write(cmdTime->hour); // 0x04
writer->Write(cmdTime->min); // 0x05
writer->Write(cmdTime->unk); // 0x06
}
break;
case RoomCommand::SetSkyboxModifier:
{
SetSkyboxModifier* cmdSkybox = (SetSkyboxModifier*)cmd;
writer->Write(cmdSkybox->disableSky); // 0x04
writer->Write(cmdSkybox->disableSunMoon); // 0x05
}
break;
case RoomCommand::SetEchoSettings:
{
SetEchoSettings* cmdEcho = (SetEchoSettings*)cmd;
writer->Write((uint8_t)cmdEcho->echo); // 0x07
}
break;
case RoomCommand::SetSoundSettings:
{
SetSoundSettings* cmdSound = (SetSoundSettings*)cmd;
writer->Write((uint8_t)cmdSound->reverb); // 0x01
writer->Write(cmdSound->nightTimeSFX); // 0x06
writer->Write(cmdSound->musicSequence); // 0x07
}
break;
case RoomCommand::SetSkyboxSettings:
{
SetSkyboxSettings* cmdSkybox = (SetSkyboxSettings*)cmd;
writer->Write((uint8_t)cmdSkybox->unk1); // 0x01
writer->Write((uint8_t)cmdSkybox->skyboxNumber); // 0x04
writer->Write((uint8_t)cmdSkybox->cloudsType); // 0x05
writer->Write((uint8_t)cmdSkybox->isIndoors); // 0x06
}
break;
case RoomCommand::SetRoomBehavior:
{
SetRoomBehavior* cmdRoom = (SetRoomBehavior*)cmd;
writer->Write((uint8_t)cmdRoom->gameplayFlags); // 0x01
writer->Write(cmdRoom->gameplayFlags2); // 0x04
}
break;
case RoomCommand::SetCsCamera:
{
SetCsCamera* cmdCsCam = (SetCsCamera*)cmd;
writer->Write((uint32_t)cmdCsCam->cameras.size());
for (size_t i = 0; i < cmdCsCam->cameras.size(); i++)
{
writer->Write(cmdCsCam->cameras[i].baseOffset);
writer->Write(cmdCsCam->cameras[i].type);
writer->Write(cmdCsCam->cameras[i].numPoints);
}
writer->Write((uint32_t)cmdCsCam->points.size());
for (size_t i = 0; i < cmdCsCam->points.size(); i++)
{
writer->Write(cmdCsCam->points[i].scalars[0].scalarData.s16);
writer->Write(cmdCsCam->points[i].scalars[1].scalarData.s16);
writer->Write(cmdCsCam->points[i].scalars[2].scalarData.s16);
}
}
break;
case RoomCommand::SetMesh:
{
SetMesh* cmdMesh = (SetMesh*)cmd;
writer->Write((uint8_t)cmdMesh->data); // 0x01
writer->Write(cmdMesh->meshHeaderType);
if (cmdMesh->meshHeaderType == 0 || cmdMesh->meshHeaderType == 2)
{
PolygonType2* poly = (PolygonType2*)cmdMesh->polyType.get();
writer->Write(poly->num);
for (int i = 0; i < poly->num; i++)
WritePolyDList(writer, room, &poly->polyDLists[i]);
}
else if (cmdMesh->meshHeaderType == 1)
{
PolygonType1* poly = (PolygonType1*)cmdMesh->polyType.get();
writer->Write(poly->format);
auto test = (PolygonDlist*)&poly->polyDLists[0];
Declaration* dListDeclOpa = poly->parent->GetDeclaration(GETSEGOFFSET(test->opa));
Declaration* dListDeclXlu = poly->parent->GetDeclaration(GETSEGOFFSET(test->xlu));
if (test->opa != 0)
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
else
writer->Write("");
if (test->xlu != 0)
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclXlu->varName.c_str()));
else
writer->Write("");
if (poly->format == 2)
{
writer->Write((uint32_t)poly->count);
for (int i = 0; i < poly->count; i++)
{
writer->Write(poly->multiList[i].unk_00);
writer->Write(poly->multiList[i].id);
Declaration* bgDecl = poly->parent->GetDeclarationRanged(GETSEGOFFSET(poly->multiList[i].source));
writer->Write(OTRExporter_DisplayList::GetPathToRes(poly->multiList[i].sourceBackground, bgDecl->varName));
writer->Write(poly->multiList[i].unk_0C);
writer->Write(poly->multiList[i].tlut);
writer->Write(poly->multiList[i].width);
writer->Write(poly->multiList[i].height);
writer->Write(poly->multiList[i].fmt);
writer->Write(poly->multiList[i].siz);
writer->Write(poly->multiList[i].mode0);
writer->Write(poly->multiList[i].tlutCount);
}
}
else
{
writer->Write((uint32_t)1);
writer->Write(poly->single.unk_00);
writer->Write(poly->single.id);
Declaration* bgDecl = poly->parent->GetDeclarationRanged(GETSEGOFFSET(poly->single.source));
writer->Write(OTRExporter_DisplayList::GetPathToRes(poly->single.sourceBackground, bgDecl->varName));
writer->Write(poly->single.unk_0C);
writer->Write(poly->single.tlut);
writer->Write(poly->single.width);
writer->Write(poly->single.height);
writer->Write(poly->single.fmt);
writer->Write(poly->single.siz);
writer->Write(poly->single.mode0);
writer->Write(poly->single.tlutCount);
}
if (poly->dlist != 0)
WritePolyDList(writer, room, &poly->polyDLists[0]);
}
}
break;
case RoomCommand::SetCameraSettings:
{
SetCameraSettings* cmdCam = (SetCameraSettings*)cmd;
writer->Write((uint8_t)cmdCam->cameraMovement); // 0x01
writer->Write(cmdCam->mapHighlight); // 0x04
}
break;
case RoomCommand::SetLightList:
{
SetLightList* cmdLight = (SetLightList*)cmd;
writer->Write((uint32_t)cmdLight->lights.size());
for (size_t i = 0; i < cmdLight->lights.size(); i++)
{
writer->Write(cmdLight->lights[i].type);
writer->Write(cmdLight->lights[i].x);
writer->Write(cmdLight->lights[i].y);
writer->Write(cmdLight->lights[i].z);
writer->Write(cmdLight->lights[i].r);
writer->Write(cmdLight->lights[i].g);
writer->Write(cmdLight->lights[i].b);
writer->Write(cmdLight->lights[i].drawGlow);
writer->Write(cmdLight->lights[i].radius);
}
}
break;
case RoomCommand::SetLightingSettings:
{
SetLightingSettings* cmdLight = (SetLightingSettings*)cmd;
writer->Write((uint32_t)cmdLight->settings.size()); // 0x01
for (const LightingSettings& setting : cmdLight->settings)
{
writer->Write(setting.ambientClrR);
writer->Write(setting.ambientClrG);
writer->Write(setting.ambientClrB);
writer->Write(setting.diffuseClrA_R);
writer->Write(setting.diffuseClrA_G);
writer->Write(setting.diffuseClrA_B);
writer->Write(setting.diffuseDirA_X);
writer->Write(setting.diffuseDirA_Y);
writer->Write(setting.diffuseDirA_Z);
writer->Write(setting.diffuseClrB_R);
writer->Write(setting.diffuseClrB_G);
writer->Write(setting.diffuseClrB_B);
writer->Write(setting.diffuseDirB_X);
writer->Write(setting.diffuseDirB_Y);
writer->Write(setting.diffuseDirB_Z);
writer->Write(setting.fogClrR);
writer->Write(setting.fogClrG);
writer->Write(setting.fogClrB);
writer->Write(setting.unk);
writer->Write(setting.drawDistance);
}
}
break;
case RoomCommand::SetRoomList:
{
SetRoomList* cmdRoom = (SetRoomList*)cmd;
writer->Write((uint32_t)cmdRoom->romfile->numRooms); // 0x01
for (size_t i = 0;i < cmdRoom->romfile->numRooms; i++)
{
//std::string roomName = StringHelper::Sprintf("%s/%s_room_%i", (StringHelper::Split(room->GetName(), "_")[0] + "_scene").c_str(), StringHelper::Split(room->GetName(), "_scene")[0].c_str(), i);
std::string roomName = OTRExporter_DisplayList::GetPathToRes(room, StringHelper::Sprintf("%s_room_%i", StringHelper::Split(room->GetName(), "_scene")[0].c_str(), i));
writer->Write(roomName);
writer->Write(cmdRoom->romfile->rooms[i].virtualAddressStart);
writer->Write(cmdRoom->romfile->rooms[i].virtualAddressEnd);
}
}
break;
case RoomCommand::SetCollisionHeader:
{
SetCollisionHeader* cmdCollHeader = (SetCollisionHeader*)cmd;
Declaration* colHeaderDecl = room->parent->GetDeclaration(cmdCollHeader->segmentOffset);
std::string path = OTRExporter_DisplayList::GetPathToRes(room, colHeaderDecl->varName);
writer->Write(path);
}
break;
case RoomCommand::SetEntranceList:
{
SetEntranceList* cmdEntrance = (SetEntranceList*)cmd;
writer->Write((uint32_t)cmdEntrance->entrances.size());
for (EntranceEntry entry : cmdEntrance->entrances)
{
writer->Write((uint8_t)entry.startPositionIndex);
writer->Write((uint8_t)entry.roomToLoad);
}
}
break;
case RoomCommand::SetSpecialObjects:
{
SetSpecialObjects* cmdSpecObj = (SetSpecialObjects*)cmd;
writer->Write((uint8_t)cmdSpecObj->elfMessage); // 0x01
writer->Write((uint16_t)cmdSpecObj->globalObject); // 0x06
}
break;
case RoomCommand::SetStartPositionList:
{
SetStartPositionList* cmdStartPos = (SetStartPositionList*)cmd;
uint32_t baseStreamEnd = writer->GetStream().get()->GetLength();
writer->Write((uint32_t)cmdStartPos->actors.size()); // 0x01
for (const ActorSpawnEntry& entry : cmdStartPos->actors)
{
writer->Write(entry.actorNum);
writer->Write(entry.posX);
writer->Write(entry.posY);
writer->Write(entry.posZ);
writer->Write(entry.rotX);
writer->Write(entry.rotY);
writer->Write(entry.rotZ);
writer->Write(entry.initVar);
}
}
break;
case RoomCommand::SetAlternateHeaders:
{
SetAlternateHeaders* cmdHeaders = (SetAlternateHeaders*)cmd;
writer->Write((uint32_t)cmdHeaders->headers.size());
for (size_t i = 0; i < cmdHeaders->headers.size(); i++)
{
uint32_t seg = cmdHeaders->headers[i] & 0xFFFFFFFF;
std::string headerName = "";
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, room->parent, "", headerName, res->parent->workerID);
if (headerName == "NULL")
writer->Write("");
else
{
std::string name = OTRExporter_DisplayList::GetPathToRes(room, headerName);
writer->Write(name);
}
}
}
break;
case RoomCommand::SetExitList:
{
SetExitList* cmdExit = (SetExitList*)cmd;
writer->Write((uint32_t)cmdExit->exits.size());
for (size_t i = 0; i < cmdExit->exits.size(); i++)
writer->Write(cmdExit->exits[i]);
}
break;
case RoomCommand::SetObjectList:
{
SetObjectList* cmdSetObjectList = (SetObjectList*)cmd;
writer->Write((uint32_t)cmdSetObjectList->objects.size());
for (size_t i = 0; i < cmdSetObjectList->objects.size(); i++)
writer->Write(cmdSetObjectList->objects[i]);
}
break;
case RoomCommand::SetCutscenes:
{
SetCutscenes* cmdSetCutscenes = (SetCutscenes*)cmd;
std::string listName;
Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName, res->parent->workerID);
std::string fName = OTRExporter_DisplayList::GetPathToRes(room, listName);
//std::string fName = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), listName.c_str());
writer->Write(fName);
MemoryStream* csStream = new MemoryStream();
BinaryWriter csWriter = BinaryWriter(csStream);
OTRExporter_Cutscene cs;
cs.Save(cmdSetCutscenes->cutscenes[0], "", &csWriter);
AddFile(fName, csStream->ToVector());
}
break;
case RoomCommand::SetPathways:
{
SetPathways* cmdSetPathways = (SetPathways*)cmd;
writer->Write((uint32_t)cmdSetPathways->pathwayList.pathways.size());
for (size_t i = 0; i < cmdSetPathways->pathwayList.pathways.size(); i++)
{
Declaration* decl = room->parent->GetDeclaration(GETSEGOFFSET(cmdSetPathways->pathwayList.pathways[i].listSegmentAddress));
//std::string path = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), decl->varName.c_str());
std::string path = OTRExporter_DisplayList::GetPathToRes(room, decl->varName);
writer->Write(path);
MemoryStream* pathStream = new MemoryStream();
BinaryWriter pathWriter = BinaryWriter(pathStream);
OTRExporter_Path pathExp;
pathExp.Save(&cmdSetPathways->pathwayList, outPath, &pathWriter);
AddFile(path, pathStream->ToVector());
}
}
break;
case RoomCommand::EndMarker:
break;
default:
printf("UNIMPLEMENTED COMMAND: 0x%02X\n", (int)cmd->cmdID);
break;
}
}
}
void OTRExporter_Room::WritePolyDList(BinaryWriter* writer, ZRoom* room, PolygonDlist* dlist)
{
writer->Write(dlist->polyType);
switch (dlist->polyType)
{
case 2:
writer->Write(dlist->x);
writer->Write(dlist->y);
writer->Write(dlist->z);
writer->Write(dlist->unk_06);
[[fallthrough]];
default:
//writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
if (dlist->opaDList != nullptr)
{
auto opaDecl = room->parent->GetDeclaration(GETSEGOFFSET(dlist->opaDList->GetRawDataIndex()));
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), opaDecl->varName.c_str()));
}
else
writer->Write("");
if (dlist->xluDList != nullptr)
{
auto xluDecl = room->parent->GetDeclaration(GETSEGOFFSET(dlist->xluDList->GetRawDataIndex()));
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), xluDecl->varName.c_str()));
}
else
writer->Write("");
break;
}
}
-14
View File
@@ -1,14 +0,0 @@
#pragma once
#include "ZResource.h"
#include "Exporter.h"
#include "ZRoom/ZRoom.h"
class PolygonDlist;
class OTRExporter_Room : public OTRExporter
{
public:
void WritePolyDList(BinaryWriter* writer, ZRoom* room, PolygonDlist* dlist);
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,39 +0,0 @@
#include "SkeletonExporter.h"
#include <libultraship/bridge.h>
#include <Globals.h>
#include "DisplayListExporter.h"
void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZSkeleton* skel = (ZSkeleton*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_Skeleton);
writer->Write((uint8_t)skel->type);
writer->Write((uint8_t)skel->limbType);
writer->Write((uint32_t)skel->limbCount);
writer->Write((uint32_t)skel->dListCount);
writer->Write((uint8_t)skel->limbsTable.limbType);
writer->Write((uint32_t)skel->limbsTable.count);
for (size_t i = 0; i < skel->limbsTable.count; i++)
{
Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable.limbsAddresses[i]));
std::string name;
bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name, res->parent->workerID);
if (foundDecl)
{
if (name.at(0) == '&')
name.erase(0, 1);
writer->Write(OTRExporter_DisplayList::GetPathToRes(res, name));
}
else
{
writer->Write("");
}
}
}
@@ -1,14 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "ZDisplayList.h"
#include "ZSkeleton.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Skeleton : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,176 +0,0 @@
#include "SkeletonLimbExporter.h"
#include "DisplayListExporter.h"
#include <libultraship/bridge.h>
#include <Globals.h>
void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZLimb* limb = (ZLimb*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::SOH_SkeletonLimb);
writer->Write((uint8_t)limb->type);
writer->Write((uint8_t)limb->skinSegmentType);
if (limb->skinSegmentType == ZLimbSkinType::SkinType_DList && limb->type == ZLimbType::Skin)
{
auto childDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->skinSegment));
if (childDecl != nullptr)
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, childDecl->varName));
else
writer->Write("");
}
else
{
writer->Write("");
}
writer->Write((uint16_t)limb->segmentStruct.unk_0);
writer->Write((uint32_t)limb->segmentStruct.unk_4_arr.size());
for (auto item : limb->segmentStruct.unk_4_arr)
{
writer->Write(item.unk_4);
writer->Write((uint32_t)item.unk_8_arr.size());
for (auto item2 : item.unk_8_arr)
{
writer->Write(item2.unk_0);
writer->Write(item2.unk_2);
writer->Write(item2.unk_4);
writer->Write(item2.unk_6);
writer->Write(item2.unk_7);
writer->Write(item2.unk_8);
writer->Write(item2.unk_9);
}
writer->Write((uint32_t)item.unk_C_arr.size());
for (auto item2 : item.unk_C_arr)
{
writer->Write(item2.unk_0);
writer->Write(item2.x);
writer->Write(item2.y);
writer->Write(item2.z);
writer->Write(item2.unk_8);
}
}
if (limb->segmentStruct.unk_8 != 0)
{
auto skinGfxDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->segmentStruct.unk_8));
if (skinGfxDecl != nullptr)
{
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, skinGfxDecl->varName));
}
else
{
writer->Write("");
}
}
else
{
writer->Write("");
}
writer->Write(limb->legTransX);
writer->Write(limb->legTransY);
writer->Write(limb->legTransZ);
writer->Write(limb->rotX);
writer->Write(limb->rotY);
writer->Write(limb->rotZ);
if (limb->childPtr != 0)
{
std::string name;
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name, res->parent->workerID);
if (foundDecl)
{
if (name.at(0) == '&')
name.erase(0, 1);
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name));
}
else
{
writer->Write("");
}
}
else
{
writer->Write("");
}
if (limb->siblingPtr != 0)
{
std::string name;
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name, res->parent->workerID);
if (foundDecl)
{
if (name.at(0) == '&')
name.erase(0, 1);
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name));
}
else
{
writer->Write("");
}
}
else
{
writer->Write("");
}
if (limb->dListPtr != 0)
{
std::string name;
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name, res->parent->workerID);
if (foundDecl)
{
if (name.at(0) == '&')
name.erase(0, 1);
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name));
}
else
{
writer->Write("");
}
}
else
{
writer->Write("");
}
if (limb->dList2Ptr != 0)
{
std::string name;
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name, res->parent->workerID);
if (foundDecl)
{
if (name.at(0) == '&')
name.erase(0, 1);
writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name));
}
else
{
writer->Write("");
}
}
else
{
writer->Write("");
}
writer->Write(limb->transX);
writer->Write(limb->transY);
writer->Write(limb->transZ);
writer->Write(limb->childIndex);
writer->Write(limb->siblingIndex);
}
@@ -1,15 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "ZDisplayList.h"
#include "ZSkeleton.h"
#include "ZLimb.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_SkeletonLimb : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-19
View File
@@ -1,19 +0,0 @@
#include "TextExporter.h"
#include "../ZAPD/ZFile.h"
void OTRExporter_Text::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZText* txt = (ZText*)res;
WriteHeader(txt, outPath, writer, Ship::ResourceType::SOH_Text);
writer->Write((uint32_t)txt->messages.size());
for (size_t i = 0; i < txt->messages.size(); i++)
{
writer->Write(txt->messages[i].id);
writer->Write(txt->messages[i].textboxType);
writer->Write(txt->messages[i].textboxYPos);
writer->Write(txt->messages[i].msg);
}
}
-12
View File
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZText.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Text : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,31 +0,0 @@
#include "TextureExporter.h"
#include "../ZAPD/ZFile.h"
void OTRExporter_Texture::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZTexture* tex = (ZTexture*)res;
WriteHeader(tex, outPath, writer, Ship::ResourceType::Texture);
auto start = std::chrono::steady_clock::now();
//printf("Exporting Texture %s\n", tex->GetName().c_str());
writer->Write((uint32_t)tex->GetTextureType());
writer->Write((uint32_t)tex->GetWidth());
writer->Write((uint32_t)tex->GetHeight());
writer->Write((uint32_t)tex->GetRawDataSize());
auto data = tex->parent->GetRawData();
writer->Write((char*)data.data() + tex->GetRawDataIndex(), tex->GetRawDataSize());
auto end = std::chrono::steady_clock::now();
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
//printf("Exported Texture %s in %zums\n", tex->GetName().c_str(), diff);
//if (diff > 2)
//printf("Export took %lms\n", diff);
}
-12
View File
@@ -1,12 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZTexture.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Texture : public OTRExporter
{
public:
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
-25
View File
@@ -1,25 +0,0 @@
#include "VersionInfo.h"
#include <libultraship/bridge.h>
std::map<Ship::ResourceType, uint32_t> resourceVersions;
void InitVersionInfo()
{
resourceVersions = std::map<Ship::ResourceType, uint32_t> {
{ Ship::ResourceType::SOH_Animation, 0 },
{ Ship::ResourceType::Texture, 0 },
{ Ship::ResourceType::SOH_PlayerAnimation, 0 },
{ Ship::ResourceType::DisplayList, 0 },
{ Ship::ResourceType::SOH_Room, 0 },
{ Ship::ResourceType::SOH_CollisionHeader, 0 },
{ Ship::ResourceType::SOH_Skeleton, 0 },
{ Ship::ResourceType::SOH_SkeletonLimb, 0 },
{ Ship::ResourceType::Matrix, 0 },
{ Ship::ResourceType::SOH_Path, 0 },
{ Ship::ResourceType::Vertex, 0 },
{ Ship::ResourceType::SOH_Cutscene, 0 },
{ Ship::ResourceType::Array, 0 },
{ Ship::ResourceType::SOH_Text, 0 },
{ Ship::ResourceType::Blob, 0 },
};
}
-9
View File
@@ -1,9 +0,0 @@
#pragma once
#include <map>
#include <vector>
#include "src/resource/Resource.h"
#define MAJOR_VERSION Ship::Version::Deckard
extern std::map<Ship::ResourceType, uint32_t> resourceVersions;
-44
View File
@@ -1,44 +0,0 @@
#include "VtxExporter.h"
#include <libultraship/bridge.h>
#include "VersionInfo.h"
void OTRExporter_Vtx::SaveArr(ZResource* res, const fs::path& outPath, const std::vector<ZResource*>& vec, BinaryWriter* writer)
{
WriteHeader(res, outPath, writer, Ship::ResourceType::Vertex);
for (auto& res: vec) {
ZVtx* vtx = (ZVtx*)res;
writer->Write(vtx->x);
writer->Write(vtx->y);
writer->Write(vtx->z);
writer->Write(vtx->flag);
writer->Write(vtx->s);
writer->Write(vtx->t);
writer->Write(vtx->r);
writer->Write(vtx->g);
writer->Write(vtx->b);
writer->Write(vtx->a);
}
}
void OTRExporter_Vtx::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
{
ZVtx* vtx = (ZVtx*)res;
WriteHeader(res, outPath, writer, Ship::ResourceType::Vertex);
writer->Write((uint32_t)1); //Yes I'm hard coding it to one, it *should* be fine.
writer->Write(vtx->x);
writer->Write(vtx->y);
writer->Write(vtx->z);
writer->Write(vtx->flag);
writer->Write(vtx->s);
writer->Write(vtx->t);
writer->Write(vtx->r);
writer->Write(vtx->g);
writer->Write(vtx->b);
writer->Write(vtx->a);
}
-13
View File
@@ -1,13 +0,0 @@
#pragma once
#include "ZResource.h"
#include "ZVtx.h"
#include "Exporter.h"
#include <Utils/BinaryWriter.h>
class OTRExporter_Vtx : public OTRExporter
{
public:
void SaveArr(ZResource* res, const fs::path& outPath, const std::vector<ZResource*>&, BinaryWriter* writer);
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
};
@@ -1,36 +0,0 @@
#ifndef COMMAND_MACROS_BASE_H
#define COMMAND_MACROS_BASE_H
/**
* Command Base macros intended for use in designing of more specific command macros
* Each macro packs bytes (B), halfwords (H) and words (W, for consistency) into a single word
*/
#define _SHIFTL(v, s, w) \
((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))
#define _SHIFTR(v, s, w) \
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
//#define CMD_BBBB(a, b, c, d) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8))
#define CMD_BBBB(a, b, c, d) (_SHIFTL(d, 24, 8) | _SHIFTL(c, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))
//#define CMD_BBH(a, b, c) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16))
#define CMD_BBH(a, b, c) (_SHIFTL(a, 0, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 16, 16))
//#define CMD_HBB(a, b, c) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 0, 8))
#define CMD_HBB(a, b, c) (_SHIFTL(c, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(a, 0, 16))
//#define CMD_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))
#define CMD_HH(a, b) (_SHIFTL(b, 16, 16) | _SHIFTL(a, 0, 16))
#define CMD_W(a) (a)
#if defined(__GNUC__)
#define CMD_F(a) {.f = (a)}
#else
#define CMD_F(a) {(a)}
#endif
#define CMD_PTR(a) (u32)(a)
#endif
-290
View File
@@ -1,290 +0,0 @@
#ifndef Z64CUTSCENE_H
#define Z64CUTSCENE_H
#if 0
#include <libultraship/libultra.h>
typedef struct {
/* 0x00 */ u16 entrance; // entrance index upon which the cutscene should trigger
/* 0x02 */ u8 ageRestriction; // 0 for adult only, 1 for child only, 2 for both ages
/* 0x03 */ u8 flag; // eventChkInf flag bound to the entrance cutscene
/* 0x04 */ void* segAddr; // segment offset location of the cutscene
} EntranceCutscene; // size = 0x8
typedef struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
/* 0x02 */ u16 nextPointFrame;
/* 0x04 */ f32 viewAngle; // in degrees
/* 0x08 */ Vec3s pos;
} CutsceneCameraPoint; // size = 0x10
typedef struct {
/* 0x00 */ Vec3f at;
/* 0x0C */ Vec3f eye;
/* 0x18 */ s16 roll;
/* 0x1A */ s16 fov;
} CutsceneCameraAngle; // size = 0x1C
typedef struct {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 relativeToPlayer;
} CutsceneCameraMove; // size = 0xC
typedef struct {
/* 0x00 */ u16 base;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdBase; // size = 0x6
typedef struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 setting;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdEnvLighting; // size = 0x6
typedef struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 sequence;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdMusicChange; // size = 0x6
typedef struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdMusicFade; // size = 0x6
typedef struct {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u8 unk_06;
/* 0x07 */ u8 unk_07;
/* 0x08 */ u8 unk_08;
} CsCmdUnknown9; // size = 0xA
typedef struct {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u8 hour;
/* 0x07 */ u8 minute;
} CsCmdDayTime; // size = 0x8
typedef struct {
/* 0x00 */ u16 base;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u16 type;
/* 0x08 */ u16 textId1;
/* 0x0A */ u16 textId2;
} CsCmdTextbox; // size = 0xC
typedef struct {
/* 0x00 */ u16 action; // "dousa"
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
union {
/* 0x06 */ Vec3s rot;
/* 0x06 */ Vec3us urot;
};
/* 0x0C */ Vec3i startPos;
/* 0x18 */ Vec3i endPos;
/* 0x24 */ Vec3i normal;
} CsCmdActorAction; // size = 0x30
#endif
typedef enum {
CS_STATE_IDLE,
CS_STATE_SKIPPABLE_INIT,
CS_STATE_SKIPPABLE_EXEC,
CS_STATE_UNSKIPPABLE_INIT,
CS_STATE_UNSKIPPABLE_EXEC
} CutsceneState;
typedef enum {
CS_CMD_00 = 0x0000,
CS_CMD_CAM_EYE = 0x0001,
CS_CMD_CAM_AT = 0x0002,
CS_CMD_MISC = 0x0003,
CS_CMD_SET_LIGHTING = 0x0004,
CS_CMD_CAM_EYE_REL_TO_PLAYER = 0x0005,
CS_CMD_CAM_AT_REL_TO_PLAYER = 0x0006,
CS_CMD_07 = 0x0007,
CS_CMD_08 = 0x0008,
CS_CMD_09 = 0x0009,
CS_CMD_TEXTBOX = 0x0013,
CS_CMD_SET_PLAYER_ACTION = 0x000A,
CS_CMD_SET_ACTOR_ACTION_1 = 0x000F,
CS_CMD_SET_ACTOR_ACTION_2 = 0x000E,
CS_CMD_SET_ACTOR_ACTION_3 = 0x0019,
CS_CMD_SET_ACTOR_ACTION_4 = 0x001D,
CS_CMD_SET_ACTOR_ACTION_5 = 0x001E,
CS_CMD_SET_ACTOR_ACTION_6 = 0x002C,
CS_CMD_SET_ACTOR_ACTION_7 = 0x001F,
CS_CMD_SET_ACTOR_ACTION_8 = 0x0031,
CS_CMD_SET_ACTOR_ACTION_9 = 0x003E,
CS_CMD_SET_ACTOR_ACTION_10 = 0x008F,
CS_CMD_SCENE_TRANS_FX = 0x002D,
CS_CMD_NOP = 0x000B,
CS_CMD_PLAYBGM = 0x0056,
CS_CMD_STOPBGM = 0x0057,
CS_CMD_FADEBGM = 0x007C,
CS_CMD_SETTIME = 0x008C,
CS_CMD_TERMINATOR = 0x03E8,
CS_CMD_END = 0xFFFF
} CutsceneCmd;
/**
* Special type for blocks of cutscene data, asm-processor checks
* arrays for CutsceneData type and converts floats within the array
* to their IEEE-754 representation. The array must close with };
* on its own line.
*
* Files that contain this type that are included in other C files
* must include an 'EARLY' qualifier to inform asm-processor that it
* must recursively process that include.
*
* Example: #include "file.c" EARLY
*/
typedef union CutsceneData {
int i;
float f;
short s[2];
char b[4];
} CutsceneData;
#define CS_CMD_CONTINUE 0
#define CS_CMD_STOP -1
// TODO confirm correctness, clarify names
typedef enum {
/* 0x00 */ INVALID_DESTINATION_0,
/* 0x01 */ CUTSCENE_MAP_GANON_HORSE,
/* 0x02 */ CUTSCENE_MAP_THREE_GODESSES_POST_DEKU_TREE,
/* 0x03 */ GERUDO_VALLEY_DIN,
/* 0x04 */ DEATH_MOUNTAIN_TRAIL_NAYRU,
/* 0x05 */ KOKIRI_FOREST_FARORE,
/* 0x06 */ CUTSCENE_MAP_TRIFORCE_CREATION,
/* 0x07 */ KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD,
/* 0x08 */ TEMPLE_OF_TIME_AFTER_USE_MS,
/* 0x09 */ GERUDO_VALLEY_DIN_2,
/* 0x0A */ LINKS_HOUSE_INTRO,
/* 0x0B */ KOKIRI_FOREST_INTRO,
/* 0x0C */ DEATH_MOUNTAIN_TRAIL_AFTER_GORON_RUBY,
/* 0x0D */ ZORAS_FOUNTAIN_AFTER_ZORAS_SAPPHIRE,
/* 0x0E */ KOKIRI_FOREST_AFTER_KOKIRI_EMERALD,
/* 0x0F */ TEMPLE_OF_TIME_KOKIRI_EMERALD, //unused
/* 0x10 */ TEMPLE_OF_TIME_GORON_RUBY, //unused
/* 0x11 */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE, //unused
/* 0x12 */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST,
/* 0x13 */ DEATH_MOUNTAIN_TRAIL_AFTER_INTRO,
/* 0x14 */ INVALID_DESTINATION_14,
/* 0x15 */ LAKE_HYLIA_WATER_RISES,
/* 0x16 */ DESERT_COLOSSUS_REQUIEM,
/* 0x17 */ CUTSCENE_MAP_CURSE_YOU,
/* 0x18 */ JABU_JABU_INTRO,
/* 0x19 */ CHAMBER_OF_SAGES_LIGHT_MEDALLION,
/* 0x1A */ TEMPLE_OF_TIME_KOKIRI_EMERALD_2, //duplicate of 0x000F
/* 0x1B */ TEMPLE_OF_TIME_GORON_RUBY_2, //duplicate of 0x0010
/* 0x1C */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE_2, //duplicate of 0x0011
/* 0x1D */ CHAMBER_OF_SAGES_FOREST_MEDALLION,
/* 0x1E */ CHAMBER_OF_SAGES_FIRE_MEDALLION,
/* 0x1F */ CHAMBER_OF_SAGES_WATER_MEDALLION,
/* 0x20 */ HYRULE_FIELD_FLASHBACK, //lacs part 4
/* 0x21 */ HYRULE_FIELD_AFTER_LAKE_HYLIA_OWL,
/* 0x22 */ CUTSCENE_MAP_GANON_AFTER_USE_MS,
/* 0x23 */ HYRULE_FIELD_INTRO_ZELDA_ESCAPE,
/* 0x24 */ INVALID_DESTINATION_24,
/* 0x25 */ INVALID_DESTINATION_25,
/* 0x26 */ CUTSCENE_MAP_SHEIKAH_LEGEND, //lacs part 2
/* 0x27 */ TEMPLE_OF_TIME_ZELDA_REVEAL, //lacs part 3
/* 0x28 */ TEMPLE_OF_TIME_GET_LIGHT_ARROWS, //lacs part 5
/* 0x29 */ LAKE_HYLIA_AFTER_BLUE_WARP,
/* 0x2A */ KAKARIKO_VILLAGE_DRAIN_WELL,
/* 0x2B */ WINDMILL_AFTER_DRAIN_WELL,
/* 0x2C */ TEMPLE_OF_TIME_AFTER_DOOR_OF_TIME_OPENS,
/* 0x2D */ INVALID_DESTINATION_2D,
/* 0x2E */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST_2, // duplicate of 0x0012
/* 0x2F */ KAKARIKO_VILLAGE_NOCTURNE_PART_2,
/* 0x30 */ DESERT_COLOSSUS_AFTER_REQUIEM,
/* 0x31 */ TEMPLE_OF_TIME_AFTER_LIGHT_ARROWS,
/* 0x32 */ KAKARIKO_VILLAGE_AFTER_NOCTURNE,
/* 0x33 */ HYRULE_FIELD_IMPA_ESCORT_CS,
/* 0x34 */ TEMPLE_OF_TIME_SONG_OF_TIME,
/* 0x35 */ HYRULE_FIELD_AFTER_SONG_OF_TIME,
/* 0x36 */ GERUDO_VALLEY_CREDITS,
/* 0x37 */ GERUDO_FORTRESS_CREDITS,
/* 0x38 */ KAKARIKO_VILLAGE_CREDITS,
/* 0x39 */ DEATH_MOUNTAIN_TRAIL_CREDITS_1,
/* 0x3A */ GORON_CITY_CREDITS, // unused?
/* 0x3B */ LAKE_HYLIA_CREDITS,
/* 0x3C */ ZORAS_FOUNTAIN_CREDITS, // unused
/* 0x3D */ ZORAS_DOMAIN_CREDITS,
/* 0x3E */ KOKIRI_FOREST_CREDITS_1,
/* 0x3F */ KOKIRI_FOREST_CREDITS_2,
/* 0x40 */ HYRULE_FIELD_CREDITS,
/* 0x41 */ LON_LON_RANCH_CREDITS_1,
/* 0x42 */ KAKARIKO_VILLAGE_AFTER_TRAIL_OWL,
/* 0x43 */ HTRULE_FIELD_UNUSED_ENTRANCE,
/* 0x44 */ CUTSCENE_MAP_FIRE,
/* 0x45 */ KOKIRI_FOREST_POST_FOREST_MEDALLION,
/* 0x46 */ DEATH_MOUNTAIN_TRAIL_CREDITS_2,
/* 0x47 */ TEMPLE_OF_TIME_CREDITS,
/* 0x48 */ ZELDAS_COURTYARD_CREDITS,
/* 0x49 */ LON_LON_RANCH_CREDITS_1_2, // duplicate of 0x0041
/* 0x4A */ LON_LON_RANCH_CREDITS_2,
/* 0x4B */ LON_LON_RANCH_CREDITS_3,
/* 0x4C */ LON_LON_RANCH_CREDITS_4,
/* 0x4D */ LON_LON_RANCH_CREDITS_5,
/* 0x4E */ LON_LON_RANCH_CREDITS_6,
/* 0x4F */ LON_LON_RANCH_NO_CS_1,
/* 0x50 */ LON_LON_RANCH_NO_CS_2,
/* 0x51 */ LON_LON_RANCH_NO_CS_3,
/* 0x52 */ LON_LON_RANCH_NO_CS_4,
/* 0x53 */ LON_LON_RANCH_NO_CS_5,
/* 0x54 */ LON_LON_RANCH_NO_CS_6,
/* 0x55 */ LON_LON_RANCH_NO_CS_7,
/* 0x56 */ LON_LON_RANCH_NO_CS_8,
/* 0x57 */ LON_LON_RANCH_NO_CS_9,
/* 0x58 */ LON_LON_RANCH_NO_CS_10,
/* 0x59 */ LON_LON_RANCH_NO_CS_11,
/* 0x5A */ LON_LON_RANCH_NO_CS_12,
/* 0x5B */ LON_LON_RANCH_NO_CS_13,
/* 0x5C */ LON_LON_RANCH_NO_CS_14,
/* 0x5D */ LON_LON_RANCH_NO_CS_15,
/* 0x5E */ LON_LON_RANCH_NO_CS_EPONAS_SONG,
/* 0x5F */ CONDITIONAL_DESTINATION, // TODO more descriptive name?
/* 0x60 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP,
/* 0x61 */ GRAVEYARD_AFTER_SHADOW_BLUE_WARP,
/* 0x62 */ DEATH_MOUNTAIN_CRATER_AFTER_FIRE_BLUE_WARP,
/* 0x63 */ SACRED_FOREST_MEADOW_AFTER_FOREST_BLUE_WARP,
/* 0x64 */ KOKIRI_FOREST_AFTER_FOREST_BLUE_WARP,
/* 0x65 */ DESERT_COLOSSUS_AFTER_SILVER_GAUNTLETS,
/* 0x66 */ TEMPLE_OF_TIME_FRONT_OF_PEDESTAL,
/* 0x67 */ HYRULE_FIELD_TITLE_SCREEN,
/* 0x68 */ SPIRIT_TEMPLE_BOSS_TITLE_SCREEN,
/* 0x69 */ GRAVEYARD_SUNS_SONG,
/* 0x6A */ ROYAL_FAMILYS_TOMB_SUNS_SONG,
/* 0x6B */ GANONS_CASTLE_AFTER_FOREST_TRIAL,
/* 0x6C */ GANONS_CASTLE_AFTER_WATER_TRIAL,
/* 0x6D */ GANONS_CASTLE_AFTER_SHADOW_TRIAL,
/* 0x6E */ GANONS_CASTLE_AFTER_FIRE_TRIAL,
/* 0x6F */ GANONS_CASTLE_AFTER_LIGHT_TRIAL,
/* 0x70 */ GANONS_CASTLE_AFTER_SPIRIT_TRIAL,
/* 0x71 */ GANONS_CASTLE_DISPEL_BARRIER_IF_CONDITIONS,
/* 0x72 */ HYRULE_FIELD_INTRO,
/* 0x73 */ HYRULE_FIELD_AFTER_IMPA_ESCORT,
/* 0x74 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP_2,
/* 0x75 */ HYRULE_FIELD_SKY,
/* 0x76 */ GANON_BATTLE_TOWER_COLLAPSE,
/* 0x77 */ ZELDAS_COURTYARD_RECEIVE_LETTER
} CutsceneTerminatorDestination;
#endif
@@ -1,448 +0,0 @@
#ifndef Z64CUTSCENE_COMMANDS_H
#define Z64CUTSCENE_COMMANDS_H
#include "command_macros_base.h"
#include "z64cutscene.h"
/**
* ARGS
* s32 totalEntries (e), s32 endFrame (n)
* FORMAT
* eeeeeeee nnnnnnnn
* size = 0x8
*/
#define CS_BEGIN_CUTSCENE(totalEntries, endFrame) CMD_W(totalEntries), CMD_W(endFrame)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* 00000001 0001ssss eeee0000
* size = 0xC
*/
#define CS_CAM_POS_LIST CS_CAM_EYE_LIST
#define CS_CAM_EYE_LIST(startFrame, endFrame) \
CS_CMD_CAM_EYE, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_POS CS_CAM_EYE
#define CS_CAM_EYE(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* 00000002 0001ssss eeee0000
* size = 0xC
*/
#define CS_CAM_FOCUS_POINT_LIST CS_CAM_AT_LIST
#define CS_CAM_AT_LIST(startFrame, endFrame) \
CS_CMD_CAM_AT, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_FOCUS_POINT CS_CAM_AT
#define CS_CAM_AT(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000003 eeeeeeee
* size = 0x8
*/
#define CS_MISC_LIST(entries) CS_CMD_MISC, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* uuuussss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
* size = 0x30
*/
#define CS_MISC(unk, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10) \
CMD_HH(unk, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), CMD_W(unused8), CMD_W(unused9), CMD_W(unused10)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000004 eeeeeeee
* size = 0x8
*/
#define CS_LIGHTING_LIST(entries) CS_CMD_SET_LIGHTING, CMD_W(entries)
/**
* ARGS
* s16 setting (m), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* mmmmssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_LIGHTING(setting, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(setting, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , may be consistently zero
* 00000005 0001ssss eeee0000
* size = 0xC
*/
#define CS_CAM_POS_PLAYER_LIST CS_CAM_EYE_REL_TO_PLAYER_LIST
#define CS_CAM_EYE_REL_TO_PLAYER_LIST(startFrame, endFrame) \
CS_CMD_CAM_EYE_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_POS_PLAYER CS_CAM_EYE_REL_TO_PLAYER
#define CS_CAM_EYE_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , may be consistently zero
* 00000006 0001ssss eeee0000
* size = 0xC
*/
#define CS_CAM_FOCUS_POINT_PLAYER_LIST CS_CAM_AT_REL_TO_PLAYER_LIST
#define CS_CAM_AT_REL_TO_PLAYER_LIST(startFrame, endFrame) \
CS_CMD_CAM_AT_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_FOCUS_POINT_PLAYER CS_CAM_AT_REL_TO_PLAYER
#define CS_CAM_AT_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* 00000007 uuuussss eeeeUUUU
* size = 0xC
*/
#define CS_CMD_07_LIST(unk, startFrame, endFrame, unused) \
CS_CMD_07, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CMD_07(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* 00000008 uuuussss eeeeUUUU
* size = 0xC
*/
#define CS_CMD_08_LIST(unk, startFrame, endFrame, unused) \
CS_CMD_08, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CMD_08(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000009 eeeeeeee
* size = 0x8
*/
#define CS_CMD_09_LIST(entries) CS_CMD_09, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s16 unk2 (v), s16 unk3 (w), s16 unk4 (x)
* FORMAT
* Capital U is Unused
* uuuussss eeeevvww xxUUUUUU
* size = 0xC
*/
#define CS_CMD_09(unk, startFrame, endFrame, unk2, unk3, unk4, unused0, unused1) \
CMD_HH(unk, startFrame), CMD_HBB(endFrame, unk2, unk3), CMD_BBH(unk4, unused0, unused1)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
*/
#define CS_UNK_DATA_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
/**
* ARGS
* s32 unk1 (a), s32 unk2 (b), s32 unk3 (c), s32 unk4 (d), s32 unk5 (e), s32 unk6 (f),
* s32 unk7 (g), s32 unk8 (h), s32 unk9 (i), s32 unk10 (j), s32 unk11 (k), s32 unk12 (l)
* FORMAT
* aaaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll
* size = 0x30
*/
#define CS_UNK_DATA(unk1, unk2, unk3, unk4, unk5, unk6, unk7, unk8, unk9, unk10, unk11, unk12) \
CMD_W(unk1), CMD_W(unk2), CMD_W(unk3), CMD_W(unk4), CMD_W(unk5), CMD_W(unk6), \
CMD_W(unk7), CMD_W(unk8), CMD_W(unk9), CMD_W(unk10), CMD_W(unk11), CMD_W(unk12)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
*/
#define CS_NPC_ACTION_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
/**
* ARGS
* s16 npcAction (a), s16 startFrame (s), s16 endFrame (e),
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
* s32 startX (i), s32 startY (j), s32 startZ (k),
* s32 endX (l), s32 endY (m), s32 endZ (n),
* f32 normX (x), f32 normY (y), f32 normZ (z),
* FORMAT
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
* size = 0x30
*/
#define CS_NPC_ACTION(npcAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
CMD_HH(npcAction, startFrame), CMD_HH(endFrame, rotX), CMD_HH(rotY, rotZ), \
CMD_W(startX), CMD_W(startY), CMD_W(startZ), \
CMD_W(endX), CMD_W(endY), CMD_W(endZ), \
CMD_F(normX), CMD_F(normY), CMD_F(normZ)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
*/
#define CS_PLAYER_ACTION_LIST(entries) CS_CMD_SET_PLAYER_ACTION, CMD_W(entries)
/**
* ARGS
* s16 linkAction (a), s16 startFrame (s), s16 endFrame (e),
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
* s32 startX (i), s32 startY (j), s32 startZ (k),
* s32 endX (l), s32 endY (m), s32 endZ (n),
* f32 normX (x), f32 normY (y), f32 normZ (z),
* FORMAT
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
* size = 0x30
*/
#define CS_PLAYER_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
CS_NPC_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000013 eeeeeeee
* size = 0x8
*/
#define CS_TEXT_LIST(entries) CS_CMD_TEXTBOX, CMD_W(entries)
/**
* ARGS
* s16 messageId (i), s16 startFrame (s), s16 endFrame (e), s16 type (o),
* s16 topOptionBranch (y), s16 bottomOptionBranch (n)
* FORMAT
* iiiissss eeeeoooo yyyynnnn
* size = 0xC
*/
#define CS_TEXT_DISPLAY_TEXTBOX(messageId, startFrame, endFrame, type, topOptionBranch, bottomOptionBranch) \
CMD_HH(messageId, startFrame), CMD_HH(endFrame, type), CMD_HH(topOptionBranch, bottomOptionBranch)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* FFFFssss eeeeFFFF FFFFFFFF
* size = 0xC
*/
#define CS_TEXT_NONE(startFrame, endFrame) \
CS_TEXT_DISPLAY_TEXTBOX(0xFFFF, startFrame, endFrame, 0xFFFF, 0xFFFF, 0xFFFF)
/**
* ARGS
* s16 ocarinaSongAction (o), s16 startFrame (s), s16 endFrame (e), s16 topOptionBranch (i)
* FORMAT
* oooossss eeee0002 iiiiFFFF
* size = 0xC
*/
#define CS_TEXT_LEARN_SONG(ocarinaSongAction, startFrame, endFrame, messageId) \
CS_TEXT_DISPLAY_TEXTBOX(ocarinaSongAction, startFrame, endFrame, 0x0002, messageId, 0xFFFF)
/**
* ARGS
* s16 transitionType (t), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , endFrame duplicate
* 0000002D 00000001 ttttssss eeeeUUUU
* size = 0x10
*/
#define CS_SCENE_TRANS_FX(transitionType, startFrame, endFrame) \
CS_CMD_SCENE_TRANS_FX, 0x00000001, CMD_HH(transitionType, startFrame), CMD_HH(endFrame, endFrame)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000056 eeeeeeee
* size = 0x8
*/
#define CS_PLAY_BGM_LIST(entries) CS_CMD_PLAYBGM, CMD_W(entries)
/**
* ARGS
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* qqqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_PLAY_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000057 eeeeeeee
* size = 0x8
*/
#define CS_STOP_BGM_LIST(entries) CS_CMD_STOPBGM, CMD_W(entries)
/**
* ARGS
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* uuqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_STOP_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 0000007C eeeeeeee
* size = 0x8
*/
#define CS_FADE_BGM_LIST(entries) CS_CMD_FADEBGM, CMD_W(entries)
/**
* ARGS
* s16 fadeType (t), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* ttttssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_FADE_BGM(fadeType, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(fadeType, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 0000008C eeeeeeee
* size = 0x8
*/
#define CS_TIME_LIST(entries) CS_CMD_SETTIME, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s8 hour (h), s8 min (m)
* FORMAT
* Capital U is Unused
* uuuussss eeeehhmm UUUUUUUU
* size = 0xC
*/
#define CS_TIME(unk, startFrame, endFrame, hour, min, unused) \
CMD_HH(unk, startFrame), \
CMD_HBB(endFrame, hour, min), \
CMD_W(unused)
/**
* ARGS
* CutsceneTerminatorDestination dest (d), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , endFrame duplicate
* 000003E8 00000001 ddddssss eeeeUUUU
* size = 0x10
*/
#define CS_TERMINATOR(dest, startFrame, endFrame) \
CS_CMD_TERMINATOR, 0x00000001, CMD_HH(dest, startFrame), CMD_HH(endFrame, endFrame)
/**
* Marks the end of a cutscene
*/
#define CS_END() 0xFFFFFFFF, 0x00000000
#endif
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

-47
View File
@@ -1,47 +0,0 @@
#!/usr/bin/env python3
import os, sys, shutil
import shutil
from rom_info import Z64Rom
import rom_chooser
import struct
import subprocess
import argparse
def BuildOTR(xmlPath, rom, zapd_exe=None):
shutil.copytree("assets", "Extract/assets")
if not zapd_exe:
zapd_exe = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPDTR/ZAPD.out"
exec_cmd = [zapd_exe, "ed", "-i", xmlPath, "-b", rom, "-fl", "CFG/filelists",
"-o", "placeholder", "-osf", "placeholder", "-gsf", "1",
"-rconf", "CFG/Config.xml", "-se", "OTR", "--otrfile",
"oot-mq.otr" if Z64Rom.isMqRom(rom) else "oot.otr"]
print(exec_cmd)
exitValue = subprocess.call(exec_cmd)
if exitValue != 0:
print("\n")
print("Error when building the OTR file...", file=os.sys.stderr)
print("Aborting...", file=os.sys.stderr)
print("\n")
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-z", "--zapd", help="Path to ZAPD executable", dest="zapd_exe", type=str)
parser.add_argument("rom", help="Path to the rom", type=str, nargs="?")
parser.add_argument("--non-interactive", help="Runs the script non-interactively for use in build scripts.", dest="non_interactive", action="store_true")
parser.add_argument("-v", "--verbose", help="Display rom's header checksums and their corresponding xml folder", dest="verbose", action="store_true")
args = parser.parse_args()
roms = [ Z64Rom(args.rom) ] if args.rom else rom_chooser.chooseROM(args.verbose, args.non_interactive)
for rom in roms:
if (os.path.exists("Extract")):
shutil.rmtree("Extract")
BuildOTR("../soh/assets/xml/" + rom.version.xml_ver + "/", rom.file_path, zapd_exe=args.zapd_exe)
if __name__ == "__main__":
main()
-53
View File
@@ -1,53 +0,0 @@
#!/usr/bin/python3
import os
import sys
import struct
from multiprocessing import Pool, cpu_count
from rom_info import Z64Rom
import rom_chooser
rom = None
def initialize_worker(input_rom):
global rom
rom = input_rom
def ExtractFunc(i):
dma_file = rom.getDmaEntryByIndex(i)
dma_data = rom.readDmaEntry(dma_file)
filename = '../soh/baserom/' + rom.version.file_table[i]
print('extracting ' + filename + " (0x%08X, 0x%08X)" % (dma_file.virtStart, dma_file.virtEnd))
try:
with open(filename, 'wb') as f:
f.write(dma_data)
except IOError:
print('failed to write file ' + filename)
# TODO: handle this better
if dma_file.compressed:
os.system('tools/yaz0 -d ' + filename + ' ' + filename)
#####################################################################
def main():
try:
os.mkdir('../soh/baserom')
except:
pass
rom_path = rom_chooser.chooseROM()
input_rom = Z64Rom(rom_path)
# extract files
num_cores = cpu_count()
print("Extracting baserom with " + str(num_cores) + " CPU cores.")
with Pool(num_cores, initialize_worker, (input_rom,)) as p:
p.map(ExtractFunc, range(len(input_rom.version.file_table)))
if __name__ == "__main__":
main()
-8
View File
@@ -1,8 +0,0 @@
{
"MQDebug": {
"bankdefs": [1281424, 128],
"fontdefs": [1278576, 624],
"fontmaps": [1279200, 448],
"seqdefs": [1279648, 1776]
}
}

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