xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Chroma
Posts: 61
Joined: Mon Mar 21, 2022 6:05 pm

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by Chroma » Fri Feb 16, 2024 11:21 pm

static_zero wrote:
Sat Jan 20, 2024 2:47 am
Chroma wrote:
Sun Jan 07, 2024 8:20 pm
Thanks for your hard work! I'd need to spend a good off day familiarizing myself with building this since I'm more used to running pre-built executables, but "multi-platform" is getting me super excited that I might finally get something usable running on my Mac.
It's my pleasure! It would be nice to be able to provide binaries for it, but it's not very practical for small projects like this unfortunately. There was someone else who posted on my GitHub repository about having an issue building the software on Mac, but I hadn't heard back from them. If you have any issues yourself, I'd be happy to try to troubleshoot it for you.

Ideally, I'd like to test this out on a Mac myself and provide instructions for it, but I don't have a working one readily available to me at the moment (which may change in the future). Heck, I'd even like to see this working on Windows (even though there's really no need for it :P). Being that FTDI's driver and SFML are available on all 3 platforms, there's no reason why it shouldn't be able to run everywhere.
I'm afraid the issue for me is that figuring out where to even start has been pretty daunting. There seems to be a lot of dependencies to separately install along with building the app, and I just can't really parse what I actually need to do from the GitHub. It talks about stuff that I just haven't really dealt with before. Would it be possible to revise the GitHub to have numbered steps on how to build this?

static_zero
Posts: 21
Joined: Mon Mar 27, 2023 10:29 pm

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by static_zero » Sat Feb 17, 2024 5:29 pm

Chroma wrote:
Fri Feb 16, 2024 11:21 pm
static_zero wrote:
Sat Jan 20, 2024 2:47 am
Chroma wrote:
Sun Jan 07, 2024 8:20 pm
Thanks for your hard work! I'd need to spend a good off day familiarizing myself with building this since I'm more used to running pre-built executables, but "multi-platform" is getting me super excited that I might finally get something usable running on my Mac.
It's my pleasure! It would be nice to be able to provide binaries for it, but it's not very practical for small projects like this unfortunately. There was someone else who posted on my GitHub repository about having an issue building the software on Mac, but I hadn't heard back from them. If you have any issues yourself, I'd be happy to try to troubleshoot it for you.

Ideally, I'd like to test this out on a Mac myself and provide instructions for it, but I don't have a working one readily available to me at the moment (which may change in the future). Heck, I'd even like to see this working on Windows (even though there's really no need for it :P). Being that FTDI's driver and SFML are available on all 3 platforms, there's no reason why it shouldn't be able to run everywhere.
I'm afraid the issue for me is that figuring out where to even start has been pretty daunting. There seems to be a lot of dependencies to separately install along with building the app, and I just can't really parse what I actually need to do from the GitHub. It talks about stuff that I just haven't really dealt with before. Would it be possible to revise the GitHub to have numbered steps on how to build this?
Hi Chroma, I'm really sorry to hear that. One of the things that I'd like to focus on now that I've improved the software is providing an easier means of installing the dependencies on both Mac and Linux. I should have access to a Mac relatively soon, so that should hopefully help me in getting something set up. In the meantime, Koba had posted instructions here about how to get the D3XX driver installed on Mac. As for SFML, I believe there's a package manager available on Mac called brew which should make installing it much easier instead of having to do it manually. Lastly, I think there's something called the Apple Developer Tools that you can get if you're having trouble using my Makefile to do the actual install. I can always try to help troubleshoot your specific issues though. Let me know what in particular you might be having issues with, and I can try to give you some instructions.

TerraNova
Posts: 4
Joined: Mon Mar 04, 2024 12:50 pm

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by TerraNova » Mon Mar 04, 2024 12:56 pm

-
Last edited by TerraNova on Sat Mar 16, 2024 9:54 pm, edited 1 time in total.

Chroma
Posts: 61
Joined: Mon Mar 21, 2022 6:05 pm

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by Chroma » Tue Mar 12, 2024 9:40 am

static_zero wrote:
Sat Feb 17, 2024 5:29 pm
Chroma wrote:
Fri Feb 16, 2024 11:21 pm
static_zero wrote:
Sat Jan 20, 2024 2:47 am


It's my pleasure! It would be nice to be able to provide binaries for it, but it's not very practical for small projects like this unfortunately. There was someone else who posted on my GitHub repository about having an issue building the software on Mac, but I hadn't heard back from them. If you have any issues yourself, I'd be happy to try to troubleshoot it for you.

