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 13 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.

Rando Patches to Test with New System

  • Cutscene Patching
    • Cutscenes
    • wondertalk2 actor moves
  • Other Patches
    • Duplicate Bazaar room for Kakariko
    • Move Sheik from pedastal in ToT
    • Ice Cavern alcove camera (duplicated in two spots in Patches.py)
    • Fire Temple boss loop unlocked door without keysanity
    • Non-MQ Water Temple door always unlocked
    • Graveyard ledge grabs
    • Owl removals
    • Jabu octorok position
    • Forest/Fire Temple switch heights
    • Kakariko carpenter starting position
    • Vanilla DC gossip stone fairy flag
    • Colossus Fairy entrane "...???" text
    • Forbid Sun's song in a bunch of cutscenes
    • Move Fado for adult trade shuffle
    • Spirit Shortcut actor tweaks
    • Gerudo Fortress gate guard reposition
    • Skip child stealth crawlspace exit
    • Silver rupee shuffle MQ DC/Spirit temp->permanent flags
    • Well MQ ladder rupee reposition
    • Shadow Temple redead shared flags for silver rupee shuffle
    • Song shuffle cutscene text boxes
    • Song shuffle location addresses
    • Shopsanity shop item objects in room headers
    • Cow shuffle repositions
      • Stable
      • Tower
      • Shuffled item actor params in set_cow_id_data
    • CSMC repositions
      • Vanilla Ganons Castle Light Trial
      • Vanilla Spirit Temple compass chest
      • Silver Gauntlet chest in glitched logic
    • Dead Hand spawns in vanilla Shadow/Well
    • Broken drops vanilla Spirit deku shield in anubis room
    • TCG shuffle temp flags to permanent/keysy
    • Remove "entrance blockers"
    • Scrub shuffle actor params in set_deku_salesman_data
    • Jabu stone actor
    • Keysy dungeon/boss doors
    • Ganons Tower first BK door unlock for pot shuffle
    • Rob's flag system
  • Entrance Shuffle
    • Generate/write exit list for each scene
    • Jabu boss exit coordinates
    • Water Temple boss exit room number
    • Redirect LLR exits to main exit for OW shuffle
    • Redirect ZR<->Field exits to land from water
    • Spirit temp flag purge on entry through front door
    • Grotto actor data changes in set_grotto_shuffle_data
  • MQ Patching
    • All rooms can be entered from all entrances
    • Ice Cavern scene header patch from old system
    • MQ Spirit Temple room 6 new alternate header
  • ASM/C patches
    • 0x26c10e3 - generic grotto ACTOR_EN_GS actor params 0x3818 -> 0x38FF

@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