Devkitppc setup (Windows)

From WiiBrew
Jump to: navigation, search


This tutorial aims to:

  • Show you how to setup the devkitppc development enviroment on a Windows computer
  • Run a hello world example on the include Gcube emulator
  • Set you on the road to creating your own homebrew software to be loaded with the Twilight Hack

Installing devkitpro

  • Goto [[1]] and download the latest Windows installer.
  • Let it install to the C:\devkitPro\ to make it easier to follow the tutorial for now.
  • When installing it, you can deselect devkitarm and devkitpsp
  • Click next until it finishes installing

Setup your project folder

Setup your project folder

  • Under no circumstances should you place projects within the devkitPro folder. The windows updater can and will overwrite/delete your files.
  • Create a new folder outside the devkitPro folder, c:\projects\wii for example. This path should not contain spaces.
  • Copy the folder C:\devkitPro\examples\wii\template\ to this new directory and rename it to "helloworld" so that the full path is c:\projects\wii\helloworld\

Compile the Hello World Example

  • Assuming you installed Programmer's Notepad through the installer, double click the .pnproj file in your new project.
  • Click on Tools->make or use the ALT+1 key combination
  • The output window at the bottom will show the build progress

Run the Hello World Example

  • Now, browse to the helloworld folder. There should be a helloworld.dol file here now.
  • Open this file, and when windows asks what program to use, tell it to use C:\devkitpro\emulators\gcube\gcube.exe

The resulting dol should be compatible with the Twilight Hack. Unfortunately dols compiled with CVS libogc and future stable releases will not be compatible with gcube.

Some Code snippets

Here are some code snippets, that can be very usefully (all without quotes!):

Reload .elf:


Return to Loader (i.e. USBGecko with geckoloader) on START+Z-Trigger:

  • Add this to your definitions on the top of your source file:

typedef void (*Loader_Entry)(void);

Loader_Entry loader = (Loader_Entry)0x80001800;

  • Add this in your main while loop, under "VIDEO_WaitVSync()":


int buttonsDown = PAD_ButtonsHeld(0);

if( (buttonsDown & PAD_TRIGGER_Z) && (buttonsDown & PAD_BUTTON_START)) {



Roto 17:25, 24 March 2008 (PDT)


devkitPro's 'Getting Started' Wiki