Skip to content

Physical Special Split Icons In Summary

Ashingda edited this page Oct 21, 2026 · 2 revisions

This tutorial will display the icons in the summary screen as seen on the gif. Make sure you have already done the "Add Physical Special Split" if not, do that first.

1. Get the sprite

Download this image and place it in the graphics/summary_screen folder.

2. Open the file

Locate and open the file src/pokemon_summary_screen.c, it is also the only file we'll be modifying in this tutorial.

3. Making use of an unused variable

Find this line:

#define PSS_LABEL_WINDOW_UNUSED1 7

Change it to:

#define PSS_LABEL_WINDOW_CATEGORY 7

4. Define the Function and Icons

Find this line:

static void SummaryScreen_DestroyAnimDelayTask(void);

Insert the following codes directly below:

static void DisplayCategory(u16);
static const u16 sCategoryIcon_Pal[] = INCBIN_U16("graphics/summary_screen/split_icons_summary.gbapal");
static const u8 sCategoryIcon_Gfx[] = INCBIN_U8("graphics/summary_screen/split_icons_summary.4bpp");

5. Window Template

Find this chunk of code:

    [PSS_LABEL_WINDOW_UNUSED1] = {
        .bg = 0,
        .tilemapLeft = 11,
        .tilemapTop = 4,
        .width = 0,
        .height = 2,
        .paletteNum = 6,
        .baseBlock = 137,
    },

Change it to:

    [PSS_LABEL_WINDOW_CATEGORY] = {
        .bg = 0,
        .tilemapLeft = 37,
        .tilemapTop = 15,
        .width = 2,
        .height = 2,
        .paletteNum = 10,
        .baseBlock = 137,
    },

6. Sliding Function

Find this Function:

static void Task_SlidePowerAccWindow(u8 taskId)

Within this Function, find this chunk of code:

        if (tScrollingSpeed < 0)
        {
            if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES)
                PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
        }
        else

We will be inserting a line of code

DisplayCategory(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);

Thus the final result will be:

        if (tScrollingSpeed < 0)
        {
            if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES)
            {
                PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
				DisplayCategory(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);
            }
        }
        else

7. Print Function

Find this Function:

static void PrintMoveDetails(u16 move)

Within this Function, find this chunk of code:

        if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES)
        {
            PrintMovePowerAndAccuracy(move);
            PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
        }
        else

Just like previous, we will again be inserting a line of code

DisplayCategory(move);

Thus the final result will be:

        if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES)
        {
            PrintMovePowerAndAccuracy(move);
            PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
            DisplayCategory(move);
        }
        else

8. Final

The last thing to do is to insert this Function the very end of the page.

static void DisplayCategory(u16 move)
{
    LoadPalette(sCategoryIcon_Pal, 10 * 0x10, 0x20);
    BlitBitmapToWindow(PSS_LABEL_WINDOW_CATEGORY, sCategoryIcon_Gfx + 0x80 * gBattleMoves[move].category, 0, 0, 16, 16);
    PutWindowTilemap(PSS_LABEL_WINDOW_CATEGORY);
    CopyWindowToVram(PSS_LABEL_WINDOW_CATEGORY, 3);
}

Clone this wiki locally