diff options
Diffstat (limited to 'src/scene/evolution_scene.c')
-rw-r--r-- | src/scene/evolution_scene.c | 3959 |
1 files changed, 0 insertions, 3959 deletions
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c deleted file mode 100644 index 3ba325574..000000000 --- a/src/scene/evolution_scene.c +++ /dev/null @@ -1,3959 +0,0 @@ -#include "global.h" -#include "task.h" -#include "evolution_scene.h" -#include "evolution_graphics.h" -#include "palette.h" -#include "main.h" -#include "text.h" -#include "text_window.h" -#include "pokemon.h" -#include "string_util.h" -#include "battle.h" -#include "scanline_effect.h" -#include "data2.h" -#include "decompress.h" -#include "m4a.h" -#include "trade.h" -#include "menu.h" -#include "pokedex.h" -#include "constants/species.h" -#include "sound.h" -#include "constants/songs.h" -#include "overworld.h" -#include "battle_message.h" -#include "pokemon_summary_screen.h" -#include "menu_cursor.h" -#include "strings2.h" -#include "ewram.h" - -struct EvoInfo -{ - u8 preEvoSpriteID; - u8 postEvoSpriteID; - u8 evoTaskID; - u8 field_3; - - u8 unk4[0x40]; - u8 unk44[0x40]; - u8 unk84[0x40]; - - u8 unkC4[0x40][0x20]; // 0x20148C4 - u8 unk8C4[0x40][0x20]; // 0x20150C4 - u8 unk10C4[0x40][0x20]; // 0x20158C4 - u8 unk18C4[0x40][0x20]; // 0x20160C4 - u8 unk20C4[0x40][0x20]; // 0x20168C4 - u8 unk28C4[0x40][0x20]; // 0x20170C4 - u8 unk30C4[0x40][0x20]; // 0x20178C4 - u8 unk38C4[0x40][0x20]; // 0x20180C4 - - u8 *unk40C4[0x40][0x20]; // 0x20188C4 - - u16 unk60C4[0x40][0x20]; // 0x201A8C4 - u16 unk70C4[0x40][0x20]; // 0x201B8C4 - u16 unk80C4[0x40][0x20]; // 0x201C8C4 - u16 unk90C4[0x40][0x20]; // 0x201D8C4 - - u8 unkA0C4; // 0x201E8C4 -}; - -void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); -void sub_8024CEC(void); -void sub_8023A80(void); -void sub_802BC6C(void); -void sub_8023AD8(void); -void nullsub_6(void); -bool32 IsHMMove2(u16 move); - -extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG3_Y; -extern u8 gBattleTerrain; -extern u8 gReservedSpritePaletteCount; -extern u16 gMoveToLearn; -extern struct SpriteTemplate gUnknown_02024E8C; -extern bool8 gAffineAnimsDisabled; -extern u8 gDisplayedStringBattle[]; -extern u8 gBattleTextBuff2[]; - -extern u8 gBattleCommunication[]; -#define sEvoCursorPos gBattleCommunication[1] // when learning a new move -#define sEvoGraphicsTaskID gBattleCommunication[2] - -extern const u8 BattleText_StartEvo[]; -extern const u8 BattleText_FinishEvo[]; -extern const u8 BattleText_StopEvo[]; -extern const u8 *const gBattleStringsTable[]; - -// this file's functions -static void Task_EvolutionScene(u8 taskID); -static void Task_TradeEvolutionScene(u8 taskID); -static void CB2_EvolutionSceneUpdate(void); -static void CB2_TradeEvolutionSceneUpdate(void); -static void EvoDummyFunc(void); -static void EvoDummyFunc2(void); -static void VBlankCB_EvolutionScene(void); -static void VBlankCB_TradeEvolutionScene(void); -static void sub_81150D8(void); - -// iwram common -MainCallback gCB2_AfterEvolution; - -// const data -static const u8 sUnknownShedinjaJpnString[] = _("ヌケニン"); -static const u8 sUnusedString0[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}"); -static const u8 sUnusedString1[] = _("▶\n "); -static const u8 sUnusedString2[] = _(" \n▶"); -static const u8 sUnusedString3[] = _(" \n "); -static const u8 sPadding[9] = {0}; - -// code - -static void CB2_BeginEvolutionScene(void) -{ - UpdatePaletteFade(); - RunTasks(); -} - -#define tState data[0] -#define tMonPtrHI data[1] -#define tMonPtrLO data[2] -#define tPreEvoSpecies data[3] -#define tPostEvoSpecies data[4] -#define tCanStop data[5] // in first fast data[5] only checks that -#define tBits data[5] // in the second task, it works as a bitfield -#define tLearnsFirstMove data[6] -#define tLearnMoveState data[8] -#define tData9 data[9] -#define tdata10 data[10] -#define tEvoWasStopped data[11] -#define tPartyID data[12] - -#define TASK_BIT_CAN_STOP 0x1 -#define TASK_BIT_LEARN_MOVE 0x80 - -static void Task_BeginEvolutionScene(u8 taskID) -{ - struct Pokemon* mon = NULL; - switch (gTasks[taskID].tState) - { - case 0: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskID].tState++; - break; - case 1: - if (!gPaletteFade.active) - { - u16 speciesToEvolve; - bool8 canStopEvo; - u8 partyID; - - mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); - speciesToEvolve = gTasks[taskID].tPostEvoSpecies; - canStopEvo = gTasks[taskID].tCanStop; - partyID = gTasks[taskID].tPartyID; - - DestroyTask(taskID); - EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); - } - break; - } -} - -void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) -{ - u8 taskID = CreateTask(Task_BeginEvolutionScene, 0); - gTasks[taskID].tState = 0; - gTasks[taskID].tMonPtrHI = (u32)(mon); - gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10; - gTasks[taskID].tPostEvoSpecies = speciesToEvolve; - gTasks[taskID].tCanStop = canStopEvo; - gTasks[taskID].tPartyID = partyID; - SetMainCallback2(CB2_BeginEvolutionScene); -} - -void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) -{ - u8 name[20]; - u16 currSpecies; - u32 TiD, PiD; - const struct CompressedSpritePalette** pokePal; - u8 ID; - SetHBlankCallback(NULL); - SetVBlankCallback(NULL); - CpuFill32(0, (void*)(VRAM), VRAM_SIZE); - - REG_MOSAIC = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_WININ = 0; - REG_WINOUT = 0; - - Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); - ResetPaletteFade(); - - gBattle_BG0_X = 0; - gBattle_BG0_Y = 0; - gBattle_BG1_X = 0; - gBattle_BG1_Y = 0; - gBattle_BG2_X = 0; - gBattle_BG2_Y = 0; - gBattle_BG3_X = 256; - gBattle_BG3_Y = 0; - - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); - gBattleTerrain = BATTLE_TERRAIN_PLAIN; - - sub_800D6D4(); - sub_800DAB8(); - ResetSpriteData(); - ScanlineEffect_Stop(); - ResetTasks(); - FreeAllSpritePalettes(); - - gReservedSpritePaletteCount = 4; - - GetMonData(mon, MON_DATA_NICKNAME, name); - StringCopy10(gStringVar1, name); - StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); - - // preEvo sprite - currSpecies = GetMonData(mon, MON_DATA_SPECIES); - TiD = GetMonData(mon, MON_DATA_OT_ID); - PiD = GetMonData(mon, MON_DATA_PERSONALITY); - DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies], - gMonFrontPicCoords[currSpecies].coords, - gMonFrontPicCoords[currSpecies].y_offset, - (void*)(0x2000000), - gUnknown_081FAF4C[1], currSpecies); - pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD); - LoadCompressedPalette(*pokePal, 0x110, 0x20); - - GetMonSpriteTemplate_803C56C(currSpecies, 1); - gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; - sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); - - gSprites[ID].callback = nullsub_37; - gSprites[ID].oam.paletteNum = 1; - gSprites[ID].invisible = 1; - - // postEvo sprite - DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], - gMonFrontPicCoords[speciesToEvolve].coords, - gMonFrontPicCoords[speciesToEvolve].y_offset, - (void*)(0x2000000), - gUnknown_081FAF4C[3], speciesToEvolve); - pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); - LoadCompressedPalette(*pokePal, 0x120, 0x20); - - GetMonSpriteTemplate_803C56C(speciesToEvolve, 3); - gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; - sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); - gSprites[ID].callback = nullsub_37; - gSprites[ID].oam.paletteNum = 2; - gSprites[ID].invisible = 1; - - LoadEvoSparkleSpriteAndPal(); - - sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); - gTasks[ID].tState = 0; - gTasks[ID].tPreEvoSpecies = currSpecies; - gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tMonPtrHI = (u32)(mon); - gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; - gTasks[ID].tCanStop = canStopEvo; - gTasks[ID].tLearnsFirstMove = TRUE; - gTasks[ID].tEvoWasStopped = FALSE; - gTasks[ID].tPartyID = partyID; - - memcpy(ewram9000_hack, &gPlttBufferUnfaded[0x20], 0x60); - - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; - SetHBlankCallback(EvoDummyFunc); - SetVBlankCallback(VBlankCB_EvolutionScene); - m4aMPlayAllStop(); - SetMainCallback2(CB2_EvolutionSceneUpdate); -} - -static void CB2_EvolutionSceneLoadGraphics(void) -{ - u8 ID; - const struct CompressedSpritePalette** pokePal; - u16 postEvoSpecies; - u32 TiD, PiD; - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; - - postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; - TiD = GetMonData(Mon, MON_DATA_OT_ID); - PiD = GetMonData(Mon, MON_DATA_PERSONALITY); - - SetHBlankCallback(NULL); - SetVBlankCallback(NULL); - CpuFill32(0, (void*)(VRAM), VRAM_SIZE); - - REG_MOSAIC = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_WININ = 0; - REG_WINOUT = 0; - Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); - ResetPaletteFade(); - gBattle_BG0_X = 0; - gBattle_BG0_Y = 0; - gBattle_BG1_X = 0; - gBattle_BG1_Y = 0; - gBattle_BG2_X = 0; - gBattle_BG2_Y = 0; - gBattle_BG3_X = 256; - gBattle_BG3_Y = 0; - - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); - gBattleTerrain = BATTLE_TERRAIN_PLAIN; - - sub_800D6D4(); - sub_800DAB8(); - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; - - DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], - gMonFrontPicCoords[postEvoSpecies].coords, - gMonFrontPicCoords[postEvoSpecies].y_offset, - (void*)(0x2000000), - gUnknown_081FAF4C[3], postEvoSpecies); - pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); - LoadCompressedPalette(*pokePal, 0x120, 0x20); - - GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); - gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; - sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); - - gSprites[ID].callback = nullsub_37; - gSprites[ID].oam.paletteNum = 2; - - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; - SetHBlankCallback(EvoDummyFunc); - SetVBlankCallback(VBlankCB_EvolutionScene); - SetMainCallback2(CB2_EvolutionSceneUpdate); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); -} - -static void CB2_TradeEvolutionSceneLoadGraphics(void) -{ - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; - u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; - - switch (gMain.state) - { - case 0: - REG_DISPCNT = 0; - SetHBlankCallback(NULL); - SetVBlankCallback(NULL); - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; - gBattle_BG0_X = 0; - gBattle_BG0_Y = 0; - gBattle_BG1_X = 0; - gBattle_BG1_Y = 0; - gBattle_BG2_X = 0; - gBattle_BG2_Y = 0; - gBattle_BG3_X = 256; - gBattle_BG3_Y = 0; - gMain.state++; - break; - case 1: - Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); - gMain.state++; - break; - case 2: - TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); - gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); - TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); - Menu_EraseScreen(); - ResetPaletteFade(); - gMain.state++; - SetHBlankCallback(EvoDummyFunc); - SetVBlankCallback(VBlankCB_TradeEvolutionScene); - break; - case 3: - sub_804E22C(); - gMain.state++; - break; - case 4: - { - const struct CompressedSpritePalette** pokePal; - u32 TiD = GetMonData(Mon, MON_DATA_OT_ID); - u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY); - DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], - gMonFrontPicCoords[postEvoSpecies].coords, - gMonFrontPicCoords[postEvoSpecies].y_offset, - (void*)(0x2000000), - gUnknown_081FAF4C[3], postEvoSpecies); - pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); - LoadCompressedPalette(*pokePal, 0x120, 0x20); - gMain.state++; - } - break; - case 5: - { - u8 ID; - - GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); - gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; - sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); - - gSprites[ID].callback = nullsub_37; - gSprites[ID].oam.paletteNum = 2; - gMain.state++; - } - break; - case 6: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - SetMainCallback2(CB2_TradeEvolutionSceneUpdate); - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; - break; - } -} - -void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) -{ - u8 name[20]; - u16 currSpecies; - u32 TiD, PiD; - const struct CompressedSpritePalette** pokePal; - u8 ID; - - GetMonData(mon, MON_DATA_NICKNAME, name); - StringCopy10(gStringVar1, name); - StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); - - gAffineAnimsDisabled = TRUE; - - // preEvo sprite - currSpecies = GetMonData(mon, MON_DATA_SPECIES); - PiD = GetMonData(mon, MON_DATA_PERSONALITY); - TiD = GetMonData(mon, MON_DATA_OT_ID); - sEvoInfo.preEvoSpriteID = preEvoSpriteID; - DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], - gMonFrontPicCoords[speciesToEvolve].coords, - gMonFrontPicCoords[speciesToEvolve].y_offset, - (void*)(0x2000000), - gUnknown_081FAF4C[1], speciesToEvolve); - pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); - LoadCompressedPalette(*pokePal, 0x120, 0x20); - - GetMonSpriteTemplate_803C56C(speciesToEvolve, 1); - gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; - sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); - - gSprites[ID].callback = nullsub_37; - gSprites[ID].oam.paletteNum = 2; - gSprites[ID].invisible = 1; - - LoadEvoSparkleSpriteAndPal(); - - sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); - gTasks[ID].tState = 0; - gTasks[ID].tPreEvoSpecies = currSpecies; - gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tMonPtrHI = (u32)(mon); - gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; - gTasks[ID].tLearnsFirstMove = TRUE; - gTasks[ID].tEvoWasStopped = FALSE; - gTasks[ID].tPartyID = partyID; - - SetMainCallback2(CB2_TradeEvolutionSceneUpdate); -} - -static void CB2_EvolutionSceneUpdate(void) -{ - AnimateSprites(); - BuildOamBuffer(); - Text_UpdateWindowInBattle(&gUnknown_03004210); - UpdatePaletteFade(); - RunTasks(); -} - -static void CB2_TradeEvolutionSceneUpdate(void) -{ - AnimateSprites(); - BuildOamBuffer(); - Text_UpdateWindow(&gUnknown_03004828->window); - UpdatePaletteFade(); - RunTasks(); -} - -static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) -{ - u32 data = 0; - - if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) - { - s32 i; - struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount]; - - CopyMon(Shedinja, mon, sizeof(struct Pokemon)); - SetMonData(Shedinja, MON_DATA_SPECIES, (void*)&gEvolutionTable[preEvoSpecies][1].targetSpecies); - SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]); - SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)&data); - SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)&data); - SetMonData(Shedinja, MON_DATA_10, (void*)&data); - for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) - SetMonData(Shedinja, i, (void*)&data); - for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) - SetMonData(Shedinja, i, (void*)&data); - SetMonData(Shedinja, MON_DATA_STATUS, (void*)&data); - data = 0xFF; - SetMonData(Shedinja, MON_DATA_MAIL, (void*)&data); - - CalculateMonStats(Shedinja); - CalculatePlayerPartyCount(); - - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 2); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 3); - - if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA - && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE - && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) - SetMonData(Shedinja, MON_DATA_NICKNAME, sUnknownShedinjaJpnString); - } -} - -static void Task_EvolutionScene(u8 taskID) -{ - u32 var; - struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); - - // check if B Button was held, so the evolution gets stopped - if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP) - { - gTasks[taskID].tState = 16; - if (gTasks[sEvoGraphicsTaskID].isActive) - gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; - } - switch (gTasks[taskID].tState) - { - case 0: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - gSprites[sEvoInfo.preEvoSpriteID].invisible = 0; - gTasks[taskID].tState++; - break; - case 1: // print 'whoa, poke is evolving!!!' msg - if (!gPaletteFade.active) - { - StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); - gTasks[taskID].tState++; - } - break; - case 2: // wait for string, play cry - if (gUnknown_03004210.state == 0) - { - PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); - gTasks[taskID].tState++; - } - break; - case 3: // wait for cry, play tu du SE - if (IsCryFinished()) - { - PlaySE(BGM_ME_SHINKA); - gTasks[taskID].tState++; - } - break; - case 4: // play evolution music and fade screen black - if (!IsSEPlaying()) - { - PlayNewMapMusic(BGM_SHINKA); - gTasks[taskID].tState++; - BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); - } - break; - case 5: // after screen fade, preapre evo sparkles - if (!gPaletteFade.active) - { - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); - gTasks[taskID].tState++; - } - break; - case 6: // another set of evo sparkles - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - gTasks[taskID].tState++; - sEvoInfo.field_3 = 1; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); - } - break; - case 7: // launch task that flashes pre evo with post evo sprites - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); - gTasks[taskID].tState++; - } - break; - case 8: // wait for the above task to finish - if (--sEvoInfo.field_3 == 0) - { - sEvoInfo.field_3 = 3; - if (!gTasks[sEvoGraphicsTaskID].isActive) - gTasks[taskID].tState++; - } - break; - case 9: // post evo sparkles - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); - gTasks[taskID].tState++; - break; - case 10: - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies); - gTasks[taskID].tState++; - } - break; - case 11: // play tu du sound after evolution - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - PlaySE(SE_EXP); - gTasks[taskID].tState++; - } - break; - case 12: // play poke cry after evolution and return screed to pre-fade state - if (IsSEPlaying()) - { - m4aMPlayAllStop(); - PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); - memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60); - BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0); - gTasks[taskID].tState++; - } - break; - case 13: // congratulations string and rename prompt - if (IsCryFinished() && !gPaletteFade.active) - { - StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); - PlayBGM(BGM_FANFA5); - gTasks[taskID].tState++; - SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); - CalculateMonStats(mon); - EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); - } - break; - case 14: // check if it wants to learn a new move - if (gUnknown_03004210.state == 0) - { - var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); - if (var != 0 && !gTasks[taskID].tEvoWasStopped) - { - u8 text[20]; - - Overworld_PlaySpecialMapMusic(); - gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; - gTasks[taskID].tLearnsFirstMove = FALSE; - gTasks[taskID].tLearnMoveState = 0; - GetMonData(mon, MON_DATA_NICKNAME, text); - StringCopy10(gBattleTextBuff1, text); - if (var == 0xFFFF) // no place to learn it - gTasks[taskID].tState = 21; - else if (var == 0xFFFE) // it already knows that move - break; - else - gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned - } - else // no move to learn - { - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskID].tState++; - } - } - break; - case 15: // task has finished, return - if (!gPaletteFade.active) - { - if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE)) - Overworld_PlaySpecialMapMusic(); - if (!gTasks[taskID].tEvoWasStopped) - CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon); - DestroyTask(taskID); - SetMainCallback2(gCB2_AfterEvolution); - } - break; - case 16: // evolution has been canceled, stop music and re-fade palette - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - m4aMPlayAllStop(); - BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF); - gTasks[taskID].tState++; - } - break; - case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped - if (!gPaletteFade.active) - { - PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); - gTasks[taskID].tState++; - } - break; - case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!' - if (IsCryFinished()) - { - StringExpandPlaceholders(gStringVar4, BattleText_StopEvo); - Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); - gTasks[taskID].tEvoWasStopped = TRUE; - gTasks[taskID].tState = 14; - } - break; - case 19: // pokemon learned a new move, print string and play a fanfare - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - sub_8024CEC(); - PlayFanfare(BGM_FANFA1); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter - gTasks[taskID].tState++; - } - break; - case 20: // wait a bit and check if can learn another move - if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0) - gTasks[taskID].tState = 14; - break; - case 21: // try to learn a new move - switch (gTasks[taskID].tLearnMoveState) - { - case 0: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - sub_8024CEC(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 1: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 2: - if (gUnknown_03004210.state != 0) - break; - if (!IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tData9 = 5; - gTasks[taskID].tdata10 = 9; - gTasks[taskID].tLearnMoveState++; - } - case 3: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - sub_8023A80(); - gTasks[taskID].tLearnMoveState++; - sEvoCursorPos = 0; - sub_802BC6C(); - } - break; - case 4: - if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) - { - PlaySE(SE_SELECT); - nullsub_6(); - sEvoCursorPos = 0; - sub_802BC6C(); - } - if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) - { - PlaySE(SE_SELECT); - nullsub_6(); - sEvoCursorPos = 1; - sub_802BC6C(); - } - if (gMain.newKeys & A_BUTTON) - { - sub_8023AD8(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - PlaySE(SE_SELECT); - if (sEvoCursorPos != 0) - gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; - else - { - gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; - if (gTasks[taskID].tLearnMoveState == 5) - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - } - } - if (gMain.newKeys & B_BUTTON) - { - sub_8023AD8(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - PlaySE(SE_SELECT); - gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; - } - break; - case 5: - if (!gPaletteFade.active) - { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, - gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, - gMoveToLearn); - gTasks[taskID].tLearnMoveState++; - } - break; - case 6: - if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) - { - var = sub_809FA30(); // moveID - if (var == 4) - gTasks[taskID].tLearnMoveState = 9; - else - { - u16 move = GetMonData(mon, var + MON_DATA_MOVE1); - if (IsHMMove2(move)) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnMoveState = 11; - } - else - { - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 2; - gBattleTextBuff2[2] = move; - gBattleTextBuff2[3] = (move & 0xFF00) >> 8; - gBattleTextBuff2[4] = EOS; - RemoveMonPPBonus(mon, var); - SetMonMoveSlot(mon, gMoveToLearn, var); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - } - } - break; - case 7: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 8: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tState = 19; - } - break; - case 9: - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tData9 = 10; - gTasks[taskID].tdata10 = 0; - gTasks[taskID].tLearnMoveState = 3; - break; - case 10: - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); - gTasks[taskID].tState = 14; - break; - case 11: - if (gUnknown_03004210.state == 0 && !IsSEPlaying()) - gTasks[taskID].tLearnMoveState = 5; - break; - } - break; - } -} - -static void Task_TradeEvolutionScene(u8 taskID) -{ - u32 var; - struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); - - switch (gTasks[taskID].tState) - { - case 0: - StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tState++; - break; - case 1: - if (gUnknown_03004828->window.state == 0) - { - PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); - gTasks[taskID].tState++; - } - break; - case 2: - if (IsCryFinished()) - { - m4aSongNumStop(BGM_SHINKA); - PlaySE(BGM_ME_SHINKA); - gTasks[taskID].tState++; - } - break; - case 3: - if (!IsSEPlaying()) - { - PlayBGM(BGM_SHINKA); - gTasks[taskID].tState++; - BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); - } - break; - case 4: - if (!gPaletteFade.active) - { - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); - gTasks[taskID].tState++; - } - break; - case 5: - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - gTasks[taskID].tState++; - sEvoInfo.field_3 = 1; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); - } - break; - case 6: - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); - gTasks[taskID].tState++; - } - break; - case 7: - if (--sEvoInfo.field_3 == 0) - { - sEvoInfo.field_3 = 3; - if (!gTasks[sEvoGraphicsTaskID].isActive) - gTasks[taskID].tState++; - } - break; - case 8: - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); - gTasks[taskID].tState++; - break; - case 9: - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies); - gTasks[taskID].tState++; - } - break; - case 10: - if (!gTasks[sEvoGraphicsTaskID].isActive) - { - PlaySE(SE_EXP); - gTasks[taskID].tState++; - } - break; - case 11: - if (IsSEPlaying()) - { - PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); - memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60); - BeginNormalPaletteFade(1, 0, 0x10, 0, 0); - gTasks[taskID].tState++; - } - break; - case 12: - if (IsCryFinished() && !gPaletteFade.active) - { - StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - PlayFanfare(BGM_FANFA5); - gTasks[taskID].tState++; - SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); - CalculateMonStats(mon); - EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); - } - break; - case 13: - if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE) - { - var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove); - if (var != 0 && !gTasks[taskID].tEvoWasStopped) - { - u8 text[20]; - - gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; - gTasks[taskID].tLearnsFirstMove = FALSE; - gTasks[taskID].tLearnMoveState = 0; - GetMonData(mon, MON_DATA_NICKNAME, text); - StringCopy10(gBattleTextBuff1, text); - if (var == 0xFFFF) - gTasks[taskID].tState = 17; - else if (var == 0xFFFE) - break; - else - gTasks[taskID].tState = 15; - } - else - { - PlayBGM(BGM_SHINKA); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tState++; - } - } - break; - case 14: - if (gUnknown_03004828->window.state == 0) - { - DestroyTask(taskID); - SetMainCallback2(gCB2_AfterEvolution); - } - break; - case 15: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - sub_8024CEC(); - PlayFanfare(BGM_FANFA1); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter - gTasks[taskID].tState++; - } - break; - case 16: - if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0) - gTasks[taskID].tState = 13; - break; - case 17: - switch (gTasks[taskID].tLearnMoveState) - { - case 0: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - sub_8024CEC(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 1: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 2: - if (gUnknown_03004828->window.state != 0) - break; - if (!IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tData9 = 5; - gTasks[taskID].tdata10 = 9; - gTasks[taskID].tLearnMoveState++; - } - case 3: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - TextWindow_DrawStdFrame(&gUnknown_03004828->window, 24, 8, 29, 13); - sEvoCursorPos = 0; - Text_InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); - Text_PrintWindow8002F44(&gUnknown_03004828->window); - MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); - sub_81150D8(); - gTasks[taskID].tLearnMoveState++; - sEvoCursorPos = 0; - } - break; - case 4: - if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) - { - PlaySE(SE_SELECT); - EvoDummyFunc2(); - sEvoCursorPos = 0; - sub_81150D8(); - } - if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) - { - PlaySE(SE_SELECT); - EvoDummyFunc2(); - sEvoCursorPos = 1; - sub_81150D8(); - } - if (gMain.newKeys & A_BUTTON) - { - Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); - DestroyMenuCursor(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - PlaySE(SE_SELECT); - if (sEvoCursorPos != 0) - gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; - else - { - gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; - if (gTasks[taskID].tLearnMoveState == 5) - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - } - } - if (gMain.newKeys & B_BUTTON) - { - Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); - DestroyMenuCursor(); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - PlaySE(SE_SELECT); - gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; - } - break; - case 5: - if (!gPaletteFade.active) - { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, - gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, - gMoveToLearn); - gTasks[taskID].tLearnMoveState++; - } - break; - case 6: - if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) - { - var = sub_809FA30(); // moveID - if (var == 4) - gTasks[taskID].tLearnMoveState = 9; - else - { - u16 move = GetMonData(mon, var + MON_DATA_MOVE1); - if (IsHMMove2(move)) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnMoveState = 11; - } - else - { - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 2; - gBattleTextBuff2[2] = move; - gBattleTextBuff2[3] = (move & 0xFF00) >> 8; - gBattleTextBuff2[4] = EOS; - RemoveMonPPBonus(mon, var); - SetMonMoveSlot(mon, gMoveToLearn, var); - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - } - } - break; - case 7: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tLearnMoveState++; - } - break; - case 8: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - { - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tState = 15; - } - break; - case 9: - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tData9 = 10; - gTasks[taskID].tdata10 = 0; - gTasks[taskID].tLearnMoveState = 3; - break; - case 10: - StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); - gTasks[taskID].tState = 13; - break; - case 11: - if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) - gTasks[taskID].tLearnMoveState = 5; - break; - } - break; - } -} - -/* -DizzyEgg, 27.08.2017 -NOTE: - Functions below are all unused. - What's more, they do NOT exist in Emerald. - That's why I think there is no reason to decompile those, - as they probably were prototypes for the evolution - functions. -*/ - -/* -void unref_sub_8113B50(u8 *a, u8 *b) -{ - //u8 *sp0 = a; - //u8 *sp4 = b; -#define sp0 a -#define sp4 b - s32 sp8; - s32 spC = 0; - u32 sp10 = 0; - s32 sp14; - s32 r6; - u32 r8; - - for (sp8 = 0; sp8 < 64; sp8++) - { - sEvoInfo.unk84[sp8] = 0; - sEvoInfo.unk4[sp8] = 0; - sEvoInfo.unk44[sp8] = 0; - for (r6 = 0; r6 < 32; r6++) - { - sEvoInfo.unk10C4[sp8][r6] = 0; - sEvoInfo.unk18C4[sp8][r6] = 0; - sEvoInfo.unk20C4[sp8][r6] = 0; - sEvoInfo.unk28C4[sp8][r6] = 0; - sEvoInfo.unkC4[sp8][r6] = 0; - sEvoInfo.unk8C4[sp8][r6] = 0; - sEvoInfo.unk30C4[sp8][r6] = 0; - sEvoInfo.unk38C4[sp8][r6] = 0; - - sEvoInfo.unk60C4[sp8][r6] = 0; - sEvoInfo.unk70C4[sp8][r6] = 0; - sEvoInfo.unk80C4[sp8][r6] = 0; - sEvoInfo.unk90C4[sp8][r6] = 0; - } - } - - sEvoInfo.unkA0C4 = 64; - r8 = 0; - for (sp8 = 0; sp8 < 64; sp8++) - { - //_08113C32 - u32 r3 = 0; - u8 *r2 = sp0 + r8; - - for (r6 = 0; r6 < 64; r6++) - { - sEvoInfo.unk40C4[sp8][r6 >> 1] = r2; - switch (r3) - { - case 0: - switch (r6 & 1) - { - case 0: - if (*r2 & 0xF) - { - sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; - r3 = 1; - } - break; - case 1: - if (*r2 & 0xF0) - { - sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6; - r3 = 1; - } - break; - } - break; - case 1: - switch (r6 & r3) - { - case 0: - if (*r2 & 0xF) - { - sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; - sEvoInfo.unk4[sp8]++; - r3 = 0; - } - break; - case 1: - if (*r2 & 0xF0) - { - sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1; - sEvoInfo.unk4[sp8]++; - r3 = 0; - } - break; - } - } - //if (!((r6 + 1) & 7)) - if ((r6 + 1) % 8 == 0) - r2 += 0x1D; - else if (r6 & 1) - r2 += 1; - } - if (r3) - { - sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6; - sEvoInfo.unk4[sp8]++; - } - //_08113D26 - if (!((sp8 + 1) & 7)) - r8 += 0xE4; - else - r8 += 4; - } - //_08113D4A - r8 = 0; - for (sp8 = 0; sp8 < 64; sp8++) - { - //_08113D6A - u32 r3 = 0; - u8 *r2 = sp4 + r8; - - for (r6 = 0; r6 < 64; r6++) - { - switch (r3) - { - case 0: - switch (r6 & 1) - { - case 0: - if (*r2 & 0xF) - { - sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; - r3 = 1; - } - break; - case 1: - if (*r2 & 0xF0) - { - sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6; - r3 = 1; - } - break; - } - break; - case 1: - switch (r6 & r3) - { - case 0: - if (*r2 & 0xF) - { - sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; - sEvoInfo.unk44[sp8]++; - r3 = 0; - } - break; - case 1: - if (*r2 & 0xF0) - { - sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1; - sEvoInfo.unk44[sp8]++; - r3 = 0; - } - break; - } - } - //_08113DE4 - if (!((r6 + 1) & 7)) - r2 += 0x1D; - else if (r6 & 1) - r2 += 1; - - } - if (r3) - { - sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6; - sEvoInfo.unk44[sp8]++; - } - //if (!((sp8 + 1) & 7)) - if ((sp8 + 1) % 8 == 0) - r8 += 0xE4; - else - r8 += 4; - } - - for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A - { - if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8]) - { - for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++) - { - sp14 = 0x100; - - for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) - { - s32 r3; - - //_08113EA4 - if (sEvoInfo.unk10C4[sp8][spC] > sEvoInfo.unk20C4[sp8][r6]) - r3 = sEvoInfo.unk10C4[sp8][spC] - sEvoInfo.unk20C4[sp8][r6]; - else - r3 = sEvoInfo.unk20C4[sp8][r6] - sEvoInfo.unk10C4[sp8][spC]; - - if (sEvoInfo.unk18C4[sp8][spC] > sEvoInfo.unk28C4[sp8][spC]) - r3 += sEvoInfo.unk18C4[sp8][spC] - sEvoInfo.unk28C4[sp8][spC]; - else - r3 += sEvoInfo.unk28C4[sp8][spC] - sEvoInfo.unk18C4[sp8][spC]; - - if (sp14 >= r3 && sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) - { - sp10 = r6; - sp14 = r3; - } - } - //_08113F3E - sub_81141F0(spC, sp10, sp8); - } - //_08113F54 - - for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++) - { - if (sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0) - sub_811430C(r6, sp8); - } - } - //_08113F9E - if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8]) - { - for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) - sub_81141F0(r6, r6, sp8); - } - //_08113FCC - if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8]) - { - for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++) - { - sp14 = 0x100; - - for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) - { - s32 r3; - - if (sEvoInfo.unk10C4[sp8][r6] > sEvoInfo.unk20C4[sp8][sp10]) - r3 = sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]; - else - r3 = sEvoInfo.unk20C4[sp8][sp10] - sEvoInfo.unk10C4[sp8][r6]; - - if (sEvoInfo.unk18C4[sp8][r6] > sEvoInfo.unk28C4[sp8][sp10]) - r3 += sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]; - else - r3 += sEvoInfo.unk28C4[sp8][sp10] - sEvoInfo.unk18C4[sp8][r6]; - - //r3 = abs(sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]); - //r3 += abs(sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]); - - if (sp14 > r3 && sEvoInfo.unkC4[sp8][r6] == 0) - { - spC = r6; - sp14 = r3; - } - } - //_081140C4 - sEvoInfo.unk30C4[sp8][spC] = sEvoInfo.unk20C4[sp8][sp10]; - sEvoInfo.unk38C4[sp8][spC] = sEvoInfo.unk28C4[sp8][sp10]; - sEvoInfo.unkC4[sp8][spC] = 1; - } - //_08114104 - for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++) - { - sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6]; - sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6]; - if (sEvoInfo.unkC4[sp8][r6] != 0) - { - sEvoInfo.unkC4[sp8][r6] = 0; - sub_81141F0(r6, r6, sp8); - } - else - { - // Ugh, can't get this part right - //u8 *ptr1 = &sEvoInfo.unk10C4[sp8][r6]; - //u8 *ptr2 = &sEvoInfo.unk18C4[sp8][r6]; - //s32 r2 = *ptr1 + (*ptr2 - *ptr1) / 2; - - //u8 r0_ = sEvoInfo.unk10C4[sp8][r6]; - //u8 r2_ = sEvoInfo.unk18C4[sp8][r6]; - //s32 r2 = (r0_ - r2_) / 2; - - s32 r2 = (sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk10C4[sp8][r6]); - s32 r2_ = sEvoInfo.unk10C4[sp8][r6]; - - sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk28C4[sp8][r6] = r2_ + r2 / 2; - sEvoInfo.unk28C4[sp8][r6]++; - sub_81141F0(r6, r6, sp8); - } - } - } - //_081141C4 - } -#undef sp0 -#undef sp4 -} -*/ -__attribute__((naked)) -void unref_sub_8113B50() -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x3C\n\ - str r0, [sp]\n\ - str r1, [sp, 0x4]\n\ - movs r0, 0\n\ - str r0, [sp, 0xC]\n\ - movs r1, 0\n\ - str r1, [sp, 0x10]\n\ - movs r2, 0\n\ - str r2, [sp, 0x8]\n\ - ldr r3, _08113C60 @ =gSharedMem + 0x14800\n\ - mov r12, r3\n\ - ldr r4, _08113C64 @ =0x000018c4\n\ - add r4, r12\n\ - mov r10, r4\n\ - ldr r5, _08113C68 @ =0x000020c4\n\ - add r5, r12\n\ - mov r8, r5\n\ -_08113B7C:\n\ - adds r0, r3, 0\n\ - adds r0, 0x84\n\ - ldr r1, [sp, 0x8]\n\ - adds r0, r1, r0\n\ - strb r2, [r0]\n\ - adds r0, r3, 0x4\n\ - adds r0, r1, r0\n\ - strb r2, [r0]\n\ - ldr r4, _08113C6C @ =gSharedMem + 0x14844\n\ - adds r0, r1, r4\n\ - strb r2, [r0]\n\ - movs r6, 0\n\ - lsls r1, 5\n\ - mov r9, r1\n\ - ldr r5, [sp, 0x8]\n\ - lsls r4, r5, 6\n\ -_08113B9C:\n\ - mov r0, r9\n\ - adds r1, r6, r0\n\ - ldr r5, _08113C70 @ =gSharedMem + 0x158C4\n\ - adds r0, r1, r5\n\ - strb r2, [r0]\n\ - mov r5, r10\n\ - adds r0, r1, r5\n\ - strb r2, [r0]\n\ - mov r5, r8\n\ - adds r0, r1, r5\n\ - strb r2, [r0]\n\ - ldr r5, _08113C74 @ =gSharedMem + 0x170C4\n\ - adds r0, r1, r5\n\ - strb r2, [r0]\n\ - adds r7, r3, 0\n\ - adds r7, 0xC4\n\ - adds r0, r1, r7\n\ - strb r2, [r0]\n\ - ldr r5, _08113C78 @ =0x000008c4\n\ - adds r0, r3, r5\n\ - adds r0, r1, r0\n\ - strb r2, [r0]\n\ - ldr r5, _08113C7C @ =0x000030c4\n\ - adds r0, r3, r5\n\ - adds r0, r1, r0\n\ - strb r2, [r0]\n\ - ldr r5, _08113C80 @ =0x000038c4\n\ - adds r0, r3, r5\n\ - adds r1, r0\n\ - strb r2, [r1]\n\ - lsls r1, r6, 1\n\ - adds r1, r4\n\ - ldr r5, _08113C84 @ =0x000060c4\n\ - adds r0, r3, r5\n\ - adds r0, r1, r0\n\ - strh r2, [r0]\n\ - ldr r5, _08113C88 @ =0x000070c4\n\ - adds r0, r3, r5\n\ - adds r0, r1, r0\n\ - strh r2, [r0]\n\ - ldr r5, _08113C8C @ =0x000080c4\n\ - adds r0, r3, r5\n\ - adds r0, r1, r0\n\ - strh r2, [r0]\n\ - ldr r5, _08113C90 @ =0x000090c4\n\ - adds r0, r3, r5\n\ - adds r1, r0\n\ - strh r2, [r1]\n\ - adds r6, 0x1\n\ - cmp r6, 0x1F\n\ - ble _08113B9C\n\ - ldr r0, [sp, 0x8]\n\ - adds r0, 0x1\n\ - str r0, [sp, 0x8]\n\ - cmp r0, 0x3F\n\ - ble _08113B7C\n\ - ldr r1, _08113C94 @ =0x0000a0c4\n\ - add r1, r12\n\ - movs r0, 0x40\n\ - strb r0, [r1]\n\ - movs r1, 0\n\ - mov r8, r1\n\ - movs r2, 0\n\ - str r2, [sp, 0x8]\n\ - movs r3, 0x80\n\ - lsls r3, 5\n\ - adds r3, r7\n\ - mov r12, r3\n\ - movs r4, 0xC0\n\ - lsls r4, 5\n\ - adds r4, r7\n\ - mov r9, r4\n\ - movs r5, 0\n\ - adds r4, r7, 0\n\ - subs r4, 0xC0\n\ -_08113C32:\n\ - movs r3, 0\n\ - ldr r2, [sp]\n\ - add r2, r8\n\ - movs r6, 0\n\ - ldr r0, [sp, 0x8]\n\ - adds r0, 0x1\n\ - str r0, [sp, 0x30]\n\ - ldr r1, [sp, 0x8]\n\ - lsls r1, 7\n\ - mov r10, r1\n\ - movs r7, 0x1\n\ - negs r7, r7\n\ -_08113C4A:\n\ - asrs r0, r6, 1\n\ - lsls r0, 2\n\ - add r0, r10\n\ - ldr r1, _08113C98 @ =gSharedMem + 0x188C4\n\ - adds r0, r1\n\ - str r2, [r0]\n\ - cmp r3, 0\n\ - beq _08113C9C\n\ - cmp r3, 0x1\n\ - beq _08113CC6\n\ - b _08113CF4\n\ - .align 2, 0\n\ -_08113C60: .4byte gSharedMem + 0x14800\n\ -_08113C64: .4byte 0x000018c4\n\ -_08113C68: .4byte 0x000020c4\n\ -_08113C6C: .4byte gSharedMem + 0x14844\n\ -_08113C70: .4byte gSharedMem + 0x158C4\n\ -_08113C74: .4byte gSharedMem + 0x170C4\n\ -_08113C78: .4byte 0x000008c4\n\ -_08113C7C: .4byte 0x000030c4\n\ -_08113C80: .4byte 0x000038c4\n\ -_08113C84: .4byte 0x000060c4\n\ -_08113C88: .4byte 0x000070c4\n\ -_08113C8C: .4byte 0x000080c4\n\ -_08113C90: .4byte 0x000090c4\n\ -_08113C94: .4byte 0x0000a0c4\n\ -_08113C98: .4byte gSharedMem + 0x188C4\n\ -_08113C9C:\n\ - movs r0, 0x1\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _08113CAA\n\ - cmp r0, 0x1\n\ - beq _08113CB0\n\ - b _08113CF4\n\ -_08113CAA:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - b _08113CB4\n\ -_08113CB0:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ -_08113CB4:\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08113CF4\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - add r0, r12\n\ - strb r6, [r0]\n\ - movs r3, 0x1\n\ - b _08113CF4\n\ -_08113CC6:\n\ - adds r0, r6, 0\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _08113CD4\n\ - cmp r0, 0x1\n\ - beq _08113CDA\n\ - b _08113CF4\n\ -_08113CD4:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - b _08113CDE\n\ -_08113CDA:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ -_08113CDE:\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08113CF4\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - add r0, r9\n\ - strb r7, [r0]\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - movs r3, 0\n\ -_08113CF4:\n\ - adds r0, r6, 0x1\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08113D02\n\ - adds r2, 0x1D\n\ - b _08113D0C\n\ -_08113D02:\n\ - movs r0, 0x1\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _08113D0C\n\ - adds r2, 0x1\n\ -_08113D0C:\n\ - adds r7, 0x1\n\ - adds r6, 0x1\n\ - cmp r6, 0x3F\n\ - ble _08113C4A\n\ - cmp r3, 0\n\ - beq _08113D26\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - add r0, r9\n\ - strb r6, [r0]\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ -_08113D26:\n\ - movs r0, 0x7\n\ - ldr r2, [sp, 0x30]\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - bne _08113D36\n\ - movs r3, 0xE4\n\ - add r8, r3\n\ - b _08113D3A\n\ -_08113D36:\n\ - movs r0, 0x4\n\ - add r8, r0\n\ -_08113D3A:\n\ - adds r5, 0x20\n\ - adds r4, 0x1\n\ - ldr r1, [sp, 0x8]\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x8]\n\ - cmp r1, 0x3F\n\ - bgt _08113D4A\n\ - b _08113C32\n\ -_08113D4A:\n\ - movs r2, 0\n\ - mov r8, r2\n\ - movs r3, 0\n\ - str r3, [sp, 0x8]\n\ - ldr r0, _08113D84 @ =gSharedMem + 0x14844\n\ - movs r4, 0x82\n\ - lsls r4, 6\n\ - adds r4, r0\n\ - mov r10, r4\n\ - movs r5, 0xA2\n\ - lsls r5, 6\n\ - adds r7, r0, r5\n\ - movs r5, 0\n\ - adds r4, r0, 0\n\ - movs r0, 0x1\n\ - mov r9, r0\n\ -_08113D6A:\n\ - movs r3, 0\n\ - ldr r2, [sp, 0x4]\n\ - add r2, r8\n\ - movs r6, 0\n\ - ldr r1, [sp, 0x8]\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x30]\n\ -_08113D78:\n\ - cmp r3, 0\n\ - beq _08113D88\n\ - cmp r3, 0x1\n\ - beq _08113DB4\n\ - b _08113DE4\n\ - .align 2, 0\n\ -_08113D84: .4byte gSharedMem + 0x14844\n\ -_08113D88:\n\ - adds r0, r6, 0\n\ - mov r1, r9\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08113D98\n\ - cmp r0, 0x1\n\ - beq _08113D9E\n\ - b _08113DE4\n\ -_08113D98:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - b _08113DA2\n\ -_08113D9E:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ -_08113DA2:\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08113DE4\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - add r0, r10\n\ - strb r6, [r0]\n\ - movs r3, 0x1\n\ - b _08113DE4\n\ -_08113DB4:\n\ - adds r0, r6, 0\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _08113DC2\n\ - cmp r0, 0x1\n\ - beq _08113DC8\n\ - b _08113DE4\n\ -_08113DC2:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - b _08113DCC\n\ -_08113DC8:\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ -_08113DCC:\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08113DE4\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - adds r0, r7\n\ - subs r1, r6, 0x1\n\ - strb r1, [r0]\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - movs r3, 0\n\ -_08113DE4:\n\ - adds r1, r6, 0x1\n\ - movs r0, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08113DF2\n\ - adds r2, 0x1D\n\ - b _08113DFC\n\ -_08113DF2:\n\ - mov r0, r9\n\ - ands r6, r0\n\ - cmp r6, 0\n\ - beq _08113DFC\n\ - adds r2, 0x1\n\ -_08113DFC:\n\ - adds r6, r1, 0\n\ - cmp r6, 0x3F\n\ - ble _08113D78\n\ - cmp r3, 0\n\ - beq _08113E14\n\ - ldrb r0, [r4]\n\ - adds r0, r5\n\ - adds r0, r7\n\ - strb r6, [r0]\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ -_08113E14:\n\ - movs r0, 0x7\n\ - ldr r1, [sp, 0x30]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _08113E24\n\ - movs r2, 0xE4\n\ - add r8, r2\n\ - b _08113E28\n\ -_08113E24:\n\ - movs r3, 0x4\n\ - add r8, r3\n\ -_08113E28:\n\ - adds r5, 0x20\n\ - adds r4, 0x1\n\ - ldr r0, [sp, 0x8]\n\ - adds r0, 0x1\n\ - str r0, [sp, 0x8]\n\ - cmp r0, 0x3F\n\ - ble _08113D6A\n\ - movs r1, 0\n\ - str r1, [sp, 0x8]\n\ -_08113E3A:\n\ - ldr r3, [sp, 0x8]\n\ - ldr r4, _08113EBC @ =gSharedMem + 0x14804\n\ - adds r2, r3, r4\n\ - ldr r5, _08113EC0 @ =gSharedMem + 0x14844\n\ - adds r1, r3, r5\n\ - ldrb r0, [r2]\n\ - adds r3, 0x1\n\ - str r3, [sp, 0x30]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc _08113E52\n\ - b _08113F9E\n\ -_08113E52:\n\ - movs r0, 0\n\ - str r0, [sp, 0xC]\n\ - ldrb r2, [r2]\n\ - cmp r0, r2\n\ - bge _08113F54\n\ - ldr r0, _08113EC4 @ =gSharedMem + 0x14800\n\ - adds r0, 0x4\n\ - ldr r1, [sp, 0x8]\n\ - adds r0, r1, r0\n\ - str r0, [sp, 0x18]\n\ -_08113E66:\n\ - movs r2, 0x80\n\ - lsls r2, 1\n\ - str r2, [sp, 0x14]\n\ - movs r6, 0\n\ - ldr r3, [sp, 0x8]\n\ - ldr r4, _08113EC0 @ =gSharedMem + 0x14844\n\ - adds r0, r3, r4\n\ - ldr r5, [sp, 0xC]\n\ - adds r5, 0x1\n\ - str r5, [sp, 0x34]\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bge _08113F3E\n\ - ldr r0, _08113EC4 @ =gSharedMem + 0x14800\n\ - mov r10, r0\n\ - lsls r0, r3, 5\n\ - ldr r2, [sp, 0xC]\n\ - adds r1, r2, r0\n\ - mov r9, r0\n\ - ldr r0, _08113EC4 @ =gSharedMem + 0x14800\n\ - adds r0, 0xC4\n\ - mov r3, r9\n\ - adds r7, r3, r0\n\ - mov r5, r9\n\ - ldr r4, _08113EC4 @ =gSharedMem + 0x14800\n\ - ldr r2, _08113EC8 @ =0x000010c4\n\ - adds r0, r4, r2\n\ - adds r1, r0\n\ - mov r8, r1\n\ - ldrb r3, [r1]\n\ - str r3, [sp, 0x1C]\n\ -_08113EA4:\n\ - ldr r0, _08113ECC @ =0x000020c4\n\ - add r0, r10\n\ - adds r0, r5, r0\n\ - ldr r4, [sp, 0x1C]\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - bls _08113ED0\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - ldrb r0, [r0]\n\ - b _08113ED6\n\ - .align 2, 0\n\ -_08113EBC: .4byte gSharedMem + 0x14804\n\ -_08113EC0: .4byte gSharedMem + 0x14844\n\ -_08113EC4: .4byte gSharedMem + 0x14800\n\ -_08113EC8: .4byte 0x000010c4\n\ -_08113ECC: .4byte 0x000020c4\n\ -_08113ED0:\n\ - ldrb r1, [r0]\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ -_08113ED6:\n\ - subs r3, r1, r0\n\ - ldr r1, [sp, 0xC]\n\ - add r1, r9\n\ - ldr r0, _08113EFC @ =0x000018c4\n\ - add r0, r10\n\ - adds r4, r1, r0\n\ - ldr r0, _08113F00 @ =0x000028c4\n\ - add r0, r10\n\ - adds r2, r5, r0\n\ - ldrb r0, [r4]\n\ - ldr r1, _08113F04 @ =gSharedMem + 0x14800\n\ - mov r12, r1\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bls _08113F08\n\ - adds r1, r0, 0\n\ - ldrb r0, [r2]\n\ - b _08113F0C\n\ - .align 2, 0\n\ -_08113EFC: .4byte 0x000018c4\n\ -_08113F00: .4byte 0x000028c4\n\ -_08113F04: .4byte gSharedMem + 0x14800\n\ -_08113F08:\n\ - ldrb r1, [r2]\n\ - ldrb r0, [r4]\n\ -_08113F0C:\n\ - subs r1, r0\n\ - adds r3, r1\n\ - ldr r2, [sp, 0x14]\n\ - cmp r2, r3\n\ - ble _08113F2C\n\ - ldrb r0, [r7]\n\ - cmp r0, 0\n\ - bne _08113F2C\n\ - ldr r0, _08114050 @ =0x000008c4\n\ - add r0, r12\n\ - adds r0, r5, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08113F2C\n\ - str r6, [sp, 0x10]\n\ - str r3, [sp, 0x14]\n\ -_08113F2C:\n\ - adds r7, 0x1\n\ - adds r5, 0x1\n\ - adds r6, 0x1\n\ - ldr r3, [sp, 0x8]\n\ - ldr r4, _08114054 @ =gSharedMem + 0x14844\n\ - adds r0, r3, r4\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - blt _08113EA4\n\ -_08113F3E:\n\ - ldr r0, [sp, 0xC]\n\ - ldr r1, [sp, 0x10]\n\ - ldr r2, [sp, 0x8]\n\ - bl sub_81141F0\n\ - ldr r5, [sp, 0x34]\n\ - str r5, [sp, 0xC]\n\ - ldr r0, [sp, 0x18]\n\ - ldrb r0, [r0]\n\ - cmp r5, r0\n\ - blt _08113E66\n\ -_08113F54:\n\ - movs r6, 0\n\ - ldr r2, _08114058 @ =gSharedMem + 0x14800\n\ - ldr r1, [sp, 0x8]\n\ - ldr r3, _08114054 @ =gSharedMem + 0x14844\n\ - adds r0, r1, r3\n\ - adds r4, r2, 0\n\ - mov r12, r4\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bge _08113F9E\n\ - mov r0, r12\n\ - adds r0, 0x44\n\ - adds r4, r1, r0\n\ -_08113F6E:\n\ - ldr r5, [sp, 0x8]\n\ - lsls r0, r5, 5\n\ - adds r1, r6, r0\n\ - adds r0, r2, 0\n\ - adds r0, 0xC4\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08113F94\n\ - ldr r3, _08114050 @ =0x000008c4\n\ - adds r0, r2, r3\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08113F94\n\ - adds r0, r6, 0\n\ - adds r1, r5, 0\n\ - bl sub_811430C\n\ -_08113F94:\n\ - adds r6, 0x1\n\ - ldr r2, _08114058 @ =gSharedMem + 0x14800\n\ - ldrb r5, [r4]\n\ - cmp r6, r5\n\ - blt _08113F6E\n\ -_08113F9E:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, _0811405C @ =gSharedMem + 0x14804\n\ - adds r2, r0, r1\n\ - ldr r3, _08114054 @ =gSharedMem + 0x14844\n\ - adds r1, r0, r3\n\ - ldrb r0, [r2]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bne _08113FCC\n\ - movs r6, 0\n\ - ldrb r4, [r2]\n\ - cmp r6, r4\n\ - bge _08113FCC\n\ - adds r4, r2, 0\n\ -_08113FBA:\n\ - adds r0, r6, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl sub_81141F0\n\ - adds r6, 0x1\n\ - ldrb r5, [r4]\n\ - cmp r6, r5\n\ - blt _08113FBA\n\ -_08113FCC:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, _0811405C @ =gSharedMem + 0x14804\n\ - adds r2, r0, r1\n\ - ldr r3, _08114054 @ =gSharedMem + 0x14844\n\ - adds r1, r0, r3\n\ - ldrb r0, [r2]\n\ - ldr r4, _08114058 @ =gSharedMem + 0x14800\n\ - ldrb r5, [r1]\n\ - cmp r0, r5\n\ - bhi _08113FE2\n\ - b _081141C4\n\ -_08113FE2:\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - blt _08113FEE\n\ - b _08114104\n\ -_08113FEE:\n\ - str r2, [sp, 0x2C]\n\ - ldr r1, [sp, 0x8]\n\ - lsls r1, 5\n\ - mov r9, r1\n\ - adds r0, r4, 0\n\ - adds r0, 0x44\n\ - ldr r2, [sp, 0x8]\n\ - adds r0, r2, r0\n\ - str r0, [sp, 0x20]\n\ - mov r3, r9\n\ - str r3, [sp, 0x24]\n\ -_08114004:\n\ - movs r4, 0x80\n\ - lsls r4, 1\n\ - str r4, [sp, 0x14]\n\ - movs r6, 0\n\ - ldr r5, [sp, 0x10]\n\ - adds r5, 0x1\n\ - str r5, [sp, 0x38]\n\ - ldr r0, [sp, 0x2C]\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bge _081140C4\n\ - ldr r1, [sp, 0x10]\n\ - ldr r2, [sp, 0x24]\n\ - adds r1, r2\n\ - mov r10, r1\n\ - ldr r0, _08114058 @ =gSharedMem + 0x14800\n\ - adds r0, 0xC4\n\ - adds r2, r0\n\ - mov r8, r2\n\ - ldr r7, [sp, 0x24]\n\ - ldr r3, _08114058 @ =gSharedMem + 0x14800\n\ - ldr r4, _08114060 @ =0x000010c4\n\ - adds r0, r3, r4\n\ - adds r5, r7, r0\n\ - ldr r0, _08114064 @ =gSharedMem + 0x168C4\n\ - add r0, r10\n\ - mov r12, r0\n\ - ldrb r1, [r0]\n\ - str r1, [sp, 0x28]\n\ -_0811403E:\n\ - ldrb r0, [r5]\n\ - ldr r2, [sp, 0x28]\n\ - cmp r0, r2\n\ - bls _08114068\n\ - adds r1, r0, 0\n\ - mov r3, r12\n\ - ldrb r0, [r3]\n\ - b _0811406E\n\ - .align 2, 0\n\ -_08114050: .4byte 0x000008c4\n\ -_08114054: .4byte gSharedMem + 0x14844\n\ -_08114058: .4byte gSharedMem + 0x14800\n\ -_0811405C: .4byte gSharedMem + 0x14804\n\ -_08114060: .4byte 0x000010c4\n\ -_08114064: .4byte gSharedMem + 0x168C4\n\ -_08114068:\n\ - mov r4, r12\n\ - ldrb r1, [r4]\n\ - ldrb r0, [r5]\n\ -_0811406E:\n\ - subs r3, r1, r0\n\ - ldr r1, _0811408C @ =gSharedMem + 0x14800\n\ - ldr r2, _08114090 @ =0x000018c4\n\ - adds r0, r1, r2\n\ - adds r4, r7, r0\n\ - ldr r2, _08114094 @ =gSharedMem + 0x170C4\n\ - add r2, r10\n\ - ldrb r0, [r4]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bls _08114098\n\ - adds r1, r0, 0\n\ - ldrb r0, [r2]\n\ - b _0811409C\n\ - .align 2, 0\n\ -_0811408C: .4byte gSharedMem + 0x14800\n\ -_08114090: .4byte 0x000018c4\n\ -_08114094: .4byte gSharedMem + 0x170C4\n\ -_08114098:\n\ - ldrb r1, [r2]\n\ - ldrb r0, [r4]\n\ -_0811409C:\n\ - subs r1, r0\n\ - adds r3, r1\n\ - ldr r2, [sp, 0x14]\n\ - cmp r2, r3\n\ - ble _081140B2\n\ - mov r4, r8\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _081140B2\n\ - str r6, [sp, 0xC]\n\ - str r3, [sp, 0x14]\n\ -_081140B2:\n\ - movs r0, 0x1\n\ - add r8, r0\n\ - adds r7, 0x1\n\ - adds r5, 0x1\n\ - adds r6, 0x1\n\ - ldr r1, [sp, 0x2C]\n\ - ldrb r1, [r1]\n\ - cmp r6, r1\n\ - blt _0811403E\n\ -_081140C4:\n\ - ldr r3, [sp, 0xC]\n\ - add r3, r9\n\ - ldr r2, _08114164 @ =gSharedMem + 0x14800\n\ - ldr r4, _08114168 @ =0x000030c4\n\ - adds r1, r2, r4\n\ - adds r1, r3, r1\n\ - ldr r2, [sp, 0x10]\n\ - add r2, r9\n\ - ldr r5, _0811416C @ =gSharedMem + 0x168C4\n\ - adds r0, r2, r5\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, _08114164 @ =gSharedMem + 0x14800\n\ - ldr r4, _08114170 @ =0x000038c4\n\ - adds r1, r0, r4\n\ - adds r1, r3, r1\n\ - ldr r5, _08114174 @ =gSharedMem + 0x170C4\n\ - adds r2, r5\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - ldr r0, _08114164 @ =gSharedMem + 0x14800\n\ - adds r0, 0xC4\n\ - adds r3, r0\n\ - movs r0, 0x1\n\ - strb r0, [r3]\n\ - ldr r0, [sp, 0x38]\n\ - str r0, [sp, 0x10]\n\ - ldr r1, [sp, 0x20]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bge _08114104\n\ - b _08114004\n\ -_08114104:\n\ - movs r6, 0\n\ - ldr r4, _08114164 @ =gSharedMem + 0x14800\n\ - ldr r2, [sp, 0x8]\n\ - ldr r3, _08114178 @ =gSharedMem + 0x14804\n\ - adds r0, r2, r3\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bge _081141C4\n\ - adds r7, r4, 0\n\ - mov r9, r6\n\ - movs r5, 0xC4\n\ - adds r5, r7\n\ - mov r8, r5\n\ -_0811411E:\n\ - ldr r1, [sp, 0x8]\n\ - lsls r0, r1, 5\n\ - adds r2, r6, r0\n\ - ldr r3, _0811417C @ =0x000020c4\n\ - adds r0, r7, r3\n\ - adds r0, r2\n\ - mov r10, r0\n\ - ldr r5, _08114168 @ =0x000030c4\n\ - adds r0, r7, r5\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - mov r1, r10\n\ - strb r0, [r1]\n\ - ldr r3, _08114180 @ =0x000028c4\n\ - adds r0, r7, r3\n\ - adds r3, r2, r0\n\ - ldr r5, _08114170 @ =0x000038c4\n\ - adds r0, r7, r5\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - strb r0, [r3]\n\ - mov r0, r8\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0\n\ - beq _08114184\n\ - mov r2, r9\n\ - strb r2, [r1]\n\ - adds r0, r6, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl sub_81141F0\n\ - b _081141B4\n\ - .align 2, 0\n\ -_08114164: .4byte gSharedMem + 0x14800\n\ -_08114168: .4byte 0x000030c4\n\ -_0811416C: .4byte gSharedMem + 0x168C4\n\ -_08114170: .4byte 0x000038c4\n\ -_08114174: .4byte gSharedMem + 0x170C4\n\ -_08114178: .4byte gSharedMem + 0x14804\n\ -_0811417C: .4byte 0x000020c4\n\ -_08114180: .4byte 0x000028c4\n\ -_08114184:\n\ - ldr r5, _081141E0 @ =0x000010c4\n\ - adds r1, r4, r5\n\ - adds r1, r2, r1\n\ - ldr r5, _081141E4 @ =0x000018c4\n\ - adds r0, r4, r5\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - ldrb r2, [r1]\n\ - subs r0, r2\n\ - lsrs r1, r0, 31\n\ - adds r0, r1\n\ - asrs r0, 1\n\ - adds r2, r0\n\ - strb r2, [r3]\n\ - mov r0, r10\n\ - strb r2, [r0]\n\ - ldrb r0, [r3]\n\ - subs r0, 0x1\n\ - strb r0, [r3]\n\ - adds r0, r6, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl sub_81141F0\n\ -_081141B4:\n\ - adds r6, 0x1\n\ - ldr r4, _081141E8 @ =gSharedMem + 0x14800\n\ - ldr r1, [sp, 0x8]\n\ - ldr r2, _081141EC @ =gSharedMem + 0x14804\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - blt _0811411E\n\ -_081141C4:\n\ - ldr r3, [sp, 0x30]\n\ - str r3, [sp, 0x8]\n\ - cmp r3, 0x3F\n\ - bgt _081141CE\n\ - b _08113E3A\n\ -_081141CE:\n\ - add sp, 0x3C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081141E0: .4byte 0x000010c4\n\ -_081141E4: .4byte 0x000018c4\n\ -_081141E8: .4byte gSharedMem + 0x14800\n\ -_081141EC: .4byte gSharedMem + 0x14804\n\ - .syntax divided"); -} - -void sub_81141F0(s32 a, s32 b, s32 c) -{ - u32 r7; - - sEvoInfo.unk30C4[c][b] = sEvoInfo.unk10C4[c][a]; - sEvoInfo.unk38C4[c][b] = sEvoInfo.unk18C4[c][a]; - - r7 = 0; - if (sEvoInfo.unk10C4[c][a] < sEvoInfo.unk20C4[c][b]) - { - sEvoInfo.unkC4[c][b] = 4; - r7 = sEvoInfo.unk20C4[c][b] - sEvoInfo.unk10C4[c][a]; - } - else if (sEvoInfo.unk10C4[c][a] > sEvoInfo.unk20C4[c][b]) - { - sEvoInfo.unkC4[c][b] = 1; - r7 = sEvoInfo.unk10C4[c][a] - sEvoInfo.unk20C4[c][b]; - } - sEvoInfo.unk80C4[c][b] = r7 * 16; - - r7 = 0; - if (sEvoInfo.unk18C4[c][a] < sEvoInfo.unk28C4[c][b]) - { - sEvoInfo.unk8C4[c][b] = 3; - r7 = sEvoInfo.unk28C4[c][b] - sEvoInfo.unk18C4[c][a]; - } - else if (sEvoInfo.unk18C4[c][a] > sEvoInfo.unk28C4[c][b]) - { - sEvoInfo.unk8C4[c][b] = 2; - r7 = sEvoInfo.unk18C4[c][a] - sEvoInfo.unk28C4[c][b]; - } - sEvoInfo.unk90C4[c][b] = r7 * 16; - - sEvoInfo.unk84[c]++; -} - -void sub_811430C(u32 a, u32 b) -{ - u8 r2 = sEvoInfo.unk28C4[b][a]; - u8 r3 = sEvoInfo.unk20C4[b][a]; - s32 r7 = r2 - r3; - - sEvoInfo.unk30C4[b][a] = sEvoInfo.unk38C4[b][a] = r3 + r7 / 2; - sEvoInfo.unkC4[b][a] = 5; - sEvoInfo.unk8C4[b][a] = 7; - sEvoInfo.unk84[b]++; - r7 = sEvoInfo.unk30C4[b][a] - sEvoInfo.unk20C4[b][a]; - sEvoInfo.unk80C4[b][a] = r7 * 16; - r7 = sEvoInfo.unk28C4[b][a] - sEvoInfo.unk38C4[b][a]; - sEvoInfo.unk90C4[b][a] = r7 * 16; -} - -__attribute__((naked)) -void unref_sub_81143CC() -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - ldr r0, _08114408 @ =gSharedMem + 0x14800\n\ - ldr r2, _0811440C @ =0x0000a0c4\n\ - adds r1, r0, r2\n\ - ldrb r3, [r1]\n\ - adds r4, r0, 0\n\ - cmp r3, 0\n\ - beq _081143EE\n\ - subs r0, r3, 0x1\n\ - strb r0, [r1]\n\ -_081143EE:\n\ - movs r5, 0\n\ - str r5, [sp]\n\ -_081143F2:\n\ - movs r3, 0\n\ - adds r2, r4, 0\n\ - adds r0, r4, 0\n\ - adds r0, 0x84\n\ - ldr r1, [sp]\n\ - adds r0, r1, r0\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x8]\n\ - bl _08114D84\n\ - .align 2, 0\n\ -_08114408: .4byte gSharedMem + 0x14800\n\ -_0811440C: .4byte 0x0000a0c4\n\ -_08114410:\n\ - ldr r5, [sp]\n\ - lsls r0, r5, 5\n\ - adds r1, r3, r0\n\ - adds r2, 0xC4\n\ - adds r1, r2\n\ - ldrb r2, [r1]\n\ - mov r8, r0\n\ - adds r0, r3, 0x1\n\ - mov r10, r0\n\ - cmp r2, 0xC\n\ - bls _08114428\n\ - b _081148D2\n\ -_08114428:\n\ - lsls r0, r2, 2\n\ - ldr r1, _08114434 @ =_08114438\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08114434: .4byte _08114438\n\ - .align 2, 0\n\ -_08114438:\n\ - .4byte _081148D2\n\ - .4byte _0811446C\n\ - .4byte _081144F0\n\ - .4byte _0811457C\n\ - .4byte _08114600\n\ - .4byte _0811468C\n\ - .4byte _081146C8\n\ - .4byte _08114704\n\ - .4byte _08114740\n\ - .4byte _0811477C\n\ - .4byte _081147D0\n\ - .4byte _08114810\n\ - .4byte _08114858\n\ -_0811446C:\n\ - movs r1, 0\n\ - str r1, [sp, 0x4]\n\ - lsls r0, r3, 1\n\ - ldr r2, [sp]\n\ - lsls r1, r2, 6\n\ - adds r0, r1\n\ - ldr r5, _081144E0 @ =0x000060c4\n\ - adds r2, r4, r5\n\ - adds r2, r0, r2\n\ - ldr r5, _081144E4 @ =0x000080c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - adds r1, r3, 0x1\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x4]\n\ - cmp r2, r5\n\ - blt _081144A6\n\ - b _081148D2\n\ -_081144A6:\n\ - mov r9, r4\n\ - mov r4, r8\n\ - adds r7, r3, r4\n\ - ldr r0, _081144E8 @ =0x000030c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _081144EC @ =0x000020c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_081144B8:\n\ - ldrb r0, [r4]\n\ - subs r0, 0x1\n\ - strb r0, [r4]\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldrb r0, [r4]\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _081144D8\n\ - b _081148A0\n\ -_081144D8:\n\ - adds r6, 0x1\n\ - cmp r6, r5\n\ - blt _081144B8\n\ - b _081148D2\n\ - .align 2, 0\n\ -_081144E0: .4byte 0x000060c4\n\ -_081144E4: .4byte 0x000080c4\n\ -_081144E8: .4byte 0x000030c4\n\ -_081144EC: .4byte 0x000020c4\n\ -_081144F0:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r4, _08114568 @ =gSharedMem + 0x14800\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _0811456C @ =0x000060c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _08114570 @ =0x000080c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - adds r1, r3, 0x1\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x4]\n\ - cmp r2, r5\n\ - blt _0811452C\n\ - b _081148D2\n\ -_0811452C:\n\ - mov r9, r4\n\ - mov r4, r8\n\ - adds r7, r3, r4\n\ - ldr r0, _08114574 @ =0x000030c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _08114578 @ =0x000020c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_0811453E:\n\ - ldrb r0, [r4]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _08114548\n\ - b _081148B8\n\ -_08114548:\n\ - adds r1, r0, 0\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DF0\n\ - ldrb r0, [r4]\n\ - subs r0, 0x1\n\ - strb r0, [r4]\n\ - adds r6, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - cmp r6, r5\n\ - blt _0811453E\n\ - b _081148D2\n\ - .align 2, 0\n\ -_08114568: .4byte gSharedMem + 0x14800\n\ -_0811456C: .4byte 0x000060c4\n\ -_08114570: .4byte 0x000080c4\n\ -_08114574: .4byte 0x000030c4\n\ -_08114578: .4byte 0x000020c4\n\ -_0811457C:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _081145F0 @ =0x000060c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _081145F4 @ =0x000080c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - adds r1, r3, 0x1\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x4]\n\ - cmp r2, r5\n\ - blt _081145B6\n\ - b _081148D2\n\ -_081145B6:\n\ - mov r9, r4\n\ - mov r4, r8\n\ - adds r7, r3, r4\n\ - ldr r0, _081145F8 @ =0x000030c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _081145FC @ =0x000020c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_081145C8:\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldrb r0, [r4]\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _081145E8\n\ - b _081148AC\n\ -_081145E8:\n\ - adds r6, 0x1\n\ - cmp r6, r5\n\ - blt _081145C8\n\ - b _081148D2\n\ - .align 2, 0\n\ -_081145F0: .4byte 0x000060c4\n\ -_081145F4: .4byte 0x000080c4\n\ -_081145F8: .4byte 0x000030c4\n\ -_081145FC: .4byte 0x000020c4\n\ -_08114600:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r4, _08114678 @ =gSharedMem + 0x14800\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _0811467C @ =0x000060c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _08114680 @ =0x000080c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - adds r1, r3, 0x1\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x4]\n\ - cmp r2, r5\n\ - blt _0811463C\n\ - b _081148D2\n\ -_0811463C:\n\ - mov r9, r4\n\ - mov r4, r8\n\ - adds r7, r3, r4\n\ - ldr r0, _08114684 @ =0x000030c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _08114688 @ =0x000020c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_0811464E:\n\ - ldrb r0, [r4]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _08114658\n\ - b _081148B8\n\ -_08114658:\n\ - adds r1, r0, 0\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DF0\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - adds r6, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - cmp r6, r5\n\ - blt _0811464E\n\ - b _081148D2\n\ - .align 2, 0\n\ -_08114678: .4byte gSharedMem + 0x14800\n\ -_0811467C: .4byte 0x000060c4\n\ -_08114680: .4byte 0x000080c4\n\ -_08114684: .4byte 0x000030c4\n\ -_08114688: .4byte 0x000020c4\n\ -_0811468C:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r5, _081146C0 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _081146C4 @ =0x000030c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - ldr r3, [sp, 0x10]\n\ - adds r2, r3, 0x1\n\ - mov r10, r2\n\ - cmp r0, 0\n\ - bne _081146B4\n\ - b _081148D2\n\ -_081146B4:\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r4, r0\n\ - movs r1, 0x9\n\ - strb r1, [r0]\n\ - b _081148D2\n\ - .align 2, 0\n\ -_081146C0: .4byte gSharedMem + 0x14800\n\ -_081146C4: .4byte 0x000030c4\n\ -_081146C8:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _081146FC @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114700 @ =0x000030c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - ldr r3, [sp, 0x10]\n\ - adds r2, r3, 0x1\n\ - mov r10, r2\n\ - cmp r0, 0\n\ - bne _081146F0\n\ - b _081148D2\n\ -_081146F0:\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r4, r0\n\ - movs r1, 0xA\n\ - strb r1, [r0]\n\ - b _081148D2\n\ - .align 2, 0\n\ -_081146FC: .4byte gSharedMem + 0x14800\n\ -_08114700: .4byte 0x000030c4\n\ -_08114704:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _08114738 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _0811473C @ =0x000030c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - ldr r3, [sp, 0x10]\n\ - adds r2, r3, 0x1\n\ - mov r10, r2\n\ - cmp r0, 0\n\ - bne _0811472C\n\ - b _081148D2\n\ -_0811472C:\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r4, r0\n\ - movs r1, 0xB\n\ - strb r1, [r0]\n\ - b _081148D2\n\ - .align 2, 0\n\ -_08114738: .4byte gSharedMem + 0x14800\n\ -_0811473C: .4byte 0x000030c4\n\ -_08114740:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _08114774 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114778 @ =0x000030c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - ldr r3, [sp, 0x10]\n\ - adds r2, r3, 0x1\n\ - mov r10, r2\n\ - cmp r0, 0\n\ - bne _08114768\n\ - b _081148D2\n\ -_08114768:\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r4, r0\n\ - movs r1, 0xC\n\ - strb r1, [r0]\n\ - b _081148D2\n\ - .align 2, 0\n\ -_08114774: .4byte gSharedMem + 0x14800\n\ -_08114778: .4byte 0x000030c4\n\ -_0811477C:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r6, _081147B4 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r5, r3, r0\n\ - ldr r1, _081147B8 @ =0x000030c4\n\ - adds r4, r6, r1\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldr r2, _081147BC @ =0x000020c4\n\ - adds r0, r6, r2\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _081147C0\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - mov r4, sp\n\ - ldrb r4, [r4, 0x4]\n\ - strb r4, [r0]\n\ - b _08114844\n\ - .align 2, 0\n\ -_081147B4: .4byte gSharedMem + 0x14800\n\ -_081147B8: .4byte 0x000030c4\n\ -_081147BC: .4byte 0x000020c4\n\ -_081147C0:\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - movs r1, 0x1\n\ - strb r1, [r0]\n\ - adds r0, r3, 0x1\n\ - mov r10, r0\n\ - b _081148D2\n\ -_081147D0:\n\ - movs r1, 0\n\ - str r1, [sp, 0x4]\n\ - ldr r6, _08114804 @ =gSharedMem + 0x14800\n\ - mov r2, r8\n\ - adds r5, r3, r2\n\ - ldr r0, _08114808 @ =0x000030c4\n\ - adds r4, r6, r0\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DF0\n\ - ldr r1, _0811480C @ =0x000020c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - beq _08114882\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - movs r1, 0x2\n\ - b _08114842\n\ - .align 2, 0\n\ -_08114804: .4byte gSharedMem + 0x14800\n\ -_08114808: .4byte 0x000030c4\n\ -_0811480C: .4byte 0x000020c4\n\ -_08114810:\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - ldr r6, _0811484C @ =gSharedMem + 0x14800\n\ - mov r1, r8\n\ - adds r5, r3, r1\n\ - ldr r2, _08114850 @ =0x000030c4\n\ - adds r4, r6, r2\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldr r1, _08114854 @ =0x000020c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - beq _08114882\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - movs r1, 0x3\n\ -_08114842:\n\ - strb r1, [r0]\n\ -_08114844:\n\ - adds r5, r3, 0x1\n\ - mov r10, r5\n\ - b _081148D2\n\ - .align 2, 0\n\ -_0811484C: .4byte gSharedMem + 0x14800\n\ -_08114850: .4byte 0x000030c4\n\ -_08114854: .4byte 0x000020c4\n\ -_08114858:\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - ldr r6, _08114894 @ =gSharedMem + 0x14800\n\ - mov r1, r8\n\ - adds r5, r3, r1\n\ - ldr r2, _08114898 @ =0x000030c4\n\ - adds r4, r6, r2\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DF0\n\ - ldr r1, _0811489C @ =0x000020c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _081148C4\n\ -_08114882:\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - mov r2, sp\n\ - ldrb r2, [r2, 0x4]\n\ - strb r2, [r0]\n\ - adds r4, r3, 0x1\n\ - mov r10, r4\n\ - b _081148D2\n\ - .align 2, 0\n\ -_08114894: .4byte gSharedMem + 0x14800\n\ -_08114898: .4byte 0x000030c4\n\ -_0811489C: .4byte 0x000020c4\n\ -_081148A0:\n\ - mov r0, r9\n\ - adds r0, 0xC4\n\ - adds r0, r7, r0\n\ - movs r5, 0\n\ - strb r5, [r0]\n\ - b _081148D2\n\ -_081148AC:\n\ - mov r0, r9\n\ - adds r0, 0xC4\n\ - adds r0, r7, r0\n\ - movs r1, 0\n\ - strb r1, [r0]\n\ - b _081148D2\n\ -_081148B8:\n\ - mov r0, r9\n\ - adds r0, 0xC4\n\ - adds r0, r7, r0\n\ - movs r1, 0\n\ - strb r1, [r0]\n\ - b _081148D2\n\ -_081148C4:\n\ - adds r0, r6, 0\n\ - adds r0, 0xC4\n\ - adds r0, r5, r0\n\ - movs r1, 0x4\n\ - strb r1, [r0]\n\ - adds r2, r3, 0x1\n\ - mov r10, r2\n\ -_081148D2:\n\ - ldr r0, _081148F4 @ =gSharedMem + 0x14800\n\ - mov r4, r8\n\ - adds r1, r3, r4\n\ - ldr r5, _081148F8 @ =0x000008c4\n\ - adds r2, r0, r5\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - adds r4, r0, 0\n\ - cmp r1, 0xC\n\ - bls _081148E8\n\ - b _08114D76\n\ -_081148E8:\n\ - lsls r0, r1, 2\n\ - ldr r1, _081148FC @ =_08114900\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_081148F4: .4byte gSharedMem + 0x14800\n\ -_081148F8: .4byte 0x000008c4\n\ -_081148FC: .4byte _08114900\n\ - .align 2, 0\n\ -_08114900:\n\ - .4byte _08114D76\n\ - .4byte _08114934\n\ - .4byte _081149B8\n\ - .4byte _08114A3C\n\ - .4byte _08114AC0\n\ - .4byte _08114B44\n\ - .4byte _08114B7C\n\ - .4byte _08114BB4\n\ - .4byte _08114BEC\n\ - .4byte _08114C24\n\ - .4byte _08114C78\n\ - .4byte _08114CB8\n\ - .4byte _08114CF8\n\ -_08114934:\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - lsls r0, r3, 1\n\ - ldr r2, [sp]\n\ - lsls r1, r2, 6\n\ - adds r0, r1\n\ - ldr r5, _081149A8 @ =0x000070c4\n\ - adds r2, r4, r5\n\ - adds r2, r0, r2\n\ - ldr r5, _081149AC @ =0x000090c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - ldr r1, [sp, 0x4]\n\ - cmp r1, r5\n\ - blt _0811496A\n\ - b _08114D76\n\ -_0811496A:\n\ - mov r9, r4\n\ - mov r2, r8\n\ - adds r7, r3, r2\n\ - ldr r0, _081149B0 @ =0x000038c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - movs r3, 0\n\ - ldr r0, _081149B4 @ =0x000028c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_0811497E:\n\ - ldrb r0, [r4]\n\ - subs r0, 0x1\n\ - strb r0, [r4]\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldrb r0, [r4]\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _0811499E\n\ - b _08114D4C\n\ -_0811499E:\n\ - adds r6, 0x1\n\ - cmp r6, r5\n\ - blt _0811497E\n\ - b _08114D76\n\ - .align 2, 0\n\ -_081149A8: .4byte 0x000070c4\n\ -_081149AC: .4byte 0x000090c4\n\ -_081149B0: .4byte 0x000038c4\n\ -_081149B4: .4byte 0x000028c4\n\ -_081149B8:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r4, _08114A28 @ =gSharedMem + 0x14800\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _08114A2C @ =0x000070c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _08114A30 @ =0x000090c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - ldr r1, [sp, 0x4]\n\ - cmp r1, r5\n\ - blt _081149F0\n\ - b _08114D76\n\ -_081149F0:\n\ - mov r9, r4\n\ - mov r2, r8\n\ - adds r7, r3, r2\n\ - ldr r0, _08114A34 @ =0x000038c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _08114A38 @ =0x000028c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_08114A02:\n\ - ldrb r0, [r4]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _08114A0C\n\ - b _08114D3C\n\ -_08114A0C:\n\ - adds r1, r0, 0\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - bl sub_8114DF0\n\ - ldrb r0, [r4]\n\ - subs r0, 0x1\n\ - strb r0, [r4]\n\ - adds r6, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - cmp r6, r5\n\ - blt _08114A02\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114A28: .4byte gSharedMem + 0x14800\n\ -_08114A2C: .4byte 0x000070c4\n\ -_08114A30: .4byte 0x000090c4\n\ -_08114A34: .4byte 0x000038c4\n\ -_08114A38: .4byte 0x000028c4\n\ -_08114A3C:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _08114AB0 @ =0x000070c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _08114AB4 @ =0x000090c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - ldr r1, [sp, 0x4]\n\ - cmp r1, r5\n\ - blt _08114A72\n\ - b _08114D76\n\ -_08114A72:\n\ - mov r9, r4\n\ - mov r2, r8\n\ - adds r7, r3, r2\n\ - ldr r0, _08114AB8 @ =0x000038c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - movs r3, 0\n\ - ldr r0, _08114ABC @ =0x000028c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_08114A86:\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - str r3, [sp, 0x10]\n\ - bl sub_8114DB4\n\ - ldrb r0, [r4]\n\ - ldr r2, [sp, 0xC]\n\ - ldr r3, [sp, 0x10]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _08114AA6\n\ - b _08114D4C\n\ -_08114AA6:\n\ - adds r6, 0x1\n\ - cmp r6, r5\n\ - blt _08114A86\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114AB0: .4byte 0x000070c4\n\ -_08114AB4: .4byte 0x000090c4\n\ -_08114AB8: .4byte 0x000038c4\n\ -_08114ABC: .4byte 0x000028c4\n\ -_08114AC0:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r4, _08114B30 @ =gSharedMem + 0x14800\n\ - lsls r0, r3, 1\n\ - ldr r5, [sp]\n\ - lsls r1, r5, 6\n\ - adds r0, r1\n\ - ldr r1, _08114B34 @ =0x000070c4\n\ - adds r2, r4, r1\n\ - adds r2, r0, r2\n\ - ldr r5, _08114B38 @ =0x000090c4\n\ - adds r1, r4, r5\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldrh r0, [r2]\n\ - adds r1, r0\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r1\n\ - lsrs r5, r0, 8\n\ - movs r0, 0xFF\n\ - ands r1, r0\n\ - strh r1, [r2]\n\ - movs r6, 0\n\ - ldr r1, [sp, 0x4]\n\ - cmp r1, r5\n\ - blt _08114AF8\n\ - b _08114D76\n\ -_08114AF8:\n\ - mov r9, r4\n\ - mov r2, r8\n\ - adds r7, r3, r2\n\ - ldr r0, _08114B3C @ =0x000038c4\n\ - add r0, r9\n\ - adds r4, r7, r0\n\ - ldr r0, _08114B40 @ =0x000028c4\n\ - add r0, r9\n\ - adds r2, r7, r0\n\ -_08114B0A:\n\ - ldrb r0, [r4]\n\ - ldrb r1, [r2]\n\ - cmp r0, r1\n\ - bne _08114B14\n\ - b _08114D5C\n\ -_08114B14:\n\ - adds r1, r0, 0\n\ - ldr r0, [sp]\n\ - str r2, [sp, 0xC]\n\ - bl sub_8114DF0\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - adds r6, 0x1\n\ - ldr r2, [sp, 0xC]\n\ - cmp r6, r5\n\ - blt _08114B0A\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114B30: .4byte gSharedMem + 0x14800\n\ -_08114B34: .4byte 0x000070c4\n\ -_08114B38: .4byte 0x000090c4\n\ -_08114B3C: .4byte 0x000038c4\n\ -_08114B40: .4byte 0x000028c4\n\ -_08114B44:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r5, _08114B70 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114B74 @ =0x000038c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08114B64\n\ - b _08114D76\n\ -_08114B64:\n\ - ldr r2, _08114B78 @ =0x000008c4\n\ - adds r0, r5, r2\n\ - adds r0, r4, r0\n\ - movs r1, 0x9\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114B70: .4byte gSharedMem + 0x14800\n\ -_08114B74: .4byte 0x000038c4\n\ -_08114B78: .4byte 0x000008c4\n\ -_08114B7C:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _08114BA8 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114BAC @ =0x000038c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08114B9C\n\ - b _08114D76\n\ -_08114B9C:\n\ - ldr r2, _08114BB0 @ =0x000008c4\n\ - adds r0, r5, r2\n\ - adds r0, r4, r0\n\ - movs r1, 0xA\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114BA8: .4byte gSharedMem + 0x14800\n\ -_08114BAC: .4byte 0x000038c4\n\ -_08114BB0: .4byte 0x000008c4\n\ -_08114BB4:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _08114BE0 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114BE4 @ =0x000038c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08114BD4\n\ - b _08114D76\n\ -_08114BD4:\n\ - ldr r2, _08114BE8 @ =0x000008c4\n\ - adds r0, r5, r2\n\ - adds r0, r4, r0\n\ - movs r1, 0xB\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114BE0: .4byte gSharedMem + 0x14800\n\ -_08114BE4: .4byte 0x000038c4\n\ -_08114BE8: .4byte 0x000008c4\n\ -_08114BEC:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r5, _08114C18 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r4, r3, r0\n\ - ldr r1, _08114C1C @ =0x000038c4\n\ - adds r0, r5, r1\n\ - adds r0, r4, r0\n\ - ldrb r1, [r0]\n\ - ldr r0, [sp]\n\ - bl sub_8114E48\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08114C0C\n\ - b _08114D76\n\ -_08114C0C:\n\ - ldr r2, _08114C20 @ =0x000008c4\n\ - adds r0, r5, r2\n\ - adds r0, r4, r0\n\ - movs r1, 0xC\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114C18: .4byte gSharedMem + 0x14800\n\ -_08114C1C: .4byte 0x000038c4\n\ -_08114C20: .4byte 0x000008c4\n\ -_08114C24:\n\ - movs r4, 0\n\ - str r4, [sp, 0x4]\n\ - ldr r6, _08114C58 @ =gSharedMem + 0x14800\n\ - mov r0, r8\n\ - adds r5, r3, r0\n\ - ldr r1, _08114C5C @ =0x000038c4\n\ - adds r4, r6, r1\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - bl sub_8114DB4\n\ - ldr r2, _08114C60 @ =0x000028c4\n\ - adds r0, r6, r2\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _08114C68\n\ - ldr r4, _08114C64 @ =0x000008c4\n\ - adds r0, r6, r4\n\ - adds r0, r5, r0\n\ - mov r5, sp\n\ - ldrb r5, [r5, 0x4]\n\ - strb r5, [r0]\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114C58: .4byte gSharedMem + 0x14800\n\ -_08114C5C: .4byte 0x000038c4\n\ -_08114C60: .4byte 0x000028c4\n\ -_08114C64: .4byte 0x000008c4\n\ -_08114C68:\n\ - ldr r1, _08114C74 @ =0x000008c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - movs r1, 0x1\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114C74: .4byte 0x000008c4\n\ -_08114C78:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r6, _08114CA8 @ =gSharedMem + 0x14800\n\ - mov r4, r8\n\ - adds r5, r3, r4\n\ - ldr r0, _08114CAC @ =0x000038c4\n\ - adds r4, r6, r0\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - bl sub_8114DF0\n\ - ldr r1, _08114CB0 @ =0x000028c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - beq _08114D1E\n\ - ldr r1, _08114CB4 @ =0x000008c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - movs r1, 0x2\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114CA8: .4byte gSharedMem + 0x14800\n\ -_08114CAC: .4byte 0x000038c4\n\ -_08114CB0: .4byte 0x000028c4\n\ -_08114CB4: .4byte 0x000008c4\n\ -_08114CB8:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r6, _08114CE8 @ =gSharedMem + 0x14800\n\ - mov r4, r8\n\ - adds r5, r3, r4\n\ - ldr r0, _08114CEC @ =0x000038c4\n\ - adds r4, r6, r0\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - bl sub_8114DB4\n\ - ldr r1, _08114CF0 @ =0x000028c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - beq _08114D1E\n\ - ldr r1, _08114CF4 @ =0x000008c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - movs r1, 0x3\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114CE8: .4byte gSharedMem + 0x14800\n\ -_08114CEC: .4byte 0x000038c4\n\ -_08114CF0: .4byte 0x000028c4\n\ -_08114CF4: .4byte 0x000008c4\n\ -_08114CF8:\n\ - movs r2, 0\n\ - str r2, [sp, 0x4]\n\ - ldr r6, _08114D2C @ =gSharedMem + 0x14800\n\ - mov r4, r8\n\ - adds r5, r3, r4\n\ - ldr r0, _08114D30 @ =0x000038c4\n\ - adds r4, r6, r0\n\ - adds r4, r5, r4\n\ - ldrb r1, [r4]\n\ - ldr r0, [sp]\n\ - bl sub_8114DF0\n\ - ldr r1, _08114D34 @ =0x000028c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - ldrb r1, [r4]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _08114D6C\n\ -_08114D1E:\n\ - ldr r2, _08114D38 @ =0x000008c4\n\ - adds r0, r6, r2\n\ - adds r0, r5, r0\n\ - mov r4, sp\n\ - ldrb r4, [r4, 0x4]\n\ - strb r4, [r0]\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114D2C: .4byte gSharedMem + 0x14800\n\ -_08114D30: .4byte 0x000038c4\n\ -_08114D34: .4byte 0x000028c4\n\ -_08114D38: .4byte 0x000008c4\n\ -_08114D3C:\n\ - ldr r0, _08114D48 @ =0x000008c4\n\ - add r0, r9\n\ - adds r0, r7, r0\n\ - movs r1, 0\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114D48: .4byte 0x000008c4\n\ -_08114D4C:\n\ - ldr r0, _08114D58 @ =0x000008c4\n\ - add r0, r9\n\ - adds r0, r7, r0\n\ - strb r3, [r0]\n\ - b _08114D76\n\ - .align 2, 0\n\ -_08114D58: .4byte 0x000008c4\n\ -_08114D5C:\n\ - ldr r0, _08114D68 @ =0x000008c4\n\ - add r0, r9\n\ - adds r0, r7, r0\n\ - movs r1, 0\n\ - b _08114D74\n\ - .align 2, 0\n\ -_08114D68: .4byte 0x000008c4\n\ -_08114D6C:\n\ - ldr r1, _08114DAC @ =0x000008c4\n\ - adds r0, r6, r1\n\ - adds r0, r5, r0\n\ - movs r1, 0x4\n\ -_08114D74:\n\ - strb r1, [r0]\n\ -_08114D76:\n\ - mov r3, r10\n\ - ldr r2, _08114DB0 @ =gSharedMem + 0x14800\n\ - adds r0, r2, 0\n\ - adds r0, 0x84\n\ - ldr r4, [sp]\n\ - adds r0, r4, r0\n\ - adds r4, r2, 0\n\ -_08114D84:\n\ - ldrb r0, [r0]\n\ - cmp r3, r0\n\ - bge _08114D8E\n\ - bl _08114410\n\ -_08114D8E:\n\ - ldr r5, [sp, 0x8]\n\ - str r5, [sp]\n\ - cmp r5, 0x3F\n\ - bgt _08114D9A\n\ - bl _081143F2\n\ -_08114D9A:\n\ - ldr r0, [sp, 0x4]\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08114DAC: .4byte 0x000008c4\n\ -_08114DB0: .4byte gSharedMem + 0x14800\n\ - .syntax divided"); -} - -void sub_8114DB4(u32 a, u8 b) -{ - u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; - - if (b % 2 != 0) - *r2 |= 0xF0; - else - *r2 |= 0x0F; -} - -void sub_8114DF0(u32 a, u8 b) -{ - u8 *r2 = sEvoInfo.unk40C4[a][b / 2]; - u8 *r1 = r2 + 0x6000; - - if (b % 2 != 0) - { - if (!(*r1 & 0xF0)) - *r2 &= 0x0F; - } - else - { - if (!(*r1 & 0x0F)) - *r2 &= 0xF0; - } -} - -__attribute__((naked)) -void sub_8114E48() -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r4, r0, 0\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - ldr r1, _08114E6C @ =gSharedMem + 0x14800\n\ - ldr r2, _08114E70 @ =0x0000a0c4\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r5, r1, 0\n\ - cmp r0, 0\n\ - bne _08114E60\n\ - b _08114F5E\n\ -_08114E60:\n\ - movs r1, 0\n\ - movs r3, 0\n\ - cmp r4, 0\n\ - bne _08114E74\n\ - movs r1, 0x1\n\ - b _08114EA6\n\ - .align 2, 0\n\ -_08114E6C: .4byte gSharedMem + 0x14800\n\ -_08114E70: .4byte 0x0000a0c4\n\ -_08114E74:\n\ - subs r0, r4, 0x1\n\ - lsls r0, 5\n\ - adds r2, r3, r0\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08114EA6\n\ - ldr r7, _08114EC4 @ =0x000008c4\n\ - adds r0, r5, r7\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08114EA6\n\ - adds r3, 0x1\n\ - cmp r3, 0x1F\n\ - bgt _08114EA6\n\ - cmp r4, 0\n\ - bne _08114E74\n\ - lsls r0, r1, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ - lsrs r1, r0, 24\n\ -_08114EA6:\n\ - cmp r3, 0x20\n\ - bne _08114EB4\n\ - lsls r0, r1, 24\n\ - movs r2, 0x80\n\ - lsls r2, 17\n\ - adds r0, r2\n\ - lsrs r1, r0, 24\n\ -_08114EB4:\n\ - movs r3, 0\n\ - cmp r4, 0x3F\n\ - bne _08114EC8\n\ - lsls r0, r1, 24\n\ - movs r7, 0x80\n\ - lsls r7, 17\n\ - adds r0, r7\n\ - b _08114EF8\n\ - .align 2, 0\n\ -_08114EC4: .4byte 0x000008c4\n\ -_08114EC8:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 5\n\ - adds r2, r3, r0\n\ - adds r0, r5, 0\n\ - adds r0, 0xC4\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08114EFA\n\ - ldr r7, _08114F64 @ =0x000008c4\n\ - adds r0, r5, r7\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08114EFA\n\ - adds r3, 0x1\n\ - cmp r3, 0x1F\n\ - bgt _08114EFA\n\ - cmp r4, 0x3F\n\ - bne _08114EC8\n\ - lsls r0, r1, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ -_08114EF8:\n\ - lsrs r1, r0, 24\n\ -_08114EFA:\n\ - cmp r3, 0x20\n\ - bne _08114F08\n\ - lsls r0, r1, 24\n\ - movs r2, 0x80\n\ - lsls r2, 17\n\ - adds r0, r2\n\ - lsrs r1, r0, 24\n\ -_08114F08:\n\ - cmp r1, 0x2\n\ - beq _08114F5E\n\ - subs r0, r6, 0x2\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r0, 0\n\ - bge _08114F18\n\ - movs r1, 0\n\ -_08114F18:\n\ - adds r0, r6, 0x2\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3F\n\ - ble _08114F26\n\ - movs r2, 0x3F\n\ -_08114F26:\n\ - lsls r1, 24\n\ - asrs r3, r1, 24\n\ - lsls r0, r2, 24\n\ - asrs r2, r0, 24\n\ - adds r6, r1, 0\n\ - adds r7, r0, 0\n\ - cmp r3, r2\n\ - bge _08114F7C\n\ - cmp r4, 0\n\ - beq _08114F7C\n\ - subs r0, r4, 0x1\n\ - lsls r5, r0, 7\n\ - ldr r0, _08114F68 @ =gSharedMem + 0x188C4\n\ - mov r12, r0\n\ -_08114F42:\n\ - asrs r0, r3, 1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - add r0, r12\n\ - ldr r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _08114F6C\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF0\n\ -_08114F58:\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08114F72\n\ -_08114F5E:\n\ - movs r0, 0x1\n\ - b _08114FCA\n\ - .align 2, 0\n\ -_08114F64: .4byte 0x000008c4\n\ -_08114F68: .4byte gSharedMem + 0x188C4\n\ -_08114F6C:\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF\n\ - b _08114F58\n\ -_08114F72:\n\ - adds r3, 0x1\n\ - cmp r3, r2\n\ - bge _08114F7C\n\ - cmp r4, 0\n\ - bne _08114F42\n\ -_08114F7C:\n\ - asrs r3, r6, 24\n\ - asrs r1, r7, 24\n\ - cmp r3, r1\n\ - bge _08114FC8\n\ - cmp r4, 0x3F\n\ - beq _08114FC8\n\ - adds r0, r4, 0x1\n\ - lsls r5, r0, 7\n\ - ldr r6, _08114FB0 @ =gSharedMem + 0x188C4\n\ - adds r2, r1, 0\n\ -_08114F90:\n\ - asrs r0, r3, 1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - adds r0, r6\n\ - ldr r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _08114FB4\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08114FBE\n\ - b _08114F5E\n\ - .align 2, 0\n\ -_08114FB0: .4byte gSharedMem + 0x188C4\n\ -_08114FB4:\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08114F5E\n\ -_08114FBE:\n\ - adds r3, 0x1\n\ - cmp r3, r2\n\ - bge _08114FC8\n\ - cmp r4, 0x3F\n\ - bne _08114F90\n\ -_08114FC8:\n\ - movs r0, 0\n\ -_08114FCA:\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); -} - -// Functions below are vblank callbacks and are used - -static void EvoDummyFunc(void) -{ - -} - -static void VBlankCB_EvolutionScene(void) -{ - REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803 - REG_BG0HOFS = gBattle_BG0_X; - REG_BG0VOFS = gBattle_BG0_Y; - REG_BG1HOFS = gBattle_BG1_X; - REG_BG1VOFS = gBattle_BG1_Y; - REG_BG2HOFS = gBattle_BG2_X; - REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gBattle_BG3_X; - REG_BG3VOFS = gBattle_BG3_Y; - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - ScanlineEffect_InitHBlankDmaTransfer(); -} - -static void VBlankCB_TradeEvolutionScene(void) -{ - REG_BG0HOFS = gBattle_BG0_X; - REG_BG0VOFS = gBattle_BG0_Y; - REG_BG1HOFS = gBattle_BG1_X; - REG_BG1VOFS = gBattle_BG1_Y; - REG_BG2HOFS = gBattle_BG2_X; - REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gBattle_BG3_X; - REG_BG3VOFS = gBattle_BG3_Y; - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - ScanlineEffect_InitHBlankDmaTransfer(); -} - -static void sub_81150D8(void) -{ - MenuCursor_SetPos814A880(200, 72 + (sEvoCursorPos * 16)); -} - -static void EvoDummyFunc2(void) -{ - -} |