Native JavaScript interpreter for the Nintendo 3DS.
CTRJS is an abbreviation for CTR JavaScript, and offers a full implementation of JavaScript for the Nintendo 3DS, with various extensions and features to help bring JavaScript fully into the world of Nintendo 3DS homebrew software development.
CTRJS aims to bring a full port of JavaScript to the Nintendo 3DS, using V7 as the JavaScript engine, and libctr for providing platform-specific modules, making it easier for developers to create homebrew, without needing to use C/C++.
See https://symbitic.github.io/ctrjs/index.html for end-user downloads and documentation.
- ECMAScript E5/E5.1 compliant.
- Nintendo 3DS specific modules, for easier porting and writing.
- Garbage collection.
- Asynchronous language and APIs reflect the nature inherent to modern video game programming and to ARM programming in general.
- Efficiency: Because of the languages' considerable popularity, JavaScript engines are highly-opimized. CTRJS gains even more performance because it sits closer to the hardware than do JavaScript engines running on a desktop.
- Portability: Excluding unfinished ports like the filesystem and networking, it should be relatively straightforward to port existing JavaScript to run on CTRJS.
- Quicker deployment, by offering a high-level language which can be written on the host (PC) or target (Nintendo 3DS).
- Modularity: Unlike most scripting languages, JavaScript has good support for
organizing code into modules. A module in JavaScript can be as simple as a
file in the same directory (e.x.
main.js
includesprint.js
), or it can be an externally developed library imported from a package manager (e.x. writing a Node.js app that uses ExpressJS installed using NPM). - Following Semantic Versioning, CTRJS offers a promise of compatibility. By offering a means for apps and libraries to declare which version of CTRJS they were written to run on, any existing code can continue to run when new versions are released, as long as the required versions can be found.
- JavaScript is the programming language of the web, and not without reason. It's syntax is very extensible and expressive. By given programmers the power to write whatever they want, however they want, JavaScript has helped make programming fun for a large number of people. Adding even greater value to this benefit is the fact that Nintendo has chosen to make their console as closed-nature as possible, even as it results in a critical lack of developer resources. Offering a "platform of fun" on a platform which has only a very limited offering of fun does have its advantages.
CTRJS is not currently stable, and should not be considered production-ready. When the stable version is released, pre-compiled packages will be available for downloading. Until then, CTRJS must be built from source. See Building for instructions on building CTRJS from source.
Building CTRJS requires OpenCTR, including libctr. Like most OpenCTR
projects, CTRJS uses CMake as the build system. An example of building CTRJS
from source, assuming that OpenCTR is installed and added to $PATH
:
git clone https://github.com/Symbitic/CTRJS
cd CTRJS
mkdir build
cd build
cmake ..
make
If everything was successful, you should now have a file named CTRJS.3dsx
inside the build/
directory.
CTRJS is licensed under the GNU General Public License v3.0.
See LICENSE.txt for terms.