Snickerstream[PoC]-A NTRViewer alternative written from scratch with lots of improvements and stuff!

Discussion in '3DS - Homebrew Development and Emulators' started by RattletraPM, Jan 18, 2017.

  1. RattletraPM
    OP

    RattletraPM Advanced Member

    Newcomer
    66
    93
    Jan 18, 2017
    Italy
    Spagonia
    (I've posted this a while ago on /r/3dshacks - here - but people told me it was a good idea to post it here too - so here it is!)

    If you're asking yourself "Why" or "How is it different than kit-kat/NitroStream" then please read this entire post: there are some very important reasons.


    Note: This build is a Proof of Concept, and as such it should be considered highly incomplete. The main streaming functions work fine, but lots of features simply aren't implemented yet, the client might be buggy and the GUI might not be that much user friendly. This release is meant to prove that this client works, and also to give you a general idea of the project could become once complete.

    Snickerstream is a completely new streaming client for NTR CFW. It aims to become a complete NTRViewer replacement with lots of extra features, including stuff such as better netcode, more screen layouts and less RAM usage. This is different than kit-kat/NitroStream as the formers still use NTRViewer as its internal streaming client while Snickerstream has been completely written from scratch, making it the first real NTRViewer alternative.

    Now, I hear you ask, why reinvent the wheel? Why make this if there's already something that does a very similiar thing?

    The reason is simple: I wanted to add some functions to NTRViewer, but some of the stuff I had in mind simply wouldn't be possible without altering its source code, and considering that NTRViewer wasn't properly updated in a while I took the opportunity of making this complete rewrite.

    Here are some of the improvements of Snickerstream over NTRViewer that are already implemented:

    • Real time screen scaling (you don't need to restart the client anymore to scale up/down the screens)

    • Pixel interpolation, which improves image quality if the window has been scaled

    • Way less RAM usages (about half less than NTRViewer and around a quarter of kit-kat)

    • Better netcode, it will automatically try to recover any lost frames if needed

    • No DLL files needed, as it uses the Windows API to draw the GUI and GDI+ to draw the screens (keep in mind that kit-kat still uses DLLs, they just get extracted to a temporary directory)

    • Native x64 version, for better performance on x64 computers

    • More options that will make Snickerstream work better on crappy computers or networks
    And here are some of the planned features:

    • MANY more screen layouts, such as single screen with popup secondary screen or multiple window mode

    • Universal NFC patch

    • Borderless fullscreen

    • Screenshot function

    • A function to ignore top/bottom screen frames, which will mean better performance on games that rely a lot on just one screen

    • (Maybe) AVI recording function directly in the client
    Sounds good? You can find Snickerstream here:

    Releases / Source (GitHub)

    IMPORTANT NOTE: THERE'S A BUG THAT PREVENTS SNICKERSTERAM FROM RECIEVING FRAMES ON COMPUTERS WITH MORE THAN ONE NETWORK ADAPTER. Howerer, there's a workaround: read "MultipleNetworkAdaptersFix.txt".

    Also, before reporting bugs, please read the Known Issues file!

    Useful links:

    Tutorial / Keyboard shortcuts / Known Issues / Multiple Network Adapters Fix
     
    damin, NekoMichi, hippy dave and 19 others like this.


  2. Joom

    Joom  ❤❤❤

    Member
    4,049
    2,748
    Jan 8, 2016
    United States
    AutoIt, eh? It's been quite a while since I've seen someone use that. Nice to see something other than Java or C#. :rolleyes:
     
  3. RattletraPM
    OP

    RattletraPM Advanced Member

    Newcomer
    66
    93
    Jan 18, 2017
    Italy
    Spagonia
    Heh, I know it's not the best choice, but it's one of the languages I'm most confortable with. Plus, it works fine and it's easy to understand if you want to modify the source code, so ¯\_(ツ)_/¯
     
  4. Joom

    Joom  ❤❤❤

    Member
    4,049
    2,748
    Jan 8, 2016
    United States
    Hey I'm not bashing it. I'm glad that it's something different that doesn't heavily rely on a third party framework.
     
  5. RattletraPM
    OP

    RattletraPM Advanced Member

    Newcomer
    66
    93
    Jan 18, 2017
    Italy
    Spagonia
    No problem, I didn't think you were bashing on it! It's just that I myself admit it was kind of a strange decision to code it in AutoIt, that's all :lol:
     
    Joom likes this.
  6. RHOPKINS13

    RHOPKINS13 Geek

    Member
    315
    150
    Jan 31, 2009
    United States
    I actually saw your post on Reddit for the first time last night. Thanks for posting it here!
     
  7. Giodude

    Giodude Ruler of Italy

    Member
    GBAtemp Patron
    Giodude is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    3,980
    1,185
    May 17, 2015
    United States
    New York
    I think it's funny how every week another ntrviewer replacement comes out claiming how much better they are than the previous one. With that being said this looks the best and has creatures I've been waiting for. Nice!
     
    TheGlamourGroup likes this.
  8. Kyubnyan

    Kyubnyan GBAtemp Fan

    Member
    343
    115
    Dec 1, 2016
    United States
    Are you intending to support Mac and Linux as well as Windows?
     
  9. RattletraPM
    OP

    RattletraPM Advanced Member

    Newcomer
    66
    93
    Jan 18, 2017
    Italy
    Spagonia
    Thanks! :D Remember tho that, as I said, this is a complete rewrite - not a GUI like many others - so it is bound to be different in a lot of ways than the existing ones.

    Sadly, this isn't going to be possible: not because I don't want to, but because AutoIt is a Windows-only scripting language. :(
     
    TheGlamourGroup likes this.
  10. Kyubnyan

    Kyubnyan GBAtemp Fan

    Member
    343
    115
    Dec 1, 2016
    United States
    Ok, hoping this will be useable on wine staging seeing as the newest version of kit kat isn't.
     
  11. RattletraPM
    OP

    RattletraPM Advanced Member

    Newcomer
    66
    93
    Jan 18, 2017
    Italy
    Spagonia
    Right now my main focus is to implement some core features and fix some bugs, but you can be sure that I'll do my best to make it stable under Wine. AutoIt scripts usually don't have many problems running in it but I love Linux, so I know how you all feel when something gets released and it isn't supported in your OS.
     
  12. Kyubnyan

    Kyubnyan GBAtemp Fan

    Member
    343
    115
    Dec 1, 2016
    United States
    Thanks, the changes you are suggesting are very good too (especially resizing screen without restarting).
     
  13. Manurocker95

    Manurocker95 Game Dev & Pokémon Master

    Member
    667
    176
    May 29, 2016
    Spain
    Madrid
    Well, i'll have to try this when i get home. Sounds pretty good tho
     
  14. Ericjwg

    Ericjwg Good

    Member
    2,866
    693
    Jul 2, 2015
    Canada
    au3? woh....:ninja:
     
  15. Joom

    Joom  ❤❤❤

    Member
    4,049
    2,748
    Jan 8, 2016
    United States
    Gigantic Retina screenshot
    I got the 32bit build to run on Sierra after installing all of this with Winetricks:
    Code:
    winetricks msxml3 dotnet20 gdiplus riched20 riched30 vcrun2005sp1 allfonts
    I haven't tried actually using it yet, and I assume that the 64bit version will run if the WINE prefix is specified as 64bit (of course this will require Winetricks to install all of that again in the new prefix). Once my 3DS charges up some I'll try streaming. And of course, this will work for Linux and FreeBSD users as well.

    To create a 64bit prefix:
    Code:
    export WINEARCH=win64
    export WINEPREFIX="/home/USER/path/to/new/prefix"
    winecfg //this will populate the prefix and allow you to change the Windows version (I recommend using 7).
    winetricks msxml3 dotnet20 gdiplus riched20 riched30 vcrun2005sp1 allfonts
    
    //**Note that ~/.wine is the default prefix, and you'll have to completely delete it if you want to change its architecture.
    
     
    Last edited by Joom, Jan 18, 2017
    RattletraPM likes this.
  16. Mike Abastante

    Mike Abastante Advanced Member

    Newcomer
    64
    4
    Jul 10, 2016
    United States
    I'm glad someone is offering an alternative to Kit Kat! I've just tried it and for some reason it connects fine but when I hit connect it just shows a black window. I'm on Luma3ds on sysnand. Launching from NTR CFW Selector.
    Am I the only one with this issue?
    Thanks!!
     
  17. Kyubnyan

    Kyubnyan GBAtemp Fan

    Member
    343
    115
    Dec 1, 2016
    United States
    mine shows a grey window.
     
  18. Mike Abastante

    Mike Abastante Advanced Member

    Newcomer
    64
    4
    Jul 10, 2016
    United States
    Welll yeah, it's is dark grey if you want to precise.
     
  19. Kyubnyan

    Kyubnyan GBAtemp Fan

    Member
    343
    115
    Dec 1, 2016
    United States
    Update: got it to work for the top screen but the bottom screen does not show.
     
  20. Manurocker95

    Manurocker95 Game Dev & Pokémon Master

    Member
    667
    176
    May 29, 2016
    Spain
    Madrid
    Tested on New3DS a9lh + luma3ds. I got it working but with 6fps while kit kat gets 45-60 and it doesn't close when clicking on the X. I had to close the proccess by the task manager :\