* 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
* 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>
* 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.
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* 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>
* 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
* 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>
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.
* 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>
* 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>
* 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>
* 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>
* 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>
* 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
* 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
* 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
* 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>
* 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>
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).
* 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.
* When rupees are given as starting items, they still modify `gSaveContext.rupeeAccumulator`, which means that if you make a new file, start it, and reload without saving, or exit SoH before starting the new file, those rupees were lost. This adds a check for `gPlayState` being NULL, and if it is, adds those initial rupees to the rupee count directly.
* Update soh/src/code/z_parameter.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
---------
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* 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.
* save build version to savefile
* adjust rando hash icons to use fade in/out
* add dialog message support on the file select screen and display rando version warning
* remove duplicated message functions and use stubbed play state instead for rando warning
* add major/minor/patch version saving to file and compare against
* use strncpy and memset for build version
* don't show rando warning one copy/erase screens
* review feedback
* Add german and french translations for rando warning
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
---------
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
* 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
* Rename "SFX Editor" to "Audio Editor"
* Move some functionality out into a new class `AudioCollection`
* Add a tab to exclude sfx/sequences from shuffle pool
---------
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: briaguya <briaguya>
Co-authored-by: David Chavez <david@dcvz.io>
* Update z_camera.c
* Update GameControlEditor.cpp
* Update GameControlEditor.cpp
* Update GameControlEditor.cpp
Adding Sliders for first person X and Y axis
* Update z_player.c
Modified variables to allowed separate sensitivity settings for x and y axis
* 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
* Moves SoH mixer to SoH from LUS.
* Debug camera now works in SoH, but mempak saving does not (yet).
* Debug camera is now enabled/disabled based on the gDebugEnabled cvar.
* Updates OTRGlobals comments
* Updates OTRGlobals comments
* Begin GameInteractor
* Basic skeleton of PoC
* WIP
* First 2 CC effects transitioned to GameInteractor
* Prepare GameInteractor classes for CrowdControl
* More effects & replace chaosEffects with GameInteractor
* CC connection fixes & all CC effects (enemy spawns still borked)
* First couple of build error fixes
* Fix build
* Proper enemy spawning
* Clean up old CC code
* Extract link size/invisibility into GameInteractor
* Small fix/cleanup
* Suggestions for PR
* Address PR comment
* Addressed more comments & small adjustments
* Fix crash when spawning enemies
* Remove Remove()
* Move checks into Apply() and move CC and some console commands to it
* Use inheritance to abstract check on application
* Rename prefix Actions with RawAction
* Make Remove return a Result
* Fix issue with compilation
* debugconsole -> GameInteractionEffects progress
* Add State in GI
* Unify some Effects
* Port more debug console items
* Remove state modifyiers from raw actions
* Port over last raw action / state in console
* Adjust some types
* Consolidate link size modifier effect
* Adjust more types
* Define category strings in CC
* Clean up remaining non defined strings
* Fix bug in timed effects
* Rename old pack
* CC fixes
* Translate GI enum function
* Console cleanup/fixes/consistency
Co-authored-by: David Chavez <david@dcvz.io>
* 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>
* New function: overlay text duration in seconds.
`Overlay_DisplayText` took a float as an argument, with no clear indication of what that float represented. That float also evaluates to different durations given different frame rates. However, since we know what the frame rate should be at any given time (since it's stored in a CVar) we can calculate what this duration should be based on the number of seconds we want the overlay to be displayed. That's what `Overlay_DisplayText_Seconds` does.
* Adds Slider for Overlay Sequence Name Durations
* sync 3ds upstream logic changes for boss rooms
* add boss shuffle settings and handling to 3ds code
* add boss shuffle handling to game code
* repair authentically bugged entrances for boss shuffle
* add boss entrances to the entrance tracker
* unset hint area for boss rooms to fix altar hint
* update boss reward hints to not mention dungeons
* one more boss heart container hint fix
* reorder entrance rando funcs
* support closed forest with boss shuffle and simple boss room entrance pairs in shuffle table
* fix death warp in boss rooms without saving; fix KD boss room in tracker
* remove boss shuffle check from dungeon open checks and some cleanups
* add boss shuffle to preset clear
* remove dungeon entry exit connection from boss rooms
* another no hint fix for boss shuffle
* undo change for exact location hints
* clarify comments
* Added too much
* Added 3d settings and brought over to soh
* fixed conditionals for replacing LA hint
* whoops
* Finshed making settings consistent; minor text edit
* fix leftovers from adding warp hints
* more fixes from merge
* fix skull hint messages
* Added fire temple goron junk hints; menu stuff
* Address feedback
* Added optional scrub text
* whoops
* Add hint cvars to clear preset func
* whoops again
* whoops the third
* ADD: French Pass
* FIXED: Dampe + Skull Reward
* TWEAK: German skulltula hint
* TWEAK: French oopsie
* Address feedback
* whoops
* remove "staticness" from altar/ganon text funcs
* ADD: German
* actually add warp song hints to things;
always generate ganon hint and let OTRGlobals handle showing it
* Fix CVar Getters
* whoops
* for real this time
* Actually implemented scrub text in 3d rando
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
* Adds option for showing sequence names on the overlay
Allows sequences to appear on the overlay in the bottom right corner for a few seconds whenever a new one is loaded into the primary sequence player. This means it does not apply to fanfares or enemy bgm. Fanfares I chose not to display because it would cause a lot of text to display back to back in some areas, and enemy bgm would have some technical challenges with this due to the way it loads. Mainly because the Lost Woods music would load in Goron City the same way (as well as the opposite).
* Fixes crash when a sequence without a name is attempted to be displayed.
* Removes accidentally committed CMakeSettings.json
* Updates CVar_GetS32 to CVarGetInteger
* Initial camera distance slider
* works with freecam
* improving the settings configurability, adding distance slider and transition speed for the free camera
adding seperate sensitivity and invert settings for aiming/first person camera
* spelling
* tooltip msg on camera invvert
* typos
* removing the original free camera checkbox in experimental menu
* adding name change to new presets file
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
* added fix option to fix camera swing; Fixes camera getting stuck on collision when standing still, also fixes slight shift back in camera when stop moving
* add option to fix hang off ledge swing rate; Fixes camera swing rate when player falls of a ledge and camera swings around
* adding camera fixes to preset list
* Cosmetic Editor v3
* Workaround for cvar_clear not working correctly
* Nest RGBA values under Value key
* Implement arrow cosmetics
* Implement keese cosmetics
* Tweaks to life meter
* Implement file choose color
* Remove old title fire colors
* A few more silly things
* Fix from upstream pulls
* Fix hilts and sword during ganon cutscene
* Add slingshot
* Add metal trap and red ice
* Add iron knuckles cosmetics
* Add navi cosmetics
* Attempt to fix linux error
* adjust some comments and alignment
* Implement trails cosmetics
* Implement charged sword spins
* Comment out options that haven't been implemented
* Fix exploded rupee color in shooting gallery
* Add two silly options
* Add comments and minor changes from feedback
* Adjust comment about boomerang gem
* Gracefully handle chest textures missing
* Allows OTRExporter to parse pairs of .seq and .meta files
* Gets added sequences available to SfxEditor and playing in game.
* Some cleanup of the names appearing in the SfxEditor.
* Moves sequence swap lower in the audio command stack.
* Increases temp cache memory available on title/file-select screen.
Certain sequences wouldn't play on the file select and title screen
because they were too large to be cached.
* Introduces workaround for 255 sequence limit.
* Bug fixes and cleanup.
* Fixes bug where fanfares would sometimes disable the sequence player.
* Fixes bug causing certain areas to discard caches when loading enemy music.
* Fixes potential config-related crash by replacing invalid characters.
* Allows custom bgm to play in all BGM categories.
* Properly randomizes the custom tracks.
* Moves custom sequences to a patch OTR.
* If custom music was not loaded, fall back to default values.
* Prevents OOB crash on Synthwave array and adds octave drop feature.
Added octave drop to experimental features, which drops the octave of
a note that is too high for the audio engine to actually play. Without
this, some custom sequences have notes which cap at a specific value
and sound terrible. At least with this they will still harmonize with
the other notes. Experimental tab added to the SfxEditor to house
the checkbox for the octave drop feature.
* Adds more pool memory for a few tracks that couldn't fit.
* Some cleanup on the generated music archive process.
* Fixes missed memory boost from earlier.
* Adds ability to remove enemy proximity music.
* Applies correct cache policy to fanfares to prevent unloading sequences.
* Removes case-sensitiveness of the sequence type.
* Fixes not reverting to sequence after miniboss.
* Fixes transition to/from miniboss (again) and ocarina bug.
To be clear, fixes the more rampant portable ocarina bug present in my earlier builds, not the authentic one.
* Finally properly fixes transitions between sequences
For miniboss fights and SfxEditor previews.
* Removes unneeded boolean expression.
* Adds randomize button to individual SFX Editor entries.
* Fixes lost woods music overwriting goron city music.
* Plays swapped Hyrule Field music when transitioning to daytime.
* Fixes swapping Gerudo Valley music when transitioning from daytime.
* Updates custom sequence OTRPath to match SequenceOTRizer.
* Reverts changes to OTRExporter in favor of external tool
* Fixes formatting issues.
* Attempts to fix formatting issue in git diff.
* Should actually fix formatting issues.
* Should fix mac/linux exclusive build error.
* Fixes segfault on macos.
* sort custom seqs
* Fixes audioseq crash when under 255 seqs
* Removes magic numbers.
* Removes commented out code.
* fixes formatting in SfxEditor.h
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Cleans up the one hardcoded QueueSeqCmd call.
* Fixes unneeded erroneous memory boost applied earlier.
* Applies additional formatting/cleanliness suggestions from review
* Fixes small logic bug
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@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
* 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 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>
* 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
* 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>