Majora Mask 3D Project Restoration 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 8: Line 8:
|version=1.5.9
|version=1.5.9
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/3dshomebrews/majorsmask3dprojectrestoration3ds.7z
|download=[https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds.7z 1.5.9 & HD HUD bundle pack]
|website=https://restoration.zora.re/
|website=https://restoration.zora.re
|source=https://github.com/leoetlino/project-restoration
|source=https://github.com/leoetlino/project-restoration
}}
}}
Project Restoration is a patch for Majora's Mask 3D that restores some mechanics from the original game and adds quality-of-life improvements and fixes to make it more enjoyable.


A ''Majora's Mask 3D'' patch that restores some mechanics from the original ''Majora's Mask'' and fixes some issues to make the game even more enjoyable.
==Features==
* Mikau playing his guitar. Wait, no, that's Link!
* Fixed Deku Link.
* Transformation masks usable with the D-Pad.
* More fluid Bomber's Notebook.
* Song of Time optional saving and tweaks.
* Improved bosses and Twinmold.
* Restored Ice Arrows.
* Button tweaks for controller players.
* Many other improvements.


'''Note''': Some features make use of the new ZL/ZR buttons, so playing on a New 3DS/2DS or Citra is recommended for a better experience.
==Installation==
The mod is compatible with all versions of the game (except the Korean release) and with existing saves.


== Changes ==
===Standard===
To set up the patch, download it then open the .7z file with a tool like 7-Zip. Double-click on the folder that matches your game version to open it, but do not extract it yet.
* v110 - If you have MM3D 1.1 (game card with 1.1 preinstalled).
* v100 - For MM3D 1.0 (non-updated eShop or non-updated 1.0 gamecard).
* v100 - For MM3D 1.1 (updated eShop or updated 1.0 gamecard). Try v101 only if v100 doesn't work.
* The Korean version of the game is not supported. You will need to play on another version.


