* 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.
* 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>
* 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
* 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>
* 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>
* 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>
* 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.
* add loadgame/exitgame GI hooks
* implement loadgame/exitgame hooks in game code
* move entrance tracker data lifecycle to hooks
* update cosmetic editor to update onloadgame hook
* fix entrance init and entrance tracker not working properly when no spoiler log is loaded
* fix rando adult trade spoilable items reverting when no spoiler log loaded
* full health spawn
Co-authored-by: MoriyaFaith <46070717+MoriyaFaith@users.noreply.github.com>
* add enahancement to gamemenubar, update to use new cvar method names, simplify save loading logic so loading a save with less than 3 hearts spawns with full hearts with enhancement enabled instead of spawing with 3
* formatting
Co-authored-by: MoriyaFaith <46070717+MoriyaFaith@users.noreply.github.com>
* initial pass for entrance tracker
* add search meta tags to entrance tracker data; clear entrance tracker on title screen
* rename to use playstate/play
* fix lus imports
* move discovered entrance info to SohStats struct
* Add scene info and highlighting to entrance tracker
* hide undiscovered text when searching
* add comments for entrance tracker
* fix merge conflict error
* account for zora river -> hyrule field water entrance in tracker
* fix assignement error
* remove unneeded defaults from debug file init
* adjust entrance tracker settings and add more search tags
* convert magic numbers to defines; add more comments to entrance tracker; clarify variable names
* add reverse index to entrance tracker data to compare with instead of using strings
* rename variables
* use trial enum instead of magic numbers
* simplify trial count/random trial logic
* set default to set number
Co-authored-by: briaguya <briaguya@alice>
* First round of upstream updates and commenting patternss
* Renames from z64player
* Renames from z64save
* Undo changes to legacy save struct
* Add missing reference from entrance rando
* Fixes from stat tracker
* More tweaks
* Adds most visuals and interactions for quest select menu.
* "Scrolling" menu, adds remaining sub/title textures, language support
* Tweak: ENG, FRA, GER title to match the original style
* ADD: Randomizer tex
* TWEAK: Randomizer ZAPD extension format
* Adds control stick prompts to the "scrolling" menu.
* Adds third entry for Randomizer.
* Bold text on randomizer subtitle.
* Ensures the game won't allow selecting an unsupported quest.
* Makes save files be created from the quest menu selection.
* Removes the master quest and randomizer checkboxes (no longer needed).
* Removes lock on MQ-only rando.
* Skips quest select if only one quest is playable.
* Adds ability to back out of quest select menu
* Show seed icons while Randomizer is selected on Quest Select Menu.
* Fixes custom hud colors and d-pad navigation.
* Implements backing up from name entry to quest select.
Also implements backwards rotations on the file select screen.
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
* Updated starting age restrictions;
patched specific circumstances in 3d rando
* cleanup some testing stuff
* whoops
* become Sherlock Holmes; tooltip cleanup
* Explicit logic for forcing child age
* Apply bria's suggestion
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Changes OTR Extraction to have specific mq and nonmq paths.
Also updates the game to load resources according to whether or not
Master Quest or Vanilla is loaded.
* Removes unneeded code from the last commit.
* Fixes some weird formatting in ZRom.c
* Loads oot-mq.otr and patches oot.otr on top, if both are present.
If only one or the other are present, it becomes the only and main OTR.
* Adds ImGui Logic for whether or an MQ Checkbox.
Checkbox checked only specifies whether new saves should be MQ or not.
Checkbox is disabled or force-enabled according to which OTRs are loaded.
Also as a necessity includes tracking what game versions have been loaded
from the OTRs.
* Adds MQ settings logic for Randomizer's ImGui menu.
* Writes Master Quest dungeons to the spoiler log
* Loads MQ Dungeons from spoiler, persists in save, and loads when appropriate.
* Adds logic to prevent loading or creating incompatible rando saves.
* Fixdes some linux build issues and new rando save issues
* Makes appimage create both vanilla and mq otrs
If either rom is present, it makes the corresponding OTR. If both are present,
it will make both. If one OTR is present but both roms are present, it will
create the missing OTR.
* Makes it so a randomized save file will not be marked as MQ.
* Refactors to load all OTRs from MainPath or a specific list.
Also adds the ability to take a std::unordered_set of hashes to
validate each OTR's version file against.
* Fixes a syntax error
* Makes ExtractAssets output Vanilla and MQ OTRs if both roms are present
* Fixes asset generation bug.
* Partially working fix for dual OTR extract_assets
Currently the cmake ExtractAssets target will return with a 1 if you
only end up exporting one type of OTR isntead of both. Haven't found
a great way to only attempt to copy a file if it exists from within
cmake. It does actually correctly copy the OTR that is generated,
despite the error from copying the other one.
Pushing as is for now but will keep investigating.
* Adds oot-mq.otr to the gitignore.
* Makes ExtractAssets not fail on only one rom/OTR.
* Removes PatchesPath from the constructors requiring OTRFiles vector.
* Renames OOT_UNKNOWN to just UNKNOWN to remove OOT specific reference.
* Removes randomizing MQ Dungeons and re-disables MQ rando.
Doing this so the PR can get merged quicker with just the Dual OTR
support and won't need to wait on rando logic to be updated. That
will happen in another PR directly after the merge.
* Update mac startup script for dual otr
* Update soh/macosx/soh-macos.sh
* Update soh/macosx/soh-macos.sh
* Update soh/macosx/soh-macos.sh
* Implements new BinaryReader to fix Linux build issue.
BinaryReader itself comes from https://github.com/Moneyl/BinaryTools
I added a wrapper to adapt it to the ABI from ZAPD's Binary Reader and
add Endianness checking. I also had to copy a handful of other bits and
pieces from ZAPD to make it all function as expected.
* A few edits to the updatream BinaryReader to compile it on Linux.
* Adds the Endianness to the first byte of the version file.
* Fixes Jenkins
* Addresses some of Kenix's comments
* Renames `ReadNullTerminatedString` to `ReadCString`
* Refactors Archive::LoadFile into a private method with more arguments.
* Removes BitConverter and extends existing endianness.h instead.
* Fixes an endianness issue with the version file.
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>