Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

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

From GameBrew
No edit summary
No edit summary
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox-3DS-Homebrews
{{Infobox 3DS Homebrews
| title = Majora Mask 3D Project Restoration
|title=Majora Mask 3D Project Restoration
| image = https://dlhb.gamebrew.org/3dshomebrew/majoras-mask.jpg|250px
|image=Projectrestoration3ds2.png
| type = Game Hacks
|description=A Majoras Mask 3D patch that restores some mechanics from the original Majoras Mask.
| version=v1.5.8
|author=leoetlino
| lastupdated = 2020/04/25
|lastupdated=2022/01/02
| licence = Mixed
|type=Game Hacks
| author = leoetlino
|version=1.5.9
| website = https://restoration.zora.re/
|license=Mixed
| download = https://dlhb.gamebrew.org/3dshomebrew/MajorasMaskN64OSTto3DS.zip
|download=https://dlhb.gamebrew.org/3dshomebrews/projectrestoration3ds.7z?k33p0fil35 1.5.9 & HD HUD
| source = https://github.com/leoetlino/project-restoration
|website=https://restoration.zora.re
|source=https://github.com/leoetlino/project-restoration
}}
}}
<youtube>fJoSh9nrdYM</youtube>
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==
* Fixed Zora 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.


= Majora Mask 3D Project Restoration =
==Installation==
The mod is compatible with all versions of the game (except the Korean release) and with existing saves.


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.
===Standard===
To set up the patch, download it then open the .7z file with a tool like [https://www.7-zip.org 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.


'''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.
'''For 3DS users:'''
* 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.
* 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.


== Changes ==
'''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.


* '''Zora Fast Swim''': Swim gracefully as a Zora without having to use magic
===HD HUD===
* Fast swim is now the default way of swimming and no longer requires magic.
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:
* 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.
* 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].
* '''Fixed Deku Hopping''': Hop on water as fast as in MM
* Layout archive - From [https://restoration.zora.re/hd-hud project restoration site].
* Deku Link's walk acceleration value was nerfed in MM3D (2.0 -&gt; 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.
* Layout archive (for Xbox users) - From [https://restoration.zora.re/hd-hud project restoration site].
* '''Fast Transform''': Transform without having to equip items for a more streamlined gameplay
* Texture - From [https://restoration.zora.re/hd-hud project restoration site].
* Three of the four D-Pad buttons are now used to fast transform (''Left'': Zora, ''Up'': Goron, ''Down'': Deku)
* HD texture pack - From [https://restoration.zora.re/hd-hud project restoration site].
* This frees up as many as 3 buttons!
* '''More Fluid Bomber's Notebook''': Less annoyingly slow popups and transitions
* The Bomber's Notebook screen now updates instantly when it's opened instead of waiting for 1.8 seconds just before starting the &quot;new&quot; 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 &quot;heart container get&quot; 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==
'''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.


Project Restoration v1.5.8 was released on 25/04/2020.
'''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.7:
'''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.


* Fixed a possible softlock in the Bomber's Notebook.
==User guide==
 
If everything was set up correctly, a sound effect will be played right before the title screen, before the spinning mask appears.  
Changes since 1.5.6:
 
* 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.)
 
Project Restoration v1.5.6 was released on 05/04/2020.
 
Changes since 1.5.5:
 
* 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 [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 ==
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 the Select button opens the Items menu.


''Project Restoration'' works on both the 3DS console (both eShop and game card) and on the Citra emulator.
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.


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


* If you have MM3D 1.0 (eShop or game card), you likely have v100 (FYI: v100 is the real, internal version number).
If you want faster aiming, copy code_faster_aim.bps instead of copying code.bps and rename the patch to code.bps.
* If you have MM3D 1.1 on a game card and it came with 1.1 preinstalled, you likely have v110.
* 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.


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).
===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.


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


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


* For the European release: 0004000000125600
* More Fluid Bomber's Notebook.
* For the American release: 0004000000125500
** Quicker popups and transitions.
* For the Japanese release: 00040000000D6E00
** 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.


Keep both the version number and the title ID in mind, then follow the instructions for your platform (console or Citra) below.
* 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.


Please note that:
* 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.


* If the patch is applied successfully, '''a sound effect will be played''' right before the title screen, even before the spinning mask appears.
* Restored Ice Arrows.
* 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.
** Ice arrows work everywhere in Great Bay Temple, not just in Gyorg's room.  
* 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.
** 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.


=== Console ===
* 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.


* If you are a first time Luma3DS user, follow [https://3ds.hacks.guide/ this guide].
* Button Tweaks for Controller Players with optional bindings.
* 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.
** (ZL) Switch arrows, Pictograph Box.
* ['''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.
** (ZR+A or D-Pad Right) Ocarina of Time.
* [https://github.com/AuroraWright/Luma3DS/wiki/Optional-features Enable game patching in Luma's menu].
** (ZR+X/Y) I/II item. Items can be assigned to I and II too.
* 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.
** (Select) Items.
* Copy '''code.bps''' to that directory.
** (Start) Bomber's Notebook
* (If you want faster aiming, copy '''code_faster_aim.bps''' instead and rename the patch to code.bps.)
** (ZR+Start) Gears.
* Copy '''exheader_legacy.bin''' to that directory and rename the file to '''exheader.bin'''.
** (ZR+Select) Map.
** (Start/Select) Switch between the instrument screen and the song list.


The relevant files on your SD card should look like this at the end:
* 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.


* SD card root
* Less handholding.
* boot.firm
** The moving platforms in Deku Palace and Woodfall Temple now actually always move.
* [Folder] luma
** Captain Keeta now walks as fast as in the original game, which restores the challenge of the chasing mini-game.
* [Folder] titles
** Link can now leave the Swordman's School during training if necessary to avoid wasting time.
* [Folder] (the Title ID you determined earlier)
** The Bombers will no longer distract the player from a particular cutscene just to ensure you get their hints.
* code.bps
** The new Sheikah hint stone will also no longer distract the player during an important cutscene in the Clock Tower.
* 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.
* 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.


=== Citra ===
* 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.


Note: Canary 1529+ is required until my [https://github.com/citra-emu/citra/pull/5036 pull request] for BPS patch support is merged.
===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.


* Open the folder containing your game file (3ds/cia/app).
Citra crashes:
* 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).
* Delete any file you copied while following this guide and follow the instructions carefully again.
* Copy '''code.bps''' to that directory.
* If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.
* If you want faster aiming, copy '''code_faster_aim.bps''' instead and rename the patch to code.bps.
* You may also need to set the console region in Citra's settings manually.
* 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:
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.


* create /home/leo/games/3ds/zelda_mm.3ds.exefsdir
On Citra, after I press ZR, the button stays pressed permanently:
* copy '''code.bps''' to /home/leo/games/3ds/zelda_mm.3ds.exefsdir/'''code.bps'''
* That is caused by an incorrect controller mapping in Citra. It is not a Project Restoration issue.  
* copy '''exheader.bin''' and place the file in /home/leo/games/3ds/, calling it '''zelda_mm.3ds.exheader''' (note the double extension!)
* When mapping the controller, hold the trigger on your controller before attempting to map the button in Citra.


'''IMPORTANT: Read the instructions carefully again. It is all too common for people to make a mistake with file names.'''
===FAQ===
'''Q. Is such a patch available for Ocarina of Time 3D?'''


* 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.
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.  
* 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:
'''Q. Hero mode?'''


* [Folder] Containing directory
Hero mode is somewhat out of the scope of this project.
* yourgamefilenamehere.3ds
* yourgamefilenamehere.3ds.exheader
* [Folder] yourgamefilenamehere.3ds.exefsdir
* code.bps


==Troubleshooting==
'''Q. Restored lighting? The bright colours ruin the atmosphere!'''
'''My 3DS or Citra crashes'''


Delete any file you copied while following this guide and follow the instructions carefully again.
Project Restoration attempts to fix what regressed in MM3D by restoring original mechanics and adding QoL improvements.


In particular, if you are playing on a 3DS, make sure that you have renamed exheader_legacy.bin to exheader.bin.
Even colourful games can be dark, and in Majora's Mask the unique atmosphere mostly comes from the stunning storytelling and narrative.


If you are absolutely sure you have followed the instructions correctly, try all three patch variants (v100/v101/v110) until one of them works.
'''Q. How do I update Project Restoration?'''
 
'''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 220: Line 200:
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 ===


* Put the original code.bin and exheader.bin in v100, v101 and v110.
[https://github.com/leoetlino/project-restoration/releases Release notes.]
* Run make_release.sh. You need git and Magikoopa in your PATH. '''Currently, a [https://github.com/leoetlino/Magikoopa fork] is required'''.
* Generated code patches (code.bps) and patched exheaders can be found in <code>release/</code>.


PRs and help are welcome!
==External links==
* Official website - https://restoration.zora.re/#troubleshooting
* GitHub - https://github.com/leoetlino/project-restoration
* GitHub - https://github.com/leoetlino/project-restoration-site

Latest revision as of 13:53, 6 July 2024

Majora Mask 3D Project Restoration
Projectrestoration3ds2.png
General
Authorleoetlino
TypeGame Hacks
Version1.5.9
LicenseMixed
Last Updated2022/01/02
Links
1.5.9 & HD HUD 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

  • Fixed Zora 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

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 the Select button 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.

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.

If you want faster aiming, copy code_faster_aim.bps instead of copying code.bps and rename the patch to code.bps.

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.png projectrestoration3ds6.png

projectrestoration3ds5.png projectrestoration3ds4.png

projectrestoration3ds10.png projectrestoration3ds8.png

projectrestoration3ds9.png projectrestoration3ds7.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: