cc3dsfs
cc3dsfs is a multi-platform capture and display program for 3dscapture's N3DSXL, 3DS and DS (old) capture boards written in C++.
The main goal is to offer the ability to use the Capture Card with a TV, via fullscreen mode.
Features
- Performance-focused design, with low latency for both audio and video (measured to oscillate between 1 and 2 frames on 120hz displays).
- Option to split the screens in separate windows, to address them separately.
- Make your game run in fullscreen mode. If you own multiple displays, you can even use one per-window.
- Many builtin crop options for the screens.
- Many other settings, explained in Controls.
Note: On 3DS, DS, GBA, GBC and GB games boot in scaled resolution mode by default. Holding START or SELECT while launching these games will boot in native resolution mode.
Note: Make sure the 3DS audio is not set to Surround.
Dependencies
cc3dsfs has three build dependencies: CMake, g++ and git.
Make sure all are installed.
On MacOS, Homebrew can be used to install both CMake and git. An automatic popup should appear to install g++ at Compile time.
cc3dsfs has four library dependencies: FTDI's D3XX driver, FTDI's D2XX driver, libusb and SFML.
All of them should get downloaded automatically via CMake during the building process.
Linux users will also need to install the SFML dependencies. Different distributions will require slightly different processes.
Below, the command for Debian-based distributions, which also lists the required libraries.
sudo apt update
sudo apt install \
g++ \
git \
cmake \
libxrandr-dev \
libxcursor-dev \
libudev-dev \
libopenal-dev \
libflac-dev \
libvorbis-dev \
libgl1-mesa-dev \
libegl1-mesa-dev \
libdrm-dev \
libgbm-dev \
libfreetype-dev
Additionally, when compiling for a Raspberry Pi, install gpiod and libgpiod-dev.
On Windows, you may need to install the Visual C++ Redistributable set of libraries. They are available here: Official Microsoft VC Redist Link.
Compilation
To compile the program, assuming CMake, git and g++ are installed on the system, this is the command which should be launched:
cmake -B build ; cmake --build build --config Release
This will download FTD3XX, FTD2XX, libusb and SFML, which may take a while during the first execution of the command. Later runs should be much faster.
On MacOS, you may also be prompted to install the Apple Command Line Developer Tools first.
When compiling on a Raspberry Pi, to enable usage of GPIO, use:
cmake -B build -DRASPBERRY_PI_COMPILATION=TRUE ; cmake --build build --config Release
Controls
The software has a GUI which exposes all of the available settings. There are also various available keyboard shortcuts which allow quicker access to the options.
Most of the settings are explained in Keyboard shortcuts.
Keyboard controls
- Enter key: Used to open the GUI when it is not shown, as well as to confirm the selection of an option. Holding it for 30 seconds will reset the application to its defaults.
- Arrow keys: Used to change the selected option in the GUI.
Mouse controls
- Right click: Used to open the GUI when it is not shown. Holding it for 30 seconds will reset the application to its defaults.
- Left click: Used to confirm the selection of an option.
Joystick controls
- Option/Share buttons: Used to open the GUI when it is not shown.
- A/B/X/Y buttons: Used to confirm the selection of an option. Holding B (X on a PS5 controller) for 30 seconds will reset the application to its defaults.
- Dpad/Sitcks: Used to change the selected option in the GUI.
Note: Currently only tested using a PS5 controller.
Keyboard shortcuts
- O key: Open/Close connection to the 3DS/DS.
- F key: Toggles Fullscreen mode on/off. Only guaranteed to work on the primary monitor. When using certain setups, it also works for multiple monitors.
- S key: Swaps between Split mode and Joint mode. In Split mode, each screen has its own window. In Joint mode, they are combined into a single one.
- C key: Cycles to the next Crop mode for the focused window. For 3DS, the currently supported cropping modes are: 3DS, 16:10 DS, scaled DS, native DS, scaled GBA, native GBA, scaled GB, native GB, scaled SNES, native SNES and native NES. For DS, the currently supported cropping modes are: DS, Top GBA and Bottom GBA. There are also game-specific cropping modes which can be enabled via the Video Settings.
- -/0 key: Decrements/Increments the scaling by 0.5x for the non-Fullscreen focused window. 1.0x is the minimum. 45.0x is the maximum.
- Y/U key: In Joint Fullscreen mode, increases the size of the top/bottom screen. Corresponds to the Screens ratio Video Setting.
- Z/X key: Decreases/Increases the Menu Scaling multiplier by 0.1. 0.3 is the minimum. 10.0 is the maximum.
- T key: Moves the relative position of the bottom screen inside of the joint mode window clockwise. Corresponds to the Screens Relative Positions Video Setting.
- V key: Toggles VSync on/off for the focused window. VSync prevents screen tearing. However, at low refresh rates (60 hz), it may significantly increase image delay.
- A key: Toggles Async on/off for the focused window. Having it off ensures all the available windows show the same frame. If you're having framerate issues, turning this setting on/off could help.
- B key: Toggles Blur on/off for the focused window. This is only noticeable at scales of 1.5x or greater.
- 6 key: In Joint mode, changes the position of the smaller screen relative to the bigger one between 0, 1/2 Max and Max. Accessible via either the Offset Settings, or the Screen Offset Video Settings.
- 7 key: In Joint Fullscreen mode, changes the distance from the upper screen between 0, 1/2 Max and Max. Accessible via the Offset Settings Video Setting.
- 4 key: In Fullscreen mode, changes the X distance from the border between 0, 1/2 Max and Max. Accessible via the Offset Settings Video Setting.
- 5 key: In Fullscreen mode, changes the Y distance from the border between 0, 1/2 Max and Max. Accessible via the Offset Settings Video Setting.
- 8/9 key: Rotates the screen(s) of the focused window 90 degrees counterclockwise/clockwise. Accessible via the Rotation Settings Video Setting.
- H/J key: Rotates the top screen of the focused window 90 degrees counterclockwise/clockwise. Accessible via either the Rotation Settings, or the Screen Rotation Video Settings.
- K/L key: Rotates the bottom screen of the focused window 90 degrees counterclockwise/clockwise. Accessible via either the Rotation Settings, or the Screen Rotation Video Settings.
- R key: Toggles extra padding on/off. It can be used to account for windows with rounded corners.
- 2/3 key: Cycles through the available Pixel Aspect Ratios (PAR) for the top/bottom screen. Useful for VC games and for Chrono Trigger DS.
- M key: Toggles Audio mute on/off.
- ,/. key: Decrements/Increments the volume by 5 units. 0 is the minimum. 100 is the maximum.
- N key: Restarts the audio output. Useful if the audio stops working after changing OS settings.
- F1 - F4 keys: Loads from layouts 1 through 4 respectively. To access more profiles, the GUI must be used.
- F5 - F8 keys: Saves to layouts 1 through 4 respectively. To access more profiles, the GUI must be used.
- Esc key: Properly quits the program.
Note: The volume is independent of the actual volume level set with the physical slider on the console.
Profiles/Layouts
When starting the program for the first time, a message indicating a load failure for the cc3dsfs.cfg file will be displayed, and the same will occur when attempting to load from any given layout file if it hasn't been saved to before. That is normal. These files must be created by the program first before they can be loaded from. The program saves its current configuration to the cc3dsfs.cfg file when the program is successfully closed, creating the file if it doesn't already exist, and loading from it every time at startup.
The current configuration can be saved to various extra profiles, creating the given file if it doesn't already exist. Changing settings after a layout is loaded will not automatically overwrite its file. To make the changes permanent, saving the profile again is required.
The name of profiles can be changed by altering the name field in its file.
On Linux and MacOS, the profiles can be found at the "${HOME}/.config/cc3dsfs" folder. By default, "/home//.config/cc3dsfs".
On Windows, the profiles can be found in the ".config/cc3dsfs" folder inside the directory in which the program runs from.
Notes