- Joined
- Mar 15, 2017
- Messages
- 24
- Trophies
- 0
- Age
- 27
- Location
- That's neither here nor there.
- XP
- 109
- Country
I've ported 3DNUS (the 3DS CDN software downloader) to run in native mono on linux/unix systems. This means most GNU/Linux distros, Mac OS X, most BSD systems, Solaris, etc. can now run the program, regardless of CPU architecture and regardless of if Wine is installed.
Note that for non-Windows/Linux i386/Linux amd64 systems, you will have to compile your own version of "make_cdn_cia" and name it accordingly.
You can download the latest release here:
https://github.com/wyatt8740/3DNUS/releases
And the GPLv3 source code here:
https://github.com/wyatt8740/3DNUS
I have what led me to do this and a full list of things that made it not portable in this spoiler:
Old information:
Old releases:
I know that this is my first post here and it reads a little like a rant, sorry about that. I have a history on some IRC channels relating to console development, particularly nesdev, where you will find people to vouch for me if you're concerned about downloading random files from mega.
I also have fixed tools that should be portable but aren't for linux/OSX in the past (I'm "dragonite trainer" on this forum), in case you want a reference to prior work.
https://www.pokecommunity.com/showthread.php?p=8058961#post8058961
Have a screenshot, too.
Note that for non-Windows/Linux i386/Linux amd64 systems, you will have to compile your own version of "make_cdn_cia" and name it accordingly.
You can download the latest release here:
https://github.com/wyatt8740/3DNUS/releases
And the GPLv3 source code here:
https://github.com/wyatt8740/3DNUS
I have what led me to do this and a full list of things that made it not portable in this spoiler:
I was trying to download old3DS 10.7.0 firmware the other week from a linux install. I found everyone pointing to 3DNUS as the correct way to download firmware updates; I found it was a windows program. I tried running it in mono since it was written in .NET, to no avail. This fails to run on linux with wine for a number of tiny, incredibly stupid design choices - namely, the author of the modded version (dr.hacknik) did this:
- He felt the need to play music when you start the program, like it's some warez keygen or something. Doing this he decided to make the program use windows media player libraries, which are only partially implemented in wine and not implemented at all in mono. Wine has stub functions for changing the system volume, which this app decides to do for some reason, because god forbid you keep your computer silent.
- He felt the need to use native windows kernel calls in the 'localization' (translation) portion of the app. (e.g., he includes the "System" library - instant game-over for anything cross platform)
- He did something strange with the EULA dialogue that stops it from operating properly. Can't remember what that was.
Old information:
I recommend anyone reading this to use 3.0.1 native; the other downloads are left purely for posterity. 2.8 is very unstable in Wine with WineMono, 3.0.1 "non-native" looks nicer than native but has no useful additional functionality and requires Wine as well, and 3.0.1 Native should work basically anywhere with Mono installed - it does not require Wine.
Even older info:
I also can't use native linux mono still on account of the localization that I didn't want to touch. But at this point, it runs fine in Wine 2.0 (possibly lower versions, too). It would have ran fine before this using wine, but windows media player functions for volume control are not implemented.
Also added an empty file, Config/setup_completed.cfg, to stop the EULA from popping up and crashing the app when it launches.
So anyway, it worked enough that I was able to make it download my old3DS firmware without installing windows, so I thought I'd share the result. Note that it still hangs on my system if you try to enter its "settings" menu, so I'd recommend editing settings via the config files instead if you need to. I didn't have to change anything to get my firmware downloaded, though.
Run it in wine and it should be fine now. WineMono is adequate to run the app to the degree above; it is probable that it is more functional if you can get winetricks to install the microsoft .NET 4.5.2 runtime or higher (I built it targeting 4.5.2). Additionally, IMO it works better than the original mod on windows, too, because it's not got all those little annoying extras. It should also work on OS X via Wine, but I have not tested this.
(edit: I tried this, it works extremely well in a 32-bit WINEPREFIX with .NET 4.6 installed via winetricks.)
Even older info:
I also can't use native linux mono still on account of the localization that I didn't want to touch. But at this point, it runs fine in Wine 2.0 (possibly lower versions, too). It would have ran fine before this using wine, but windows media player functions for volume control are not implemented.
Also added an empty file, Config/setup_completed.cfg, to stop the EULA from popping up and crashing the app when it launches.
So anyway, it worked enough that I was able to make it download my old3DS firmware without installing windows, so I thought I'd share the result. Note that it still hangs on my system if you try to enter its "settings" menu, so I'd recommend editing settings via the config files instead if you need to. I didn't have to change anything to get my firmware downloaded, though.
Run it in wine and it should be fine now. WineMono is adequate to run the app to the degree above; it is probable that it is more functional if you can get winetricks to install the microsoft .NET 4.5.2 runtime or higher (I built it targeting 4.5.2). Additionally, IMO it works better than the original mod on windows, too, because it's not got all those little annoying extras. It should also work on OS X via Wine, but I have not tested this.
(edit: I tried this, it works extremely well in a 32-bit WINEPREFIX with .NET 4.6 installed via winetricks.)
Old releases:
NOTE: There are now three versions of this app; 2.8.0.1,, 3.0.1, and 3.0.1 Native. 2.8.0.1 is vastly different than 3.0.1 in terms of interface, but both "work" - I believe 3.0.1 is a little less buggy.
3.0.1 differs from 3.0.1 Native in that "regular" 3.0.1 looks nicer but requires Wine.
3.0.1 Native should work on any system with Mono installed, as well as on Windows with .NET, but looks less pretty. It is the version I will use as the base for all future updates, due to its more "robust" nature.
3.0.2 Native
Works in Mono without Wine. If you run OS X, you'll need to compile make_cdn_cia yourself or run it in Wine anyway, though. I don't have a mac to compile it on, or a cross-toolchain for it, and I have to be at work in 20 minutes.
Contains a new fix for a strange update for Taiwanese New3DSes without a version number ("N/A").
If you download the precompiled binaries, and run linux/unix/OSX, you will want to make the make_cdn_cia programs executable. To do this, run:
If you use info-ZIP's command-line "unzip" program, I think you don't have to do this.
Binary (runnable program, compiled):
https://www.dropbox.com/s/rkw1ua1vtwvj19b/3DNUS_3.0.2_nativeMono.zip?dl=0
Or:
https://mega.nz/#!K9xFAC4L!mVr4OWGt4NEu_FLrmuP50L4NTicsYBgwMOVqAODAEzM
Source code:
https://www.dropbox.com/s/pvyzashq03ttt1e/3DNUS_mod_src-3.0.2_nativeMono.tar.xz?dl=0
Or:
https://mega.nz/#!Cp5gnZLD!CmX7yJ5Nmvocw7tXRanBTL6zwz1hu9h9rlD-h8qnIRI
old version downloads:
I also am linking to the original unmodified source code, since the git repo's "source" for 3.0.1 appears to actually be 2.6.
https://www.dropbox.com/s/sdw08mp4zkjmm1p/3DNUS_Material_Source.zip?dl=0
The files are too big to attach here, unfortunately.
3.0.1 differs from 3.0.1 Native in that "regular" 3.0.1 looks nicer but requires Wine.
3.0.1 Native should work on any system with Mono installed, as well as on Windows with .NET, but looks less pretty. It is the version I will use as the base for all future updates, due to its more "robust" nature.
3.0.2 Native
Works in Mono without Wine. If you run OS X, you'll need to compile make_cdn_cia yourself or run it in Wine anyway, though. I don't have a mac to compile it on, or a cross-toolchain for it, and I have to be at work in 20 minutes.
Contains a new fix for a strange update for Taiwanese New3DSes without a version number ("N/A").
If you download the precompiled binaries, and run linux/unix/OSX, you will want to make the make_cdn_cia programs executable. To do this, run:
Code:
chmod 755 make_cdn_cia32 make_cdn_cia64
Binary (runnable program, compiled):
https://www.dropbox.com/s/rkw1ua1vtwvj19b/3DNUS_3.0.2_nativeMono.zip?dl=0
Or:
https://mega.nz/#!K9xFAC4L!mVr4OWGt4NEu_FLrmuP50L4NTicsYBgwMOVqAODAEzM
Source code:
https://www.dropbox.com/s/pvyzashq03ttt1e/3DNUS_mod_src-3.0.2_nativeMono.tar.xz?dl=0
Or:
https://mega.nz/#!Cp5gnZLD!CmX7yJ5Nmvocw7tXRanBTL6zwz1hu9h9rlD-h8qnIRI
old version downloads:
3.0.1 Native
https://www.dropbox.com/s/tsxpni9svokicda/3DNUS_3.0.1_nativeMono.zip?dl=0
Source code:
https://www.dropbox.com/s/kibahxc6qmg1mf7/3DNUS_mod_src_3.0.1_nativeMono.tar.xz?dl=0
2.8.0.1
Zip file with runnable program (pre-compiled binary):
I just checked, and the app works more or less perfectly in wine with these changes when you use a 32-bit WINEPREFIX and install the .NET 4.6 runtime with winetricks.
(link to pic)
3DNUS_2.8.0.1_wineMono-v2.zip
https://www.dropbox.com/s/1bbwf0alrvdifp6/3DNUS_2.8.0.1_wineMono-v2.zip?dl=0
Or:
https://mega.nz/#!y55k0DAY!92rRR-ZFl_AkVAo5ZXkVC2NsJhgWRDQiQW6k5AiD1II
Source code (.tar.xz):
3DNUS_src-2.8.0.1_wineMono.tar.xz
https://www.dropbox.com/s/42r6nn8ul5rhjvs/3DNUS_src-2.8.0.1_v2_wineMono.tar.xz?dl=0
Or:
https://mega.nz/#!3l5gnYyJ!K4-RHhuj0cWC3iea55qnpCK_Vohl5PV53mssoCw6lP0
3.0.1
Zip file with runnable program (pre-compiled binary):
3DNUS_3.0.1_wineMono.zip
https://www.dropbox.com/s/8rmv2pljj045k23/3DNUS_3.0.1_wineMono.zip?dl=0
Or:
https://mega.nz/#!u0BVTbYK!4601YxzK1Z-pkoE4WRsMjk8FIvzaaiTJTnADlWhEBPo
Source code (.tar.xz):
3DNUS_src-3.0.1_wineMono.tar.xz
https://www.dropbox.com/s/f8qdwgpwqd5luk8/3DNUS_src-3.0.1_wineMono.tar.xz?dl=0
Or:
https://mega.nz/#!2k4kDSYZ!PSXrANoaXcW2jgZodrBFRd5D2mBi1eKDO-XG5Bu002M
https://www.dropbox.com/s/tsxpni9svokicda/3DNUS_3.0.1_nativeMono.zip?dl=0
Source code:
https://www.dropbox.com/s/kibahxc6qmg1mf7/3DNUS_mod_src_3.0.1_nativeMono.tar.xz?dl=0
2.8.0.1
Zip file with runnable program (pre-compiled binary):
I just checked, and the app works more or less perfectly in wine with these changes when you use a 32-bit WINEPREFIX and install the .NET 4.6 runtime with winetricks.
(link to pic)
3DNUS_2.8.0.1_wineMono-v2.zip
https://www.dropbox.com/s/1bbwf0alrvdifp6/3DNUS_2.8.0.1_wineMono-v2.zip?dl=0
Or:
https://mega.nz/#!y55k0DAY!92rRR-ZFl_AkVAo5ZXkVC2NsJhgWRDQiQW6k5AiD1II
Source code (.tar.xz):
3DNUS_src-2.8.0.1_wineMono.tar.xz
https://www.dropbox.com/s/42r6nn8ul5rhjvs/3DNUS_src-2.8.0.1_v2_wineMono.tar.xz?dl=0
Or:
https://mega.nz/#!3l5gnYyJ!K4-RHhuj0cWC3iea55qnpCK_Vohl5PV53mssoCw6lP0
3.0.1
Zip file with runnable program (pre-compiled binary):
3DNUS_3.0.1_wineMono.zip
https://www.dropbox.com/s/8rmv2pljj045k23/3DNUS_3.0.1_wineMono.zip?dl=0
Or:
https://mega.nz/#!u0BVTbYK!4601YxzK1Z-pkoE4WRsMjk8FIvzaaiTJTnADlWhEBPo
Source code (.tar.xz):
3DNUS_src-3.0.1_wineMono.tar.xz
https://www.dropbox.com/s/f8qdwgpwqd5luk8/3DNUS_src-3.0.1_wineMono.tar.xz?dl=0
Or:
https://mega.nz/#!2k4kDSYZ!PSXrANoaXcW2jgZodrBFRd5D2mBi1eKDO-XG5Bu002M
https://www.dropbox.com/s/sdw08mp4zkjmm1p/3DNUS_Material_Source.zip?dl=0
The files are too big to attach here, unfortunately.
I also have fixed tools that should be portable but aren't for linux/OSX in the past (I'm "dragonite trainer" on this forum), in case you want a reference to prior work.
https://www.pokecommunity.com/showthread.php?p=8058961#post8058961
Have a screenshot, too.
Last edited by wyatt8740,