How to skin the Simple kernel for the EZ-Flash Omega family

This is a step-by-step guide for skinning the Simple kernel for the EZ-Flash Omega family of Game Boy Advance flashcarts.

This guide is made with users of Microsoft Windows in mind.

macOS and Linux users will have to follow their respective Getting Started guide from devkitPro.



Any text editor
Simple or Simple-DE source code
File Extensions enabled in Explorer
A lot of patience

Step 1: Installing devkitPro


Installing devkitPro will give you access to a suite of tools such as GCC that will allow you to compile the source code of the kernel into a functioning binary that can be applied to your flashcart.

First, go to the devkitPro releases page and download the "devkitProUpdater-3.0.3.exe" executable.

Once you run it (and satisfy Windows UAC), you will be greeted with a screen that looks something like this:

Click next, and select "Download and install/install from downloaded files," then, hit next again.

The "Keep downloaded files after install?" option is your choice. I would recommend removing the downloaded files to save space.

Coming up next, we will see a screen that looks like this:

Here, you'll notice that I have unchecked everything except for "GBA Development."
We are only concerned about the Game Boy Advance here, but if you want to enable things like GameCube or 3DS development, go ahead.

Up next, you'll be asked where you want to put the devkitPro installation.

I always opt for "C:\devkitPro" but you can put it wherever you want, but make a note of where you put it, it's important.

Create a Start Menu folder named "devkitPro" and hit "Install."

And now, watch as it does its magic.

After it's completed, hit next, and you'll be asked if you want to donate to devkitPro.
...please do!

Step 2: Cloning the Source Code

Without a copy of the source code for the kernel we want, we can't really do anything.

If your cartridge is the base model, look here.
If your cartridge is the Definitive Edition, look here.
The process for fetching the source code is the same between the two versions.

To actually download the source code in .ZIP format, you'll look here on the repository page:

Once you have it downloaded, extract it into the location of your choice, make sure that the path doesn't contain any spaces, otherwise compilation will flat-out not work.

In the folder, you'll notice a batch file titled "build.bat." Execute this batch file by double-clicking to do a test compile to make sure we set up devkitPro correctly.

If everything went well, we'll see a screen somewhat like this, along with a new folder and two new files in the directory.

Step 3: Editing the Data Files

Here comes the fun part.

In the source code directory, you'll notice a folder named "images."
Contained within are all of the backgrounds and icons that are displayed in this kernel.

Editing Primary Source Files

What I mean by "Primary Source Files" are the images contained within the folders named "DARK" and "LIGHT."
These files are what make up the majority of the kernel's visual identity.

You can open and edit the .BMP/.PNG files in whatever image editor you want.

Fixing Colors

There needs to be some tweaks done to the source code depending on the brightness of your theme, though.
Don't worry, it's nothing major.

Go into the folder at the root of the project labeled "source."
You'll notice a header file named "draw.h"

Open this file in the text editor of your choice. Notepad will suffice.

If your theme has more of a lighter color scheme, then change the text in the "#define" from "DARK" to "LIGHT"

What this does is let the rest of the source code know that you are compiling against the lighter color scheme and will adjust things like the text color and other things acoordingly.

Editing Icons

Going back into the "images" folder, you'll notice a handful of files named "icon_(XX).png" or "icon_(XX).bmp"
These are the icons that are displayed for certain file types.

These can be edited in the same way as the primary source files.

Editing UI Colors

The next step is not strictly necessary but it might be a good idea to match up with your theme.

Going back into the "source" directory, you'll find a file named "ezkernel.c."
If you're using the Definitive Edition variant, it's named "ezkernelnew.c."

Search for the phrase "gl_color_selected" in that file. The code surrounding that should look like this:

These are the colors that are used in the UI, drawn over the image files from before. You'll notice that the maximum value is 31.
These are 15-bit RGB values, and so instead of values between 0-255, you get values between 0-31.
Use trial and error to get the color you desire.

Converting Primary Assets

In the root directory, there is a folder named "Grit." Enter that directory.

The two files of importance here are "Build Skin Files.bat" and "Config.ini"

Remember how if your theme is on the brighter side, you edited the file "source/draw.h?"
You'll wanna do a similar thing here.

Open up the file "Config.ini."

If you're making a lighter theme, then change the text on the first line to read "LIGHT" rather than "DARK."

After that, once you're ready to export your assets, then run the "Build Skin Files.bat" script.

What this does is it runs the image files in the specified directory through the included program known as Grit.
This program will convert the data files to the proper source code format, and the script will take care of the rest.

Converting Icons

Converting icons is where the tedium starts.

Once you have edited them as how you like, you'll want to use the "Usenti" tool as a more user-friendly way of exporting them.
There is a link in the Prerequisites section.

macOS and Linux users, Usenti works just fine in Wine, after installing MFC42 in Winetricks.

Open up the icon that you are trying to export. We will use "icon_EXE" as the example.

Usenti also works as an image editor, but its paletted nature might be confusing for some. I'd recommend editing it with another image editor.

Once you are happy with your icon, click this button on the top bar:

Once you are met with the file browser, set the file type to "GBA source." Afterwards, hit Save.

Afterwards, you will be met with this somewhat scary looking interface.
Like the title bar says, don't panic!

We are only interested in these few settings:

Set these options to how they appear in the following image:

Next, hit the OK button.

If you look back in the "images" directory, you'll notice that there is now a new file.
The name of this file will vary depending on the icon you just exported, but in our case we chose "icon_EXE."

Delete the old "icon_EXE.h" file. We do not need it anymore.

Now, rename the new "icon_EXE.c" file to "icon_EXE.h"

Next, open up the new "icon_EXE.h" in your text editor.

Notice the name of the array? This is a problem. If we do not change this as necessary, our kernel will not compile.

Delete the "Bitmap" suffix and affix "gImage_" to the beginning of the name, like this:

And now you repeat this for every icon you want to change.


This is it! The home stretch!

If you've done everything correctly, you can now execute the "build.bat" file in the root of the repository.

Let it do its magic, and you should now have a newly skinned kernel that's ready to flash!

Now, we need to update your flashcart.
For base model users, name the new kernel "ezkernel.bin" and place it at the root of the SD card.
Definitive Edition users, name it "ezkernelnew.bin" and do the same.

Now, turn on your console while holding the R button to update the flashcart kernel.

If all has gone well, you should now have a newly skinned Flashcart!

Custom theme provided by SkyDX

Happy Skinning!