* '''Zora Fast Swim''': Swim gracefully as a Zora without having to use magic
'''For 3DS users:'''
* Fast swim is now the default way of swimming and no longer requires magic.
* This guide assumes that you have a homebrewed 3DS with [[Luma3DS]] v10.1+. If this is not the case, follow [https://3ds.hacks.guide this guide] for help.
* Slow swim is still available. Press Up/Down on the D-Pad to ''toggle'' between fast swim and slow swim. You can also ''hold'' ZL to slow swim.
* Open the 3ds folder in the 7-Zip archive.
* '''Fixed Deku Hopping''': Hop on water as fast as in MM
* Create the /luma/titles/TITLE_ID/ directory on your SD card (if it doesn't already exist). Replace TITLE_ID with:
* Deku Link's walk acceleration value was nerfed in MM3D (2.0 -> 0.6). As a possibly unintended consequence, this made hopping on lilypads very slow compared to the original even if you spin at the optimal time.
** EUR - 0004000000125600
* '''Fast Transform''': Transform without having to equip items for a more streamlined gameplay
** USA - 0004000000125500
* Three of the four D-Pad buttons are now used to fast transform (''Left'': Zora, ''Up'': Goron, ''Down'': Deku)
** JPN - 00040000000D6E00
* This frees up as many as 3 buttons!
* Copy code.bps and exheader.bin to that directory.
* '''More Fluid Bomber's Notebook''': Less annoyingly slow popups and transitions
* Enable game patching in Luma's menu.
* The Bomber's Notebook screen now updates instantly when it's opened instead of waiting for 1.8 seconds just before starting the "new" text animation (!), followed by another 1.18s pause and another 1.56s delay until the main text box appears (!!).
* '''Song of Time Saving''': The Song of Time now optionally saves the game. Players will be greeted with the iconic ''Dawn of the First Day'' screen after loading a Song of Time save, just like in the original game.
* '''More Effective Inverted Song of Time''': Slow time to 1/3 speed (as in the original)
* Makes some glitchless challenge runs possible again.
* Gives the player more time in a three-day cycle.
* '''Improved Bosses''':
* Removes the eyeballs from Odolwa, Goht and Gyorg.
* Balances Odolwa's AI and attacks to improve gameplay.
* Fixes a game bug that caused Odolwa to be invulnerable to attacks and block excessively.
* '''Improved Twinmold''': Less tedious, less confusing
* Reduced the number of cycles to make it less repetitive.
* Red Twinmold no longer resets its hit counter every time it burrows back into the sand. As a result, the battle is much less confusing for new players.
* '''Restored Ice Arrows''': Ice arrows that work in more locations
* Ice arrows now work everywhere in Great Bay Temple, not just in Gyorg's room. This gives the player the freedom to experiment with ice arrows. Ice arrows also work in several other areas, just like in the original game.
* Removed the sparkling water effects as they were an insult to the player's intelligence.
* '''Fast Arrow Switching''': Press ZL to quickly switch between arrow types (Normal/Fire/Ice/Light).
* '''Dedicated Physical Buttons''' for more convenient access to items and menus
* Open the ''Items'' menu by pressing START.
* The ''Bomber's Notebook'' is now mapped to SELECT.
* ''Ocarina of Time'': ZR+A
* ''Pictograph Box'': ZL
* ''I'': ZR+X
* ''II'': ZR+Y
* It is now possible to assign items to I and II with a single press.
* The Gears and Map menu can be opened with ZR+Start / ZR+Select respectively.
* For the ocarina screen, it is possible to switch between the instrument screen and the song list with Start/Select.
* Those are obviously optional and are primarily meant for Citra users.
* Other minor adjustments to improve the player's experience:
* Adjusted the speed of Stone Tower blocks for a more pleasant climbing experience.
* The moving platforms in Deku Palace and Woodfall Temple now actually always move.
* The Bombers will no longer distract the player from a particular cutscene.
* The new Sheikah hint stone will also no longer distract the player during an important cutscene in the Clock Tower.
* Captain Keeta now walks as fast as in the original game, which restores the challenge of the chasing mini-game.
* Link no longer plays the Elegy of Emptiness a second time after it's been played once. This makes Stone Tower a lot less tedious, considering it needs to be played 10+ times to beat Stone Tower Temple normally.
* For similar reasons, the Song of Soaring is only repeated once during a play session.
* Owl statues can now be activated by striking them with a sword.
* It is possible to control Goron Link rolling just like in the Nintendo 64 version: hold A and move to roll, release A to stop. The classic control scheme co-exists with the new one.
* Free camera mode can now be used more often, notably when targeting, talking or playing the ocarina.
* Link can now leave the Swordman's School during training if necessary to avoid wasting time.
* Fixed a game bug that caused the "heart container get" sound not to play after getting four heart pieces.
* Fixed a game bug that prevented the player from leaving free camera mode by targeting when Zora swimming or Goron rolling.
* Fixed a possible softlock during the Twinmold boss intro.


== Changelog==
'''For Citra users:'''
* Open the citra folder in the 7-Zip archive.
* Right click on the game in the game list and select Open Mods Location.
* Copy code.bps and exheader.bin to that directory.


'''v1.5.9''''
===HD HUD===
The HD HUD project is made for Citra users, it aims to redesign the game's interface and heads-up display to be more suitable for HD resolutions. You will find the following in the download:
* HD HUD v1.5.9-5 - From the [https://github.com/leoetlino/project-restoration/releases/download/v1.5.9/mm3d_project_restoration_plus_hd_hud_v1.5.9-5-g8bb2a7b.7z repository page].
* Layout archive - From [https://restoration.zora.re/hd-hud project restoration site].
* Layout archive (for Xbox users) - From [https://restoration.zora.re/hd-hud project restoration site].
* Texture - From [https://restoration.zora.re/hd-hud project restoration site].
* HD texture pack - From [https://restoration.zora.re/hd-hud project restoration site].


Project Restoration v1.5.9 was released on 02/01/2022. To install or update Project Restoration, follow the instructions [https://restoration.zora.re/#setup here].
'''Step 1:'''
* Open HD HUD v1.5.9-5, double-click on the folder that matches your game version to open it, but do not extract it yet:
** v110 if you have MM3D 1.1 (game card with 1.1 preinstalled)
** v100 for MM3D 1.0 (non-updated eShop or non-updated 1.0 gamecard)
** v100 for MM3D 1.1 (updated eShop or updated 1.0 gamecard). Try v101 only if v100 doesn't work.
* Then right click on the game in the game list and select Open Mods Location.
* Open the citra folder in the archive, then copy code.bps and exheader.bin to the Mod Location folder. Overwrite any existing file, if needed.


Users of the [https://restoration.zora.re/hd-hud HD HUD] mod should set up the patch and custom textures again: some HD textures weren't loaded because of a packaging mistake and A and B button text could show up blurry.
'''Step 2:'''
* Extract either one of the layout archive in the Mods Location. Copy the romfs folder itself to the Mods Location.
* If you've followed the instructions correctly, you should see code.bps, exheader.bin and romfs (folder) in the Mods Location.


'''Changes since 1.5.8:'''
'''Step 3:'''
* Right click on the game in the Citra game list and select Open Custom Texture Location. Put the texture and there.
* Enable custom textures in Citra (Emulation > Configure... > Graphics > Use Custom Textures).
* Optional, but highly recommended to also extract the HD texture pack in the Custom Texture Location. The textures come from the [https://github.com/DeathWrench/MM3DHD MM3DHD project] by DeathWrench and currently cover almost all of the game menus and Link's forms.


*Several tweaks to the Elegy of Emptiness and Stone Tower were made to improve the user experience.
==User guide==
**The statue is now spawned faster and it is now impossible to step off floor switches before the statue has materialised.
===Notes===
**Stone Tower blocks now move at a less dizzying speed.
* If everything was set up correctly, a sound effect will be played right before the title screen, before the spinning mask appears.  
*ISG (Infinite Sword Glitch) was reimplemented.
* You can also tell if the patch was applied by checking whether the Start button opens the Bomber's Notebook (if you have it) and SELECT opens the Items menu.
*The console sound setting is now honoured; the game no longer forces surround mode.
* In order to use the new ZL/ZR buttons, the Circle Pad Pro must be enabled in MM3D's options, even if you are playing on a New 3DS.
*Fixed a softlock that could occur if an owl statue is hit immediately after playing the ocarina (#167).
* If you want faster aiming, copy code_faster_aim.bps instead of copying code.bps and rename the patch to code.bps.
*Fixed Link being able to transform into Goron Link while carrying Mystery or Moldy Milk.
* Patches are provided for all versions of the game. However, all versions other than v1.0 (v100) will be temporarily downgraded to ensure everything works fine.
*Fixed a rare, random crash that could occur if ZR was held during transitions.
*Fixed quick arrow swapping quirks when L targeting.


Project Restoration v1.5.8 was released on 25/04/2020.
===Changes overview===
* Fixed Zora Link.
** Swim gracefully like a Zora without having to use magic.
** Fast swim is the default way of swimming and no longer requires magic.
** Slow swim is still available. Press Up/Down on the D-Pad or ZL to toggle between fast swim and slow swim. You can also hold ZR to swim slowly.


Changes since 1.5.7:
* Fixed Deku Link (water hopping).
** Deku Link's acceleration reduction is reverted to fix the water hopping mechanic.
** As a side effect of the acceleration change, hopping was very slow in the unpatched game.


* Fixed a possible softlock in the Bomber's Notebook.
* Fast Transform.
** Transform without having to equip items for a more streamlined gameplay.
** Use the D-Pad to transform (Left: Zora, Up: Goron, Down: Deku, ZR+Up: Fierce Deity)
** This frees up as many as 4 buttons.


Changes since 1.5.6:
* More Fluid Bomber's Notebook.
** Quicker popups and transitions.
** The Bomber's Notebook screen updates instantly instead of taking 5 seconds to pop up every time you get a quest update. It all adds up.


* Fixed a softlock when fighting Gyorg during phase 2. (Thanks to Zelda Informer for the bug report!)
* Optional Song of Time Saving.
* Fixed yet another softlock when fighting Gyorg during phase 2. (Yes, Grezzo's Gyorg is buggy.)
** For the classic Majora's Mask experience, you can optionally save the game after playing the Song of Time.
** After loading a classic save, players will be greeted with the iconic Dawn of the First Day screen just like in the original game.


Project Restoration v1.5.6 was released on 05/04/2020.
* Improved Bosses.
** Odolwa, Goht and Gyorg's giant eyeballs are gone. They didn't add much.
** Odolwa's AI and attacks are rebalanced to improve gameplay.
** A bug that caused Odolwa to be invulnerable to attacks and block excessively was fixed.
** This patch reduces the number of cycles to make it less repetitive.
** Red Twinmold no longer resets its hit counter every time it burrows back into the sand. This makes the boss battle much less confusing.


Changes since 1.5.5:
* Restored Ice Arrows.
** Ice arrows work everywhere in Great Bay Temple, not just in Gyorg's room.
** This gives the player more freedom to experiment with ice arrows. They also work in several other areas outside the temple, just like in the original game.
** Removes the sparkling water effects as they are an insult to the player's intelligence.


* For consistency reasons, Red Twinmold now always requires 2 damage cycles.
* More Potent Inverted Song of Time (slow time to 1/3 speed just like the original).
* Fixed a possible softlock when fighting Gyorg during phase 1.
** In Majora's Mask 3D, the ISoT only slows time to 1/2 speed rather than 1/3 - likely an oversight.  
* Fixed a very rare crash when fighting Gyorg during phase 2.
** This patch fixes the regression, making some glitchless challenge runs possible again and giving the player more time in a three-day cycle.
* The Elegy of Emptiness statue spawn mini-cutscene is now automatically skipped to further streamline gameplay in Stone Tower.
* Re-added [https://www.zeldaspeedruns.com/mm3d/tech/mask-storage Mask Storage]. It had been accidentally removed when fast transform was added. Fast transform can now also be stored. Also re-added [https://www.zeldaspeedruns.com/mm/tech/ocarina-dive Ocarina Dive] for testing purposes.
* Controls:
** The Items screen is now opened with SELECT and the Bomber's Notebook with START for consistency with existing dialogue messages in the game.
** The Ocarina can now be used by pressing D-Pad Right (when Tatl is not trying to get the player's attention). The current shortcut (ZR+A) and the on-screen button still work.
** In Zora form, it is now more convenient to switch between fast swim and slow swim: use the D-Pad Up/Down or ZL (new). Hold ZR to slow down (this was previously done with ZL).
** Additional button controls for the Bomber's Notebook:
*** Switch between the Schedule (timeline) view and the Events view with Y.
*** Set or delete an alarm with X.
*** Open the map with SELECT.


== Setup ==
* Button Tweaks for Controller Players with optional bindings.
** (ZL) Switch arrows, Pictograph Box.
** (ZR+A or D-Pad Right) Ocarina of Time.
** (ZR+X/Y) I/II item. Items can be assigned to I and II too.
** (Select) Items.
** (Start) Bomber's Notebook
** (ZR+Start) Gears.
** (ZR+Select) Map.
** (Start/Select) Switch between the instrument screen and the song list.


''Project Restoration'' works on both the 3DS console (both eShop and game card) and on the Citra emulator.
* Streamlined gameplay.
** Link no longer plays the Elegy of Emptiness again after it's been played once. This makes Stone Tower less tedious.
** The Song of Soaring is only repeated once during a play session for similar reasons.
** The speed of Stone Tower blocks has been adjusted for a more pleasant climbing experience.
** Free camera mode can be used more often, notably when targeting, talking or playing the ocarina.


First, '''determine which version of the game you have'''. Because ''Project Restoration'' works by patching game code and injecting new code, and because Grezzo has released three different versions of the game executable, it is essential that you figure out which version you have in order to use the appropriate Project Restoration patch for your situation.
* Less handholding.
** The moving platforms in Deku Palace and Woodfall Temple now actually always move.
** Captain Keeta now walks as fast as in the original game, which restores the challenge of the chasing mini-game.
** Link can now leave the Swordman's School during training if necessary to avoid wasting time.
** The Bombers will no longer distract the player from a particular cutscene just to ensure you get their hints.
** The new Sheikah hint stone will also no longer distract the player during an important cutscene in the Clock Tower.


* If you have MM3D 1.0 (eShop or game card), you likely have v100 (FYI: v100 is the real, internal version number).
* For the classic experience.
* If you have MM3D 1.1 on a game card and it came with 1.1 preinstalled, you likely have v110.
** Owl statues can be activated by striking them with a sword.
* If you have MM3D 1.1 (eShop or 1.0 game card), then you likely have v101. However for the rest of the instructions you should first try the v100 patch. Only try v101 if v100 doesn't work.
**  It is possible to control Goron Link rolling just like in the Nintendo 64 version: hold A and move to roll, release A to stop.  
** The classic control scheme co-exists with the new one.


Using the incorrect patch will cause the console or Citra to abort and crash. If this happens, try the other two patches (after removing any file you copied to your SD/Citra folders while following this guide).
* Bug fixes.
** Fixes a game bug that caused the "heart container get" sound not to play after getting four heart pieces.
** Fixes a game bug that prevented the player from leaving free camera mode by targeting when Zora swimming or Goron rolling.
** Fixes a possible softlock during the Twinmold boss intro.
** Fixes a possible softlock when fighting Gyorg during phase 1.
** Fixes 2 other possible softlocks when fighting Gyorg during phase 2.


Now, download [https://github.com/leoetlino/project-restoration/releases the latest release of ''Project Restoration''] ('''not''' source code!) and open the 7z archive. Open the v100/v101/v110 folder in the archive and leave it open for the rest of the instructions.
===Troubleshooting===
My 3DS crashes:
* Delete any file you copied while following this guide and follow the instructions carefully again.
* In particular, make sure that you have renamed exheader_legacy.bin to exheader.bin.
* If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.


Second, '''determine your game's title ID'''. Because the 3DS is a region-locked console, several versions of the game were released for different regions. Each of them has its own title ID.
Citra crashes:
* Delete any file you copied while following this guide and follow the instructions carefully again.
* If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.
* You may also need to set the console region in Citra's settings manually.


* For the European release: 0004000000125600
The patch isn't applied:
* For the American release: 0004000000125500
* Make sure that you put the patch files (code.bps and exheader.bin) into the right folder. Ensure that you are using the correct title ID for your game.
* For the Japanese release: 00040000000D6E00
* If you are playing on a 3DS console, check whether game patching is enabled.


Keep both the version number and the title ID in mind, then follow the instructions for your platform (console or Citra) below.
On Citra, after I press ZR, the button stays pressed permanently:
* That is caused by an incorrect controller mapping in Citra. It is not a Project Restoration issue.
* When mapping the controller, hold the trigger on your controller before attempting to map the button in Citra.


Please note that:
===FAQ===
'''Q. Is such a patch available for Ocarina of Time 3D?'''


* If the patch is applied successfully, '''a sound effect will be played''' right before the title screen, even before the spinning mask appears.
As of October 2021, no. Author has neither the time nor the interest to work on a QoL patch for OoT3D. Not that OoT3D really needs to be patched anyway.  
* In order to use the new ZL/ZR buttons, '''the Circle Pad Pro must be enabled''' in MM3D's options, even if you are playing on a New 3DS.
* This project only directly supports v100. All other versions of MM3D will be temporarily and automatically downgraded to 1.0 (v100) to ensure the code patches work.


=== Console ===
'''Q. Hero mode?'''


* If you are a first time Luma3DS user, follow [https://3ds.hacks.guide/ this guide].
Hero mode is somewhat out of the scope of this project.
* Download [https://github.com/leoetlino/Luma3DS/releases my version of Luma3DS]* and put the <code>boot.firm</code> file at the root of your SD card.
* ['''Only''' if you have ever copied boot.firm to your NAND] Also copy the new boot.firm to your NAND using a tool like godmode9.
* [https://github.com/AuroraWright/Luma3DS/wiki/Optional-features Enable game patching in Luma's menu].
* Create the /luma/titles/<code>TITLE_ID</code>/ directory/folder on your SD card (if it doesn't already exist). Obviously, please replace <code>TITLE_ID</code> with the actual title ID.
* Copy '''code.bps''' to that directory.
* (If you want faster aiming, copy '''code_faster_aim.bps''' instead and rename the patch to code.bps.)
* Copy '''exheader_legacy.bin''' to that directory and rename the file to '''exheader.bin'''.


The relevant files on your SD card should look like this at the end:
'''Q. Restored lighting? The bright colours ruin the atmosphere!'''


* SD card root
Project Restoration attempts to fix what regressed in MM3D by restoring original mechanics and adding QoL improvements.
* boot.firm
* [Folder] luma
* [Folder] titles
* [Folder] (the Title ID you determined earlier)
* code.bps
* exheader.bin


* ''Why is a fork necessary?'' As of Jan 2020, the latest Luma3DS has a critical bug in the loader code and missing support for BPS patching. Both issues are fixed in the fork, and a fix for the former has been upstreamed. A [https://github.com/AuroraWright/Luma3DS/pull/1349 pull request] for BPS patch support has been submitted but not yet merged.
Even colourful games can be dark, and in Majora's Mask the unique atmosphere mostly comes from the stunning storytelling and narrative.


=== Citra ===
'''Q. How do I update Project Restoration?'''
 
Note: Canary 1529+ is required until my [https://github.com/citra-emu/citra/pull/5036 pull request] for BPS patch support is merged.
 
* Open the folder containing your game file (3ds/cia/app).
* Assuming your game file is called <code>GAME_FILE.extension</code> (full name including the file extension), create a directory/folder with the path '''<code>GAME_FILE.extension</code>.exefsdir''' (if it doesn't already exist).
* Copy '''code.bps''' to that directory.
* If you want faster aiming, copy '''code_faster_aim.bps''' instead and rename the patch to code.bps.
* Copy '''exheader.bin''' to the folder containing your game file, then rename it to '''<code>GAME_FILE.extension</code>.exheader'''. It is '''very important that you keep your game ROM's file extension, and also add '.exheader' at the end'''!
 
'''Example''': If your game is at /home/leo/games/3ds/zelda_mm.3ds, then:
 
* create /home/leo/games/3ds/zelda_mm.3ds.exefsdir
* copy '''code.bps''' to /home/leo/games/3ds/zelda_mm.3ds.exefsdir/'''code.bps'''
* copy '''exheader.bin''' and place the file in /home/leo/games/3ds/, calling it '''zelda_mm.3ds.exheader''' (note the double extension!)
 
'''IMPORTANT: Read the instructions carefully again. It is all too common for people to make a mistake with file names.'''
 
* Example: If your game file is called ''00000000.app'', the exefsdir folder and the exheader must be called ''00000000.app.exefsdir'' and ''00000000.app.exheader'' respectively.
* Example: If your game file is called ''zelda_mm3d.cia'', the exefsdir folder and the exheader must be called ''zelda_mm3d.cia.exefsdir'' and ''zelda_mm3d.cia.exheader'' respectively.
 
The directory which contains your game file should look like this at the end:
 
* [Folder] Containing directory
* yourgamefilenamehere.3ds
* yourgamefilenamehere.3ds.exheader
* [Folder] yourgamefilenamehere.3ds.exefsdir
* code.bps
 
==Troubleshooting==
'''My 3DS or Citra crashes'''
 
Delete any file you copied while following this guide and follow the instructions carefully again.
 
In particular, if you are playing on a 3DS, make sure that you have renamed exheader_legacy.bin to exheader.bin.
 
If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.
 
'''The patch isn't applied'''
 
Make sure that you put the patch files (code.bps and exheader.bin) into the right folder. Ensure that you are using the correct title ID for your game.
 
If you are playing on a 3DS console, check whether game patching is enabled.
 
==Frequently Asked Questions==
 
'''Is such a patch available for Ocarina of Time 3D?'''
 
As of March 2020, no. While I am interested in making a QoL patch for OoT3D, unfortunately I have no time to work on such a project at the moment. But unlike its sequel, OoT3D does not urgently need a Project Restoration-style mod anyway :)
 
'''Hero mode?'''
 
Currently, I have no time to work on hero mode either. And hero mode is somewhat out of the scope of this project anyway.
 
'''Restored lighting? The bright colours ruin the atmosphere!'''
 
Project Restoration attempts to fix what regressed in MM3D by restoring original mechanics and adding QoL improvements. I do not consider the graphical changes a regression. Even colourful games can be dark, and I'd argue that in Majora's Mask the unique atmosphere mostly comes from the stunning storytelling and narrative.
 
'''How do I update Project Restoration?'''


Simply follow the setup instructions again.
Simply follow the setup instructions again.
Line 235: Line 197:
For 3DS console users, you do not need to set up Luma3DS from scratch again.
For 3DS console users, you do not need to set up Luma3DS from scratch again.


'''How was this made?'''
'''Q. How was this made?'''


By reverse engineering the game to understand how it works (at least partially). No, I don't work at Grezzo! For more details, you're encouraged to look at the source code.
By reverse engineering the game to understand how it works (at least partially).


== Rationale ==
For more details, you're encouraged to look at the source code.


=== Zora swim ===
==Screenshots==
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds3.png
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds6.png


In MM3D, swimming is a bit slower. It is possible to fast swim; however it now requires and consumes magic at a fast rate. Chateau Romani isn't a satisfactory workaround: it only becomes available after a bunch of quests and requires wasting most of the First Day, and even then it's still impossible to get rid of the constant buzzing sound that comes from using the barrier.
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds5.png
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds4.png


Besides, why would Zora Link need magic to swim like a Zora?
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds10.png
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds8.png


=== Inverted Song of Time potency ===
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds9.png
https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds7.png


The ISoT nerf might have been another unintended change.
==Media==
'''Project Restoration Mod Review - Majora's Mask 3D''' ([https://www.youtube.com/watch?v=_pbs7OTrnbo Fonald 3D]) <br>
<youtube>_pbs7OTrnbo</youtube>


The in-game time is updated by adding a speed value and another value I'll call the extra speed to the time variable every frame. In MM, the time speed is usually 3 (units/frame) and the ISoT sets the extra speed to -2, resulting in a +1 effective speed (which means 1/3 speed). Because the time is updated every frame, in MM3D, the developers reduced the speed to 2 to compensate for the increased framerate. The ISoT was updated to set the speed to -1 instead of -2. However, that only gives players 1/2 speed.
==Compatibility==
Project Restoration works with a real 3DS or Citra.  


I couldn't see any good reason to keep this change, so I reverted it.
Note that some features make use of the new ZL/ZR buttons, so playing on a New 3DS/2DS or Citra is recommended for a better experience.


=== Twinmold ===
==Changelog==
'''v1.5.9 2022/01/02'''
* Several tweaks to the Elegy of Emptiness and Stone Tower were made to improve the user experience.
** The statue is now spawned faster and it is now impossible to step off floor switches before the statue has materialised.
** Stone Tower blocks now move at a less dizzying speed.
* ISG (Infinite Sword Glitch) was reimplemented.
* The console sound setting is now honoured; the game no longer forces surround mode.
* Fixed a softlock that could occur if an owl statue is hit immediately after playing the ocarina (#167).
* Fixed Link being able to transform into Goron Link while carrying Mystery or Moldy Milk.
* Fixed a rare, random crash that could occur if ZR was held during transitions.
* Fixed quick arrow swapping quirks when L targeting.


The new Twinmold battle drags on for way too long. Spinning the main stick makes it faster, but that's not an obvious mechanic. Even with that trick, killing Red Twinmold still takes 3 long identical cycles!
'''v1.5.8 2020/04/25'''
* Fixed a possible softlock in the Bomber's Notebook.


Another issue is the addition of a hidden hit counter. 10 hits are required to stun Red or Blue Twinmold. This would have been acceptable if it weren't for the fact that Red Twinmold regularly burrows back into sand during phase 2 and the hit counter is silently reset every time that happens.
'''v1.5.7 2020/04/25'''
* Fixed a softlock when fighting Gyorg during phase 2 (Thanks to Zelda Informer for the bug report).
* Fixed yet another softlock when fighting Gyorg during phase 2 (Yes, Grezzo's Gyorg is buggy).


This makes for a confusing experience the first time the player fights Twinmold, as there is nothing in the game that indicates that the hit counter resets every time, and it's still frustrating on subsequent playthroughs.
'''v1.5.6 2020/04/05'''
 
* For consistency reasons, Red Twinmold now always requires 2 damage cycles.
== About the project ==
* Fixed a possible softlock when fighting Gyorg during phase 1.
 
* Fixed a very rare crash when fighting Gyorg during phase 2.
''Project Restoration'' was born out of frustration with some of the changes in the remaster (regarding Zora Link in particular), with the realisation that I might be able to have my cake and eat it too, and get the best out of the original and MM3D's massively improved graphics and small quality of life improvements.
* The Elegy of Emptiness statue spawn mini-cutscene is now automatically skipped to further streamline gameplay in Stone Tower.
 
* Re-added [https://www.zeldaspeedruns.com/mm3d/tech/mask-storage Mask Storage]. It had been accidentally removed when fast transform was added. Fast transform can now also be stored. Also re-added [https://www.zeldaspeedruns.com/mm/tech/ocarina-dive Ocarina Dive] for testing purposes.
I personally consider the project to be pretty much complete. The game is '''playable with no game-breaking issues''', has been 100% completed several times by myself and others (now that the project is more than two months old!) and I have fixed everything I have most wanted to fix, so I probably will not be working on it very actively anymore. Future versions of ''Project Restoration'' will most likely only be bug fix releases, which may occasionally bring small new improvements.
* Controls:
 
** The Items screen is now opened with SELECT and the Bomber's Notebook with START for consistency with existing dialogue messages in the game.
=== Project structure ===
** The Ocarina can now be used by pressing D-Pad Right (when Tatl is not trying to get the player's attention). The current shortcut (ZR+A) and the on-screen button still work.
 
** In Zora form, it is now more convenient to switch between fast swim and slow swim: use the D-Pad Up/Down or ZL (new). Hold ZR to slow down (this was previously done with ZL).
* <code>source/</code> ''Project Restoration'''s source code.
** Additional button controls for the Bomber's Notebook:
* <code>build/</code>: build outputs.
*** Switch between the Schedule (timeline) view and the Events view with Y.
* <code>common/</code>: small utilities.
*** Set or delete an alarm with X.
* <code>game/</code>: implementation for the known parts of ''Majora's Mask 3D''. Contains headers and some reimplementation of game functions.
*** Open the map with SELECT.
* <code>rst/</code>: ''Project Restoration'' code.
* <code>v100/</code>, <code>v101/</code> and <code>v110/</code>: Version-specific data.
* <code>hooks.hks</code>: configuration for patches and hooks (for Magikoopa).
* <code>Version.cmake</code>: defines for ''Project Restoration'' code.
* <code>loader/</code>: Code loader (from [https://github.com/RicBent/Magikoopa Magikoopa]).
 
Sometimes you will find ''Project Restoration'' extensions and new code under <code>source/game</code>. Those extensions will always be clearly labelled as such.


=== Build instructions ===
[https://github.com/leoetlino/project-restoration/releases Release notes.]


* Put the original code.bin and exheader.bin in v100, v101 and v110.
==External links==
* Run make_release.sh. You need git and Magikoopa in your PATH. '''Currently, a [https://github.com/leoetlino/Magikoopa fork] is required'''.
* Official website - https://restoration.zora.re/#troubleshooting
* Generated code patches (code.bps) and patched exheaders can be found in <code>release/</code>.
* GitHub - https://github.com/leoetlino/project-restoration
* GitHub - https://github.com/leoetlino/project-restoration-site


PRs and help are welcome!
[[Category:3DS homebrew rom hacks]]
[[Category:Homebrew 3DS game hacks]]

Revision as of 06:29, 24 January 2022

Majora Mask 3D Project Restoration
File:Majoras-mask.jpg
General
Authorleoetlino
TypeGame Hacks
Version1.5.9
LicenseMixed
Last Updated2022/01/03
Links
[1.5.9 & HD HUD bundle pack Download]
Website
Source

Project Restoration is a patch for Majora's Mask 3D that restores some mechanics from the original game and adds quality-of-life improvements and fixes to make it more enjoyable.

Features

  • Mikau playing his guitar. Wait, no, that's Link!
  • Fixed Deku Link.
  • Transformation masks usable with the D-Pad.
  • More fluid Bomber's Notebook.
  • Song of Time optional saving and tweaks.
  • Improved bosses and Twinmold.
  • Restored Ice Arrows.
  • Button tweaks for controller players.
  • Many other improvements.

Installation

The mod is compatible with all versions of the game (except the Korean release) and with existing saves.

Standard

To set up the patch, download it then open the .7z file with a tool like 7-Zip. Double-click on the folder that matches your game version to open it, but do not extract it yet.

  • v110 - If you have MM3D 1.1 (game card with 1.1 preinstalled).
  • v100 - For MM3D 1.0 (non-updated eShop or non-updated 1.0 gamecard).
  • v100 - For MM3D 1.1 (updated eShop or updated 1.0 gamecard). Try v101 only if v100 doesn't work.
  • The Korean version of the game is not supported. You will need to play on another version.

For 3DS users:

  • This guide assumes that you have a homebrewed 3DS with Luma3DS v10.1+. If this is not the case, follow this guide for help.
  • Open the 3ds folder in the 7-Zip archive.
  • Create the /luma/titles/TITLE_ID/ directory on your SD card (if it doesn't already exist). Replace TITLE_ID with:
    • EUR - 0004000000125600
    • USA - 0004000000125500
    • JPN - 00040000000D6E00
  • Copy code.bps and exheader.bin to that directory.
  • Enable game patching in Luma's menu.

For Citra users:

  • Open the citra folder in the 7-Zip archive.
  • Right click on the game in the game list and select Open Mods Location.
  • Copy code.bps and exheader.bin to that directory.

HD HUD

The HD HUD project is made for Citra users, it aims to redesign the game's interface and heads-up display to be more suitable for HD resolutions. You will find the following in the download:

Step 1:

  • Open HD HUD v1.5.9-5, double-click on the folder that matches your game version to open it, but do not extract it yet:
    • v110 if you have MM3D 1.1 (game card with 1.1 preinstalled)
    • v100 for MM3D 1.0 (non-updated eShop or non-updated 1.0 gamecard)
    • v100 for MM3D 1.1 (updated eShop or updated 1.0 gamecard). Try v101 only if v100 doesn't work.
  • Then right click on the game in the game list and select Open Mods Location.
  • Open the citra folder in the archive, then copy code.bps and exheader.bin to the Mod Location folder. Overwrite any existing file, if needed.

Step 2:

  • Extract either one of the layout archive in the Mods Location. Copy the romfs folder itself to the Mods Location.
  • If you've followed the instructions correctly, you should see code.bps, exheader.bin and romfs (folder) in the Mods Location.

Step 3:

  • Right click on the game in the Citra game list and select Open Custom Texture Location. Put the texture and there.
  • Enable custom textures in Citra (Emulation > Configure... > Graphics > Use Custom Textures).
  • Optional, but highly recommended to also extract the HD texture pack in the Custom Texture Location. The textures come from the MM3DHD project by DeathWrench and currently cover almost all of the game menus and Link's forms.

User guide

Notes

  • If everything was set up correctly, a sound effect will be played right before the title screen, before the spinning mask appears.
  • You can also tell if the patch was applied by checking whether the Start button opens the Bomber's Notebook (if you have it) and SELECT opens the Items menu.
  • In order to use the new ZL/ZR buttons, the Circle Pad Pro must be enabled in MM3D's options, even if you are playing on a New 3DS.
  • If you want faster aiming, copy code_faster_aim.bps instead of copying code.bps and rename the patch to code.bps.
  • Patches are provided for all versions of the game. However, all versions other than v1.0 (v100) will be temporarily downgraded to ensure everything works fine.

Changes overview

  • Fixed Zora Link.
    • Swim gracefully like a Zora without having to use magic.
    • Fast swim is the default way of swimming and no longer requires magic.
    • Slow swim is still available. Press Up/Down on the D-Pad or ZL to toggle between fast swim and slow swim. You can also hold ZR to swim slowly.
  • Fixed Deku Link (water hopping).
    • Deku Link's acceleration reduction is reverted to fix the water hopping mechanic.
    • As a side effect of the acceleration change, hopping was very slow in the unpatched game.
  • Fast Transform.
    • Transform without having to equip items for a more streamlined gameplay.
    • Use the D-Pad to transform (Left: Zora, Up: Goron, Down: Deku, ZR+Up: Fierce Deity)
    • This frees up as many as 4 buttons.
  • More Fluid Bomber's Notebook.
    • Quicker popups and transitions.
    • The Bomber's Notebook screen updates instantly instead of taking 5 seconds to pop up every time you get a quest update. It all adds up.
  • Optional Song of Time Saving.
    • For the classic Majora's Mask experience, you can optionally save the game after playing the Song of Time.
    • After loading a classic save, players will be greeted with the iconic Dawn of the First Day screen just like in the original game.
  • Improved Bosses.
    • Odolwa, Goht and Gyorg's giant eyeballs are gone. They didn't add much.
    • Odolwa's AI and attacks are rebalanced to improve gameplay.
    • A bug that caused Odolwa to be invulnerable to attacks and block excessively was fixed.
    • This patch reduces the number of cycles to make it less repetitive.
    • Red Twinmold no longer resets its hit counter every time it burrows back into the sand. This makes the boss battle much less confusing.
  • Restored Ice Arrows.
    • Ice arrows work everywhere in Great Bay Temple, not just in Gyorg's room.
    • This gives the player more freedom to experiment with ice arrows. They also work in several other areas outside the temple, just like in the original game.
    • Removes the sparkling water effects as they are an insult to the player's intelligence.
  • More Potent Inverted Song of Time (slow time to 1/3 speed just like the original).
    • In Majora's Mask 3D, the ISoT only slows time to 1/2 speed rather than 1/3 - likely an oversight.
    • This patch fixes the regression, making some glitchless challenge runs possible again and giving the player more time in a three-day cycle.
  • Button Tweaks for Controller Players with optional bindings.
    • (ZL) Switch arrows, Pictograph Box.
    • (ZR+A or D-Pad Right) Ocarina of Time.
    • (ZR+X/Y) I/II item. Items can be assigned to I and II too.
    • (Select) Items.
    • (Start) Bomber's Notebook
    • (ZR+Start) Gears.
    • (ZR+Select) Map.
    • (Start/Select) Switch between the instrument screen and the song list.
  • Streamlined gameplay.
    • Link no longer plays the Elegy of Emptiness again after it's been played once. This makes Stone Tower less tedious.
    • The Song of Soaring is only repeated once during a play session for similar reasons.
    • The speed of Stone Tower blocks has been adjusted for a more pleasant climbing experience.
    • Free camera mode can be used more often, notably when targeting, talking or playing the ocarina.
  • Less handholding.
    • The moving platforms in Deku Palace and Woodfall Temple now actually always move.
    • Captain Keeta now walks as fast as in the original game, which restores the challenge of the chasing mini-game.
    • Link can now leave the Swordman's School during training if necessary to avoid wasting time.
    • The Bombers will no longer distract the player from a particular cutscene just to ensure you get their hints.
    • The new Sheikah hint stone will also no longer distract the player during an important cutscene in the Clock Tower.
  • For the classic experience.
    • Owl statues can be activated by striking them with a sword.
    • It is possible to control Goron Link rolling just like in the Nintendo 64 version: hold A and move to roll, release A to stop.
    • The classic control scheme co-exists with the new one.
  • Bug fixes.
    • Fixes a game bug that caused the "heart container get" sound not to play after getting four heart pieces.
    • Fixes a game bug that prevented the player from leaving free camera mode by targeting when Zora swimming or Goron rolling.
    • Fixes a possible softlock during the Twinmold boss intro.
    • Fixes a possible softlock when fighting Gyorg during phase 1.
    • Fixes 2 other possible softlocks when fighting Gyorg during phase 2.

Troubleshooting

My 3DS crashes:

  • Delete any file you copied while following this guide and follow the instructions carefully again.
  • In particular, make sure that you have renamed exheader_legacy.bin to exheader.bin.
  • If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.

Citra crashes:

  • Delete any file you copied while following this guide and follow the instructions carefully again.
  • If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.
  • You may also need to set the console region in Citra's settings manually.

The patch isn't applied:

  • Make sure that you put the patch files (code.bps and exheader.bin) into the right folder. Ensure that you are using the correct title ID for your game.
  • If you are playing on a 3DS console, check whether game patching is enabled.

On Citra, after I press ZR, the button stays pressed permanently:

  • That is caused by an incorrect controller mapping in Citra. It is not a Project Restoration issue.
  • When mapping the controller, hold the trigger on your controller before attempting to map the button in Citra.

FAQ

Q. Is such a patch available for Ocarina of Time 3D?

As of October 2021, no. Author has neither the time nor the interest to work on a QoL patch for OoT3D. Not that OoT3D really needs to be patched anyway.

Q. Hero mode?

Hero mode is somewhat out of the scope of this project.

Q. Restored lighting? The bright colours ruin the atmosphere!

Project Restoration attempts to fix what regressed in MM3D by restoring original mechanics and adding QoL improvements.

Even colourful games can be dark, and in Majora's Mask the unique atmosphere mostly comes from the stunning storytelling and narrative.

Q. How do I update Project Restoration?

Simply follow the setup instructions again.

For 3DS console users, you do not need to set up Luma3DS from scratch again.

Q. How was this made?

By reverse engineering the game to understand how it works (at least partially).

For more details, you're encouraged to look at the source code.

Screenshots

projectrestoration3ds3.pngprojectrestoration3ds6.png

projectrestoration3ds5.pngprojectrestoration3ds4.png

projectrestoration3ds10.pngprojectrestoration3ds8.png

projectrestoration3ds9.pngprojectrestoration3ds7.png

Media

Project Restoration Mod Review - Majora's Mask 3D (Fonald 3D)

Compatibility

Project Restoration works with a real 3DS or Citra.

Note that some features make use of the new ZL/ZR buttons, so playing on a New 3DS/2DS or Citra is recommended for a better experience.

Changelog

v1.5.9 2022/01/02

  • Several tweaks to the Elegy of Emptiness and Stone Tower were made to improve the user experience.
    • The statue is now spawned faster and it is now impossible to step off floor switches before the statue has materialised.
    • Stone Tower blocks now move at a less dizzying speed.
  • ISG (Infinite Sword Glitch) was reimplemented.
  • The console sound setting is now honoured; the game no longer forces surround mode.
  • Fixed a softlock that could occur if an owl statue is hit immediately after playing the ocarina (#167).
  • Fixed Link being able to transform into Goron Link while carrying Mystery or Moldy Milk.
  • Fixed a rare, random crash that could occur if ZR was held during transitions.
  • Fixed quick arrow swapping quirks when L targeting.

v1.5.8 2020/04/25

  • Fixed a possible softlock in the Bomber's Notebook.

v1.5.7 2020/04/25

  • Fixed a softlock when fighting Gyorg during phase 2 (Thanks to Zelda Informer for the bug report).
  • Fixed yet another softlock when fighting Gyorg during phase 2 (Yes, Grezzo's Gyorg is buggy).

v1.5.6 2020/04/05

  • For consistency reasons, Red Twinmold now always requires 2 damage cycles.
  • Fixed a possible softlock when fighting Gyorg during phase 1.
  • Fixed a very rare crash when fighting Gyorg during phase 2.
  • The Elegy of Emptiness statue spawn mini-cutscene is now automatically skipped to further streamline gameplay in Stone Tower.
  • Re-added Mask Storage. It had been accidentally removed when fast transform was added. Fast transform can now also be stored. Also re-added Ocarina Dive for testing purposes.
  • Controls:
    • The Items screen is now opened with SELECT and the Bomber's Notebook with START for consistency with existing dialogue messages in the game.
    • The Ocarina can now be used by pressing D-Pad Right (when Tatl is not trying to get the player's attention). The current shortcut (ZR+A) and the on-screen button still work.
    • In Zora form, it is now more convenient to switch between fast swim and slow swim: use the D-Pad Up/Down or ZL (new). Hold ZR to slow down (this was previously done with ZL).
    • Additional button controls for the Bomber's Notebook:
      • Switch between the Schedule (timeline) view and the Events view with Y.
      • Set or delete an alarm with X.
      • Open the map with SELECT.

Release notes.

External links

Advertising: