daedreth / lpp-3ds

Lua Player Plus for Nintendo3DS to be used with 3dfetch.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Preamble

This is a fork of the actual lpp-3ds. It expands it's functionality slightly to function within 3dfetch.

It is absolutely incompatible with the newest release of devkitARM and will not compile, same as the original source.

I highly advise against attempts to build this yourself, as it is a rather painful and lengthy process due to it not being updated for the newest devkitARM, however, due to developer obligations I am going to attempt to provide a short reference guide for the building process.

Prerequisites:

  • gcc
  • devkitARM r45 (yes, 45, not 46)
  • aemstro

As my last 2 days of attempts to make lpp-3ds compile with devkitARM r46 were not particularly fruitfull and filled with sorrow and dread, here is a short guide:

  • Clone this repository: git clone https://github.com/daedreth/lpp-3ds.git
  • Clone aemstro: git clone https://github.com/smealum/aemstro.git
  • Set an environmental variable AEMSTRO to point to your cloned aemstro repository: export AEMSTRO=/path/to/aemstro/repo
  • Download the outdated devkitARM from: https://sourceforge.net/projects/devkitpro/files/devkitARM/devkitARM_r45/

We proceed assuming that you already have an up to date devkitARM installation, if not, it doesn't matter.

  • Create a directory for the outdated devkitARM: sudo mkdir -p /opt/devkitpro/devkitARM_old
  • Assign permissions to be able to use it easily: sudo chmod 777 /opt/devkitpro/devkitARM_old
  • Copy the devkitARM r45 tarball to the newly created repository and unpack it: tar -xvjf devkitARM_r45-x86_64-linux.tar.bz2
  • Temporarily export environmental variables: export DEVKITPRO=/opt/devkitpro && export DEVKITARM=/opt/devkitpro/devkitARM_old
  • Enter the lpp-3ds directory and run make , this should be enough to compile the interpreter.
  • If an error regarding CRT is being shown, you have to recompile the library: cd $DEVKITARM/arm-none-eabi/lib && make CRT=3dsx

The possibility that further errors arise is rather high, if you are foolish enough to subject yourself to this madness instead of downloading a precompiled binary and encounter some weird issues despite following these steps, open an issue.

Description

Lua Player Plus 3DS is the first lua interpreter made for Nintendo 3DS.

The interpreter currently runs under Lua 5.3.1. It has also a debug FTP server to correct your errors in runtime.

Official documentation: http://rinnegatamante.it/lpp-3ds_doc.html
Official support board: http://rinnegatamante.it/board/forumdisplay.php?fid=12

Features

Graphics
  • Advanced 2D Graphics Rendering (CPU and GPU)
  • Basic 3D Rendering
  • Native support to TTF fonts
  • Native support to BMP/PNG/JPG images
  • Native support to JPGV video files
  • Native support to stereoscopic 3D effect
Sounds
  • Sound system with support for WAV/AIFF/OGG audio files
  • Support to different interpolation modes (None, Linear, Polyphase)
  • Complete access to Microphone for sound registration
Controls
  • Controls system with full console support
  • Built-in Keyboard system
Network
  • Easy to use networking basic features
  • Built-in Mail Sender system
  • Complete sockets system support
  • Built-in debug FTP server
  • SSL connections support
System
  • Access to a lot of Nintendo syscalls
  • Native support to CIA files managing
  • Native support to 3DSX and SMDH files
  • Native support to ZIP archives
  • I/O access for SD card and Extdata archives
  • Native support to console Camera to take photos
  • Native support to ARM9 payloads loading
Utilities
  • Timer system
  • Advanced arithmetical functions support (math library)

Nightly Builds

We offer an automated builder service for our nightly builds. Nightly builds are automatically updated every 4 hours by a server we own. To take advantage of this service, you should visit this page.

Showcase

Here are some 3DS homebrews made using Lua Player Plus 3DS:

Games
Utilities
Engines & Interpreters
Updaters

Compiling the source

The repository will provide you a full set of all of the needed libraries. Take in mind that a lot of them are modified versions of the original ones so if you want to update them, take a look at this repository where you can find sourcecodes of every pre-builded library used in this repository. Also take in mind that libkhax includes also libSu sourcecode. Last but not least, please note that libjpeg.a file is a standard compilation of libjpeg-turbo.

Lua Player Plus 3DS supports different flags to enables some features:
-DUSE_MEMCHUNKHAX2 enables memchunkhax2 usage through svchax at startup for firmwares between 9.3 and 10.7.
-DCITRA3DS_COMPATIBLE removes romFs support causing Citra3DS emulator crash.
-DSKIP_ERROR_HANDLING disables error handling for faster code execution (this is used for Unsafe version).
-DFORCE_SD forces interpreter to load main script from SD instead of romFs filesystem.
-DFORCE_DSP forces interpreter to use dsp::DSP audio service even if csnd:SND is available.

Credits

  • Everyone involved in ctrulib creation
  • Smealum for ftpony source used for debug ftp server
  • Myria for libkhax
  • xerpi for sf2dlib
  • fincs for citro3dlib
  • Sean Barrett for stb_truetype
  • Everyone involved in lodepng, zlib, mpg123, libogg, vorbisfile libraries
  • Everyone involved in Brahma developing
  • aliaspider for svchax
  • Misledz for the Lua Player Plus 3DS logo
  • EasyRPG Team for the AudioDecoder used for MP3 support
  • ksanislo for the network module improvements
  • Special thanks to Aurelio and ihaveamac for testing interpreter features

About

Lua Player Plus for Nintendo3DS to be used with 3dfetch.

License:GNU General Public License v3.0


Languages

Language:C++ 50.9%Language:C 46.8%Language:Objective-C 1.8%Language:Makefile 0.4%Language:GLSL 0.0%Language:PHP 0.0%Language:Batchfile 0.0%