Author Topic: Beta Quest: A new OoT Mod  (Read 28050 times)

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Beta Quest: A new OoT Mod
« on: November 13, 2015, 08:36:10 PM »
This took about 4 months too long to finish. The bulk of what makes the mod was finished back in July, but then I decided to work on cutting down cutscenes which took a bit more research/dev. Got sidelined by a vacation, then the laptop I was using shorted out (the second laptop I've lost this year :( ), which meant that I more or less spent about 2 months away from the mod. But anyway it's here

Ocarina of Time, Beta Quest by mzxrules

What is this:
   The Beta Quest mod is an entrance randomizer built from the NTSC 1.0 release.
   It works like this:
   
   Your file name is used to seed the random number generator, used to shuffle
   entrances. Every time you are spawned into the game, the mod intercepts your next
   entrance id, and compares it to a master entrance id table.
   
   The bulk of all valid entrance ids are shuffled amongst themselves, meaning that
   if you touch an exit that takes you into an entrance index within this list,
   you will only ever end up at a spawn within this list.
   
   A much smaller subset of valid entrance ids are randomly given an id by picking a
   random entrance id from the master table. Entrance Ids randomized this way are
   able to send you to a duplicate location. For example, entry points into the
   "generic" and Fairy Fountain grottos are randomized in this way.
   
   An even smaller subset of valid entrance ids are not randomized to make it possible
   to obtain certain items.
   
Which version should I use?
   Due to issues with emulation, there are three different versions of the mod.
   
   "Fix" has a hack applied that is intended to eliminate the delay that occurs when
   pausing or game overing in emulators like Project 64 1.6. This will cause a trippy
   graphical glitch, but is otherwise harmless.
   
   "No Fix" does not have the above hack. This version is packed into the Wii wad.
   
   "Hardware" is a hardware compatable version of the mod. This version also does not
   have the above hack. The only difference is that the rom's files have been
   decompressed. For whatever reason, graphical exceptions and crashes will occur
   when running this version on emulators like Project 64 1.6 and MupenPlus.

Other Changes:

 * Added a special mode where entrances are are constantly being shuffled. To play this
   mode, simply set your filename to "RNG-Only", case specific.
   
 * Added a special check to prevent wrong warps, as they cannot be safely randomized.
   Attempting to wrong warp will ruin your game.
   
   Note: Cutscene skips should not be affected (Forest/Water/Shadow/Spirit medallions,
   warp songs, etc.)
   
 * Shortened several key quest cutscenes, and made it possible to press start to skip
    the final cutscene. A side effect of this is that you can no longer BA off of the
    Light Arrow cs.
   
 * Entrances that crash as a Child or Adult have been tweaked to not crash. As a result,
   all dungeons can be beaten as a child
   
 * The Nabooru Knuckle fight now also triggers as a child, preventing you from becoming
   trapped in the room.
   
 * Child Link is now able to equip all 3 tunics, and the Mirror Shield
   
 * Added a secret area that can only be reached by entering a grotto. It will disappear
   once you open the chest at the end.
   
   Note: Although the possibility is very small, beating the secret area may be mandatory
   for beating the game.
   
 * Until you obtain magic, Great Fairy Fountains will always take you to the magic one.
   The Magic Great Fairy Fountain's exit will depend on the initial entrance used
   
 * Ganon's Castle (outside area) spawns have been tweaked to keep you in bounds
 
 * All of Tower Collapse's temporary events (except for the collapse cutscene itself) have
   been made permanent
   
 * Farore's Wind restore points are retained when going through time
 
 * The Song of Time door will now open when spawning from all entrances
 
 * Imported 1.2's Kakariko Graveyard to eliminate sticky graves
 
 * Whatever you do, don't hold L (Dpad-Up on Wii) and definitely attempt to press different
   combinations of these buttons while holding L (Dpad-Up) when going through a loading zone:
   
    * Z, C-Up, C-Down, C-Left, C-Right
    * Start
    * R
 
Known Issues:

 * When walking around (especially as an adult), you will trigger the infamous fog glitch.
 
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #1 on: November 13, 2015, 10:06:54 PM »
Accidentally uploaded an older Wii Wad, which contains a few glitches I fixed in the latest version. I should have uploaded the correct wad now. The current version of the mod will show V1 on the title screen, in the bottom right.
« Last Edit: November 13, 2015, 10:44:44 PM by mzxrules »
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline BasedKingPotato

  • Deku Scrub
  • Posts: 10
  • Someday Speedrunner
Re: Beta Quest: A new OoT Mod
« Reply #2 on: November 14, 2015, 02:49:02 AM »
Neat! This seems really fleshed out!
So each time you start a new file, it will create a table that contains all of the entrance IDs but in a random order, based on the name you gave the file? Pretty cool!

I remember making a fairly simple GameShark code which took the RNG variable (which I took from sockfolder's MHS address list), modulo-ed it with 0x66C, and stored the result to the Entrance ID address whenever you tried to load a new area. It was slightly different in that even if you left the area in the same way twice, it would (almost) always send you somewhere different. Of course, from 0 - 0x66C there are still some invalid entrance IDs, so it would crash every now and then. This seems *way* cooler though!

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #3 on: November 14, 2015, 09:09:42 AM »
I actually generate the table almost every time you begin to load a new area. The reason for this is that I wanted to keep the table in memory for testing purposes (since the main program is loaded into space that becomes the "actor" heap later on), but I was worried that even though I allocated space for it on the heap by sticking it on the end of an existing blob, something might overwrite it (the blob seems to always be allocated after booting, but I never 100% tested it). Luckily, this actually made it rather easy to add RNG-Only mode after the fact.

The valid range of entrances should be between 0x0000 to 0x0613 inclusive. Any higher will pull from the scene table data and have a good chance of crashing
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline fishfood

  • Deku Scrub
  • Posts: 4
Re: Beta Quest: A new OoT Mod
« Reply #4 on: November 14, 2015, 05:52:39 PM »
This Hack is super fun. Also i found a grotto with 3 iron knuckles activated by bombs and i was unable to move, is that normal. heres the video lol http://www.twitch.tv/botmfishfood/v/25849864
« Last Edit: November 14, 2015, 05:58:29 PM by fishfood »

Offline Jbop

  • Moderator
  • Special Guay
  • Posts: 233
  • Potatoes are useful.
Re: Beta Quest: A new OoT Mod
« Reply #5 on: November 15, 2015, 04:24:01 PM »
lmao
Quote from:  ZFG on March 24, 2008, 8:27:24 AM
Quote from:  Prognosis_4 on March 24, 2008, 8:25:50 AM
Why are you guys so certain it's possible?
Because its OoT.

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #6 on: November 15, 2015, 06:05:49 PM »
Some bugs people have reported:

QZ: Crash on entering DC door, above bombable staircase, adult.

gUInホメヒフ crash on Bolero, Adult: https://gyazo.com/71299139131f4ce7ac1c8ecf883f4318

Classic OoT bug: Running out of health outside Temple of Time (Child and Adult) results in yellow bar crash.

cSf48v "there is a weird bug, when sunsong-warp from haunted-wasteland to ddc - camera is frozen and updates only when I pause and unpause" im playing on mupen64plus-bundle-win32-2.5 with english lang ^^
« Last Edit: November 20, 2015, 09:19:27 PM by mzxrules »
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline mrbubbleskp

  • Regular Guay
  • Posts: 34
Re: Beta Quest: A new OoT Mod
« Reply #7 on: November 18, 2015, 03:07:14 PM »
love this mod! Making bingos very creative :)

Offline Dagoth_Bob

  • Deku Scrub
  • Posts: 4
Re: Beta Quest: A new OoT Mod
« Reply #8 on: November 22, 2015, 06:04:47 PM »
Great mod. Even though I'm not a speedrunner, it's a fun challenge to attempt 100% with randomized exits.

There's only one issue I've run into, so far. If you are sent to the Spirit Temple exit in the Desert Colossus and the Requiem of Spirit cutscene triggers, the game will crash when the cutscene ends. I've had it happen on two different seeds and I run through an Everdrive v2 on N64 hardware. I was given a yellow bar the first instance of it occurring, but a hard freeze on the second seed I attempted with.

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #9 on: November 22, 2015, 06:45:50 PM »
Note to everyone: If you encounter a yellow bar crash, please try and show the debug screens to me. I can understand them, and try and trace the exception that occurred
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline RainingChain

  • Deku Scrub
  • Posts: 15
    • Raining Chain
Re: Beta Quest: A new OoT Mod
« Reply #10 on: November 22, 2015, 08:26:58 PM »
Great mod. Even though I'm not a speedrunner, it's a fun challenge to attempt 100% with randomized exits.

There's only one issue I've run into, so far. If you are sent to the Spirit Temple exit in the Desert Colossus and the Requiem of Spirit cutscene triggers, the game will crash when the cutscene ends. I've had it happen on two different seeds and I run through an Everdrive v2 on N64 hardware. I was given a yellow bar the first instance of it occurring, but a hard freeze on the second seed I attempted with.

Requiem of Spirit cutscene also makes me crash when it ends. Other than that, I had no bug. That mod is really addicting! I really like it.
« Last Edit: November 22, 2015, 11:11:22 PM by RainingChain »

Offline Dagoth_Bob

  • Deku Scrub
  • Posts: 4
Re: Beta Quest: A new OoT Mod
« Reply #11 on: November 25, 2015, 01:16:46 PM »
Note to everyone: If you encounter a yellow bar crash, please try and show the debug screens to me. I can understand them, and try and trace the exception that occurred

I'll track down the crash again and see if I can't get you pics of the debug screen.

Probably worth noting that I didn't experience any crash/freeze on VC.

Also one minor thing to fix; the lon-lon bottle cannot be obtained, as successful completion of the minigame is a randomized exit. Might make sense to make that one non-random, like you did with the medallions.

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #12 on: November 25, 2015, 06:25:03 PM »
Dagoth_Bob: I've fixed the Requiem Crash and Softlock. Crash is caused by using the "sandstorm" transition being set to play on entering a new area. The reason is that this particular transition requires a specific object file (which stores graphical assets) to be loaded, but the dependency is defined on a per room basis and most rooms don't load it.
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.

Offline Dagoth_Bob

  • Deku Scrub
  • Posts: 4
Re: Beta Quest: A new OoT Mod
« Reply #13 on: November 26, 2015, 11:55:42 AM »
Dagoth_Bob: I've fixed the Requiem Crash and Softlock. Crash is caused by using the "sandstorm" transition being set to play on entering a new area. The reason is that this particular transition requires a specific object file (which stores graphical assets) to be loaded, but the dependency is defined on a per room basis and most rooms don't load it.

I gotcha. I'm willing to bet the reason it didn't crash on VC was because the room loaded right after it happened to be inside the Spirit Temple, which may have had access to that transition.

That, or because VC.

Offline mzxrules

  • Mega Guay
  • Posts: 923
  • Wrong warp expert
Re: Beta Quest: A new OoT Mod
« Reply #14 on: March 10, 2017, 06:21:41 PM »
The next update is here: Beta Quest V1.5

I'm out of town atm, so I don't have a Wii wad available. If someone would like to create it though, please contact me


Beta Quest V1.5 Official Release
   Last Update March 10th, 2017

Beta Quest V1.5 for the most part is a minor update to Beta Quest V1. The biggest changes to the hack are only visible on my end; the core randomizer was re-written in C. Part of the reasoning for this was to get a better understanding of gcc, part was to build up my code base for future projects.

That said, there are still a number of significant changes made that affect the hack, from bug fixes I had intended to push out back in 2015, to new mechanics created to address certain issues uncovered over time.

Versions:

Beta Quest V1.5 - The true version
Beta Quest V1.5 (pause fix) - applies a fix to prevent lenghty pauses on bad emulators like PJ64
Beta Quest V1.5 (E) - An English language version, for people who are too lazy to change a single byte
Beta Quest V1.5 (E) (pause fix) - English + pause lag fix

Major Changes:

- The randomizer has been rewritten. It now uses a 64 bit random number generator [MMIX specifically], instead of Ocarina of Time's 32 bit generator. The algorithm used to randomize the "shuffle" group of entrances has been tweaked in an attempt to make long chains of "leave grotto -> spawn in grotto" less likely.

- In implementing the above, the "RNG-Only" feature has been removed.

- Also partially due to implementing the above, all seeds have now been re-randomized.

- Any% can now only be completed by obtaining magic, light arrows (specifically, the light arrow slot cannot be empty), and must defeat ganondorf->ganon in sequence. Entering Ganondorf's room will become possible once these conditions are met, and Ganondorf will now take you to Ganon directly.

- To implement the above change, reaching the entrance that randomizes to Ganondorf, or touching the exit leading to Ganon will take you to the Royal Family's Tomb instead, improving odds of obtaining Sun's Song.

- There is now a temporal Child Trade Slot. This slot will appear only while in Hyrule Castle (the outer grounds) for the purpose of storing the Egg/Chicken, making it possible to wake up Talon after obtaining Zelda's Letter and beyond

- If you don't already have Zelda's Lullaby, spawning at what will eventually be the Great Fairy fountain that awards magic will now take you to Zelda instead, improving the odds of finding Zelda's Lullaby. Leaving Zelda's Courtyard without getting lullaby will behave as if you've exited the Great Fairy Fountain proper. To clarify further, "having Zelda's Lullaby" is a flag that is set when you learn the song properly from Impa, not the flag that can be RBA'd. As such, RBA does not affect this at all.


Other Changes:

- Fixed a bug where I wasn't properly clearing/writing the instruction/data caches on the N64 release. As such, there no longer is a need for a "hardware" version of the mod. This could have the side effect of fixing "phantom" bugs that occur on N64

- A few one-off spawns that I missed with V1 have been removed from the shuffle group of entrances. They can still be reached via the randomize group.

- When you obtain Richard, randomization will be disabled completely. If you either try to leave the immediate area (all outside locations in Market Town, Richard's House), or Richard stops following you, you will warp back to the main market square. This makes it possible to collect this heart piece more consistently

- The Fog Glitch has been patched :(

- Because I hate Twinrova Phase 1, it now takes only 3 hits to complete this phase of the fight.

- Spawning at the normal entrance points for the warp pads now plays an animation, making it easier to differentiate between the dungeon clear and warp song spawns.

- Dying or falling out of bounds in the "Sky Temple" now warps you to the entrance that was obscured by the easter egg

- "Sky Temple" can now be encountered in more areas.

- The crash/graphics exception that occurs on occasion when the Requiem cutscene plays has been fixed since 2015.

- Ice Cavern 1.2 has been imported, which should fix the weird camera angles that occur when standing within the alcoves in the block puzzle/rupee puzzle room of doom.

- Crashes caused by attempting to wrong warp have been patched. Wrong Warping now works as intended. Feel free to test this out on your own :)

- Fixed an issue where nobody understood my sarcastic comment about pressing the Z, L and C buttons during loading screens. Changed it to where it allows you to swap tunic colors on the fly.

- Serenade can now be obtained by Child Link

- I might have forgotten some of the changes I made in 2015

Known Issues:

- If you are randomized to either the generic grotto or the small fairy fountain grotto, the exit point will change depending on either the last grotto you entered properly, or the last warp song played, (whichever occurred last)

- Triggering the "Zelda Escape" sequence before obtaining Zelda's Lullaby seems to make it so that Impa does not spawn.

- On opening the Silver Gauntlets chest (but before the cutscene triggers), attempting to touch a loading zone will trigger the anti-wrong warp code.
« Last Edit: March 10, 2017, 06:35:34 PM by mzxrules »
Quote from:  Leigh Rogers
Braid
This is art because the music is classical music, and the graphics are done with a pen. The story is something about a woman. I could not understand much of this to be honest, which makes it even more likely to be an art.