A W.I.P. runtime made in C++ aimed to bring any Scratch 3 project over to the Nintendo 3DS, Wii U, Wii and Gamecube.
3DS: Glide your finger/stylus on the bottom screen to move the mouse, and tap the bottom screen to click.
Wii U Gamepad: You can use the touchscreen on the gamepad.
Wiimote: You can use the Wii sensor bar to control the mouse.
Other Controllers: Enter Mouse Mode by holding L. Use the D-pad to move the mouse, and press R to click.
- Any un-edited scratch project will be displayed on the Top Screen only.
- If using a modded Scratch client like Turbowarp, you can go into the projects' Advanced Settings and change the resolution.
-
- Setting it to
400x480will enable both the top and bottom screen.
- Setting it to
-
- Setting it to
320x240will enable only the Bottom screen.
- Setting it to
-
- Setting it to
400x240will make the project perfectly fit to the top screen.
- Setting it to
-
- NOTE: make sure to click
Store Settings In Projecton Turbowarp to properly apply the settings.
- NOTE: make sure to click
- Currently, projects display exactly the same on both the TV and the Gamepad, and there's no way to change Screen modes.
- mp3, ogg, and wav audio formats are supported.
- A sound will take time to load if playing it for the first time.
-
- Known Bug: On 3DS, if a sound has to load while other sounds are playing, all sounds will stop playing until the sound is loaded.
- If you play any sound from the "Stage," the sound will play as a "Streamed Sound," and will not need to load.
- Only one "Streamed Sound" can be playing at a time, so this is good for things like background music.
- Sounds may fail to load on 3DS if the file size of the song is too high, or if there's too many sounds loaded at once.
- When using a modded Scratch client like Turbowarp, you can enable the
60 FPS (Custom FPS)advanced option, and change the FPS to any value.
- The
Usernameblock returns the 3DS's nickname, and the Wii U's current Mii name. - The
Touching __?block uses simpler box collision, which may lead to projects working incorrectly. - The
Stop 'All'block brings you back to the Homebrew menu.
As this is in a very W.I.P state, you will encounter many bugs, crashes, and things that will just not work.
List of known limitations:
- Images will only work if it's in .png, .jpg or .svg format
- If any vector image contains text, the text will not show up
- Extensions (eg: pen and music extensions) are not yet supported
- Some blocks may lead to crashing/unintended behavior (please open an issue if you know a block that's causing problems)
- [Wii, Wii U, Gamecube] The first controller connected will be the only one that will work
- [Gamecube] Cloud Variables will not be supported
- [Gamecube] The Gamecube has very little memory, so try to keep projects small
- [3DS] Performace is poor when lots of blocks are running at once
- [3DS] If you have a bunch of large images, some may not load
- [3DS] Some vector images will appear bigger than they should
- [3DS] Images cannot be over 1024x1024 in resolution
- [3DS] Some images may appear 'fuzzy' looking or have noticable inconsistencies
- All say and think blocks
- All* Costume Effects
-
- *
GhostCostume Effect is supported.
- *
- Show/hide list
- When backdrop switches to
- When this sprite clicked
- When loudness > ___
- All Color touching blocks
- Set drag mode
- Loudness
- Bug fixing and Scratch Parity
- Get all blocks working
- Pen support
- Support most TurboWarp extensions
- Custom blocks to detect when being ran by Scratch 3DS and Other Information like what Platform it's being run on
- Stereoscopic 3D support
- Dual screen support
- Improved controller support (multiple controllers)
- Cloud Variable support
- Ability to remap controls
- Download projects from the Scratch website
- Improve main menu UI
There are 2 methods to install the runtime.
- Download the release or nightly build (easy)
- Build the file yourself (harder)
Note
Nightly builds are significantly more unstable than releases and should probably only be used if you are instructed to do so in a bug report.
Download the .3dsx file in the Releases tab or nightly build.
- Place the
.3dsxfile in the3ds/folder of your 3DS SD card, along with any Scratch projects you want to run.
Note
Scratch 3DS is also on Universal Updater, so you can just download it there and keep it updated that way!
Then it should be as simple as opening the homebrew launcher on your 3DS and running the app!
Download the scratch-wiiu.zip file in the Releases tab or nightly build.
Unzip the file in your sdcard:/wiiu/apps/ folder.
Place the scratch projects you want in sdcard:/wiiu/scratch-wiiu/
Note
Scratch Wii U is also on the Homebrew App Store, so you can just download it there and keep it updated that way!
Then it should be as simple as opening the app on your Wii U!
Download the scratch-wii.zip file in the Releases tab or nightly build.
Unzip the file and put the apps folder inside of the root of your SD card.
Place the Scratch projects you want in sdcard:/apps/scratch-wii/
Then it should be as simple as opening the app in the Homebrew Menu on your Wii!
Download the scratch-gamecube.zip file in the Releases tab or nightly build.
Unzip the file. Put your Scratch projects in the same place you put your .dol file.
Then it should be as simple as opening the app on your Gamecube!
In order to embed a Scratch project in the executable, you'll need to compile the source code.
If you would like to change the name of the app or any other information you can edit one of the Makefiles.
- For the 3DS you need to edit
Makefile_3dsand changeAPP_TITLE,APP_DESCRIPTIONandAPP_AUTHORto whatever you please. - For the Wii U you need to edit
Makefile_wiiuand changeAPP_NAME,APP_SHORT_DESCRIPTION,APP_LONG_DESCRIPTIONandAPP_AUTHORto whatever you please. - For the Wii you need to edit
Makefile_wiiand change anything underApplication Infoto whatever you please.
The recommended way to compile Scratch 3DS is with Docker. To compile with Docker all you need installed is Docker and Buildx.
To compile for the 3DS run docker build -f docker/Dockerfile.3ds --target exporter -o . .
To compile for the Wii U run docker build -f docker/Dockerfile.wiiu --target exporter -o . .
To compile for the Wii run docker build -f docker/Dockerfile.wii --target exporter -o . .
If you are compiling with cloud variables, you will need to have Devkitpro's SDKs, Mist++, and a modified version of libcurl (instructions in mistpp-packages repo) installed.
-
For the 3DS you will need the DevkitARM toolchain and libctru.
-
- If you want to compile with audio support, you will also need a 3DS compiled version of SDL2 and SDL2_mixer. See the Nightly Build commands for a reference on how to compile SDL2 3DS for yourself.
-
For the Wii U you will need the DevkitPPC toolchain, WUT, all SDL2-wiiu libraries, and libromfs-wiiu.
-
For the Wii you need the DevkitPPC toolchain, libogc, all SDL2-wii libraries, and libromfs-ogc.
-
For the Gamecube you need the DevkitPPC toolchain, libogc, all SDL2-gamecube libraries, and libromfs-ogc.
-
Devkitpro's install instructions are available at : https://devkitpro.org/wiki/Getting_Started
Download the source code from the releases tab and unzip it.
Make a romfs folder inside the unzipped source code and put the Scratch project inside of that.
- The Scratch project MUST be named
project.sb3, all lowercase. - For faster load times/less limitations, you can also unzip the sb3 project file and put the contents into a new folder called
project.
Then you need to compile the projects into proper Homebrew packages.
- For the 3DS you simply need to run
make. Then copy theScratch-3DS.3dsxfile like you normally would. - For the Wii U you need to run
make PLATFORM=wiiu all packageand then copy thebuild/wiiu/scratch-wiiufolder into thesdcard:/wiiu/appsfolder on your sd card. - For the Wii you need to run
make PLATFORM=wii package, then find the zipped file inbuild/wii/scratch-wii.zip. Unzip it and put theappsfolder inside the root of your Wii SD card. - For the Gamecube you need to run
make PLATFORM=gamecube, then find the .dol file atbuild/gamecube/scratch-gamecube.dol.
Compilation flags are used to select which features will be enabled in the compiled version of Scratch 3DS. To use a compilation flag simply add it to the end of the make command (e.g. make ENABLE_BUBBLES=0).
- [3DS]
ENABLE_BUBBLES(default:1): If set to1, the loading screen is enabled, if set to0the screen is simply black during that time. ENABLE_AUDIO(default:1): If set to1, Audio will be enabled. If set to0, it will be disabled.ENABLE_CLOUDVARS(default:0): If set to1, cloud variable support is enabledd, if set to0cloud variables are treated like normal variables. If you're project doesn't use cloud variables it is recommended to leave this turned off. If you run into errors while building try turning this off and see if that fixes the errors.
This project is not affiliated with Scratch or the Scratch team.

