void sub_810CC80(void) { u16 ime; SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG2CNT = 0; REG_BG1CNT = 0; REG_BG0CNT = 0; REG_BG2HOFS = 0; REG_BG2VOFS = 0; REG_BG1HOFS = 0; REG_BG1VOFS = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); ResetTasks(); ResetSpriteData(); ime = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = ime; SetVBlankCallback(VBlankCB); SetMainCallback2(sub_810CC54); if (!sub_810CD5C()) SetMainCallback2(gMain.savedCallback); }
void CB2_EndScriptedWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); if (IsPlayerDefeated(gBattleOutcome) == TRUE) SetMainCallback2(CB2_WhiteOut); else SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); }
static void CB2_EndWildBattle(void) { CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); ResetOamRange(0, 128); if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_2_switch); gFieldCallback = sub_8080E44; } }
static void sub_810CFC4(u8 taskId) { if (gTasks[taskId].data[2]) gTasks[taskId].data[2]--; else SetMainCallback2(gMain.savedCallback); }
void CB2_EndTrainerBattle(void) { if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { SetMainCallback2(CB2_WhiteOut); } else { SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); SetCurrentTrainerBattledFlag(); } }
// Return from menu? static void sub_8122450(u8 taskId) { if (!gPaletteFade.active) { SetMainCallback2(gMain.savedCallback); DestroyTask(taskId); } }
void sub_813746C(void) { if (!gPaletteFade.active) { gMain.inBattle = FALSE; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); } }
static void sub_8089E4C(u8 taskID) { if (!gPaletteFade.active) { gLastFieldPokeMenuOpened = 0; SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); DestroyTask(taskID); } }
static void Mailbox_DoGiveMailPokeMenu(u8 taskId) // Mailbox_DoGiveMailPokeMenu { if(!gPaletteFade.active) { SetMainCallback2(sub_808B020); gUnknown_02038561 = 3; DestroyTask(taskId); } }
void sub_80C824C(void) { if (gNumSafariBalls != 0) { SetMainCallback2(c2_exit_to_overworld_2_switch); } else if (gUnknown_02024D26 == 8) { ScriptContext2_RunNewScript(&gUnknown_081C340A); warp_in(); gUnknown_0300485C = sub_8080E44; SetMainCallback2(CB2_LoadMap); } else if (gUnknown_02024D26 == 7) { ScriptContext1_SetupScript(&gUnknown_081C3459); ScriptContext1_Stop(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } }
static void CB2_GiveStarter(void) { u16 starterPoke; *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result; starterPoke = GetStarterPokemon(gSpecialVar_Result); ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0); ResetTasks(); sub_80408BC(); SetMainCallback2(CB2_StartFirstBattle); BattleTransition_Start(0); }
static void sub_810D128(u8 taskId) { u16 count = 16 - gTasks[taskId].data[1]; u16 blend = count + 0x1000; REG_BLDALPHA = blend; if (count) { gTasks[taskId].data[1]++; } else { LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); SetMainCallback2(gMain.savedCallback); } }
static void sub_8089EBC(void) { do { if (InitPartyMenu() == TRUE) { sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0); ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0); gLastFieldPokeMenuOpened = gUnknown_020384F0; sub_8089E84(); SetMainCallback2(CB2_PartyMenuMain); break; } } while (sub_80F9344() != TRUE); }
static void CB2_StartFirstBattle(void) { UpdatePaletteFade(); RunTasks(); if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = CB2_EndFirstBattle; SetMainCallback2(sub_800E7C4); RestartWildEncounterImmunitySteps(); ClearPoisonStepCounter(); IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES); } }
// CB2 for menu? static void sub_8122530(void) { while (1) { if (InitPartyMenu() == TRUE) { sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0); ChangeBattleTowerPartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); gLastFieldPokeMenuOpened = gUnknown_020384F0; sub_81221F8(ewram1B000.menuHandlerTaskId); SetMainCallback2(CB2_PartyMenuMain); break; } if (sub_80F9344() == 1) break; } }
void CB2_InitResetRtcScreen(void) { REG_DISPCNT = 0; SetVBlankCallback(NULL); DmaClear16(3, PLTT, PLTT_SIZE); DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); ScanlineEffect_Clear(); ResetSpriteData(); ResetTasks(); ResetPaletteFade(); Text_LoadWindowTemplate(&gMenuTextWindowTemplate); InitMenuWindow(&gMenuTextWindowTemplate); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); SetMainCallback2(CB2_ResetRtcScreen); CreateTask(Task_ResetRtcScreen, 80); }
static void Task_BattleStart(u8 taskId) { s16 *data = gTasks[taskId].data; switch (tState) { case 0: if (!FldeffPoison_IsActive()) // is poison not active? { BattleTransition_StartOnField(tTransition); tState++; // go to case 1. } break; case 1: if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); RestartWildEncounterImmunitySteps(); ClearPoisonStepCounter(); DestroyTask(taskId); } break; } }
static void sub_81225A4(void) { gPaletteFade.bufferTransferDisabled = TRUE; SetPartyMenuSettings(PARTY_MENU_TYPE_BATTLE_TOWER, 0xFF, sub_812238C, 5); SetMainCallback2(sub_8122530); }
void ScrSpecial_ChooseStarter(void) { SetMainCallback2(CB2_ChooseStarter); gMain.savedCallback = CB2_GiveStarter; }
static void sub_8089F14(void) { gPaletteFade.bufferTransferDisabled = 1; SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_8089D94, 5); SetMainCallback2(sub_8089EBC); }
void ReturnFromHallOfFamePC(void) { SetMainCallback2(c2_exit_to_overworld_2_switch); gFieldCallback = ReshowPCMenuAfterHallOfFamePC; }
void sub_81439D0(void) { u8 taskIdA; s16 taskIdC; u8 taskIdB; u16 savedIme; struct Unk201C000 *c000; sub_8144130(); SetVBlankCallback(NULL); ResetPaletteFade(); ResetTasks(); taskIdA = CreateTask(task_a_8143B38, 0); gTasks[taskIdA].data[TDA_4] = 0; gTasks[taskIdA].data[TDA_7] = 0; gTasks[taskIdA].data[TDA_11] = 0; gTasks[taskIdA].data[TDA_13] = 1; while (TRUE) { if (sub_8144ECC(0, taskIdA)) break; } taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; gTasks[taskIdC].data[TDC_0] = 40; Text_LoadWindowTemplate(&gWindowTemplate_81E7208); InitMenuWindow(&gWindowTemplate_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); CpuCopy16(&gUnknown_0840B7FC, (void *)(VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); REG_BG0VOFS = 0xFFFC; taskIdB = CreateTask(task_b_81441B8, 0); gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA; gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB; BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); savedIme = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = savedIme; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; SetVBlankCallback(vblank_8143948); m4aSongNumStart(BGM_THANKFOR); SetMainCallback2(sub_814395C); gUnknown_02039325 = 0; c000 = &ewram1c000; sub_81458DC(); c000->unk88 = 0; c000->unk8A = 0; c000->unk8C = 0; gUnknown_02039322 = taskIdA; }
void debug_sub_806F8F8(void) { SetMainCallback2(CB2_InitResetRtcScreen); }
void Mailbox_ReturnToMailListAfterDeposit(void) { gFieldCallback = Mailbox_UpdateMailListAfterDeposit; SetMainCallback2(c2_exit_to_overworld_2_switch); }
void ReturnFromHallOfFamePC(void) { SetMainCallback2(CB2_ReturnToField); gFieldCallback = ReshowPCMenuAfterHallOfFamePC; }
static void Mailbox_ReturnToFieldFromReadMail(void) { gFieldCallback = Mailbox_DoRedrawMailboxMenuAfterReturn; SetMainCallback2(c2_exit_to_overworld_2_switch); }
static void CB2_EndFirstBattle(void) { Overworld_ClearSavedMusic(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); }
void AccessHallOfFamePC(void) { SetMainCallback2(sub_81428CC); ScriptContext2_Enable(); }