More actions
No edit summary |
No edit summary |
||
(5 intermediate revisions by one other user not shown) | |||
Line 4: | Line 4: | ||
|description=Improved NTR streamer for N3DS (XL/LL). | |description=Improved NTR streamer for N3DS (XL/LL). | ||
|author=zbash92 | |author=zbash92 | ||
|lastupdated=2024/ | |lastupdated=2024/09/16 | ||
|type=Custom Firmwares | |type=Custom Firmwares | ||
|version=0. | |version=0.3.0.1 | ||
|license=GPL-2.0 | |license=GPL-2.0 | ||
|download=https://github.com/xzn/ntr-hr/releases | |download=https://github.com/xzn/ntr-hr/releases | ||
Line 21: | Line 21: | ||
* Stability improvements. | * Stability improvements. | ||
* Changes from NTR 3.6: | * Changes from NTR 3.6: | ||
** Use up to three cores for encoding | ** Use up to three cores for encoding. | ||
*** Improved frame rate by around 80% to 120% compared to 3.6 | *** Improved frame rate by around 80% to 120% compared to 3.6. | ||
** Can now switch between games and keep the stream going | ** Can now switch between games and keep the stream going. | ||
** No more green tint when streaming games with RGB565 output (e.g. SMT4) | ** No more green tint when streaming games with RGB565 output (e.g. SMT4). | ||
** Can now update quality setting, QoS, and screen priority settings while streaming | ** Can now update quality setting, QoS, and screen priority settings while streaming. | ||
** New menu item in NTR menu (accessed by X + Y), can be used to change viewer's port and other settings | ** New menu item in NTR menu (accessed by X + Y), can be used to change viewer's port and other settings. | ||
*** Has NFC patching functionality | *** Has NFC patching functionality. | ||
*** Can start Remote Play from the menu and change viewer's IP | *** Can start Remote Play from the menu and change viewer's IP. | ||
** Skip duplicate frames (when actual frame rate is lower than how fast NTR can encode) | ** Skip duplicate frames (when actual frame rate is lower than how fast NTR can encode). | ||
*** Should lead to better frame pacing | *** Should lead to better frame pacing. | ||
** Various optimizations and updated dependencies | ** Various optimizations and updated dependencies. | ||
** Fixed race conditions in startup unhooking code. Should no longer crash/fail to initialize randomly when starting NTR, or when starting remote play. | ** Fixed race conditions in startup unhooking code. Should no longer crash/fail to initialize randomly when starting NTR, or when starting remote play. | ||
*Removed all other features aside from streaming and PLG loading: | *Removed all other features aside from streaming and PLG loading: | ||
** Screenshots, debugger, and night color are available with Luma3DS/rosalina | ** Screenshots, debugger, and night color are available with Luma3DS/rosalina. | ||
** Real-time save/load doesn't save/load handles (and has no way of doing so) and generally doesn't work very well | ** Real-time save/load doesn't save/load handles (and has no way of doing so) and generally doesn't work very well. | ||
** No way to disable high CPU clock/L2 cache after starting remote play. | ** No way to disable high CPU clock/L2 cache after starting remote play. | ||
== User guide == | == User guide == | ||
You can find a more detailed guide on [https://wiki.hacks.guide/wiki/3DS:Wireless_streaming Hacks Guide Wiki]. | You can find a more detailed guide on [https://wiki.hacks.guide/wiki/3DS:Wireless_streaming Hacks Guide Wiki]. | ||
Line 56: | Line 57: | ||
=== Recommended setup === | === Recommended setup === | ||
====Connecting 3DS to your PC==== | ==== Connecting 3DS to your PC ==== | ||
A WiFi dongle dedicated to host a hotspot for the 3DS is recommended. You can go to device manager and disable 5GHz mode for the WiFi dongle you are using for hotspot to maximize connection stability and connection speed for 3DS. If you have something like a Raspberry Pi you can connect the RPI to PC with Ethernet and run the hotspot off the RPI instead (with bridged connection). This should guarantee a connection speed up to 18Mbps without dropping too many packets. | A WiFi dongle dedicated to host a hotspot for the 3DS is recommended. You can go to device manager and disable 5GHz mode for the WiFi dongle you are using for hotspot to maximize connection stability and connection speed for 3DS. | ||
If you have something like a Raspberry Pi you can connect the RPI to PC with Ethernet and run the hotspot off the RPI instead (with bridged connection). This should guarantee a connection speed up to 18Mbps without dropping too many packets. | |||
====Viewer settings==== | ====Viewer settings==== | ||
Quality is recommended to be between 75 and 90. At 75 you'd get between 55 to 75 fps. 40 to 60 fps for quality 90. (Tested on N2DS. N3DS seems to have 10% to 15% lower streaming performance) (Assuming good WiFi connection, which you can have if you use a dedicated 2.4GHz only hotspot) | Quality is recommended to be between 75 and 90. At 75 you'd get between 55 to 75 fps. 40 to 60 fps for quality 90. (Tested on N2DS. N3DS seems to have 10% to 15% lower streaming performance) (Assuming good WiFi connection, which you can have if you use a dedicated 2.4GHz only hotspot) | ||
QoS can be up to 18 for around 18Mbps. Higher values will cause more packet drops. | QoS can be up to 18 for around 18Mbps. Higher values will cause more packet drops. Priority settings is up to your personal preference. | ||
Priority settings is up to your personal preference. | |||
== Controls == | == Controls == | ||
Line 74: | Line 75: | ||
* When cheat plugins have been loaded, launching another game (or the same game again) would hang for certain plugins. | * When cheat plugins have been loaded, launching another game (or the same game again) would hang for certain plugins. | ||
* [https://github.com/toolboc/UWPStreamer UWPStreamer] flickers and crashes sometimes. | * [https://github.com/toolboc/UWPStreamer UWPStreamer] flickers and crashes sometimes. | ||
* [ | * [[NTRView Wii U]] flickers especially when core count is set to more than one. | ||
* 3DS web browser will crash if used with remote play. | * 3DS web browser will crash if used with remote play. | ||
== Changelog == | == Changelog == | ||
'''v0.3.0.1 2024/09/16''' | |||
* Fix a long standing bug where skip duplicate frames would not work if top and bottom screen have different buffer formats on the 3DS. | |||
* Reliable Stream init packets are now sent less frequently. | |||
'''v0.3.0 2024/09/06''' | |||
*Many bug fixes. | |||
** Fixes a couple of race conditions leading to corrupt encoded stream | |||
*Added QTM disable toggle | |||
** Can be used to disable head tracking on New 3DS, boosting remote play by around 10~15%. Still a little bit slower than New 2DS but should be better than before. | |||
*Added Reliable Stream mode | |||
** Requires latest NTRViewer-HR ([https://github.com/xzn/ntrviewer-hr/releases/tag/v0.2.0.0 v0.2.0.0]). | |||
** Currently lacking congestion control. To maximize performance make sure to manually set bandwidth limit to what you network can actually handle. (When running optimally, the four numbers after ''Counter'' in NTRVewer-HR title bar should be almost the same. If the first number is significantly higher than the next three, you should decrease bandwidth limit) | |||
** Should have less hiccup than the old protocol, however isn't backward compatible. | |||
** In the future can be used with delta encoding, as well as audio capture, if that ever gets implemented. | |||
'''v0.2.1.2 2024/06/20''' | '''v0.2.1.2 2024/06/20''' | ||
*Always send frames at least once a second. (Prevent Snickerstream from timing out.) | *Always send frames at least once a second. (Prevent Snickerstream from timing out.) |
Latest revision as of 02:39, 22 September 2024
NTR-HR | |
---|---|
General | |
Author | zbash92 |
Type | Custom Firmwares |
Version | 0.3.0.1 |
License | GPL-2.0 |
Last Updated | 2024/09/16 |
Links | |
Download | |
Website | |
Source | |
NTR-HR is an updated NTR streamer homebrew based on NTR CFW. It is backward compatible with all existing NTR viewers. This fork attempts to improve the wireless streaming aspect of the homebrew. Currently it is able achieve 60 ~ 90 fps for average quality settings (at 18Mbps).
Note: NTR CFW's video streaming only works for New3DS.
Features
- Improved performance (and reduced battery life due to more CPU utilization).
- Stability improvements.
- Changes from NTR 3.6:
- Use up to three cores for encoding.
- Improved frame rate by around 80% to 120% compared to 3.6.
- Can now switch between games and keep the stream going.
- No more green tint when streaming games with RGB565 output (e.g. SMT4).
- Can now update quality setting, QoS, and screen priority settings while streaming.
- New menu item in NTR menu (accessed by X + Y), can be used to change viewer's port and other settings.
- Has NFC patching functionality.
- Can start Remote Play from the menu and change viewer's IP.
- Skip duplicate frames (when actual frame rate is lower than how fast NTR can encode).
- Should lead to better frame pacing.
- Various optimizations and updated dependencies.
- Fixed race conditions in startup unhooking code. Should no longer crash/fail to initialize randomly when starting NTR, or when starting remote play.
- Use up to three cores for encoding.
- Removed all other features aside from streaming and PLG loading:
- Screenshots, debugger, and night color are available with Luma3DS/rosalina.
- Real-time save/load doesn't save/load handles (and has no way of doing so) and generally doesn't work very well.
- No way to disable high CPU clock/L2 cache after starting remote play.
User guide
You can find a more detailed guide on Hacks Guide Wiki.
What you need:
Download the .cia (BootNTR Selector enhanced mod) from the release page and install it with FBI. You can also install it via the QR code.
Start NTR-HR on the 3DS, choose the second option 3.6HR.
On the PC, run an NTR viewer of your choice (kitkat slim, CuteNTR, Snickerstream, Chokistream, NTR Viewer HR, etc).
Enter the 3DS IP address, change quality, priority factor, etc and click Connect.
Note that Snickerstream will not let you change settings during a stream, but it does have more filters available.
Recommended setup
Connecting 3DS to your PC
A WiFi dongle dedicated to host a hotspot for the 3DS is recommended. You can go to device manager and disable 5GHz mode for the WiFi dongle you are using for hotspot to maximize connection stability and connection speed for 3DS.
If you have something like a Raspberry Pi you can connect the RPI to PC with Ethernet and run the hotspot off the RPI instead (with bridged connection). This should guarantee a connection speed up to 18Mbps without dropping too many packets.
Viewer settings
Quality is recommended to be between 75 and 90. At 75 you'd get between 55 to 75 fps. 40 to 60 fps for quality 90. (Tested on N2DS. N3DS seems to have 10% to 15% lower streaming performance) (Assuming good WiFi connection, which you can have if you use a dedicated 2.4GHz only hotspot)
QoS can be up to 18 for around 18Mbps. Higher values will cause more packet drops. Priority settings is up to your personal preference.
Controls
X+Y - NTR CFW Menu (Remote Play, Plugin Loader, Set Menu Hotkey, NFC Patch)
Known issues
- Skip duplicate frames doesn't work as expected sometimes.
- Some games are not compatible with streaming.
- When cheat plugins have been loaded, launching another game (or the same game again) would hang for certain plugins.
- UWPStreamer flickers and crashes sometimes.
- NTRView Wii U flickers especially when core count is set to more than one.
- 3DS web browser will crash if used with remote play.
Changelog
v0.3.0.1 2024/09/16
- Fix a long standing bug where skip duplicate frames would not work if top and bottom screen have different buffer formats on the 3DS.
- Reliable Stream init packets are now sent less frequently.
v0.3.0 2024/09/06
- Many bug fixes.
- Fixes a couple of race conditions leading to corrupt encoded stream
- Added QTM disable toggle
- Can be used to disable head tracking on New 3DS, boosting remote play by around 10~15%. Still a little bit slower than New 2DS but should be better than before.
- Added Reliable Stream mode
- Requires latest NTRViewer-HR (v0.2.0.0).
- Currently lacking congestion control. To maximize performance make sure to manually set bandwidth limit to what you network can actually handle. (When running optimally, the four numbers after Counter in NTRVewer-HR title bar should be almost the same. If the first number is significantly higher than the next three, you should decrease bandwidth limit)
- Should have less hiccup than the old protocol, however isn't backward compatible.
- In the future can be used with delta encoding, as well as audio capture, if that ever gets implemented.
v0.2.1.2 2024/06/20
- Always send frames at least once a second. (Prevent Snickerstream from timing out.)
v0.2.1.1 2024/02/15
- Minor fix to priority calculation.
v0.2.1 2024/02/14
- Minor stability improvements.
v0.2.0.4 2024/02/10
- Always try to update the remote play viewer IP when updating remote play settings from the NTR menu.
v0.2.0.3 2024/02/10
- (Attempt to) fix a short freeze when changing remote play settings/menu cannot be opened.
v0.2.0.2 2024/02/09
- Network stability improvement.
v0.2.0.1 2024/02/09
- Fix regression where skip duplicate frames was not working.
v0.2.0 2024/02/09
- Various stability improvements.
v0.1.6.2 2024/02/05
- Fix low priority screen sometimes gets stuck and no longer gets captured.
v0.1.6.1 2024/02/05
- Do last core work load calculation from info from the right time.
- Minor other changes.
v0.1.6 2024/02/04
- Fix race condition in screen capture code that would hang remote play session.
- Fix regression where viewer cannot update its IP address to 3DS.
v0.1.5 2024/02/03
- Flush entire bin in initialization.
v0.1.4 2024/02/03
- Fixed crash when toggling Loader Mem option.
- Thanks @flanter21 for the report!
v0.1.3 2024/02/03
- Fixed multiple crashes.
v0.1.2.1 2024/02/03
- Re-add NTR menu hotkey option.
- Moved NFC patch to main NTR menu.
v0.1.2 2024/02/03
- Fix possible crash if attaching to game fails.
v0.1.1 2024/02/03
- Add RGB5A1 support, needed by some Virtual Console games. (perhaps)
v0.1.0 2024/02/03
- Changes:
- Improved start up handling code. Should no longer randomly crashes when initializing or when starting remote play.
- Can no longer receiver NFC patch through the network. Use NFC patch option in the remote play menu instead. (Press X+Y to open NTR menu after starting NTR-HR, then choose remote play)
- Removed following features:
- Screenshot
- Process dump (you can still use the 3.6 version for this)
- Various debugger commands
- Night color
- Real-time save/load
- (...and maybe a few other stuff I can't remember)
- Most features above are also available in Luma3DS' rosalina in better forms.
- Real-time save/load doesn't work very well as it has no way of retaining handles across saves. If people have uses for it I can add it back in.
- Currently only remote play streaming and plg loading are available.
- Note: Currently there's no way to change the CPU state back to low clock or high clock without L2 cache after starting remote play. I should probably put this option back in in case there's an compatibility issue.
- Some other logging and error messages display changes. (No more need to connect to each attached process separately with NTRDebugger to see error messages, everything get sent through home menu process by default.)
v3.6 Modded 20240126-2
- Increase lower bound of encoder priority to the default value . Lower nice value causes slowdown anyway.
v3.6 Modded 20240126
- Synchronization adjustment. Less likely to hang when updating remote play settings.
v3.6 Modded 20230125-3
- Minor synchronization adjustment.
v3.6 Modded 20230125-2
- Fix variable initialized in wrong order.
- Use separate thread for screen capture info.
v3.6 Modded 20230125
- Added option to change encoding thread priority (between 0x8 to 0x3f) to avoid slowing down the game and causing audio crackling.
- Added optional memcpy method from PabloMK7 NTR 3.6.1 for screen capture.
- NTR menu should no longer cause CPP to disengage, or games to hang. Using functions from Luma3DS to pause the game when the menu is open.
- Added a bunch of code from the current libctru to wait for vblank when overlay callback is not available.
v3.6 Modded 20240122
- Refresh unchanged frames properly when reconnecting.
v3.6 Modded 20240121
- Changed default options to be more compatible. Should no longer crash with CTRPF plugins (by default).
- Added more options to NTR menu for game plugins loading.
- Misc change to night shift menu.
- Copied some code from CTRPF for overlay hooking. (TODO update license).
v3.6 Modded 20240119-2
- Updated Remote Play request packet protocol to allow port number of viewer to be specified.
- Used by NTRViewer-HR.
v3.6 Modded 20240119
- Fixed some race conditions in networking code. Should have less flickering/frame drops in viewers.
v3.6 Modded 20240118-2
- Added an option in the Remote Play menu to capture the previous frame instead of the current one. Can fix staircase artifact if present.
v3.6 Modded 20240118
- Fixed a typo in my previous commit that prevents overlay plugins (and night shift) from working.
- Priority factor 0 now behaves as expected.
- Added an option to disable all screen overlay functions to be compatible with CTRPF-based plugins.
v3.6 Modded 20240117
- Contains a major change: now use NTR's swap buffer callback to time screen capture if possible. Try the previous version if you are having issues.
- When active, should lead to smoother frames. (Currently there's no indicator if this is active or not. Fallback happens automatically.
- Networking fix: a major bug that may cause random frame drops was fixed.
v3.6 Modded 20240116-3
- Maybe fix potential regression with home menu plugins (can't find any to test sorry.. do they even exist?)
v3.6 Modded 20240116-2
- Added toggle to menu to disable sys region memory for plugins. For testing purpose only, as many plugins will crash if you use this option.
v3.6 Modded 20240116
- Fixed a regression where certain games would freeze when closing NTR menu.
3.6 Modded 20240115
- Revert some changes that caused many cheat plugins to crash. Unfortunately plugins will hang the launch of next game again for most games.
- Minor change to menu code, it really shouldn't flicker out of existence now.
v3.6 Modded 20240114
- Fixed hang on launching another game after attaching a process, or after using a cheat plugin (some hang may be the result of how the plugin is written and likely cannot be fixed in NTR).
- Removed intentional delay in UI.
- Misc stability improvement.
v3.6 Modded 20240113-2
- Misc stability improvement when starting NTR and remote play.
v3.6 Modded 20240113
- NTR menu no longer flickers in and out of existence.
v3.6 Modded 20240112-4
- Fix crash when quality and core count are changed from the menu.
v3.6 Modded 20240112-3
- Fix the latest frame not being sent when skipped, noticeable when screen is barely updating (regression in previous update, sorry).
v3.6 Modded 20240112-2
- Fix auto adjust last encoding core load when skipping frames and when changing core count.
- Edit: Has known issue, use the newer version please.
v3.6 Modded 20240112
- Misc bug fixes from compiler warnings.
v3.6 Modded 20240111-3
- Fix NTRViewer displaying less than 10% "Quality" (now update frame ID properly when skipping frames).
- More reliable Remote Play menu item values.
v3.6 Modded 20240111-2
- Fix remote play viewer's IP cannot be changed from viewer's side.
v3.6 Modded 20240111
- Changes:
- Can now start Remote Play from 3DS.
- Can now change the number of encoding cores.
- Can now update Remote Play viewer's IP if changed.
- NFC patch from the menu.
- BootNTR changes:
- Can now exit first launch by pressing [B].
- First launch config now saves properly.
- Version bump.
v3.6 Modded 20240108
- Main change is that duplicate frames (when actual frame rate is lower than encoding speed) are no longer sent.
- Reported frame rate in viewer will be lower but frame pacing should hopefully be better.
- Changed Remote Play menu so you can no longer start remote play from the menu. Can still change port before viewer is started.
v3.6 Modded 20240107-2
- Added Remote Play to NTR menu (accessible by pressing X + Y).
- Can now change the destination port of viewer in the menu. (In case you want to stream multiple N3DS at the same time with Snickerstream.) Currently the settings aren't saved and need to be changed each time you launch NTR.
- Slight stability improvement (fixed a bug where remote play would crash if the network thread is hung for more than one second, say while in the menu).
v3.6 Modded 20240107
- Modified DMA config, memory usage is now back to what it was before the change to support full-width top screen.
v3.6 Modded 20240106
- Adjusted game switching check (hopefully USUM no longer crash when soft resetting).
v3.6 Modded 20240105
- BootNTR:
- Added "HR" logo to button (for this modded version).
- Removed 3.2 and 3.3 versions.
- Added 3.6.1 version (in case you need the original one)
- NTR:
- Updated game process handle obtaining method.
v3.6 Modded 20240103
- Add support for format 0 (XBGR) output, used by some emulators.
- Add support for full width top screen (800x240), used by some emulators.
v3.6 Modded 20240102
- Slight improvement in screen capture latency.
v3.6 Modded 20231229
- Bug fix dynamic restart marker had the wrong range.
v3.6 Modded 20231228-2
- More reliable syncing between threads.
- Adaptive restart marker interval depending on App Core 1 usage.
v3.6 Modded 20231228
- Use restart marker for parallel Huffman encoding.
- Use up to three cores for encoding. (Improve performance by up to 50%, though in some case performance is lower)
v3.6 Modded 20231224
- Fix wrong QoS calculation introduced with the mod.
Credits
- cell9.
- Nanquitas.
- PabloMK7 (for 3.6.1).
Thanks especially cell9 for releasing the source of NTR 3.6 making this mod possible.