Commit Graph

65 Commits

Author SHA1 Message Date
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
Malkierian 56d8dd6d8b
All MenuBar enhancement CVars done. (#4064) 2024-04-26 00:31:28 +00: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
Adam Bird 7bd2a7c3a6 Merge remote-tracking branch 'origin/develop' into merge-macready-805 2024-02-28 23:49:06 -05:00
Archez fb6ea42560
prevent remember save location in dungeons/boss rooms (#3983) 2024-02-28 22:33:51 -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
Adam Bird 44ee6da0aa
fix quest assignment (#3343) 2023-11-04 22:52:09 +01:00
inspectredc 5dd82f59e2
Player Equip Docs (#3282)
* hopefully everything

* update docs for MS shuffle sections
2023-10-30 10:56:36 -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 e66be83eb7
Fix quest type bleeding through saves (#3241) 2023-10-05 15:35:49 -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
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
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
Garrett Cox 7c5efb2785
Flags stuff (#3014)
* Manual adjustments to flags

* Script run to adjust flags
2023-06-20 11:54:02 -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
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
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 2bd8316d54 Merge remote-tracking branch 'hm/develop-khan' into khan-to-dev 2023-03-14 00:29:30 -04: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
Adam Bird 7c558ae089
fix rando quest selection falling back to vanilla saves (#2599) 2023-03-08 13:09:22 -05:00
Adam Bird f7bb807940
[Game Interactor] Add LoadGame and ExitGame hooks (#2542)
* 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
2023-02-26 23:04:57 -05:00
Adam Bird 67421179e4
Fix: Rando settings not being initialized in time (#2461)
* 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
2023-02-13 02:00:59 -05:00
Adam Bird cb5faa1ac8
fix mido spawn for dungeon entrance rando (#2384) 2023-01-23 14:08:16 -05:00
briaguya a9e7faa180
Full health spawn (#2377)
* 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>
2023-01-21 09:36:35 -05:00
Patrick12115 c0ad43e509
Add Starting Songs Option (#2221) 2023-01-19 04:54:29 -05:00
briaguya 15a6568607
Merge branch 'develop' into bradmerge 2023-01-17 16:44:46 -05:00
Adam Bird ff3548a1b6
Rando: Adjust locked door logic for temples and give starting keys for MQ Spirit (#2343) 2023-01-17 21:03:08 +01:00
briaguya ba13e6b2c4 refactor: use LUS 1.0 RC
Co-authored-by: kenix3 <kenixwhisperwind@gmail.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: KiritoDv <kiritodev01@gmail.com>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-01-17 00:33:56 -05:00
Adam Bird 8337e4e24f
Rando: Entrance Tracker v1 (#2005)
* 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
2022-12-06 23:44:14 -05:00
Adam Bird d9f3844b2d
[Feature] Entrance Rando v2 (#2071) 2022-12-07 00:37:50 +01:00
briaguya 3921f15264
use enum for boss keysanity (#2096)
* use enum for boss keysanity

* merge

Co-authored-by: briaguya <briaguya@alice>
2022-12-06 01:03:55 -05:00
briaguya a93728599d
use enum values for maps and compasses (#2086)
Co-authored-by: briaguya <briaguya@alice>
2022-12-06 00:59:48 -05:00
briaguya 321e563c82
use enum for starting age (#2085)
Co-authored-by: briaguya <briaguya@alice>
2022-12-06 00:34:30 -05:00
briaguya 00a862a252
use trial enum instead of magic numbers (#2039)
* use trial enum instead of magic numbers

* simplify trial count/random trial logic

* set default to set number

Co-authored-by: briaguya <briaguya@alice>
2022-11-29 22:43:05 -05:00
briaguya 06df45efc7
use forest enum values instead of magic numbers (#2038) 2022-11-30 02:32:22 +01:00
briaguya 17c6a3653c
use enum for keysanity (#2044) 2022-11-30 02:05:11 +01:00
briaguya b976ef58fe
use enum for ganon's boss key (#2046) 2022-11-30 02:01:41 +01:00
briaguya aba034ef53
Use enum for links pocket, dungeon reward shuffle (#2045)
Co-authored-by: briaguya <briaguya@alice>
2022-11-30 00:37:53 +01:00
briaguya ec8ec8d322
Use enum for kak gate (#2043)
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: David Chavez <david@dcvz.io>
2022-11-30 00:33:38 +01:00
briaguya 7e9c5d428c
Use gerudo fortress enum (#2040)
Co-authored-by: briaguya <briaguya@alice>
2022-11-30 00:30:52 +01:00
Garrett Cox d7c3522142
[docs] Upstream updates 1 (#1955)
* 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
2022-11-30 00:28:57 +01:00
briaguya 0424c5aaf3
fix: rando door of time enum usage (#2032) 2022-11-28 22:41:33 +01:00
Garrett Cox 283854c854
Implement option to start with a specific number of skulltula tokens (#1967) 2022-11-16 01:39:53 -05:00
Adam Bird 15a9975200
Entrance Rando (#1760) 2022-11-14 12:13:21 +01:00
Garrett Cox 99260acaf1
Use PlayState instead of GlobalContext (#1927)
* Use PlayState instead of GlobalContext
- GlobalContext -> PlayState
- globalCtx -> play
- GlobalCtx -> PlayState
- globalContext -> playState

* Find and replace Gameplay_ with Play_

* Correct some misnamed argument cases
2022-11-06 09:24:34 +01:00
Garrett Cox 3b7b4913eb
Track keys, heart pieces, and heart containers collected (#1849)
* Track keys, heart pieces, and heart containers collected

* Update soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
2022-11-02 14:09:25 -04:00
Christopher Leggett fd8a2c9483
Adds in-game menu for selecting a dungeon quest/randomizer (#1863)
* 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>
2022-11-02 11:50:47 -04:00
Garrett Cox e6e2184fe1
Add missed key count spot (#1820) 2022-10-21 01:32:35 -04:00
Ralphie Morell 262e036c22
Rando: Starting Age fixes (#1755)
* 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>
2022-10-20 23:22:58 -04:00
Christopher Leggett 7b08f98b8c
Dual OTR MQ and Vanilla Support (#1694)
* 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>
2022-10-16 23:07:35 -04:00