Skip to content

Windows

Windows Developer Environment Setup

What to install

Everything not marked optional is required. Polyphase always packages for GameCube, Wii and 3DS, so the devkitPro toolchains are part of the baseline setup, not an extra.

Install Needed for Verify with
Visual Studio 2022 Community with the "Desktop development with C++" workload Everything (Polyphase.sln) Polyphase.sln opens and builds DebugEditor
CMake libgit2 prebuild (Tools\prebuild.bat), native addons that ship a CMake project cmake --version
Vulkan SDK 1.3.275.0 (LunarG) Editor and every game build, glslc for shaders echo %VULKAN_SDK% prints the install path, glslc --version
Python 3 on PATH Tools\prebuild.bat asset stubs, Lua stub generator, 3DS 3D banners python --version
devkitPro installer with wii-dev and 3ds-dev (installed through its MSys2 pacman) Packaging for Wii, GameCube and 3DS (the devkitPPC and devkitARM compilers) in the devkitPro MSys2 shell: /opt/devkitpro/devkitPPC/bin/powerpc-eabi-g++ --version
libogc2, libogc2-libdvm, gamecube-tools-git (same pacman) Packaging for GameCube (its libraries come from libogc2, not the stock libogc) ls /opt/devkitpro/libogc2/lib/cube in the MSys2 shell
makerom, bannertool, cwavtool, pycgfx The Nintendo 3DS (CIA) installable target Packaging a 3DS installable
WSL2 with rpm / appimagetool (optional) The Linux RPM and AppImage installer targets from a Windows host; see Linux.md wsl rpmbuild --version
Android Studio with SDK Build Tools 34.0.0, NDK 25.2.9519653, CMake 3.22.1 (optional) Packaging for Android; see Compiling.md SDK Manager shows the three components
Docker Desktop (optional) Building Linux and console targets in the maintained container instead of installing the toolchains above; see Compiling.md docker --version

Pull Submodules

git submodule update --init --recursive

Download and Install:

  • Visual Studio Community 2022 (with C++ support)
  • CMake
  • Vulkan SDK version 1.3.275.0 (During install select "Shader Toolchain Debug Symbols - 64 bit" and deselect all other options)
  • devkitPro (base installer; the GameCube/Wii/3DS toolchains are installed via pacman in the next section)
  • Instructions for installing devkitPro can be found in the devkitPro wiki here

Install devkitPro toolchains:

Open your Start Menu and launch devkitPro > MSys2, then run each command below separately.

Trust the libogc2 package signing key:

pacman-key --recv-keys C8A2759C315CFBC3429CC2E422B803BA8AA3D7CE --keyserver keyserver.ubuntu.com
pacman-key --lsign-key C8A2759C315CFBC3429CC2E422B803BA8AA3D7CE

Next, edit C:\devkitPro\msys2\etc\pacman.conf and add the following entry above the existing [dkp-libs] entry. This is file content, not commands — the two Server lines are mirrors of the same repository (pacman falls back to the second if the first is unreachable), and both lines belong in the file:

[libogc2-devkitpro]
Server = https://packages.libogc2.org/devkitpro/windows/$arch
Server = https://packages.extremscorner.org/devkitpro/windows/$arch

Back in the MSys2 shell, sync and update:

pacman -Syuu

Then install the toolchains and libraries (accept overwriting if asked):

pacman -S wii-dev 3ds-dev gamecube-tools-git libogc2 libogc2-libdvm

Note: the libogc2 packages are only the GameCube/Wii libraries. wii-dev and 3ds-dev are the meta-packages that pull in the actual compilers — devkitPPC (powerpc-eabi-g++) and devkitARM (arm-none-eabi-g++). Without them, shader compilation and the editor will work, but GameCube/Wii/3DS packaging will fail partway through make with a missing-compiler error.

Verify the setup in the MSys2 shell. First check the environment variables the build reads — the Makefiles fail immediately if these are missing from the environment make runs in:

echo $DEVKITPRO
echo $DEVKITPPC
echo $DEVKITARM

Expect output like /opt/devkitpro and /opt/devkitpro/devkitPPC (MSYS-style; Windows-style values like C:\devkitPro\devkitPPC also work — either way it must point at the toolchain root folder, not a \bin subfolder). If any prints empty, the devkitPro installer's environment setup didn't take — restart your computer, and if it's still empty, re-run the devkitPro installer.

Then verify the compilers by full path (both should print a version):

/opt/devkitpro/devkitPPC/bin/powerpc-eabi-g++ --version
/opt/devkitpro/devkitARM/bin/arm-none-eabi-g++ --version

Note: the compiler bin folders are deliberately not on the shell PATH — the build invokes compilers via $(DEVKITPPC)/bin/. A bare powerpc-eabi-g++ printing "command not found" does not mean the install is broken; always test with the full paths above.

  • Restart computer if you've opened Visual Studio prior to installing the toolchains to make sure the environment variables (DEVKITPRO, DEVKITPPC, DEVKITARM) are found.
  • Build shaders, libgit2, and the Standalone\Generated\ embedded-asset stubs by running Tools\prebuild.bat. The stub step writes minimal placeholders for EmbeddedAssets.{h,cpp}, EmbeddedScripts.{h,cpp}, and AddonPlugins.cpp only if they are missing — these files are gitignored and normally regenerated by the Editor's "Build Data" action, but a fresh clone needs the stubs so Standalone compiles. (Requires Python 3 on PATH.)

Packaging a 3DS installable (.cia)

The plain Nintendo 3DS build target needs nothing beyond 3ds-dev above. The Nintendo 3DS (CIA) target, which produces an installable HOME Menu title, shells out to tools that devkitPro does not ship. None of them are needed unless you use that target.

Tool Needed for Where it comes from
makerom the .cia (required) 3DSGuy/Project_CTR releases, makerom-v0.19.0-win_x86_64.zip
bannertool HOME Menu banner and tune (optional) carstene1ns/3ds-bannertool releases, bannertool-1.2.3-windows.zip
cwavtool DSP-ADPCM tune encoding (optional, experimental) PabloMK7/cwavtool releases, cwavtool.zip, use windows-x86_64\cwavtool.exe
Python 3.12 + pycgfx 3D scene banners (optional) python.org and skyfloogle/pycgfx

Easiest: in the editor open Preferences > External > Launchers, scroll to 3DS CIA Tools, and click Download makerom + bannertool + cwavtool. The archives are fetched from the release pages above into %APPDATA%\PolyphaseEditor\Tools\3DS and picked up immediately.

Manual: extract makerom.exe, bannertool.exe and cwavtool.exe and either copy them into C:\devkitPro\tools\bin, put their folder on PATH, or set the path fields in the same Preferences page.

3D banners additionally need Python. Install Python 3.12 from python.org and tick Add python.exe to PATH in its installer, restart the editor, then click Install pycgfx in the same Preferences page (it downloads pycgfx, pinned to a fixed commit, and runs pip install --user gltflib pillow). pycgfx has no license file, which is why the editor only fetches it on request and never bundles it. Selecting a 3D banner in a build profile without these installed shows what is missing and falls back to the image banner.

Details on the target, its options and the HOME Menu limits are in Platforms/3DS/Overview.md.

Visual Studio Setup & Editor Build

  1. Open Polyphase.sln .
  2. Switch to the DebugEditor solution configuration.
  3. Set the Standalone project as the Startup Project.
  4. In the debug settings for Standalone, change the working directory to $(SolutionDir).
  5. Build and run Standalone. This is the standalone level editor if you were making a game with Lua script only.