* Improve check tracker performance.
* Fix vanilla saves getting randomizer quest assignment.
Fix trying to load blank data blocks from save file.
Prevent writing randomizer block, even if empty, when save type isn't rando.
* bring over framebuffer effects methods
* Implement framebuffer capture and drawing for pause menu
* revert hookshot and title cards to draw using original buffers
* remove old game over crash fix
* Adjust mirror mode handling for kaleido
* Avoid flashing the hud when pausing
* Added Project Overview to README
This is a couple additional lines of text clarifying the high-level structure of the project, mostly for the benefit of anyone new joining the project.
* Added "Further Reading" section
Points out and lists the contents of the "docs" directory for ease of access to the documentation therein.
* Allow for User Selected Enemies for Enemizer
* Updated CVar Entry List
* ImGui Cvar Updates
* GetSelectedEnemies Cvar Update
* Populate List if empty and if menu selection changes for Enemy Randomizer/Enemy List
* for loop for Menu Bar cvars, added enemyNameList table to get actor names
* Update variable for macOS/Linux
* Alphabetical Order you say?
* Add support for multiple areas in regions and locations and remove impa's house shuffle limits
* Spelling corrections
---------
Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
* preparatory clean ups
* structure done, but failes to generate
* fix the bugs, but triple seed gen time on the benchmark
* fix massive generation time increases
* Remove sphereing when not needed as an optimisation
* post merge fixes
* reset the current sphere when toggling an event to cover another cause of jank
* address reviews
* Convert ocarina buttons & skip scarecrow song to VB
* Move most of boss rush & rupee/key counters to VB
* Move BossRush_HandleCompleteBoss to VB
* Convert boss timestamps to VB
* Move being able to open doors to VB
* Convert Entrance_OverrideWeatherState to VB
* Move boss souls to hook_handlers.cpp
* Update hook_handlers.cpp
* Move infinite upgrades to hook_handlers.cpp
* Move skeleton key to hook_handlers.cpp
* Move swim and child wallet to hook_handlers.cpp
* Move ganons boss key to hook_handlers.cpp
* Move triforce hunt to hook_handlers.cpp
* Move randomizer sheik spawn to hook_handlers.cpp
* Update BossRush.h
* Convert spoiling items to VB
* Move load game stuff to hook_handlers.cpp
* Move warp song handling to hook_handlers.cpp
* Convert being able to play bowling to VB
* Move shooting gallery man handling to hook_handlers.cpp
* Move spirit temple silver block removal to hook_handlers.cpp
* Fix build
* Move last beehive stuff to hook_handlers.cpp
* Fix build
* Add VB_CLOSE_PAUSE_MENU
* Add VB_BE_ABLE_TO_SAVE
* Add VB_RENDER_YES_ON_CONTINUE_PROMPT
* Add VB_SPAWN_BLUE_WARP
* Add VB_BLUE_WARP_ADULT_WARP_OUT
* Add VB_BG_BREAKWALL_BREAK
* Convert Saria stuff to VB
* Remove now unused check
* Add VB_GANON_HEAL_BEFORE_FIGHT
* Update hook_handlers.cpp
* Fix blue warp offsets
* Fixes from review
* Improve documentation
* Update BossRush.cpp
* Fix my stupidity
* Fix#4327
* Update hook_handlers.cpp
* Fix blue warps
* Use ultralib types & clean header
* Replace options amount macro with BR_OPTIONS_MAX
* Remove unused includes
* Remove accidental line doubling
* Tweaks to boss rush (#6)
* Update GameInteractor_HookTable.h
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Adds in-game display of certain rando collectibles.
Before, these were only available through the Item Tracker ImGui Window. With this commit, they can be accessed via holding C-Up on the Map Screen. Currently I've added Greg and Triforce Pieces (when applicable) to this menu. Boss Souls, Ocarina Buttons, and eventually Silver Rupees will be added later.
* Adds ocarina buttons to in-game display
* Initial pass on rendering the text on a black background.
* Starting to render boss soul icons
* Better alignment and rendering of Boss Soul icons.
* Adds icons prefixing the list entries.
* Switches boss souls to 32x32 icon.
* Partially working Matrix/Vtx implementation
Currently hardcoded Greg text, replacing map screen completely.
* Now rendering properly thanks to Archez!
* Better implementation of accessing the new page.
- now attached to Quest status instead of Map
- now triggered by a toggle instead of holding a button
- now has its own background (temporarily save screen but will be replaced with something custom later)
* Make KaleidoEntry's reactive to game state
Adds Greg proper and Triforce Hunt to the Misc. Collectibles Page.
* Conditionally render Triforce Hunt
* Documentation/Cleanup
* WIP Ocarina Buttons rendering
* Working ocarina buttons display
* Renders buttons as Gray instead of using Grayscale
This may seem inconsistent, but with Grayscale they technically render as different shades of gray, especially with custom cosmetics. With this they now render as the same shade of gray.
* Makes Ocarina Icon gray when no buttons have been collected.
* Adds Boss Souls.
Currently they run off the menu, need to implement scrolling.
* Implement Scrolling for the menu.
Need to figure out how to throttle the stick inputs still.
* Moves input handling to draw function.
I hate it but that's how Kaleido does it and there's some input throttling logic in there, so in order to make this feel like a kaleido menu I have to also handle input in the draw function.
* Removes custom cosmetic handling of Ocarina Buttons.
I've chosen not to respect the cosmetics for the sake of accessibility
and color contrast, but the code is still present and commented out in
case we want to reverse that decision.
* Hopefully fixes mac build errors.
* Implements update function via Hook.
* Another mac fix hopefully
* Cleans up unused code from the rectangle based attempt.
* Clean up more unused code
* Commit Boss Soul icon
* Fix typo
* Remove commented code
* Improve toggle functionality
* Re-introduce cosmetic matching for ocarina buttons
* Revert some unnecessary formatting changes
* Fix cursor/page turning issue
More improvements to come here (drawing arrows, custom text at the bottom, etc.)
* Fix some more formatting changes
* One last batch of formatting reverts
* actor breaking
* should be VB fishing
* attempt to VB fisherman
* commit fishing hell for review of VB viability, untested
* fix rando, vanilla still broken. close enough
* wait i forgot to remove that
* small fix
* Doodongs Cavern
* rewrite MQ DC Logic
* forgot some cleanup
* remove an unused region
* post-merge cleanups
* change CanUse for HasITem on gorons braclet
* git ate half the rewrite
* more small error fixes
---------
Co-authored-by: aMannus <mannusmenting@gmail.com>
* Fix crash in fishsanity's flag set handler.
Code format cleanup.
Fix typedef warnings in fishsanity.h.
* Actually fix the crash now.
* Relocate RCTYPE check for broader application.
* Format shops.cpp
* Add 5, 6 & 7 item shopsanity
* Guarantee a bombchu refill
* Fish first shop item index
* Clean up NonShopItems
* Split count options
* Improve item ordering
Ensure potions, blue fire and fairy on shopsanity 6 and less.
There are no hearts in the first 28 items (the ones from n64 rando).
* Post-merge fixes
the previous all loaches logic required modifying every `isLoach` check
throughout the file. this had the benefit of allowing live-toggling all fish
to be loaches or not, but added a lot of complexity.
this changes the logic to just set `isLoach` on each fish instead, and updates the tooltip to note an area reload is required
* Move Fishsanity hooks out of mods.cpp
* Assign fish check flags.
* Clean up location_list for fish
* Prevent fishing from giving double items.
* Remove no-longer-used mPendingFish
* Override draw function for fishing
This allows the draw functions in the source
overlay to match the decomp.
* Override draw function for EnFish
* Overwrite grotto fish params based on respawn data
This allows the randomizer to identify them
automatically without any special logic.
The catch (pun not intended) is that grotto fish don't respawn,
and they were previously identified for such by a params value of 1,
so the logic to take care of that needed to be duplicated.
Thankfully it wasn't very much.
* Add a VB for catching actors in bottles.
* Clean up remaining code after conversion to VB
This breaks fast FastDrops for bottle pickups, though
readding it shouldn't be too hard with the VB hook.
* Remove fishsanityParams from Fishing
It was previously used to track exactly which fish would be
released after a catch, but since both candidate fish
would've been caught, they both wouldn't give checks
anyways.
* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Re-add FastDrops for bottle pickups.
While this does diverge from the vanilla decomp, I'm uncertain of
the order that hooks are run, so I put it back into z_player.c
just to be safe. A future commit can do a more proper implementation
using VB hooks.
* Move initialisation of fishsanity hooks into hook_handlers
* Change location constructor to take RandomizerInf instead of uint8_t
This shouldn't have an effect as-is, but other changes can add
additional randomizer flags that can end up pushing fishsanity check
flags out of the range of a uint8_t, causing the cast to overflow
and not be stored correctly. With this change, it could still overflow
when writing to the flag field of Location, but said field is unused
and the parameter is really only for setting the flag for the
SpoilerCollectionCheck.
* Render uncaught overworld fish as randomized item
* Fix windows build by zeroing unused field
* Fix scene parameter type
This resolves a build error on Mac and Windows, but Linux
instead buries it in the sea of warnings, meaning I can't
see it until it fails CI.
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Remove categories
* Remove SpoilerCollectionCheckGroup
* Remove unused Location constructors
* Remove LocationType
* Remove unused SpoilerCollectionCheckTypes
* Remove hints' isVanillaCompletion, it's always false
* Remove SpoilerCollectionCheck::None
Same effect as default constructor
* Fix mistake
* Update location.h
* Deduce RC Area by scene when possible
* Remove useless constructors
* Remove flag in most situations
* Format improvements
* Replace overworldLocations with a function
* Replace shopLocationLists with a function
* Replace gossipStoneLocations with a function
Also add a new RCType for static hints
* Replace scrubLocations with a function
* Replace staticHintLocations with a function
* Replace overworldFishLocations with a function
* Replace pondFishLocations with a function
* Remove RC_TRIFORCE_COMPLETED from GetOverworldLocations
* Update fill.cpp
Re-add filter for dungeonLocations for song shuffle dungeon rewards (and fix erroneous check for song locations there).
Modify songLocations filter for dungeon rewards to check for RCTYPE_BOSS_HEART_OR_OTHER_REWARD and then the two song locations added for it.
* Update fill.cpp
Fix bracketing.
* Apply Pepper0ni's patch
---------
Co-authored-by: Malkierian <malkierian@live.com>
* Change tristate off graphic to none instead of X to avoid confusion.
Modify Combobox and Slider Options to clamp directly to options.size() - 1 instead of just decrementing if current value is higher than max.
* Restore RenderCross line, but commented out.
100 GS Reward was missing from RSK_GANONS_BOSS_KEY causing indexing issues. Notably, Triforce Hunt was setting Ganon's Boss Key to "Vanilla" rather than "Triforce Hunt."
* Move all `SaveContext` operations to `Logic` to prepare for encapsulation.
* Rename `Area` to `Region`, `areaTable` to `regionTable`, and all local variables named variants of area to region that were of the `RandomizerRegion` or `Region` types.
* Fix mistaken renames.
* Rename PT_AREA_RESET to PT_REGION_RESET after rebasing on performance timer commit.
Change include path for the timer to absolute rather than relative.
* messy first implementation, pushing for verification
* push to test other platforms, add benchmark preset
* more other compiler fixes
* Finish implementing benchmarks
* forgot to reset the timers each run
* do it better
* move timers to thier own file
* forgot to add files