From GameBrew - a wiki dedicated to Video Game Homebrew.
by RattletraPM I intended this script to be private, so don't expect fancy code or updates! As the name implies, NTRRemoteplaySimulator is a script that simulates a (New)Nintendo 2/3DS sending frames to a PC. It's a pretty basic yet accurate script that probably isn’t going to be very useful to an end user but could be for a developer. Notice how it’s a simulator, not an emulator: it uses code that produces similar results to the real thing instead of emulating part or the entirety of a system to run the real code. I’ve personally made it to aid myself with Snickerstream’s development.
If you want to run it on the same machine where you’ll run the NTR streaming client then all you need to do is to run the script and connect: it’s already configured to listen and stream to localhost/127.0.0.1.Just keep in mind that the script expects you to connect and send the remoteplay command before streaming any frame, just like a real N3DS. Once done, it will start streaming whatever JPG images it finds in “top” and “bot” sequentially. If you want to run it on a separate machine, then you need to edit some stuff. First of all you must edit $sIPAddress (set it to the IP address of the PC running the script), then replace $sIPAddress on line 61 ( Local $iUDPSocket=UDPOpen($sIPAddress, $iPort+1) ) with the IP of the PC running the client (for example, if that IP is 192.168.1.254 then it would be Local $iUDPSocket=UDPOpen(‘192.168.1.254’, $iPort+1) ). You can also modify the streaming port by editing $iPort.
As stated before, NTRRemoteplaySimulator will stream the images it finds in “top” and “bot” sequentially, in alphabetical and numerical order. You can put your own images in there, just be sure their extension is *.jpg (not *.jpeg!)
While this script might be good enough for simulating a real console streaming frames via NTR, it is not 100% accurate or perfect. Here is a list of limitations
- It will ignore whatever remoteplay settings the client will give it. It will use its own hardcoded settings instead (Priority: Top screen, Priority factor:1, Quality: See below, QoS: N/A)
- The image quality will depend on whatever JPG images you use. The default ones have their quality set to 70 and should be similar to a real workload of a N3DS in terms of packet size.
- The script is frame limited to around 40 FPS by default using a not too reliable way. You might want to edit the Sleep function (line 56) if it’s too slow/fast for you. (I told you to not expect fancy code!)