Homebrew 3DSControllerPlus - PC-->3DS video and input streaming

  • Thread starter Sono
  • Start date
  • Views 85,492
  • Replies 381
  • Likes 49

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Oh ok thanks JavaScribe.

I tried PowerShell again exactly how you said but this is how it ended up:
PS C:\Users\Alex\Downloads\FileStreamer\out> .\out\FileStreamer.exe
.\out\FileStreamer.exe : The term '.\out\FileStreamer.exe' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At line:1 char:1
+ .\out\FileStreamer.exe
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (.\out\FileStreamer.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Oh ok thanks JavaScribe.

I tried PowerShell again exactly how you said but this is how it ended up:
PS C:\Users\Alex\Downloads\FileStreamer\out> .\out\FileStreamer.exe
.\out\FileStreamer.exe : The term '.\out\FileStreamer.exe' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At line:1 char:1
+ .\out\FileStreamer.exe
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (.\out\FileStreamer.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Oops, I made a mistake, sorry.

Before running .\out\FileStreamer.exe, type "cd .." without quotes and press ENTER, and then try to run it with .\out\FileStreamer.exe
 

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Hey I got the PowerShell to work! I appreciate you walking me through this. So this is what I got:
PS C:\Users\Alex\Downloads\FileStreamer> .\out\FileStreamer.exe
C:\Users\Alex\Downloads\FileStreamer\out\FileStreamer.exe <FILE | -> <IP Address>
C:\Users\Alex\Downloads\FileStreamer\out\FileStreamer.exe + <IP Address> [exe]
PS C:\Users\Alex\Downloads\FileStreamer>
What happens next?
 
  • Like
Reactions: Sono

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Hey I got the PowerShell to work! I appreciate you walking me through this. So this is what I got:
PS C:\Users\Alex\Downloads\FileStreamer> .\out\FileStreamer.exe
C:\Users\Alex\Downloads\FileStreamer\out\FileStreamer.exe <FILE | -> <IP Address>
C:\Users\Alex\Downloads\FileStreamer\out\FileStreamer.exe + <IP Address> [exe]
PS C:\Users\Alex\Downloads\FileStreamer>
What happens next?

".\out\FileStreamer.exe + 10.0.0.111"
without quotes, replace 10.0.0.111 with the 3DS' actual IP address
 

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
WOW!!!!! IT WORKS!!!! ok, so I got it to capture the entire screen, but how do I have it only capture the bottom screen of a DS emulator?
This is what I got btw:
PS C:\Users\Alex\Downloads\FileStreamer> .\out\FileStreamer.exe + 192.168.1.220 [exe]
screen capture
Finding window
Finding process: PN=exe] T='exe]' N=0 F=0
Result HWND: 00000000
press ENTER to continue
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
WOW!!!!! IT WORKS!!!! ok, so I got it to capture the entire screen, but how do I have it only capture the bottom screen of a DS emulator?
This is what I got btw:
PS C:\Users\Alex\Downloads\FileStreamer> .\out\FileStreamer.exe + 192.168.1.220 [exe]
screen capture
Finding window
Finding process: PN=exe] T='exe]' N=0 F=0
Result HWND: 00000000
press ENTER to continue

You can't capture ONLY the bottom of the DS emulator, you have to separate the bottom screen from the top screen then.

the exe parameter is a window filter, but I'm too tired to figure out what the hell I did in the source code :wacko:
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Wait so... there isn't a way at the moment to only capture an emulator window then? Cause I tell you the PC desktop does not look pretty on the bottom screen of a 3ds

There is, but I haven't used FileStreamer in ages, and I can't read the source code for the window filter due to its extreme complexity. Sorry, you'll have to wait a day or two.
 

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Oh ok, no rush. I super appreciate you walking me through this Sono. If I can get this working, this will be the method that I play and capture DS games for my upcoming Youtube channel so many many thanks to you for your help!
 
  • Like
Reactions: Sono

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Oh ok, no rush. I super appreciate you walking me through this Sono. If I can get this working, this will be the method that I play and capture DS games for my upcoming Youtube channel so many many thanks to you for your help!

I still can't believe how overly complicated I did this shit...

