4K UI Overlay Utility Guide (For displaying a 4K HUD on a single display using some tricks) - TexturesGuide/OoT3D_4K_SetupGuide GitHub Wiki
How to set up a 4K HUD Single-Screen Experience for OoT3D using OBS (Open-Broadcaster Software)
I've received lots of requests from people for a way to display the HUD (rupees, hearts, items etc.) on the top display. Unfortunately, this is not possible in a simple and clean way currently (There are no mods available yet for displaying the HUD on the top screen of the game only, like the Project Restoration HD HUD mod for Majora's Mask 3D but for OoT3D). However, using some third party software (OBS) it's possible to achieve a similar effect as the HD HUD mod for Majora's Mask 3D in OoT3D by doing some clever trickeries with chroma keying and masking. I have achieved precisely such an effect, with all the necessary preset settings you need to achieve it available right here for you to use yourself!
Using this method and my 4K textures, you can experience a truly immersive single-screen OoT3D experience with beautiful visuals!




How does this work?
In short, this method uses chroma-keying (color masking) in third party software, OBS (Open Broadcasting Software), to mask out and overlay various UI elements from the bottom screen of the game to the top one. Basically copy-pasting the UI from the bottom screen to the top screen, which means you can play the game with only the top screen in fullscreen with no need to switch to the bottom screen as frequently (you still need to access it for some menus and item swaps, but it's not strictly necessary and the bottom screen can still be navigated using only a controller at any time). This setup means your game will be running in fullscreen in the background, while OBS captures the game's display output in the background and renders it in its own window, where the masked out UI elements get overlaid on top of. You can then set the OBS window to fullscreen, and use that as your primary game window for actually playing the game. There is no noticeable input lag with this method, however it is a bit more resource intensive than playing the game on it's own, so keep that in mind before you decide to try this method.
So let's get started! But first, there are some pre-requisites for this method you need to be aware of, and it is a bit glitchy, so please don't expect perfect results!
=====================
Pre-Requisites:
=====================
- Windows is ideal for this setup, but this should work on Linux / Mac as well (no guarantees however, I haven't tried it on those platforms). It will not work on Android.
- A relatively modern graphics card that is able to run a display at 4K or higher (it does not need to be able to run the game in 4K, only the display)
- A display that can display in 16:9 widescreen.
The display does not need to be able to output in 3840x2160 (4K) at 60 FPS natively, but your operating system (Windows) MUST be set to at least 1440p for this method to work. If you have an ADM or NVIDIA graphics card, then setting the resolution higher than your monitor supports in your graphics card control panel will work with this setup, and should produce great looking results. Basically, you need to force Windows to display the operating system in 4K for this method to work.
- OBS (download it from the OBS website: https://obsproject.com/)
- You need my special 4K UI Overlay Custom Textures & Scene Collection for the user interface in 4K (download it from here), which have been modified to work best for this method in particular. It uses a strong magenta / pink color in some parts of the menus which allows for easier and cleaner masking using chroma-keying in OBS, which this method relies on. Don't freak out if some of the menus look magenta, that's normal when using this method.
- The OBS Scene Collection I have created, which is provided alongside the required modified custom textures, in the same .zip file. Again, this preset assumes that your monitor or TV is currently set to 4K and will not work unless that is the case.
=====================
Follow these steps:
=====================
-
Make sure you meet the pre-requisites above, and that your display is set to 4K (3840x2160) output resolution.
-
Make sure that you have the regular version of the texture pack installed and working in your emulator normally first. The download further down on this page does not include the texture pack itself, only a few modified textures for this UI overlay method to work better with chroma-keying.
-
Download the .zip archive from here which includes the Scene Collection for OBS, as well as the modified textures and a modified version of my 'Ultra' Reshade preset.
-
In your 3DS emulator: Right click on OoT3D in your games list > "Open Custom Textures Location".
This is where my texture pack should be installed already, if you've followed the previous instructions.
- From the .zip you downloaded in Step 2, open the "Modified Textures" folder and copy the "UI" folder into your Custom Textures Location folder. There should already be a folder named "UI" in the same location, so when it asks if you want to overwrite existing files, click "Yes."
STOP RIGHT HERE: Start the game and check if the bottom screen menu in-game has a magenta or pink background (during gameplay, when you're able to control Link). If the background is NOT magenta or pink, then one of the previous steps were not followed correctly. Check that you have placed the files in the correct location!
-
In your 3DS emulator: Set the "View" > "Screen Layout" to "Side by side" in the top bar settings. << VERY IMPORTANT!
-
Next, in your Windows (or other operating system) Display Settings, set the output resolution on your display to 3840x2160 / 4K. This is REQUIRED for this to work. It does not matter if your display is not a 4K display, the important thing is that Windows (or your operating system) needs to believe the display is running at 4K.
If you're unable to set 3840x2160 as your output resolution, or if the option isn't available in the list of available resolutions, you might need to manually add 3840x2160 as an option. This is easiest done using your graphics card control panel (if you know how to do this, you can do that), or you can use a free program called Custom Resolution Utility, which lets you do the same thing (Windows only). Just add "3840x2160 @ 60 Hz" or "3840x2160 @ 30 Hz" to the list of available resolutions on your monitor, and you should then be able to select it from the list of resolutions in the Windows display settings menu.
- Next, install and open up OBS and import the included Scene Collection that's in the .zip you downloaded earlier, through the top hotbar in OBS. Make sure that is is also selected.

A scene called "OOT3D4K_User_Interface_Scenes (4K) (Version Number)" should be imported, alongside a couple of window sources. Your OBS should now look very similar to this;

-
Next, open up OoT3D in your emulator.
-
Now comes an important part: While the game is running in the background, open up OBS. Double click each of the 'Window Sources' (i.e. The ones called "Y_Item_GameView", "X_Item_GameView", "Game Window" etc.) and MAKE SURE that the Window sources are set to your emulator's window '.exe' process in the list of running processes. After you have done this with all the window sources, the game should be visible in OBS (although it won't display correctly).

Set the "Window" drop down selection to your emulator's .exe, like this.
- In OBS > Settings > Video, set both resolutions to 3840x2160 and the frame rate to 60 or 30 (either frame rate will work, OoT3D is a 30 fps game).

-
Now, in your emulator, Enable 'Fullscreen' (View > Fullscreen, or the hotkey 'F11' on your keyboard)
-
Make sure that the 4K textures are active in the game (i.e. it says "4K" on the title screen). If they are not, try pressing 'F7' on your keyboard while in fullscreen- this should unload / load the custom textures if they ever become unloaded (they sometimes do when switching to and from fullscreen, this is an emulator bug).

This is what OBS should look like now.
- And lastly, tab out of the game window (do not close fullscreen), bring up OBS again, right click the Video Preview in the middle of the screen and select "Fullscreen projection" > Select the screen you want to play on (this can be the same screen you're using for the game, it doesn't matter).

That's it! You should now have the user interface visible on-screen, and you can play the game like normal inside of the OBS fullscreen preview. The settings should be automatically saved at this point, so next time you want to play all you need to do is open up the game in fullscreen and OBS, and it should work. If you have any questions, please ask on Discord.
Some important Information about the quirks of this method:
-
The UI is a WIP, and has several issues. They are all visual bugs though, and nothing game breaking, as this method modifies or adds no code to the game or emulator.
-
The touch screen will display as pink outside of OBS, this is normal because the way this method works is by "keying" out the pink color from the bottom screen and only leaving the icons and text to be projected onto OBS.
-
This method works on all language versions my texture pack supports (at the time of writing this, that's English, German, Spanish and Japanese).
-
You can use "J" on your keyboard to hide / unhide the extra UI elements at any time during gameplay. This is particularly useful in cutscenes, where some of the UI elements may display incorrectly and disrupt the experience.
-
Since the installation is external, uninstalling is simple. Just don't start OBS and set the game view back to how you want it. However, you also need to re-install my 4K texture pack (overwrite the modified textures from this utility) or your bottom touch screen will still display as magenta.
Made with love, enjoy! :D
-Henriko
