summaryrefslogtreecommitdiff
path: root/src/field/starter_choose.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/starter_choose.c')
-rw-r--r--src/field/starter_choose.c757
1 files changed, 0 insertions, 757 deletions
diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c
deleted file mode 100644
index 418488774..000000000
--- a/src/field/starter_choose.c
+++ /dev/null
@@ -1,757 +0,0 @@
-#include "global.h"
-#include "starter_choose.h"
-#include "data2.h"
-#include "decompress.h"
-#include "main.h"
-#include "menu.h"
-#include "palette.h"
-#include "pokedex.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "constants/species.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings.h"
-#include "task.h"
-#include "trig.h"
-#include "scanline_effect.h"
-
-extern u16 gSpecialVar_Result;
-extern struct SpriteTemplate gUnknown_02024E8C;
-
-//--------------------------------------------------
-// Graphics Data
-//--------------------------------------------------
-
-const u16 gBirchBagGrassPal[2][16] =
-{
- INCBIN_U16("graphics/misc/birch_bag.gbapal"),
- INCBIN_U16("graphics/misc/birch_grass.gbapal"),
-};
-static const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
-static const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
-const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
-const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
-const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
-static const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
-static const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
-static const u8 gStarterChoose_PokeballCoords[][2] =
-{
- {60, 64},
- {120, 88},
- {180, 64},
-};
-static const u8 gStarterChoose_LabelCoords[][2] =
-{
- {0, 9},
- {16, 10},
- {8, 4},
-};
-static const u16 sStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
-static const struct OamData gOamData_83F76CC =
-{
- .y = 160,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 1,
- .paletteNum = 0,
- .affineParam = 0,
-};
-static const struct OamData gOamData_83F76D4 =
-{
- .y = 160,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 1,
- .paletteNum = 0,
- .affineParam = 0,
-};
-static const struct OamData gOamData_83F76DC =
-{
- .y = 160,
- .affineMode = 3,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 3,
- .tileNum = 0,
- .priority = 1,
- .paletteNum = 0,
- .affineParam = 0,
-};
-static const u8 gUnknown_083F76E4[][2] =
-{
- {60, 32},
- {120, 56},
- {180, 32},
- {0, 0},
-};
-static const union AnimCmd gSpriteAnim_83F76EC[] =
-{
- ANIMCMD_FRAME(48, 30),
- ANIMCMD_END,
-};
-static const union AnimCmd gSpriteAnim_83F76F4[] =
-{
- ANIMCMD_FRAME(0, 30),
- ANIMCMD_END,
-};
-static const union AnimCmd gSpriteAnim_83F76FC[] =
-{
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(0, 32),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_JUMP(0),
-};
-static const union AnimCmd gSpriteAnim_83F7744[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END,
-};
-static const union AnimCmd *const gSpriteAnimTable_83F774C[] =
-{
- gSpriteAnim_83F76EC,
-};
-static const union AnimCmd *const gSpriteAnimTable_83F7750[] =
-{
- gSpriteAnim_83F76F4,
- gSpriteAnim_83F76FC,
-};
-static const union AnimCmd *const gSpriteAnimTable_83F7758[] =
-{
- gSpriteAnim_83F7744,
-};
-static const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
-{
- AFFINEANIMCMD_FRAME(16, 16, 0, 0),
- AFFINEANIMCMD_FRAME(16, 16, 0, 15),
- AFFINEANIMCMD_END,
-};
-static const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
-{
- AFFINEANIMCMD_FRAME(20, 20, 0, 0),
- AFFINEANIMCMD_FRAME(20, 20, 0, 15),
- AFFINEANIMCMD_END,
-};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
-{
- gSpriteAffineAnim_83F775C,
-};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
-{
- gSpriteAffineAnim_83F7774,
-};
-static const struct CompressedSpriteSheet gUnknown_083F7794[] =
-{
- {gBirchBallarrow_Gfx, 0x0800, 0x1000},
- {NULL},
-};
-static const struct CompressedSpriteSheet gUnknown_083F77A4[] =
-{
- {gBirchCircle_Gfx, 0x0800, 0x1001},
- {NULL},
-};
-const struct SpritePalette gUnknown_083F77B4[] =
-{
- {gBirchBallarrow_Pal, 0x1000},
- {gBirchCircle_Pal, 0x1001},
- {NULL},
-};
-static void sub_810A62C(struct Sprite *sprite);
-static const struct SpriteTemplate gSpriteTemplate_83F77CC =
-{
- .tileTag = 4096,
- .paletteTag = 4096,
- .oam = &gOamData_83F76CC,
- .anims = gSpriteAnimTable_83F774C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810A62C,
-};
-static void sub_810A68C(struct Sprite *sprite);
-static const struct SpriteTemplate gSpriteTemplate_83F77E4 =
-{
- .tileTag = 4096,
- .paletteTag = 4096,
- .oam = &gOamData_83F76D4,
- .anims = gSpriteAnimTable_83F7750,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810A68C,
-};
-static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
-static const struct SpriteTemplate gSpriteTemplate_83F77FC =
-{
- .tileTag = 4097,
- .paletteTag = 4097,
- .oam = &gOamData_83F76DC,
- .anims = gSpriteAnimTable_83F7758,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_83F7790,
- .callback = StarterPokemonSpriteAnimCallback,
-};
-
-static void MainCallback2(void);
-static void Task_StarterChoose1(u8 taskId);
-static void Task_StarterChoose2(u8 taskId);
-static void Task_StarterChoose3(u8 taskId);
-static void Task_StarterChoose4(u8 taskId);
-static void Task_StarterChoose5(u8 taskId);
-static void Task_StarterChoose6(u8 taskId);
-
-static void CreateStarterPokemonLabel(u8, u8);
-static u8 CreatePokemonFrontSprite(u16, u8, u8);
-
-//Position of the sprite of the selected starter Pokemon
-#define STARTER_PKMN_POS_X 120
-#define STARTER_PKMN_POS_Y 64
-
-//Retrieves one of the available starter Pokemon
-u16 GetStarterPokemon(u16 n)
-{
- if (n > 3)
- n = 0;
- return sStarterMons[n];
-}
-
-static void VblankCallback(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-#define tStarterSelection data[0]
-#define tPkmnSpriteId data[1]
-#define tCircleSpriteId data[2]
-
-void CB2_ChooseStarter(void)
-{
- u16 savedIme;
- u8 taskId;
- u8 spriteId;
-
- SetVBlankCallback(NULL);
-
- REG_DISPCNT = 0;
- REG_BG3CNT = 0;
- REG_BG2CNT = 0;
- REG_BG1CNT = 0;
- REG_BG0CNT = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
- REG_BG2HOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
-
- DmaFill16(3, 0, VRAM, VRAM_SIZE);
- DmaFill32(3, 0, OAM, OAM_SIZE);
- DmaFill16(3, 0, PLTT, PLTT_SIZE);
-
- LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000));
- LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
- ScanlineEffect_Stop();
- ResetTasks();
- ResetSpriteData();
- ResetPaletteFade();
- FreeAllSpritePalettes();
- LoadPalette(gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
- LoadCompressedObjectPic(&gUnknown_083F7794[0]);
- LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
- LoadSpritePalettes(gUnknown_083F77B4);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
-
- savedIme = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = savedIme;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
-
- SetVBlankCallback(VblankCallback);
- SetMainCallback2(MainCallback2);
-
- REG_WININ = 0x3F;
- REG_WINOUT = 0x1F;
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- REG_BLDCNT = 0xFE;
- REG_BLDALPHA = 0;
- REG_BLDY = 0x7;
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
-
- taskId = CreateTask(Task_StarterChoose1, 0);
- gTasks[taskId].tStarterSelection = 1;
-
- //Create hand sprite
- spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2);
- gSprites[spriteId].data[0] = taskId;
-
- //Create three Pokeball sprites
- spriteId = CreateSprite(
- &gSpriteTemplate_83F77E4,
- gStarterChoose_PokeballCoords[0][0], gStarterChoose_PokeballCoords[0][1], 2);
- gSprites[spriteId].data[0] = taskId;
- gSprites[spriteId].data[1] = 0;
- spriteId = CreateSprite(
- &gSpriteTemplate_83F77E4,
- gStarterChoose_PokeballCoords[1][0], gStarterChoose_PokeballCoords[1][1], 2);
- gSprites[spriteId].data[0] = taskId;
- gSprites[spriteId].data[1] = 1;
- spriteId = CreateSprite(
- &gSpriteTemplate_83F77E4,
- gStarterChoose_PokeballCoords[2][0], gStarterChoose_PokeballCoords[2][1], 2);
- gSprites[spriteId].data[0] = taskId;
- gSprites[spriteId].data[1] = 2;
-}
-
-static void MainCallback2(void)
-{
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
-}
-
-static void Task_StarterChoose1(u8 taskId)
-{
- CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection);
- Menu_DrawStdWindowFrame(2, 14, 27, 19);
- Menu_PrintText(gOtherText_BirchInTrouble, 3, 15);
- gTasks[taskId].func = Task_StarterChoose2;
-}
-
-static void Task_StarterChoose2(u8 taskId)
-{
- u8 selection = gTasks[taskId].tStarterSelection;
-
- if (gMain.newKeys & A_BUTTON)
- {
- u8 spriteId;
-
- Menu_EraseWindowRect(
- gStarterChoose_LabelCoords[selection][0],
- gStarterChoose_LabelCoords[selection][1],
- gStarterChoose_LabelCoords[selection][0] + 13,
- gStarterChoose_LabelCoords[selection][1] + 3);
-
- REG_WIN0H = 0;
- REG_WIN0V = 0;
-
- //Create white circle background
- spriteId = CreateSprite(
- &gSpriteTemplate_83F77FC,
- gStarterChoose_PokeballCoords[selection][0],
- gStarterChoose_PokeballCoords[selection][1],
- 1);
- gTasks[taskId].tCircleSpriteId = spriteId;
-
- //Create Pokemon sprite
- spriteId = CreatePokemonFrontSprite(
- GetStarterPokemon(gTasks[taskId].tStarterSelection),
- gStarterChoose_PokeballCoords[selection][0],
- gStarterChoose_PokeballCoords[selection][1]);
- gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_83F778C;
- gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback;
- gTasks[taskId].tPkmnSpriteId = spriteId;
-
- gTasks[taskId].func = Task_StarterChoose3;
- }
- else
- {
- if ((gMain.newKeys & DPAD_LEFT) && selection > 0)
- {
- gTasks[taskId].tStarterSelection--;
- CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
- }
- else if ((gMain.newKeys & DPAD_RIGHT) && selection < 2)
- {
- gTasks[taskId].tStarterSelection++;
- CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
- }
- }
-}
-
-static void Task_StarterChoose3(u8 taskId)
-{
- if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
- gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
- {
- gTasks[taskId].func = Task_StarterChoose4;
- }
-}
-
-static void Task_StarterChoose4(u8 taskId)
-{
- PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
- Menu_DrawStdWindowFrame(2, 14, 27, 19);
- //"Do you choose this POKEMON?"
- Menu_PrintText(gOtherText_DoYouChoosePoke, 3, 15);
- DisplayYesNoMenu(21, 7, 1);
- gTasks[taskId].func = Task_StarterChoose5;
-}
-
-static void Task_StarterChoose5(u8 taskId)
-{
- u8 spriteId;
-
- switch (Menu_ProcessInputNoWrap_())
- {
- case 0: // YES
- //Return the starter choice and exit.
- gSpecialVar_Result = gTasks[taskId].tStarterSelection;
- SetMainCallback2(gMain.savedCallback);
- break;
- case 1: // NO
- case -1: // B button
- PlaySE(SE_SELECT);
- Menu_EraseWindowRect(21, 7, 27, 12);
-
- spriteId = gTasks[taskId].tPkmnSpriteId;
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
- FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
- DestroySprite(&gSprites[spriteId]);
-
- spriteId = gTasks[taskId].tCircleSpriteId;
- FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
- DestroySprite(&gSprites[spriteId]);
- gTasks[taskId].func = Task_StarterChoose6;
- break;
- }
-}
-
-static void Task_StarterChoose6(u8 taskId)
-{
- gTasks[taskId].func = Task_StarterChoose1;
-}
-
-void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadowColor)
-{
- *(string++) = EXT_CTRL_CODE_BEGIN;
- *(string++) = 4;
- *(string++) = textColor;
- *(string++) = bgColor;
- *(string++) = shadowColor;
-}
-
-#define SET_CHAR(str, index, c) \
-{ \
- u8 *p = str + index; \
- *p = c; \
-}
-
-
-#if ENGLISH
-static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
-{
- u8 labelText[72];
- const u8 *category;
- u8 srcIndex;
- u8 dstIndex;
- u16 species;
-
- u8 labelLeft;
- u8 labelRight;
- u8 labelTop;
- u8 labelBottom;
-
- if (prevSelection != 0xFF)
- {
- //Remove the old Pokemon label
- Menu_EraseWindowRect(
- gStarterChoose_LabelCoords[prevSelection][0],
- gStarterChoose_LabelCoords[prevSelection][1],
- gStarterChoose_LabelCoords[prevSelection][0] + 13,
- gStarterChoose_LabelCoords[prevSelection][1] + 3);
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- }
- species = GetStarterPokemon(selection);
- category = GetPokemonCategory(SpeciesToNationalPokedexNum(species));
- AddTextColorCtrlCode(labelText, 0, 15, 8);
- dstIndex = 5;
- SET_CHAR(labelText, 5, EXT_CTRL_CODE_BEGIN);
- SET_CHAR(labelText, 6, 0x11);
- SET_CHAR(labelText, 7, dstIndex);
-
- //Copy category string to label
- dstIndex = 8;
- srcIndex = 0;
- while (category[srcIndex] != EOS && srcIndex <= 10)
- {
- labelText[dstIndex] = category[srcIndex];
- srcIndex++;
- dstIndex++;
- }
- labelText[dstIndex++] = CHAR_SPACE;
-
- //Copy POKEMON string to label
- StringCopy(labelText + dstIndex, gOtherText_Poke);
- Menu_PrintText(
- labelText,
- gStarterChoose_LabelCoords[selection][0],
- gStarterChoose_LabelCoords[selection][1]);
- AddTextColorCtrlCode(labelText, 0, 15, 8);
-
- //Copy Pokemon name to label
- sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1);
- Menu_PrintText(
- labelText,
- gStarterChoose_LabelCoords[selection][0],
- gStarterChoose_LabelCoords[selection][1] + 2);
-
- labelLeft = gStarterChoose_LabelCoords[selection][0] * 8 + 4;
- labelRight = (gStarterChoose_LabelCoords[selection][0] + 13) * 8 + 4;
- labelTop = gStarterChoose_LabelCoords[selection][1] * 8;
- labelBottom = (gStarterChoose_LabelCoords[selection][1] + 4) * 8;
- REG_WIN0H = WIN_RANGE(labelLeft, labelRight);
- REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
-}
-#elif GERMAN
-__attribute__((naked))
-static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x48\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- cmp r0, 0xFF\n\
- beq _0810A872\n\
- ldr r1, _0810A960 @ =gStarterChoose_LabelCoords\n\
- lsls r2, r0, 1\n\
- adds r0, r2, r1\n\
- ldrb r0, [r0]\n\
- adds r1, 0x1\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- adds r2, r0, 0\n\
- adds r2, 0xD\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r3, r1, 0x3\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- bl Menu_EraseWindowRect\n\
- ldr r0, _0810A964 @ =0x04000040\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
-_0810A872:\n\
- adds r0, r5, 0\n\
- bl GetStarterPokemon\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- adds r0, r6, 0\n\
- bl SpeciesToNationalPokedexNum\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetPokemonCategory\n\
- adds r4, r0, 0\n\
- mov r0, sp\n\
- movs r1, 0\n\
- movs r2, 0xF\n\
- movs r3, 0x8\n\
- bl AddTextColorCtrlCode\n\
- movs r2, 0x8\n\
- movs r3, 0\n\
- ldrb r0, [r4]\n\
- lsls r5, 1\n\
- mov r7, sp\n\
- adds r7, 0x5\n\
- cmp r0, 0xFF\n\
- beq _0810A8CA\n\
-_0810A8A8:\n\
- mov r0, sp\n\
- adds r1, r0, r2\n\
- adds r0, r4, r3\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- adds r0, r4, r3\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xFF\n\
- beq _0810A8CA\n\
- cmp r3, 0xA\n\
- bls _0810A8A8\n\
-_0810A8CA:\n\
- mov r0, sp\n\
- adds r1, r0, r2\n\
- movs r0, 0xFF\n\
- strb r0, [r1]\n\
- mov r1, sp\n\
- movs r0, 0xFC\n\
- strb r0, [r1, 0x5]\n\
- movs r0, 0x11\n\
- strb r0, [r1, 0x6]\n\
- mov r2, sp\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 1\n\
- movs r0, 0x70\n\
- subs r0, r1\n\
- asrs r0, 1\n\
- strb r0, [r2, 0x7]\n\
- ldr r0, _0810A960 @ =gStarterChoose_LabelCoords\n\
- adds r1, r5, r0\n\
- ldrb r4, [r1]\n\
- adds r0, 0x1\n\
- adds r0, r5, r0\n\
- ldrb r5, [r0]\n\
- mov r0, sp\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- bl Menu_PrintText\n\
- mov r0, sp\n\
- movs r1, 0\n\
- movs r2, 0xF\n\
- movs r3, 0x8\n\
- bl AddTextColorCtrlCode\n\
- movs r0, 0xB\n\
- adds r1, r6, 0\n\
- muls r1, r0\n\
- ldr r0, _0810A968 @ =gSpeciesNames\n\
- adds r1, r0\n\
- adds r0, r7, 0\n\
- movs r2, 0x70\n\
- movs r3, 0x2\n\
- bl sub_8072C74\n\
- adds r2, r5, 0x2\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- mov r0, sp\n\
- adds r1, r4, 0\n\
- bl Menu_PrintText\n\
- lsls r0, r4, 3\n\
- adds r0, 0x4\n\
- lsls r0, 24\n\
- adds r4, 0xD\n\
- lsls r4, 3\n\
- adds r4, 0x4\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- lsls r1, r5, 27\n\
- adds r5, 0x4\n\
- lsls r5, 27\n\
- lsrs r5, 24\n\
- ldr r2, _0810A964 @ =0x04000040\n\
- lsrs r0, 16\n\
- orrs r0, r4\n\
- strh r0, [r2]\n\
- ldr r0, _0810A96C @ =0x04000044\n\
- lsrs r1, 16\n\
- orrs r1, r5\n\
- strh r1, [r0]\n\
- add sp, 0x48\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0810A960: .4byte gStarterChoose_LabelCoords\n\
-_0810A964: .4byte 0x04000040\n\
-_0810A968: .4byte gSpeciesNames\n\
-_0810A96C: .4byte 0x04000044\n\
- .syntax divided\n");
-}
-#endif
-
-static void nullsub_72(struct Sprite *sprite)
-{
-}
-
-static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
-{
- u8 spriteId;
-
- DecompressPicFromTable_2(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,
- gUnknown_081FAF4C[0], gUnknown_081FAF4C[1],
- species);
- LoadCompressedObjectPalette(&gMonPaletteTable[species]);
- GetMonSpriteTemplate_803C56C(species, 1);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
- gSprites[spriteId].callback = nullsub_72;
- gSprites[spriteId].oam.priority = 0;
- return spriteId;
-}
-
-//Sprite callback
-static void sub_810A62C(struct Sprite *sprite)
-{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][1];
- sprite->pos2.y = Sin(sprite->data[1], 8);
- sprite->data[1] = (u8)sprite->data[1] + 4;
-}
-
-//Sprite callback
-static void sub_810A68C(struct Sprite *sprite)
-{
- if (gTasks[sprite->data[0]].tStarterSelection == sprite->data[1])
- StartSpriteAnimIfDifferent(sprite, 1);
- else
- StartSpriteAnimIfDifferent(sprite, 0);
-}
-
-//Sprite callback
-static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
-{
- //Move sprite to upper center of screen
- if (sprite->pos1.x > STARTER_PKMN_POS_X)
- sprite->pos1.x -= 4;
- if (sprite->pos1.x < STARTER_PKMN_POS_X)
- sprite->pos1.x += 4;
- if (sprite->pos1.y > STARTER_PKMN_POS_Y)
- sprite->pos1.y -= 2;
- if (sprite->pos1.y < STARTER_PKMN_POS_Y)
- sprite->pos1.y += 2;
-}