Here are the options with the exe filter: ( source code screenshot for double checking: https://puu.sh/DU8RM/a664682b8c.png )

Optional number from 0 to 9 (10 and above are invalid) for selecting the window from a 0-based index, or * for selecting the main window. Not specifying anything will behave as if you used 0 here. Edit: I highly recommend ALWAYS using * here.
Optional + for cropping from fullscreen (absolutely required for OpenGL-based games, or games without VSync).
Optional EITHER : for title matching, or ! for exe matching (both match strictly from front, case sensitive).
Required string based on the previous settings. If omitted : and ! then due to a programming mistake from my part, BOTH the exe AND the title has to start with the string.

Examples:
0!osu! - matches the first osu! window (doesn't work btw)
6!firefox - depending on how many windows you have open, this could match a popup window (you have to bruteforce the number)
*+!osu - this is how to capture fullscreen osu!, fullscreen or not
"+:ARM Information Center" - in my case, this matches the Firefox window which has an ARM ARM tab open. The quotes are required due to the window title containing spaces.

If you have any more questions with this weird window filter, feel free to ask. I don't understand it either, don't worry xD
 
Last edited by Sono,
  • Like
Reactions: TheGamerMAKS

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Ok sweet! At least this is something to work with. I've been tinkering around with the variables to try to get what I need. Basically I've got No$gba running a DS game with OBS capturing the footage. I cropped the captured window in OBS to only show the bottom screen and then outputting that to a separate preview window. I'm trying to capture this preview window with FileStreamer but so far I can't seem to figure out which variables exactly work. It's an OBS window but the name of the window is Windowed Project (Source) - Window Capture. The variables do work as I've been able to capture other windows; I just haven't figured out this specific window yet.
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Ok sweet! At least this is something to work with. I've been tinkering around with the variables to try to get what I need. Basically I've got No$gba running a DS game with OBS capturing the footage. I cropped the captured window in OBS to only show the bottom screen and then outputting that to a separate preview window. I'm trying to capture this preview window with FileStreamer but so far I can't seem to figure out which variables exactly work. It's an OBS window but the name of the window is Windowed Project (Source) - Window Capture. The variables do work as I've been able to capture other windows; I just haven't figured out this specific window yet.

If you want to capture the preview window then try 1!obs
Try replacing 1 with any number between 0 and 9 to see if any of them captures the window you want to capture. If none of them work, try 1+!obs
 

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Ok, so I figured it out; it's: *+!obs. Now this captures the main OBS window which happens to be the preview window; so when I use these variables when the preview window is closed it just captures OBS itself. I tried using numbers but I couldn't figure out which one it would be so I guess this works ;)
I have a couple of other questions in general about 3DSControllerPlus: With the video streaming I sometimes have black vertical lines that pop up for a few milliseconds then go away, almost like a flicker. Is there a way to get rid of them? It's not too important as it definitely isn't distracting enough that I can't play.
So since I can get the video from the bottom screen to my 3DS, any idea on how I can map my touch screen to the bottom screen of the emulator so I can basically recreate playing the game natively on my 3DS?
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Ok, so I figured it out; it's: *+!obs. Now this captures the main OBS window which happens to be the preview window; so when I use these variables when the preview window is closed it just captures OBS itself. I tried using numbers but I couldn't figure out which one it would be so I guess this works ;)
I have a couple of other questions in general about 3DSControllerPlus: With the video streaming I sometimes have black vertical lines that pop up for a few milliseconds then go away, almost like a flicker. Is there a way to get rid of them? It's not too important as it definitely isn't distracting enough that I can't play.
So since I can get the video from the bottom screen to my 3DS, any idea on how I can map my touch screen to the bottom screen of the emulator so I can basically recreate playing the game natively on my 3DS?

Sadly the black lines are the result of hardware timings + CPU cache, and I can't really do anything about it without completely nuking FPS from 59 down to even 15 or less, and that's not even talking about latency. I think the black lines don't happen often enough to be TOO distracting, and most people can learn to ignore it.

As for positioning, sadly I didn't add in any function to manually position the capture rectangle. You have to somehow move the bottom screen to a separate window.
 

TheGamerMAKS

Active Member
Newcomer
Joined
Jul 12, 2019
Messages
40
Trophies
0
Age
30
Location
Round Rock, TX
Website
www.twitch.tv
XP
81
Country
United States
Yeah that makes sense about the lines and it's fine. Let me get this straight though, what you're saying is it is possible to map the touch screen to a window, just not possible to only map it to a specific section of said window? So what I would need to do is figure out how to have a separate emulator window with just the bottom screen so I can map the touch screen to just that window?
 

JavaScribe

Confused
Member
Joined
Apr 14, 2017
Messages
299
Trophies
0
Location
here idk
XP
794
Country
United States
So what I would need to do is figure out how to have a separate emulator window with just the bottom screen so I can map the touch screen to just that window?
If you're using Citra, you might be out of luck.
If you've got two monitors, you might be able to get away with telling Windows that one monitor is on top of the other, and have the emulator window spanning both monitors.
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,821
Trophies
2
Location
home
XP
9,317
Country
Hungary
Yeah that makes sense about the lines and it's fine. Let me get this straight though, what you're saying is it is possible to map the touch screen to a window, just not possible to only map it to a specific section of said window? So what I would need to do is figure out how to have a separate emulator window with just the bottom screen so I can map the touch screen to just that window?

Yeah, 3DSCPlusDummy uses the same code for window positioning (hence the number box below the process textbox). If you can somehow get a bottom screen only emulator window then it work very well. As I said, I sadly didn't add any fine-tuning, so you have to somehow get the bottom screen into a separate window.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Veho @ Veho: The cybertruck is a death trap.