Ideally, I'd like to test this out on a Mac myself and provide instructions for it, but I don't have a working one readily available to me at the moment (which may change in the future). Heck, I'd even like to see this working on Windows (even though there's really no need for it :P). Being that FTDI's driver and SFML are available on all 3 platforms, there's no reason why it shouldn't be able to run everywhere.
I'm afraid the issue for me is that figuring out where to even start has been pretty daunting. There seems to be a lot of dependencies to separately install along with building the app, and I just can't really parse what I actually need to do from the GitHub. It talks about stuff that I just haven't really dealt with before. Would it be possible to revise the GitHub to have numbered steps on how to build this?
Hi Chroma, I'm really sorry to hear that. One of the things that I'd like to focus on now that I've improved the software is providing an easier means of installing the dependencies on both Mac and Linux. I should have access to a Mac relatively soon, so that should hopefully help me in getting something set up. In the meantime, Koba had posted instructions here about how to get the D3XX driver installed on Mac. As for SFML, I believe there's a package manager available on Mac called brew which should make installing it much easier instead of having to do it manually. Lastly, I think there's something called the Apple Developer Tools that you can get if you're having trouble using my Makefile to do the actual install. I can always try to help troubleshoot your specific issues though. Let me know what in particular you might be having issues with, and I can try to give you some instructions.
Hey again, thanks for the reply, but I really just don't even know how to start with this. I clicked the link, and it was full of coding jargon I couldn't really understand. Going back even further, I don't really know what exactly is required for this to run at all. I'd honestly need every single tiny step laid out for this.

