More actions
(Fix typo) |
No edit summary |
||
(34 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
|description=A from-scratch re-implementation of Snickerstream. | |description=A from-scratch re-implementation of Snickerstream. | ||
|author=Eiim, herronjo, ChainSwordCS | |author=Eiim, herronjo, ChainSwordCS | ||
|lastupdated= | |lastupdated=2024/10/30 | ||
|type=3DS Streaming | |type=3DS Streaming | ||
|version= | |version=2.2.0 | ||
|license=GPL- | |license=GPL-2.0 | ||
|download=https:// | |download=https://dlhb.gamebrew.org/3dshomebrews/chokistream3ds.7z | ||
|website=https://github.com/Eiim/Chokistream/wiki | |website=https://github.com/Eiim/Chokistream/wiki | ||
|source=https://github.com/Eiim/Chokistream/releases | |source=https://github.com/Eiim/Chokistream/releases | ||
}} | }} | ||
Nintendo 3DS wireless video capture software, compatible with [[ChirunoMod 3DS|ChirunoMod]], [[BootNTR Selector 3DS|BootNTR]] and [[HzMod 3DS|HzMod]] and the only cross-platform video capture software to support HzMod. | |||
It is a from-scratch re-implementation of [[Snickerstream 3DS|Snickerstream]], with | It is a from-scratch re-implementation of [[Snickerstream 3DS|Snickerstream]], with TARGA support in part from [https://github.com/ChainSwordCS/TGAHz-Parsing TGAHz] and HorizonScreen. | ||
==Features== | ==Features== | ||
* | *Pure Java - works on essentially any platform. Tested on Windows and Linux, and lightly tested on Mac and FreeBSD. | ||
*Various display output options to get it looking just right | |||
* Various display output options to get it looking just right | *Chokistream can also run entirely headless and stream straight to a video file, or output frames to image files. | ||
* | |||
==User guide== | ==User guide== | ||
===Using Chokistream=== | |||
'''Note:''' Requires Java 17 to run. | |||
Make sure either [[BootNTR_3DS|NTR]], [[NTR-HR 3DS|NTR-HR]], [[HzMod 3DS|HzMod]], or [[ChirunoMod 3DS|ChirunoMod]] is installed and running on the 3DS. NTR and NTR-HR only supports the New 3DS family. | |||
When you first launch Chokistream, you'll need to select the mod you're using (NTR/HzMod/ChirunoMod) and fill in the IP of your 3DS. These are the most important parts of the setup. There are a number of homebrew apps that can show you your IP: | |||
* [[The_Homebrew_Launcher_3DS|The Homebrew Launcher]]. Press Y in the menu of apps. | |||
* [[WiFi Status Checker 3DS|Wi-Fi Status Checker]] (available on [[Universal-Updater 3DS|Universal Updater]]). | |||
* [[ftpd 3DS|ftpd]] (available on Universal Updater). | |||
* [[FBI 3DS|FBI]] > Remote install > Receive URLs... (available on Universal Updater). | |||
* Use a network scanner, such as the one in the [https://play.google.com/store/apps/details?id=com.ubnt.usurvey WIFIman app] or a PC utility like Nmap. | |||
You may want to set the layout for a better appearance, and the scale if you find that the image is too small. It is recommended to use integer scaling, but decimal is also supported. Depending on your mod, you'll likely also want to set mod settings. | |||
Once you're ready, hit "Connect!". After it connects to the 3DS, it should start showing the display(s). You can press S to take a screenshot, or up and down to adjust the quality if you're using HzMod. | |||
===Chokistream options=== | |||
'''General options:''' | |||
*Streaming Mod - The 3DS mod to connect to (NTR, HzMod, ChirunoMod). (Default: NTR) | |||
*3DS IP - The IP address of the 3DS. (Default: 0.0.0.0) | |||
*Layout -The layout of the two screens. Supported in visual output. (Default: Separate) | |||
*Top Scale - Multiplicative factor to scale the top screen by. (Default: 1.0) | |||
*Bottom Scale - Multiplicative factor to scale the bottom screen by. (Default: 1.0) | |||
*Color Mode - Effect to manually correct for color issues (Regular, VC Blue Shift (Test), Grayscale). (Default: Regular) | |||
*3DS Port - The port Chokistream will attempt to connect to (Integer 0-65535). (Default: Depends on mod) | |||
*Log Mode - Where log output goes (Console, File, Both). (Default: Console) | |||
*Log Level - How much logging to enable (Regular, Verbose, Extreme). (Default: Regular) | |||
*Log File - What file to send logging output to in "File" and "Both" log modes. (Default: chokistream.log) | |||
*Output Format - Display the video on the screen, stream to a video file, or save frames as image files. (Default: Visual) | |||
'''NTR settings:''' | |||
*Quality - JPEG image quality (Integer 1-100). (Default: 70) | |||
*Priority Screen - Which screen to send more frequently. (Top, Bottom). (Default: Top) | |||
*Priority Factor - Factor for how frequently to send the priority screen compared to the non-priority screen. (Default: 8) | |||
*QoS - Networking packet priority value. (0-100). (Default: 26) | |||
'''HzMod settings:''' | |||
*Quality - JPEG image quality (Integer 0-100). (Default: 70) | |||
*Request TGA? - Whether to request TGA (lossless) images instead of JPEG. (on/off). (Default: off) | |||
*CPU Cap - CPU limiter for certain HzMod versions (0-100). (Default: 0) | |||
'''ChirunoMod settings:''' | |||
*Quality - JPEG image quality (Integer 1-100). (Default: 70) | |||
*Request TGA? - Whether to request TGA (lossless) images instead of JPEG. (on/off). (Default: off) | |||
*CPU Cap - CPU limiter for certain HzMod versions (0-100). (Default: 0) | |||
*Requested Screen - Which screen to send, or both. (Top, Bottom, Both). (Default: Top) | |||
*Interlace? - Whether or not to request interlaced images (on/off). (Default: off) | |||
'''File Streaming settings:''' | |||
*Video Codec - Codec to use when encoding video files. (Default: ProRes) | |||
*Video File - File to stream video to, without the extension. (Default: out) | |||
'''Image Sequence settings:''' | |||
*Image Directory - Folder to put frames in. (Default: out) | |||
*Image Prefix - Prefix for image files. (Default: None) | |||
===Chokistream vs Snickerstream=== | ===Chokistream vs Snickerstream=== | ||
{|class="wikitable" | {|class="wikitable" | ||
!Chokistream||Snickerstream | !Chokistream||Snickerstream | ||
|- | |- | ||
| | |HzMod TGA support||NTR Remote Control | ||
|- | |||
|ChirunoMod support||NTR/NFC patching | |||
|- | |- | ||
| | |Linux, MacOS, and other OSs support||Customizable controls | ||
|- | |- | ||
| | |Streaming to video or image files||Fullscreen mode | ||
|- | |- | ||
| | |Dual screen HzMod (2017-05-05) support||Better performance | ||
|- | |- | ||
| | |Flexible log output|| | ||
|- | |- | ||
|Headless mode|| | |Headless mode|| | ||
|- | |- | ||
|} | |} | ||
===HzMod Support Chart=== | ===HzMod Support Chart=== | ||
https://dlhb.gamebrew.org/3dshomebrews/ | {| style="width: 640px;" | ||
|https://dlhb.gamebrew.org/3dshomebrews/chokistream3ds7.png | |||
|} | |||
For more information see the [https://chainswordcs.com/horizon-by-sono.html list of tested builds] (maintained by ChainSwordCS), below is a basic summary of the different files: | |||
* HorizonM.cia or HzMod.cia - Backend/Base Module (does not show up on Home Menu, if you ever need to uninstall this the TitleID is probably 000401300CF00F02). | * HorizonM.cia or HzMod.cia - Backend/Base Module (does not show up on Home Menu, 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.cia - Launcher (shows up on Home Menu, does not contain module). | ||
* HzLoad_HIMEM.cia - Launcher for extended-memory games on Old 3DS + 2DS only. | * HzLoad_HIMEM.cia - Launcher for extended-memory games on Old 3DS + 2DS only. | ||
* [https://gbatemp.net/threads/hzmod-old3ds-screen-streaming.469817/post-9684176 HorizonScreen] - PC-side viewer by Sono. May not work with some builds. | |||
* [[Snickerstream 3DS|Snickerstream]] - PC-side viewer by RattletraPM. Should work with all builds. | |||
How to setup: | How to setup: | ||
Line 55: | Line 114: | ||
* Make sure your 3DS is connected to the internet, then launch HorizonM Loader (or HorizonM HIMEM Loader if you're on an Old 2/3DS and you want to stream high memory games). | * Make sure your 3DS is connected to the internet, then launch HorizonM Loader (or HorizonM HIMEM Loader if you're on an Old 2/3DS and you want to stream high memory games). | ||
* You should be booted back to the Home Menu and the notification LED should be cyan. Make sure Chokistream is connected on the same network as your PC, then launch Chokistream. | * You should be booted back to the Home Menu and the notification LED should be cyan. Make sure Chokistream is connected on the same network as your PC, then launch Chokistream. | ||
==Screenshots== | ==Screenshots== | ||
Line 87: | Line 124: | ||
==Changelog== | ==Changelog== | ||
'''v2.2.0''' | |||
* Rewrote most of NTRClient to communicate with NTR / NTR-HR in a more proper way. It should be generally less buggy. | |||
* Added a feature to adjust image settings for NTR-HR without having to disconnect and reconnect. | |||
* Added a feature to print debug info logged and sent by NTR / NTR-HR. | |||
* Properly support NTR-HR's config option to use a different port. | |||
* Fixed reconnecting to NTR after the NFC Patch is applied. | |||
* Fixed potential lockups in NTRUDPThread. | |||
* Slightly improved error-handling for corrupted image data. The video will no longer freeze / disconnect when a corrupted JPEG is received from NTR / NTR-HR. | |||
* Fixed a few overlooked issues with HzMod and ChirunoMod. | |||
* Other minor bugfixes and improvements. | |||
*Notable known Issues | |||
** Trying to connect sometimes yields a false-flag NoRouteToHostException ([https://github.com/Eiim/Chokistream/issues/38 #38]). If you encounter this issue, you should just have to retry a few times for it to work. | |||
'''v2.1.0''' | |||
* Steaming improvements. | |||
* NTR improvements. | |||
* HzMod/ChirunoMod improvements. | |||
* Additional and customizable controls. | |||
* Layout support for file streaming and image sequence modes. | |||
* License change from GPLv3 to GPLv2 (or later, except for NTRClient.java). | |||
* Fixed issue with INI files growing increasingly large. | |||
* More logging for NTR. | |||
* Code refactoring and cleanup. | |||
'''v2.0.1''' | |||
* NFC patch for NTR is now working, thanks to @ChainSwordCS! | |||
* Fixed handling for ChirunoMod v0.2.1 broken frames in certain cases. | |||
* Fixed hidden "Apply" button in NTR options. | |||
* File Streaming and Image Sequence output modes now respect scale parameters. | |||
* Improved performance, especially with certain edge cases for HzMod and ChirunoMod. | |||
'''v2.0''' | |||
*Compatibility. | |||
**Full HzMod TGA support. | |||
***There may be some extremely rare edge cases that don't work. If you find one, let us know!. | |||
**Better ChirunoMod and HzMod 24bpp compatibility. | |||
**Better HzMod fractional screen support. | |||
*Image Sequences: | |||
**We now support writing frames to image files! | |||
**Currently limited to PNG output. | |||
**Doesn't respect layout, outputs each frame individually as it gets them. | |||
*GUI: | |||
**Refactored GUI to use Swing instead of JavaFX. | |||
**This eliminates a major source of development difficulties on the GUI. | |||
**Also allows us to support more platforms (e.g. FreeBSD) as we're now fully pure-Java. | |||
**Also cuts our binary down from ~10MB to just ~3MB. | |||
**Simplified our GUI somewhat by removing the currently-unused Interpolation Mode, the newly-unused DPI, and moving video file settings to a new "Output Settings" window. | |||
**Added output settings for image sequences. | |||
**The main settings now have tooltips. | |||
**Assorted visual tweaks. | |||
*Other: | |||
**Better .ini file parsing. | |||
**Bugfix in video streaming output. | |||
'''v1.2''' | |||
*This release primarily adds support for fractional screen with HzMod. This is most strongly felt on Old 3DS systems, which become much more usable with this change, but may improve edge cases for New 3DS systems as well. Also includes one other minor bug fix. Thanks to @ChainSwordCS for debugging this release. | |||
'''v1.1''' | |||
*Full ChirunoMod support with [https://github.com/ChainSwordCS/ChirunoMod/releases/tag/v0.2 v0.2]! This includes things like: | |||
**Interlacing. | |||
**Much better O3DS support. | |||
**Improved image color mode support. | |||
**Options to request top/bottom/both screens. | |||
**Vsync/Hsync for interlacing and O3DS partial screen. | |||
**Much improved logging. | |||
**Lots of bug fixes. | |||
**Some minor code quality improvements. | |||
*[https://github.com/Eiim/Chokistream/compare/v1.0...v1.1 Full changelog]. | |||
'''v1.0''' | '''v1.0''' | ||
* HzMod TGA mode support (still somewhat limited). | * HzMod TGA mode support (still somewhat limited). | ||
Line 110: | Line 214: | ||
==External links== | ==External links== | ||
* GitHub - https://github.com/Eiim/Chokistream/ | * GitHub - https://github.com/Eiim/Chokistream/ | ||
Latest revision as of 03:28, 3 November 2024
Chokistream | |
---|---|
General | |
Author | Eiim, herronjo, ChainSwordCS |
Type | 3DS Streaming |
Version | 2.2.0 |
License | GPL-2.0 |
Last Updated | 2024/10/30 |
Links | |
Download | |
Website | |
Source | |
Nintendo 3DS wireless video capture software, compatible with ChirunoMod, BootNTR and HzMod and the only cross-platform video capture software to support HzMod.
It is a from-scratch re-implementation of Snickerstream, with TARGA support in part from TGAHz and HorizonScreen.
Features
- Pure Java - works on essentially any platform. Tested on Windows and Linux, and lightly tested on Mac and FreeBSD.
- Various display output options to get it looking just right
- Chokistream can also run entirely headless and stream straight to a video file, or output frames to image files.
User guide
Using Chokistream
Note: Requires Java 17 to run.
Make sure either NTR, NTR-HR, HzMod, or ChirunoMod is installed and running on the 3DS. NTR and NTR-HR only supports the New 3DS family.
When you first launch Chokistream, you'll need to select the mod you're using (NTR/HzMod/ChirunoMod) and fill in the IP of your 3DS. These are the most important parts of the setup. There are a number of homebrew apps that can show you your IP:
- The Homebrew Launcher. Press Y in the menu of apps.
- Wi-Fi Status Checker (available on Universal Updater).
- ftpd (available on Universal Updater).
- FBI > Remote install > Receive URLs... (available on Universal Updater).
- Use a network scanner, such as the one in the WIFIman app or a PC utility like Nmap.
You may want to set the layout for a better appearance, and the scale if you find that the image is too small. It is recommended to use integer scaling, but decimal is also supported. Depending on your mod, you'll likely also want to set mod settings.
Once you're ready, hit "Connect!". After it connects to the 3DS, it should start showing the display(s). You can press S to take a screenshot, or up and down to adjust the quality if you're using HzMod.
Chokistream options
General options:
- Streaming Mod - The 3DS mod to connect to (NTR, HzMod, ChirunoMod). (Default: NTR)
- 3DS IP - The IP address of the 3DS. (Default: 0.0.0.0)
- Layout -The layout of the two screens. Supported in visual output. (Default: Separate)
- Top Scale - Multiplicative factor to scale the top screen by. (Default: 1.0)
- Bottom Scale - Multiplicative factor to scale the bottom screen by. (Default: 1.0)
- Color Mode - Effect to manually correct for color issues (Regular, VC Blue Shift (Test), Grayscale). (Default: Regular)
- 3DS Port - The port Chokistream will attempt to connect to (Integer 0-65535). (Default: Depends on mod)
- Log Mode - Where log output goes (Console, File, Both). (Default: Console)
- Log Level - How much logging to enable (Regular, Verbose, Extreme). (Default: Regular)
- Log File - What file to send logging output to in "File" and "Both" log modes. (Default: chokistream.log)
- Output Format - Display the video on the screen, stream to a video file, or save frames as image files. (Default: Visual)
NTR settings:
- Quality - JPEG image quality (Integer 1-100). (Default: 70)
- Priority Screen - Which screen to send more frequently. (Top, Bottom). (Default: Top)
- Priority Factor - Factor for how frequently to send the priority screen compared to the non-priority screen. (Default: 8)
- QoS - Networking packet priority value. (0-100). (Default: 26)
HzMod settings:
- Quality - JPEG image quality (Integer 0-100). (Default: 70)
- Request TGA? - Whether to request TGA (lossless) images instead of JPEG. (on/off). (Default: off)
- CPU Cap - CPU limiter for certain HzMod versions (0-100). (Default: 0)
ChirunoMod settings:
- Quality - JPEG image quality (Integer 1-100). (Default: 70)
- Request TGA? - Whether to request TGA (lossless) images instead of JPEG. (on/off). (Default: off)
- CPU Cap - CPU limiter for certain HzMod versions (0-100). (Default: 0)
- Requested Screen - Which screen to send, or both. (Top, Bottom, Both). (Default: Top)
- Interlace? - Whether or not to request interlaced images (on/off). (Default: off)
File Streaming settings:
- Video Codec - Codec to use when encoding video files. (Default: ProRes)
- Video File - File to stream video to, without the extension. (Default: out)
Image Sequence settings:
- Image Directory - Folder to put frames in. (Default: out)
- Image Prefix - Prefix for image files. (Default: None)
Chokistream vs Snickerstream
Chokistream | Snickerstream |
---|---|
HzMod TGA support | NTR Remote Control |
ChirunoMod support | NTR/NFC patching |
Linux, MacOS, and other OSs support | Customizable controls |
Streaming to video or image files | Fullscreen mode |
Dual screen HzMod (2017-05-05) support | Better performance |
Flexible log output | |
Headless mode |
HzMod Support Chart
For more information see the list of tested builds (maintained by ChainSwordCS), below is a basic summary of the different files:
- HorizonM.cia or HzMod.cia - Backend/Base Module (does not show up on Home Menu, 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.
- Snickerstream - PC-side viewer by RattletraPM. Should work with all builds.
How to setup:
- Find a supported build, install HzLoad.cia and HorizonM.cia on your console (and also HzLoad_HIMEM.cia if you're on an Old 2/3DS).
- Make sure your 3DS is connected to the internet, then launch HorizonM Loader (or HorizonM HIMEM Loader if you're on an Old 2/3DS and you want to stream high memory games).
- You should be booted back to the Home Menu and the notification LED should be cyan. Make sure Chokistream is connected on the same network as your PC, then launch Chokistream.
Screenshots
Known issues
Please see https://github.com/Eiim/Chokistream/issues.
Changelog
v2.2.0
- Rewrote most of NTRClient to communicate with NTR / NTR-HR in a more proper way. It should be generally less buggy.
- Added a feature to adjust image settings for NTR-HR without having to disconnect and reconnect.
- Added a feature to print debug info logged and sent by NTR / NTR-HR.
- Properly support NTR-HR's config option to use a different port.
- Fixed reconnecting to NTR after the NFC Patch is applied.
- Fixed potential lockups in NTRUDPThread.
- Slightly improved error-handling for corrupted image data. The video will no longer freeze / disconnect when a corrupted JPEG is received from NTR / NTR-HR.
- Fixed a few overlooked issues with HzMod and ChirunoMod.
- Other minor bugfixes and improvements.
- Notable known Issues
- Trying to connect sometimes yields a false-flag NoRouteToHostException (#38). If you encounter this issue, you should just have to retry a few times for it to work.
v2.1.0
- Steaming improvements.
- NTR improvements.
- HzMod/ChirunoMod improvements.
- Additional and customizable controls.
- Layout support for file streaming and image sequence modes.
- License change from GPLv3 to GPLv2 (or later, except for NTRClient.java).
- Fixed issue with INI files growing increasingly large.
- More logging for NTR.
- Code refactoring and cleanup.
v2.0.1
- NFC patch for NTR is now working, thanks to @ChainSwordCS!
- Fixed handling for ChirunoMod v0.2.1 broken frames in certain cases.
- Fixed hidden "Apply" button in NTR options.
- File Streaming and Image Sequence output modes now respect scale parameters.
- Improved performance, especially with certain edge cases for HzMod and ChirunoMod.
v2.0
- Compatibility.
- Full HzMod TGA support.
- There may be some extremely rare edge cases that don't work. If you find one, let us know!.
- Better ChirunoMod and HzMod 24bpp compatibility.
- Better HzMod fractional screen support.
- Full HzMod TGA support.
- Image Sequences:
- We now support writing frames to image files!
- Currently limited to PNG output.
- Doesn't respect layout, outputs each frame individually as it gets them.
- GUI:
- Refactored GUI to use Swing instead of JavaFX.
- This eliminates a major source of development difficulties on the GUI.
- Also allows us to support more platforms (e.g. FreeBSD) as we're now fully pure-Java.
- Also cuts our binary down from ~10MB to just ~3MB.
- Simplified our GUI somewhat by removing the currently-unused Interpolation Mode, the newly-unused DPI, and moving video file settings to a new "Output Settings" window.
- Added output settings for image sequences.
- The main settings now have tooltips.
- Assorted visual tweaks.
- Other:
- Better .ini file parsing.
- Bugfix in video streaming output.
v1.2
- This release primarily adds support for fractional screen with HzMod. This is most strongly felt on Old 3DS systems, which become much more usable with this change, but may improve edge cases for New 3DS systems as well. Also includes one other minor bug fix. Thanks to @ChainSwordCS for debugging this release.
v1.1
- Full ChirunoMod support with v0.2! This includes things like:
- Interlacing.
- Much better O3DS support.
- Improved image color mode support.
- Options to request top/bottom/both screens.
- Vsync/Hsync for interlacing and O3DS partial screen.
- Much improved logging.
- Lots of bug fixes.
- Some minor code quality improvements.
- Full changelog.
v1.0
- HzMod TGA mode support (still somewhat limited).
- GUI rebuilt from the ground up.
- True nearest-neighbor interpolation.
- Support for HzMod CPU cap.
- FPS counter in displays.
- Stream to a video file.
- Fully headless/CLI mode.
- Refactor tons of code to make things easier to work.
v0.1
- Support for NTR and modern HzMod JPEG mode. Bugs are likely, features are incomplete, and HzMod support is limited, but all these should get better in the near future.
Credits
Special thanks to:
- RattletraPM for Snickerstream.
- Sono for HzMod.
- Cell9/44670 for BootNTR.
- Nanquitas for BootNTRSelector.
- All other open-source contributers.
External links
- GitHub - https://github.com/Eiim/Chokistream/