An interpreter and text editor for a subset of the Caml Programming Language for the Nintendo 3DS.
Great thanks to
- Notepad3DS as a jumping-off point for the text editor segment of this project.
- min-caml as a minimal Caml implementation I've based mine on
- Parser bulit with Flex+Bison
- Hindley-Milner Type Inference (slightly janky)
- Rudimentary builtin functions for input and output
- Text editing
- Development interpreter target for host system
- Load/Save on SD Card
See examples for some example programs to run.
CIA/3DSX downloads are available in the releases.
# Install dependencies
sudo apt install -y flex bison
# Install devkitARM (see below)
# Clone
git clone https://github.com/CharlesAverill/SuperML.git
# Install bannertool
git clone https://github.com/carstene1ns/3ds-bannertool.git --depth=1 && cd 3ds-bannertool
cmake -B build && cmake --build build && sudo cmake --install build
cd ..
# Install makerom
git clone https://github.com/3DSGuy/Project_CTR.git --depth=1
make -C Project_CTR/makerom deps -j
make -C Project_CTR/makerom program -j
sudo cp Project_CTR/makerom/bin/makerom /usr/bin
# Build SuperML
cd SuperML
makeYou will need devkitArm which can be obtained with
wget http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/devkitARMupdate.pl
chmod +x devkitARMupdate.pl
sudo ./devkitARMupdate.pl /opt/devkitPro
echo "export DEVKITPRO=/opt/devkitPro" >> ~/.bashrc
echo "export DEVKITARM=\$DEVKITPRO/devkitARM" >> ~/.bashrc
echo "export PATH=\$PATH:\$DEVKITARM/bin" >> ~/.bashrc
source ~/.bashrcPlease note: The env variables need to be available from sudo
Defaults env_keep += "DEVKITPRO DEVKITARM"| Make Commands | Action |
|---|---|
| make | |
| make 3ds | The 3ds target will build a <project name>.3ds file. |
| make 3dsx | The 3dsx target will build both a <project name>.3dsx and a <project name>.smdh files. |
| make cia | The cia target will build a <project name>.cia file. |
| make azahar | The azahar target will build a <project name>.3dsx file and automatically run azahar. |
| make elf | The elf target will build a <project name>.elf file. |
| make fbi | The fbi target will build a <project name>.cia file and send it to your 3ds via FBI. |
| make hblauncher | The hblauncher target will build a <project name>.3dsx file and send your 3ds via homebrew launcher.2 |
| make release | The release target will build .elf, .3dsx, .cia, .3ds files and a zip file (.3dsx and .smdh only).3 |
Notes:
- 2 If you intend to use the hblauncher and fbi targets ensure you have set IP3DS in the
Makefileto the ip address of your 3ds on your network.- In homebrew launcher press Y and you can netload your 3dsx file.
- In FBI go to remote install and select
Receive URLs over the network.
- 3 This requires having makerom and bannertool both included in
buildtoolsas 7z files. - If you are on windows you will need both of the following in your
$PATH(included aswell)
Install the following using devkitProUpdater:
Note: It is suggested to install dev tools at the root of your disk drive i.e. C:\Development\3ds-homebrew\devkitPro
Once installed, make sure you have access to a C compiler from cmd. If you're not sure install mingw-w64 to
C:\Development\mingw-w64 and then add the path C:\Development\mingw-w64\mingw32\bin to your env variables.
Open command prompt as an administrator and cd into the devkitPro installation folder. Some commands need admin
rights to properly install. Additionally make sure your antivirus software does not interfere.
Next git clone the latest 3ds_portlibs:
git clone https://github.com/devkitPro/3ds_portlibs.git
cd 3ds_portlibs
make zlib
make install-zlibFinally, clone this repo and build with one of the commands found in usage.
All of this would not have been possible without the work of
- Smealum
- Steveice10
- and countless others