I tried to start at the FTDI driver, I downloaded the ARM macOS version (I'm on an M2 Pro MBP), opened the DMG, and just found more .CPP and makefiles that I have no idea what to do with. I Googled Apple Developer Tools and just found a forum answering developer questions, nothing to download actually called Apple Developer Tools. I Googled how to install brew through terminal, but past that I have no idea where to go for SFML.

Is it possible once you gain access to said Mac, you're able to run this makefile stuff and package the actual app itself in releases? Then all I'd have to do is troubleshoot how to download the 2 dependencies, which I think I'd only have to do once and it's permanently done unless I switch computers.

Hopefully I can get all this running, I'm just used to CuteCapture which was just a single .app file, open and go. All this dependencies stuff and backend coding talk is completely foreign to me (and I assume most other people who may stumble across this).

TerraNova
Posts: 4
Joined: Mon Mar 04, 2024 12:50 pm

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by TerraNova » Sat Mar 16, 2024 10:03 pm

sportzfrk wrote:
Fri Jan 05, 2024 5:06 pm
Hey man I just want to say great job on this!!!!

If you look at my fork (jsillick) I made a switch to using CMake to build as that build system is much more robust. It can basically take SFML version you want and build it from scratch with the main cpp file. CMake is free and available for all platforms.

I got your software to build on a Raspberry Pi 5 and it works great. In the future I’m going to try to make this more like Optimize’s “TV player” thing which was custom software on a Raspberry Pi. Would hopefully make it as a total image you just flash to a SD card and go. Idk yet, still a lot of thinking and I don’t have a ton of time to devote to this.

These are the packages it recommends to install to build SFML for Debian based OSes if you do it the CMake way.

sudo apt update
sudo apt install \
libxrandr-dev \
libxcursor-dev \
libudev-dev \
libopenal-dev \
libflac-dev \
libvorbis-dev \
libgl1-mesa-dev \
libegl1-mesa-dev \
libdrm-dev \
libgbm-dev

So those plus “CMake”. I believe most, if not all flavors of Linux have these packages on their package manager, maybe not the exact names though. I also believe the Mac Homebrew software has these as well, but cannot confirm.
Hello,
Thanks for your work.
On my raspberry PI5, I'm trying to compile xx3dsfml but for the moment i'm getting errors.

- I installed FTDI Drivers

- I installed

Code: Select all

sudo apt update
sudo apt install \
libxrandr-dev \
libxcursor-dev \
libudev-dev \
libopenal-dev \
libflac-dev \
libvorbis-dev \
libgl1-mesa-dev \
libegl1-mesa-dev \
libdrm-dev \
libgbm-dev
And this

Code: Select all

sudo apt install cmake
Then I cloned your repository and did the following commands :

Code: Select all

cmake .  
And then

Code: Select all

make install
Errors :

Code: Select all

[ 15%] Built target sfml-system
[ 34%] Built target sfml-audio
[ 61%] Built target sfml-window
[ 61%] Building CXX object _deps/sfml-build/src/SFML/Graphics/CMakeFiles/sfml-graphics.dir/Font.cpp.o
/home/me/Downloads/xx3dsfml/_deps/sfml-src/src/SFML/Graphics/Font.cpp:35:10: fatal error: ft2build.h: No such file or directory
   35 | #include <ft2build.h>
What can I do to fix this ? :geek:
Thanks

harpentong
Posts: 38
Joined: Sun Feb 12, 2023 11:31 am

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by harpentong » Fri Mar 22, 2024 5:48 pm

I also agree with the other user that a step by step guide would be preferred, I found this to be way too confusing and overwhelming. Your efforts are greatly appreciated, but this is too complex for the average user :( alternatively, something prebuilt would be even better, im trying to figure out how to get this working on my mac, haven't been successful in getting it to work on windows, I got everything working on my M1 Mac except for the driver... Im running windows 11 pro via parallels virtual machine

Lorenzooone
Posts: 14
Joined: Tue Mar 26, 2024 2:10 am
Contact:

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by Lorenzooone » Tue Mar 26, 2024 2:43 am

Chroma wrote:
Tue Mar 12, 2024 9:40 am
I tried to start at the FTDI driver, I downloaded the ARM macOS version (I'm on an M2 Pro MBP), opened the DMG, and just found more .CPP and makefiles that I have no idea what to do with. I Googled Apple Developer Tools and just found a forum answering developer questions, nothing to download actually called Apple Developer Tools. I Googled how to install brew through terminal, but past that I have no idea where to go for SFML.

Is it possible once you gain access to said Mac, you're able to run this makefile stuff and package the actual app itself in releases? Then all I'd have to do is troubleshoot how to download the 2 dependencies, which I think I'd only have to do once and it's permanently done unless I switch computers.

Hopefully I can get all this running, I'm just used to CuteCapture which was just a single .app file, open and go. All this dependencies stuff and backend coding talk is completely foreign to me (and I assume most other people who may stumble across this).
harpentong wrote:
Fri Mar 22, 2024 5:48 pm
I also agree with the other user that a step by step guide would be preferred, I found this to be way too confusing and overwhelming. Your efforts are greatly appreciated, but this is too complex for the average user :( alternatively, something prebuilt would be even better, im trying to figure out how to get this working on my mac, haven't been successful in getting it to work on windows, I got everything working on my M1 Mac except for the driver... Im running windows 11 pro via parallels virtual machine
Hi to both, I have made a couple of tests, and, among other things, I've tried "mitigating" the issues you're having, by avoiding entirely having to install FTD3XX.
You will still need to install SFML.
For that, once you have installed brew, run this in a terminal:

Code: Select all

brew install sfml
And that should be it.

Download the code that will be compiled from here: https://github.com/Lorenzooone/xx3dsfml ... hanges.zip

If you have 7z installed on macOs (or you are on Linux), the next steps should be to run these two commands:

Code: Select all

make download_ftd3xx

Code: Select all

make
And that should be it!

If 7z is not installed, instead in the same folder that the files you previously downloaded are in, create a new folder named "ftd3xx" without quotation marks.

When it comes to FTD3XX, instead, download the one for your OS from this page: https://ftdichip.com/drivers/d3xx-drivers/
Out of all the files which you will get, extract all the files which end in ".h" ("Types.h"/"WinTypes.h" and "ftd3xx.h", in theory) and "libftd3xx-static.a" into the "ftd3xx" folder you previously made.

Finally, go back to the main folder, the one where there should be a file named "Makefile".
Open a terminal in that folder and run:

Code: Select all

make
Provided SFML is installed, this should allow you to create the application.

Here is how the main folder should look:
Schermata del 2024-03-26 03-39-47.png
Schermata del 2024-03-26 03-39-47.png (15.81 KiB) Viewed 243 times
Here is how the ftd3xx folder should look:
Schermata del 2024-03-26 03-39-53.png
Schermata del 2024-03-26 03-39-53.png (6.48 KiB) Viewed 243 times

harpentong
Posts: 38
Joined: Sun Feb 12, 2023 11:31 am

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by harpentong » Tue Mar 26, 2024 1:47 pm

Thanks for getting back to us.

I am attempting this on an ARM based mac on macOS.

But there are some issues that need to be addressed.

Firstly, for those who didn't know like me, this is where you get homebrew, you paste the code into terminal and follow the instructions shown in terminal https://brew.sh once installed only then you do the brew install sfml in terminal

If you want the github, its here https://github.com/Homebrew/brew

After installing homebrew, installation of sfml went smoothly using the command (At least I think?)

Then I downloaded the code you provided from the lorenzooone github, but it appears to have missing files, I don't see all of what you showed in the screenshot, I can see xx3dsfml.cpp but there is no xx3dsfml(with the cog icon), instead on macOS I see a hidden file called .gitignore

About 7z, you can get it here https://www.7-zip.org/download.html

But I installed via homebrew cause its just easier, I used this link https://formulae.brew.sh/formula/p7zip

Did it work? I got no clue but I guess it did?

Now this is where the guide in my opinion is not noob friendly, it says to make download_ftd3xx, i kept doing trying that in terminal but nothing happened, then I discovered that I was supposed to open terminal in that folder i downloaded from lorenzone, I had never opened terminal in a file I didn't know how to, but this is how you do it, its pretty well explained by apple here https://support.apple.com/en-gb/guide/t ... 20Terminal.
"Open new Terminal windows or tabs from the Finder
You can use the path bar in a Finder window to open a new Terminal window or tab with the working directory set to a folder’s location.
On your Mac, open a Finder window, then navigate to the folder you want to use.
If you can’t see the path bar at the bottom of the Finder window, choose View > Show Path Bar.
Control-click the folder in the path bar, then do one of the following.
Open a new window: Choose Open in Terminal.
Open a new tab: Choose Services > New Terminal Tab at Folder.
But anyway I tried that and it didnt work for me, it did download the ftd3xx folder but the folder did not appear the same as the ftd3xx screenshot you have shown. It instead contained a "downloads" folder and in that folder there were the following files "4.arm64 , 4.x64 , d3xx-osx.1.0.5.dmg"

that .dmg file contains the 3 files ftd3xx.h, libftd3xx-static.a & WinTypes.h

I just ignored it and ran the make command regardless but it didnt work, it just said fatal error ftd3xx.h file did not exist. so I decided to instead try the other method without 7z, unfortunately, i havent had much luck there either.

I did download FTD3XX using the link you provided, I went to ARM, MAC OS X and I got the .tgz as well as the .dmg, they contain pretty much the same files from what I can see, except this time its Types.h rather than WinTypes.h, i followed the instructions, created the ftd3xx folder manually in that same folder you specified, i dragged and dropped the 3 files you specified and it looked pretty much like how it looks in your screenshot at that point(The ftd3xx folder). I went back to the main folder which I assume is "xx3dsfml-new_main_changes" , i opened that folder in terminal, I did the make command, it didnt work, it simply said

29 warnings and 2 errors generated
make: *** [xx3dsxml.o] Error 1

The two errors were

1) xx3dsfml.cpp:259:7: error: no member named 'filesystem' in namespace 'std'
std::filesystem::create_directories(path);

2) xx3dsfml.cpp:777:16: error: no member named 'emplace' in 'std::queue<Sample>'
g_samples.emplace(out_buf[audio_buf_counter], n_samples);

As for the warnings, it had a lot of this, similar messages, different numbers

xx3dsfml.cpp:819:28: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
Screen bot_screen(Screen::ScreenType::BOT);


Also this

xx3dsfml.cpp:372:12: warning: 22 enumeration values not handled in switch: 'Resized', 'LostFocus', 'GainedFocus'... [-Wswitch]
switch (this->m_event.type) {

xx3dsfml.cpp:378:13: warning: 83 enumeration values not handled in switch: 'Unknown', 'A', 'D'... [-Wswitch]


honestly its a lot to list, but if you want the full list, i can give it to you.

harpentong
Posts: 38
Joined: Sun Feb 12, 2023 11:31 am

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by harpentong » Tue Mar 26, 2024 1:54 pm

This is what my "xx3dsfml-new_main_changes" folder looks like, it was the only thing that i found not to be consistent with your screenshots. in MacOS, if you press Command + Shift + . (the period key). This will show hidden files in the folder.


Image

harpentong
Posts: 38
Joined: Sun Feb 12, 2023 11:31 am

Re: xx3dsfml Multi-platform N3DSXL Capture Software Audio Update

Post by harpentong » Tue Mar 26, 2024 1:54 pm

You know what? Here's the full error/warning list


xx3dsfml-new_main_changes % make
g++ -I ftd3xx -c xx3dsfml.cpp -o xx3dsfml.o
xx3dsfml.cpp:120:20: warning: default member initializer for non-static data member is a C++11 extension [-Wc++11-extensions]
int loaded_volume = -1;
^
xx3dsfml.cpp:121:19: warning: default member initializer for non-static data member is a C++11 extension [-Wc++11-extensions]
bool loaded_mute = false;
^
xx3dsfml.cpp:149:47: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
bool onGetData(sf::SoundStream::Chunk &data) override {
^
xx3dsfml.cpp:162:35: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
void onSeek(sf::Time timeOffset) override {}
^
xx3dsfml.cpp:173:9: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::DEFAULT_3DS:
^
xx3dsfml.cpp:174:9: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::SCALED_DS:
^
xx3dsfml.cpp:175:9: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::NATIVE_DS:
^
xx3dsfml.cpp:178:21: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
info.crop_kind = Crop::DEFAULT_3DS;
^
xx3dsfml.cpp:259:7: error: no member named 'filesystem' in namespace 'std'
std::filesystem::create_directories(path);
~~~~~^
xx3dsfml.cpp:348:16: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Screen::ScreenType::TOP:
^
xx3dsfml.cpp:349:45: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
if (g_split && this->m_info.crop_kind == Crop::NATIVE_DS) {
^
xx3dsfml.cpp:355:16: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Screen::ScreenType::BOT:
^
xx3dsfml.cpp:357:35: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
if (this->m_info.crop_kind == Crop::NATIVE_DS) {
^
xx3dsfml.cpp:347:11: warning: enumeration value 'JOINT' not handled in switch [-Wswitch]
switch (this->m_stype) {
^~~~~~~~~~~~~
xx3dsfml.cpp:347:11: note: add missing switch cases
switch (this->m_stype) {
^
xx3dsfml.cpp:420:80: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
this->m_info.crop_kind = static_cast<Crop>((this->m_info.crop_kind + 1) % Crop::END);
^
xx3dsfml.cpp:428:81: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
this->m_info.crop_kind = static_cast<Crop>(((this->m_info.crop_kind - 1) % Crop::END + Crop::END) % Crop::END);
^
xx3dsfml.cpp:428:93: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
this->m_info.crop_kind = static_cast<Crop>(((this->m_info.crop_kind - 1) % Crop::END + Crop::END) % Crop::END);
^
xx3dsfml.cpp:428:106: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
this->m_info.crop_kind = static_cast<Crop>(((this->m_info.crop_kind - 1) % Crop::END + Crop::END) % Crop::END);
^
xx3dsfml.cpp:378:13: warning: 83 enumeration values not handled in switch: 'Unknown', 'A', 'D'... [-Wswitch]
switch (this->m_event.key.code) {
^~~~~~~~~~~~~~~~~~~~~~
xx3dsfml.cpp:378:13: note: add missing switch cases
switch (this->m_event.key.code) {
^
xx3dsfml.cpp:372:12: warning: 22 enumeration values not handled in switch: 'Resized', 'LostFocus', 'GainedFocus'... [-Wswitch]
switch (this->m_event.type) {
^~~~~~~~~~~~~~~~~~
xx3dsfml.cpp:372:12: note: add missing switch cases
switch (this->m_event.type) {
^
xx3dsfml.cpp:532:45: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
return height * (this->m_stype == Screen::ScreenType::JOINT ? 2 : 1);
^
xx3dsfml.cpp:537:16: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Screen::ScreenType::TOP:
^
xx3dsfml.cpp:540:16: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Screen::ScreenType::BOT:
^
xx3dsfml.cpp:567:8: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::DEFAULT_3DS:
^
xx3dsfml.cpp:571:8: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::SCALED_DS:
^
xx3dsfml.cpp:575:8: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
case Crop::NATIVE_DS:
^
xx3dsfml.cpp:566:11: warning: enumeration value 'END' not handled in switch [-Wswitch]
switch (this->m_info.crop_kind) {
^~~~~~~~~~~~~~~~~~~~~~
xx3dsfml.cpp:566:11: note: add missing switch cases
switch (this->m_info.crop_kind) {
^
xx3dsfml.cpp:777:16: error: no member named 'emplace' in 'std::queue<Sample>'
g_samples.emplace(out_buf[audio_buf_counter], n_samples);
~~~~~~~~~ ^
xx3dsfml.cpp:818:28: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
Screen top_screen(Screen::ScreenType::TOP);
^
xx3dsfml.cpp:819:28: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
Screen bot_screen(Screen::ScreenType::BOT);
^
xx3dsfml.cpp:820:30: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
Screen joint_screen(Screen::ScreenType::JOINT);
^
29 warnings and 2 errors generated.
make: *** [xx3dsfml.o] Error 1

Post Reply