* 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
* First test of gathering some gameplay stats
* timer changes and other stuff
* Move code to new files + rename
* Name change - gamePlayStats
* Finish rename, remove n64ddFlag checks
* Improve item get times
* Better time tracking, more stats,
* Put button under Enhancements
* Fix merge conflict
* Add pauseCount, fix bug with rando items
* Adjust inits/declarations
* step counter
* Name change: "itemGetTime" to "timestamp"
* Tidying + CI test
* Set up array for stat counts
* Macro
#define GAMEPLAYSTAT_TOTAL_TIME (gSaveContext.gameplayStats.playTimer / 2 + gSaveContext.gameplayStats.pauseTimer / 3)
* Add boss defeat timestamps
* Add sword swings, pots broken, bushes cut
* fix int type
* Add counts for enemies defeated
Broken down by enemy, with a total
* Add ammo used
* Hide breakdowns until count > 0
* Forgot Big Octo
* Count chests opened
* Update after LUS submodule
* Enemy count spacing
* Comments
* Count 3 mini Floormasters as 1 Floormaster
+ some cleanup
* Comments
* Colour coding for timestamps on quest items
i.e. medallions/stones/songs
* Move stat into the sohStats struct
+ rearrange the counts enum for easier addition of future counts
* Some documentation + count button presses
* Stop counting button presses when Ganon defeated
* Couple bugfixes
Add count for Gerudo Thief, fix step counter counting in some situations where it shouldn't
* Fix comment
* Added difficulty settings menu for shooting gallery
* Reverted linux assert fix for PR
* Added difficulty option to not randomize rupee order as adult
* Changed checkbox wording due to text overflow
* Reverted incorrect change from merge
* Update soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Added Checkbox to turn on and off all customizations in shooting gallery behavior
* Added disable-switch for sliders, shooting gallery difficulty options are now disabled when customize behavior is turned off instead of hidden
Co-authored-by: Ralphie Morell <rafael.morell@techfield.us>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Added button to switch age
* Added logic to switch link's age
Reloads link from last entrance he went through once his age is switched.
* Link now respawns where he last was
* Update game.c
* move setting to GameMenuBar.cpp, fix build issues
Co-authored-by: Jake Edvenson <77412657+JakeEdvenson@users.noreply.github.com>
Co-authored-by: briaguya <briaguya@alice>
* First pass on SFX Editor
* Fix crash at night in Colossus (and probably other undocumented issues)
The SFX editor was swapping out the bytes corresponding to the sequence
to be played regardless of the audio command being issued. This fix
ensures the swap will only happen on commands which actually treat those
bytes as a sequence identifier.
* enabling a few more songs/fanfares
* Removing a few broken bgms, fixing the preview button returning to the wrong bgm
* Fixes restoration from miniboss music to previous one
* add timed minigame into the sounds pool
* A few small tweaks
* More cleanup and add instruments
* adjust usage of getReverseReplacementSeq
* Changes from feedback and prefix external methods with SfxEditor
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
* 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>
* Refactor GetCheckFromActor, WIP currently broken
* Fixes build errors via forward declarations and emplace vs insert.
* Removes some unnecessary code.
* Fixes non-windows build errors.
* Fixes Deku Scrubs outside of grottos.
* Fixes DMC Deku Scrub Grotto Center
* Fixes Ruto Blue Warp
* Fix issue identifying blue warp rando checks
* Move identifyCow to randomizer.cpp
* Various updates to vanilla check objects
* Identify MQ checks in check object table
* Adjustments to how multimap is used and initialized
* Convert u16 in check object table to s16
* Fix a few issues with MQ checks
* Fix issue with TWO_ACTOR_PARAMS macro
* Fixes some scrubs and cows appearing as identical.
* Fixes known gossip stone issues (ToT, DC)
* Fixes Dampe's Gravedigging tour rcObject
* Fix crash on locations tab
* Enable master quest dungeons in rando
Co-authored-by: Christopher Leggett <chris@leggett.dev>
* Add Cheat for disabling age check on equipment
* Add Cheat for disabling age check on equipment... pt 2
* cleanup some logic with macros
* Keep adult strength as child & prevent equipment greyout
* Timeless Equipment cleanup
* Add toggle option for walk speed modifiers
* Preserve toggle status between scene transitions
* Apply suggestions from code review
renaming from `gSpeedToggle` to `gWalkSpeedToggle`
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.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>
* Implement most of chest size and texture matches contents, just need an item table
* Add GetItemCategory to getItem tables
* Revert changes that tie chest size and texture to randomizer
* Support chest size & texture as an enhancement that works on outside of rando
* Add gChestSizeAndTextureMatchesContents to rando preset
* Prevent gChestSizeAndTextureMatchesContents in chest minigame
* Fix for forest temple boss key chest
* Add options for texture or size only
* Fixes a few bugs I introduced for MQ file select screen.
- MQ Saves could not be loaded while only an mq otr is present, because `requiresOriginal` was true when `gSaveContext.mqDungeonCount` was less than 12. That value only ever gets set for rando saves, so I added a check for the rando flag to that conditional.
- The rando tag was not getting grayed out with the rest of the save file.
- Some necessary meta info wasn't getting loaded when the randomizer CVar was off. Removed that check so that the rando save data always gets loaded during InitMeta. That way the amount of mq dungeons can be checked for validity with the loaded set of OTRs even if randomizer isn't enabled.
* i not 1
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>
* Support for patching DLists outside of OTR, mostly for cosmetics and bug fixes
* Store original dlist instruction for unpatching
* Rename sandstorm patch variable
* Use unordered map for originalGfx;