Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time independent skulltulas #2332

Draft
wants to merge 12 commits into
base: Dev
Choose a base branch
from

Conversation

mracsys
Copy link

@mracsys mracsys commented Nov 18, 2024

Opening as draft. Feature isn’t fully implemented, only a proof of concept so far.

Two parts to this PR. There is the skulltula time of day feature, and a new framework to enable arbitrary changes to any of the scene or room files parsed to linked python objects. The framework automatically shifts all pointers within the files to handle new file locations and additions/deletions within the file. It will have multiple applications besides the skulltula feature:

  • Detailed cutscene parsing instead of writing raw bytes (WIP). Also more easily allows writing completely new cutscenes.
  • Adding any actor/object to any room, such as a sign outside Ganon’s castle for the bridge condition or anywhere else a hint might be helpful
  • Entrance/exit additions, such as promoting grottos to the same framework as other entrances, or new loading planes for mixed pool door rando
  • Space reclamation. Almost a MB is wasted in padding between scene and room files.
  • More user friendly interface for MQ patching, and opens the door for other alternate scene options for anyone crazy enough to attempt it.
  • Collision changes for problems like Reduce boss doors side range to prevent voiding out in Forest temple #2331 and for my vision of door rando without scene reloads between doors.

Todo:

  • Test compressed roms. DMA changes for compressor?
  • Update pointers outside scene files to globals in them, mainly cutscenes.
  • If 2 doesn’t fix problems moving file start addresses, figure that out
  • Integrate framework with rando patching pipeline
  • Move cutscene patches to framework
  • Move MQ patching to framework
  • Move any other scene changes to framework
  • Add setting for skulltulas ignoring time of day. Add actors/objects where needed and patch all actor parameters.

@fenhl fenhl added Type: Bug Something isn't working Type: Enhancement New feature or request Status: Needs Review Someone should be looking at it Status: Needs Testing Probably should be tested Status: Under Consideration Developers are considering whether to accept or decline the feature described Component: Patching Affects the patching of the ROM Type: Maintenance Code style, infrastructure, updating dependencies labels Nov 18, 2024
@r0bd0g
Copy link

r0bd0g commented Nov 18, 2024

I guess for logic you'd go around to each skulltula you affected that checks for night and change at_night to (at_night or [setting]). Something to look out for is the watchtower, which will no longer be climbable in child day without a means of killing the skulltula. In closed forest, the time of day access check is skipped, so there's special logic on the night skull there to confirm you can actually get it to night somehow, and you'd also have to add the new setting as an alternative for that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Patching Affects the patching of the ROM Status: Needs Review Someone should be looking at it Status: Needs Testing Probably should be tested Status: Under Consideration Developers are considering whether to accept or decline the feature described Type: Bug Something isn't working Type: Enhancement New feature or request Type: Maintenance Code style, infrastructure, updating dependencies
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants