Also known as HzMod, HorizonModule, and HorizonM
Summary
A lot of information can be found at this forum post: https://gbatemp.net/threads/hzmod-old3ds-screen-streaming.469817/
A basic summary of the different files (not all are included in each build):
- HorizonM.cia or HzMod.cia = Backend / Base Module (does not show up on Home Menu)
Note: If you ever need to uninstall this the TitleID is probably 000401300CF00F02
- HzLoad.cia = Launcher (shows up on Home Menu, does not contain module)
- HzLoad_HIMEM.cia = Launcher for extended-memory games on Old 3DS + 2DS ONLY
- HorizonScreen = PC-side viewer by Sono. May not work with some builds; for those use the following...
- Snickerstream = PC-side viewer by RattletraPM. Should work with all builds, has pretty much stopped receiving updates.
Note: Builds of Snickerstream are not hosted on this website. Please go to the project's Github page:
https://github.com/RattletraPM/Snickerstream
List of Builds
-
June 6, 2020
HzMod.cia
Here is a debug build with the following changes:
- removed C++
- fixed the CStick bug which was caused by erroronous CPadPro initialization
- for this reason the VRAM corruptor is not accessible, because it uses ZL + ZR
- experimental RGB to YUV422 acceleration, might cause weird graphics
- fixed a double-copy bug for games which had their framebuffers in VRAM (including Home Menu)
- Top Screen Only
- JPEG: Home Menu averages 30+ FPS on n3DS
- TARGA Games: Still stream in JPEG, for some games the colors became more broken. Seems about equally fine on HorizonScreen and Snickerstream.
- Compatible with Snickerstream
-
June 11, 2019
HzMod.cia
If someone still wants old3DS screen streaming (or new3DS for that matter), then there is a test release before I release a build with all the optimizations enabled.
This is a test release. Because this is guaranteed to break, please don't complain to RattletraPM (the author of SnickerStream) if the graphics output looks broken, it's HzMod's fault. This is intended for testing a work-in-progress feature to see how it performs. If you don't want to test a broken build then it's advised to ignore this test build, and wait for the release build.
Because some games use a screen format which is not compatible with the JPEG library I'm using, some games like MK7 will run at less than 0.5FPS on old3DS, and around 2 FPS on new3DS. To fix this, I made my own converter which can convert the pixel data to the format the JPEG library uses, so it can compress faster. To test this, just download the cia and install it in the link in the third sentence in the first paragraph. But be warned, it is not compatible with HzScreen (as it'll show garbage pixel data), and only RGB565 games will look right, everything else will be broken into stripes of data.
There'll be an update to HzMod soon which'll include stupid performance optimizations and trickery to get some extra FPS at the cost of having a seizure or motion sickness.
FINALLY IMPLEMENTED RGB565, SO MK7 RUNS AT 4FPS! :yay3ds:
Yeah uh, I broke COLOR, so it'll be monochrome for now...
...or will be? It's a "bit" too green, I'll have to debug the magic values to be able to fix it, but it works™ for now. This green tint doesn't work in HzScreen, it'll be just a sea of pixel vomit.
Also further improvements to overall stability and other minor adjustments have been made to enhance the user experience.
- Top Screen Only
- JPEG: Home Menu averages 30+ FPS on n3DS
- Previously TARGA games are now streamed in JPEG! Colors are broken. Snickerstream is preferred because it handles this slightly better somehow.
- Compatible with Snickerstream
-
February 8, 2018
HorizonM.cia
new3DS-only update:
-tweaked new3DS constants
-reduced memory usage (not that it matters... so far only a single non-extended old3DS-compatible application crashed due to too much memory usage)
Appearently only tweaking some constants made Home Menu not lag on new3DS while keeping a stable-ish 25-30FPS. This also fixed new2DS (before this update it ran like on an old3DS), and the reported max FPS for new2DS is 50FPS (at average use it's around 35-42) due to HzMod having a dedicated CPU core on new2DS due to lack of 3D.
Note: this is only a sysmodule update, you must already have a working setup before applying this update.
Note: don't install this update if you have an old3DS, you'll get 1-2FPS drop. I'm still working on more hacky optimizations (including failed ones) behind the scenes.
- Top Screen Only
- Now no lag console-side on n3DS!
- JPEG: Home Menu averages 30+ FPS on n3DS
- TARGA: Home Menu averages 2-4 FPS on n3DS, lagless 3DS-side.
- Compatible with Snickerstream
-
February 4, 2018
HorizonM.cia, HzLoad.cia, HzLoad_HIMEM.cia, and HorizonScreen :)
Just a half-assed update:
-halved memory usage (Mario Maker 3DS works now)
-reorgznized code flow for extra FPS (up to 2.5FPS increase)
-reverted HorizonScreen version (yay for entering the IP address from console!)
-optimized screen tearing on old3DS (in some low-CPU games screen tearing is almost nonexistant)
-removed motion sickness on old3DS (if screen tearing is bad then it will only update the dispay when all stripes in a frame are received)
-added autoreconnect (it will autoreconnect as long as your 3DS or your network doesn't die)
-hardcoded top screen for optimized code flow (multiscreen support increases binary size, RAM usage, and decreases performance JUST BY EXISTING)
Please note that some of these "perks" are only available when using Luma9 due to Luma9 reimplementing things and thus reducing the overall system memory usage.
Please note that the halved memory usage is only noticable when using NTR or InputRedirection is by using Rosalina to launch HzMod due to HzLoad taking up too much memory to launch HzMod. Halved memory usage applies to most if not all extended memory games regardless of the launcher used.
- Top Screen Only
- Compression Options! JPEG 1-100% and TARGA. For some games, JPEG is not allowed.
- JPEG: Home Menu averages 30+ FPS on n3DS, but lags a bit 3DS-side.
- TARGA: Home Menu averages 4-6 FPS on n3DS, lagless 3DS-side.
- Compatible with Snickerstream
-
December 14, 2017
HorizonM.cia, HzLoad.cia, HzLoad_HIMEM.cia, and HorizonScreen :)
Some source code and binaries before the rewrite.
I don't know if "the rewrite" has even happened as of 2021 but whatever lol
It's probably buggy and not fully optimized. It's here for archival purposes.
There are three README files in here! Read all of them for slightly more information.
- Top + Bottom Screen
- Maybe uncompressed, looks decent. But there's almost zero V-Sync.
- Home Menu averages 2-5 FPS on n3DS
- No lag 3DS-side
- Does support TARGA (but looks even worse due to screen sync issues)
- Mostly stable, some games are not supported.
- Not compatible with Snickerstream.
-
August 14, 2017
HorizonM.cia
Just a binary for the backend.
It's here for archival purposes.
- Top Screen Only
- Quite bad JPEG compression
- Home Menu averages 15-16 FPS on n3DS
- Forcibly lags Home Menu (more than last version) and games
- Does support TARGA
- Seems to be somewhat compatible with Snickerstream
- Has crashed the n3DS at least twice, overall very buggy.
-
May 5, 2017 / June 23, 2017
HorizonM.cia, HzLoad.cia, HzLoad_HIMEM.cia, and HorizonScreen :)
Not source code, only binaries.
It's here for archival purposes.
- Top + Bottom Screen
- Quite bad JPEG compression
- Home Menu averages 15-17 FPS on n3DS
- (TARGA) Super Mario 3D Land averages 2-6 FPS on n3DS (no lag console-side)
- Forcibly lags Home Menu and some(?) games
- Does support TARGA
- Not compatible with Snickerstream
- Slightly buggy display-wise.