Giter VIP home page Giter VIP logo

m3dialib-team / m3dialib-ctr Goto Github PK

View Code? Open in Web Editor NEW
44.0 14.0 8.0 5.02 MB

A C++ library for easier homebrew development for the Nintendo 3DS

Home Page: https://docs.stunthacks.eu/m3dialib/

License: GNU General Public License v3.0

C++ 98.25% Makefile 1.75%
3ds citro3d ctrulib libctru homebrew homebrew-launcher 2d graphics audio network nintendo nintendo-3ds nintendo-hacking 3ds-homebrew 3dshacks 3ds-engine cpp cplusplus

m3dialib-ctr's Introduction

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!

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

Input

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

Graphics

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

Audio

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

Utils

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:

Audio:

  • Microphone support
  • More file formats

Core:

  • Support for all availiable os and system functionality

Graphics:

  • Animation
  • RenderTargets
  • More file formats for textures
  • 3D support

Networking:

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)

Utils:

  • ZIP compression and decompression
  • JSON and XML parsing
  • Secure random numbers

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

Installation

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
make install

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

Dependencies

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

Credits

m3dialib-ctr's People

Contributors

bennyman123abc avatar eeems avatar stunthacks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

m3dialib-ctr's Issues

aptLaunchLibraryApplet Error

When I go to Try to make the project, in the file applet.cpp it says that it could not convert 'aptLaunchLibraryApplet(id, ((void*)((u32*)(& aptbuf))), sizeof (aptbuf), 0)' from 'void' to 'bool' at line line 142.
When I try to make the file inside the m3dialib folder in m3diaLib-CTR-master, it throws me the error.

Error

I have no idea if anyone else as the same exact error or that I did something wrong when trying to make it.

Documentation

The link is down.
Is there somewhere else it is hosted?

Launching other applications from HB crashes ARM11

Commit/Release: d0619a5
3DS System: N3DS
Luma Version/Other CFW and Version: 9.1
Other Details and Code Snippets Describing the Issue:
Attempting to run applet.launchSystemApp(appID); crashes the 3DS system.
No other information is available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.