Over the last year, or so, I've been working on a library for easier 3DS-homebrew development. It's fully written in C++11 and supports sound, graphics and more. Keep in mind, that this library is still in beta. So, if you find any bugs or have any issues, please report them via GitHub.
Useful links:
Features
The m3diaLib (spelled media-lib) is split into multiple modules, which can then be split into smaller parts:
Core
The core module contains all functionality for interacting with the system. Its features range from running and handling the app itself to displaying errors and running system applets.
Its main features are:
The input module does what its name says: It handles each and every input for interacting with the user.
Its main features are:
The audio module can be used for both music and sound effects.
Its main features are:
The graphics module is by far the biggest module. It handles anything graphic-wise, from rendering simple shapes to rendering and animating high-quality textures.
Its main features are:
The utils module contains all kind of useful utilities. Currently, it has the following functionality:
All features are well documented here. Examples can be viewed here.
How to use it
The barebones of a homebrew app using the m3diaLib would look like this:
Easy, isn't it?
Planned features
Audio:
This module isn't availiable at the moment. However, it's planned features are:
Installation
To install the library, download the latest release-build and execute the command
.
To build it from the source, download the latest release and then execute the following commands:
Dependencies
To compile a m3diaLib-app, you need the following dependencies installed (install via devkitPro-pacman):
Useful links:
Features
The m3diaLib (spelled media-lib) is split into multiple modules, which can then be split into smaller parts:
Core
The core module contains all functionality for interacting with the system. Its features range from running and handling the app itself to displaying errors and running system applets.
Its main features are:
- A class for running your homebrew app
- Easy interaction with the system itself
- Starting and running applets
- Time measurement
- Support for the RomFS
- Multithreading and concurrency
The input module does what its name says: It handles each and every input for interacting with the user.
Its main features are:
- Handling button input
- Handling touch input
The audio module can be used for both music and sound effects.
Its main features are:
- Loading or streaming audio files directly from the file system
- Support for .wav and .mp3 (more to come!)
- Two different classes, sound and music, which have features that can be helpful specific in their use case
The graphics module is by far the biggest module. It handles anything graphic-wise, from rendering simple shapes to rendering and animating high-quality textures.
Its main features are:
- Support for the top and bottom screen
- Support for stereoscopic 3D
- Easy-to-use interface for fast rendering on both screens
- Support for transformation of textures and sprites
- Pre-coded shapes as well as a shape class for easily rendering your own shapes
- Easy-to-use color system
- Collision detection
The utils module contains all kind of useful utilities. Currently, it has the following functionality:
- Basic encryption
All features are well documented here. Examples can be viewed here.
How to use it
The barebones of a homebrew app using the m3diaLib would look like this:
C++:
#include <m3dia.hpp>
int main() {
m3d::Applet app;
while (app.isRunning()) {
if (m3d::buttons::buttonPressed(m3d::buttons::Button::Start)) {
app.exit(); // exit if start is pressed
}
}
}
Easy, isn't it?
Planned features
Audio:
- Microphone support
- More file formats
- Support for all availiable os and system functionality
- Animation
- RenderTargets
- More file formats for textures
- 3D support
This module isn't availiable at the moment. However, it's planned features are:
- A simple HTTP and WebSocket client and server
- Socket support
- A 3DS-download-game alternative (more on that at a later point)
- ZIP compression and decompression
- JSON and XML parsing
- Secure random numbers
Installation
To install the library, download the latest release-build and execute the command
Code:
make install
To build it from the source, download the latest release and then execute the following commands:
Code:
make
make install
To compile a m3diaLib-app, you need the following dependencies installed (install via devkitPro-pacman):
- libctru
- citro3d
- citro2d
- 3ds-tinyxml2
- 3ds-zlib
- 3ds-mpg123
- 3ds-libpng
- 3ds-freetype
- tex3ds (if you want to use spritesheets)
Last edited by StuntHacks,