M3dialib Ctr

A C++ library for easier homebrew development for the Nintendo 3DS
Alternatives To M3dialib Ctr
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
a day ago663gpl-2.0C++
A Nintendo 3DS Emulator
5 days ago19gpl-3.0C
GodMode9 Explorer - A full access file browser for the Nintendo 3DS console :godmode:
Hb Appstore800
14 days ago9gpl-3.0C++
Homebrew App Store - GUI for downloading/managing homebrew apps for video game consoles
19 days ago21gpl-3.0C
A theme and boot splash manager for the Nintendo 3DS console
Universal Updater608
4 months ago17gpl-3.0C++
An easy to use app for installing and updating 3DS homebrew
Custom Install390
6 months ago23mitPython
Installs a title directly to an SD card for the Nintendo 3DS
2 months ago24gpl-3.0C
GodMode9i Explorer - A full access file browser for the Nintendo DS and DSi consoles :godmode:
Rom Properties347
8 days ago92gpl-2.0C++
ROM Properties Page shell extension
5 years agoTeX
Keyshuffling Attack for Persistent Early Code Execution in the Nintendo 3DS Secure Bootchain
10 months ago13March 25, 202215mitPython
FUSE filesystem Python scripts for Nintendo console files
Alternatives To M3dialib Ctr
Select To Compare

Alternative Project Comparisons

m3diaLib Build Status CodeFactor

A fast, extensive and powerful allround media and game library for the Nintendo 3DS, written in C++.

This library is deprecated. I will still merge PRs and fix critical bugs, but I'm not planning on adding any new features or doing major changes. You should use libctru and citro3d/2d directly, if possible.

Click here to get to the installation instructions.

This library is still in beta! If you have any issues or find any bugs, please report them!


The m3diaLib (spelled media-lib) is split into multiple modules, which can then be split into smaller parts:


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 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 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 utils module contains all kind of useful utilities. Some of its functionalities are the following:

  • 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:

#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:


  • 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

...and anything that strikes my mind in the future.


To install the library, download the latest build and then execute the command make install.

If you want to build it from the source, download the latest release and then execute the following commands:

make install

Note: Make sure, to have the latest version of the devkitPro-toolchain installed, before building the lib or any examples.


To compile a m3diaLib-app, you need the following dependencies installed (install via devkitPro-pacman):

  • 3dstools
  • picasso
  • libctru
  • citro3d
  • citro2d
  • 3ds-tinyxml2
  • 3ds-zlib
  • 3ds-mpg123
  • 3ds-libpng
  • 3ds-freetype
  • tex3ds (if you want to use spritesheets)

Use this command to automatically install all necessary dependencies:

sudo dkp-pacman -S 3ds-dev 3ds-zlib 3ds-tinyxml2 3ds-mpg123 3ds-libpng


Popular 3ds Projects
Popular Nintendo Projects
Popular Games Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C Plus Plus
Nintendo 3ds