diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
commit | 1a8fe435e7deabf06029c8e50201136518e3af73 (patch) | |
tree | 9746f2f4f4901e81496465da485d0f5c8a647586 /src/credits.c | |
parent | bb0cad7c072703f5a540e8c22c8e137267331f4d (diff) |
split out src/ directory into categorized subdirectories.
Diffstat (limited to 'src/credits.c')
-rw-r--r-- | src/credits.c | 1496 |
1 files changed, 0 insertions, 1496 deletions
diff --git a/src/credits.c b/src/credits.c deleted file mode 100644 index df70674b6..000000000 --- a/src/credits.c +++ /dev/null @@ -1,1496 +0,0 @@ -#include "global.h" -#include "data2.h" -#include "decompress.h" -#include "event_data.h" -#include "hall_of_fame.h" -#include "intro_credits_graphics.h" -#include "m4a.h" -#include "main.h" -#include "menu.h" -#include "palette.h" -#include "pokedex.h" -#include "rng.h" -#include "songs.h" -#include "sound.h" -#include "species.h" -#include "starter_choose.h" -#include "task.h" -#include "trig.h" - -asm(".set REG_BASE, 0x4000000"); -asm(".set OFFSET_REG_BLDCNT, 0x50"); -asm(".set OFFSET_REG_BLDALPHA, 0x52"); -asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); -asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); - -enum -{ - PAGE_TITLE, - PAGE_DIRECTOR, - PAGE_ART_DIRECTOR, - PAGE_BATTLE_DIRECTOR, - PAGE_MAIN_PROGRAMMER, - PAGE_BATTLE_SYSTEM_PROGRAMMER, - PAGE_PROGRAMMERS_1, - PAGE_PROGRAMMERS_2, - PAGE_PROGRAMMERS_3, - PAGE_MAIN_GRAHPICS_DESIGNER, - PAGE_POKEMON_GRAHPIC_DESIGNERS_1, - PAGE_POKEMON_GRAHPIC_DESIGNERS_2, - PAGE_POKEMON_GRAHPIC_DESIGNERS_3, - PAGE_POKEMON_DESIGNERS_1, - PAGE_POKEMON_DESIGNERS_2, - PAGE_MUSIC_COMPOSITION, - PAGE_SOUND_EFFECTS, - PAGE_GAME_DESIGNERS_1, - PAGE_GAME_DESIGNERS_2, - PAGE_GAME_DESIGNERS_3, - PAGE_PLOT_SCENARIO, - PAGE_GAME_SCENARIO, - PAGE_SCRIPT_DESIGNERS, - PAGE_MAP_DESIGNERS, - PAGE_MAP_DATA_DESIGNERS, - PAGE_PARAMETRIC_DESIGNERS, - PAGE_POKEDEX_TEXT, - PAGE_ENVIRONMENT_TOOLS, - PAGE_PRODUCT_TESTING, - PAGE_SPECIAL_THANKS, - PAGE_SPECIAL_THANKS_1, - PAGE_SPECIAL_THANKS_2, - PAGE_SPECIAL_THANKS_3, - PAGE_INFORMATION_SUPERVISORS, - PAGE_COORDINATORS, - PAGE_TASK_MANAGERS, - PAGE_PRODUCERS, - PAGE_EXECUTIVE_DIRECTOR, - PAGE_EXECUTIVE_PRODUCERS_1, - PAGE_EXECUTIVE_PRODUCERS_2, - PAGE_TRANSLATION_COORDINATOR, - PAGE_TRANSLATORS, - PAGE_PROGRAMMERS, - PAGE_GRAPHIC_DESIGNERS, - PAGE_PRODUCT_SUPPORT, - -#if ENGLISH - PAGE_ARTWORK, - PAGE_TEXT_EDITOR, - PAGE_NOA_TESTING, - PAGE_BRAILLE_CODE_CHECK_1, - PAGE_BRAILLE_CODE_CHECK_2, -#elif GERMAN - PAGE_NOE_TESTING, - PAGE_BRAILLE_CODE_CHECK_1, -#endif - - PAGE_SPECIAL_THANKS_4, - PAGE_SPECIAL_THANKS_5, - - PAGE_COUNT -}; - -#if ENGLISH -#define POKEMON_TILE_COUNT 68 -#define LAST_PAGE (PAGE_TEXT_EDITOR) -#define UNK_DEFINE_45 (0x45) -#define UNK_DEFINE_82 (0x82) -#define UNK_DEF_1F3 (499) -#elif GERMAN -#define POKEMON_TILE_COUNT 65 -#define LAST_PAGE (PAGE_NOE_TESTING) -#define UNK_DEFINE_45 (8) -#define UNK_DEFINE_82 (0x8D) -#define UNK_DEF_1F3 (554) -#endif - -#define COLOR_DARK_GREEN 0x1967 -#define COLOR_LIGHT_GREEN 0x328D - -enum -{ - TDA_0 = 0, - TDA_TASK_C_ID = 1, - TDA_TASK_E_ID = 2, - TDA_TASK_D_ID = 3, - TDA_4 = 4, - TDA_PLAYER_CYCLIST = 5, - TDA_RIVAL_CYCLIST = 6, - TDA_7 = 7, // Has something to do with the bike scene - TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown - TDA_12 = 12, - TDA_13 = 13, - TDA_14 = 14, - TDA_TASK_B_ID = 15, - - // Appears to be responsible for text - TDB_0 = 0, - TDB_TASK_A_ID = 1, - TDB_CURRENT_PAGE = 2, - TDB_3 = 3, - - TDC_0 = 0, - TDC_1 = 1, - TDC_2 = 2, - TDC_3 = 3, - TDC_4 = 4, - TDC_5 = 5, - - TDD_STATE = 0, - TDD_TASK_A_ID = 1, - TDD_2 = 2, - TDD_3 = 3, - - TDE_0 = 0, - TDE_1 = 1, - TDE_TASK_A_ID = 2, -}; - - -struct Unk201C000 -{ - u16 unk0[POKEMON_TILE_COUNT]; - u16 unk88; - u16 unk8A; - u16 unk8C; - u16 unk8E; - u16 unk90[386]; - u16 unk394; -}; - -struct CreditsEntry -{ - u8 var_0; - u8 *text; -}; - -extern u8 ewram[]; - -#define EWRAM_1F800 ((u16 *)(ewram + 0x1F800)) -#define HALL_OF_FAME_SHEET_0 ((u8 *)(ewram + 0x1E000)) -#define HALL_OF_FAME_SHEET_1 ((u8 *)(ewram + 0x1E800)) -#define HALL_OF_FAME_SHEET_2 ((u8 *)(ewram + 0x1F000)) -#define ewram1c000 (*(struct Unk201C000 *)(ewram + 0x1C000)) - -extern struct HallOfFame gHallOfFame; -extern u8 unk_201e800[0x800]; -extern u8 unk_201f000[0x800]; -extern u16 unk_201f800[]; - -extern struct SpriteTemplate gUnknown_02024E8C; - -extern u16 gUnknown_02039358; -extern s16 gUnknown_0203935A; -extern s16 gUnknown_0203935C; - -static EWRAM_DATA s16 gUnknown_02039320 = 0; -static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A -EWRAM_DATA u8 gUnknown_02039324 = 0; -static EWRAM_DATA u8 gUnknown_02039325 = 0; - -extern u8 gReservedSpritePaletteCount; - -// data/hall_of_fame -extern void *gUnknown_0840B5A0[]; - -// data/credits -const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal"); -const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp"); -extern u8 gUnknown_0840B83C[]; -extern u8 gUnknown_0840B84B[]; -extern u8 gUnknown_0840B85A[]; -extern u8 gUnknown_0840B869[]; -extern u8 gUnknown_0840B878[]; -extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; -extern u8 gUnknown_0840CA00[][2]; -extern struct SpriteSheet gUnknown_0840CAA0; -extern struct SpritePalette gUnknown_0840CAB0; -extern const union AnimCmd *const gSpriteAnimTable_0840CA54[]; -extern const union AnimCmd *const gSpriteAnimTable_0840CA94[]; -extern struct SpriteTemplate gSpriteTemplate_840CAEC; - -// graphics -extern u8 gCreditsCopyrightEnd_Gfx[]; -extern u16 gIntroCopyright_Pal[16]; - -static void task_a_8143B38(u8 taskIdA); -static void task_a_8143B68(u8 taskIdA); -static void task_a_8143BFC(u8 taskIdA); -static void task_a_80C9BFC(u8 taskIdA); -static void task_a_8143CC0(u8 taskIdA); -static void task_a_8143D04(u8 taskIdA); -static void task_a_8143EBC(u8 taskIdA); -static void task_a_8143F04(u8 taskIdA); -static void task_a_8143F3C(u8 taskIdA); -static void task_a_8143FDC(u8 taskIdA); -static void task_a_8144024(u8 taskIdA); -static void task_a_8144080(u8 taskIdA); -static void task_a_8144114(u8 taskIdA); -static void sub_8144130(void); -static void task_b_81441B8(u8 taskIdB); -static u8 sub_8144454(u8 page, u8 taskIdA); -static void task_d_8144514(u8 taskIdD); -static bool8 sub_8144ECC(u8 data, u8 taskIdA); -static void sub_81450AC(u8 taskIdA); -static void sub_8145128(u16, u16, u16); -static void sub_81452D0(u16 arg0, u16 palette); -static void spritecb_player_8145378(struct Sprite *sprite); -static void spritecb_rival_8145420(struct Sprite *sprite); -static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position); -static void sub_81458DC(void); - -static void vblank_8143948(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); -} - -static void sub_814395C(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - - if ((gMain.heldKeys & B_BUTTON) - && gUnknown_02039324 != 0 - && gTasks[gUnknown_02039322].func == task_a_8143B68) - { - vblank_8143948(); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - gUnknown_02039325 = 1; - } -} - -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; - - SetUpWindowConfig(&gWindowConfig_81E7208); - InitMenuWindow(&gWindowConfig_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(-1, 0, 16, 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; -} - -static void task_a_8143B38(u8 taskIdA) -{ - if (!gPaletteFade.active) - gTasks[taskIdA].func = task_a_8143B68; -} - -static void task_a_8143B68(u8 taskIdA) -{ - u16 data11; - - if (gTasks[taskIdA].data[TDA_4]) - { - s16 taskIdC; - - taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; - gTasks[taskIdC].data[TDC_0] = 30; - - gTasks[taskIdA].data[TDA_12] = 0x100; - gTasks[taskIdA].func = task_a_8143EBC; - return; - } - - gUnknown_02039320 = 0; - data11 = gTasks[taskIdA].data[TDA_11]; - - if (gTasks[taskIdA].data[TDA_11] == 1) - { - gTasks[taskIdA].data[TDA_13] = data11; - gTasks[taskIdA].data[TDA_11] = 0; - BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gTasks[taskIdA].func = task_a_8143BFC; - } - else if (gTasks[taskIdA].data[TDA_11] == 2) - { - gTasks[taskIdA].data[TDA_13] = data11; - gTasks[taskIdA].data[TDA_11] = 0; - BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gTasks[taskIdA].func = task_a_8143CC0; - } -} - -static void task_a_8143BFC(u8 taskIdA) -{ - if (!gPaletteFade.active) - { - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_80C9BFC; - } -} - -static void task_a_80C9BFC(u8 taskIdA) -{ - u16 backup; - - SetVBlankCallback(NULL); - - if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) - { - BeginNormalPaletteFade(-1, 0, 16, 0, 0); - - backup = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = backup; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - - SetVBlankCallback(vblank_8143948); - gTasks[taskIdA].func = task_a_8143B38; - } -} - -static void task_a_8143CC0(u8 taskIdA) -{ - if (!gPaletteFade.active) - { - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143D04; - } -} - -void task_a_8143D04(u8 taskIdA) -{ - switch (gMain.state) - { - default: - case 0: - { - u16 i; - - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); - LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2); - - for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_0[i] = 0x11; - for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_1[i] = 0x22; - for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_2[i] = 0x33; - - EWRAM_1F800[0] = 0; - EWRAM_1F800[1] = 0x53FF; // light yellow - EWRAM_1F800[2] = 0x529F; // light red - EWRAM_1F800[3] = 0x7E94; // light blue - - LoadSpriteSheet(&gUnknown_0840CAA0); - LoadSpritePalette(&gUnknown_0840CAB0); - - gMain.state += 1; - break; - } - case 1: - gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1; - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA; - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7]; - - BeginNormalPaletteFade(-1, 0, 16, 0, 0); - REG_BG3HOFS = 0; - REG_BG3VOFS = 32; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; - - gMain.state = 0; - gUnknown_0203935C = 0; - gTasks[taskIdA].func = task_a_8143B38; - break; - } -} - -static void task_a_8143EBC(u8 taskIdA) -{ - if (gTasks[taskIdA].data[TDA_12]) - { - gTasks[taskIdA].data[TDA_12] -= 1; - return; - } - - BeginNormalPaletteFade(-1, 12, 0, 16, 0); - gTasks[taskIdA].func = task_a_8143F04; -} - -static void task_a_8143F04(u8 taskIdA) -{ - if (!gPaletteFade.active) - { - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143F3C; - } -} - -static void task_a_8143F3C(u8 taskIdA) -{ - u16 backup; - - sub_8144130(); - ResetPaletteFade(); - sub_8145128(0, 0x3800, 0); - ResetSpriteData(); - FreeAllSpritePalettes(); - BeginNormalPaletteFade(-1, 8, 16, 0, 0); - - REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - backup = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = backup; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; - - gTasks[taskIdA].data[TDA_0] = 0x100; - gTasks[taskIdA].func = task_a_8143FDC; -} - -static void task_a_8143FDC(u8 taskIdA) -{ - if (gTasks[taskIdA].data[TDA_0]) - { - gTasks[taskIdA].data[TDA_0] -= 1; - return; - } - - BeginNormalPaletteFade(-1, 6, 0, 16, 0); - gTasks[taskIdA].func = task_a_8144024; -} - -static void task_a_8144024(u8 taskIdA) -{ - if (!gPaletteFade.active) - { - sub_81452D0(0x3800, 0); - - BeginNormalPaletteFade(-1, 0, 0, 0, 0); - gTasks[taskIdA].data[TDA_0] = 7200; - gTasks[taskIdA].func = task_a_8144080; - } -} - -static void task_a_8144080(u8 taskIdA) -{ - if (!gPaletteFade.active) - { - if (gTasks[taskIdA].data[TDA_0] == 0) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } - - if (gMain.newKeys) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } - - if (gTasks[taskIdA].data[TDA_0] == 7144) - { - FadeOutBGM(8); - } - - if (gTasks[taskIdA].data[TDA_0] == 6840) - m4aSongNumStart(BGM_END); - - gTasks[taskIdA].data[TDA_0] -= 1; - } -} - -static void task_a_8144114(u8 taskIdA) -{ - if (!gPaletteFade.active) - SoftReset(0xFF); -} - -static void sub_8144130(void) -{ - REG_DISPCNT = 0; - - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - - DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); - DmaFill32(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); -} - -static void task_b_81441B8(u8 taskIdB) -{ - u16 i; - - switch (gTasks[taskIdB].data[TDB_0]) - { - case 0: - case 6: - case 7: - case 8: - case 9: - default: - if (!gPaletteFade.active) - { - gTasks[taskIdB].data[TDB_0] = 1; - gTasks[taskIdB].data[TDB_3] = 0x58; - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; - gUnknown_02039320 = 0; - } - return; - case 1: - if (gTasks[taskIdB].data[TDB_3] != 0) - { - gTasks[taskIdB].data[TDB_3] -= 1; - return; - } - gTasks[taskIdB].data[TDB_0] += 1; - return; - case 2: - REG_DISPCNT &= ~DISPCNT_BG0_ON; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68) - { - if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) - { - for (i = 0; i < 5; i++) - sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); - - gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; - gTasks[taskIdB].data[TDB_0] += 1; - - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; - - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); - else - BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); - return; - } - gTasks[taskIdB].data[TDB_0] = 10; - return; - } - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; - return; - case 3: - REG_DISPCNT |= DISPCNT_BG0_ON; - if (!gPaletteFade.active) - { - gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; - gTasks[taskIdB].data[TDB_0] += 1; - } - return; - case 4: - if (gTasks[taskIdB].data[TDB_3] != 0) - { - gTasks[taskIdB].data[TDB_3] -= 1; - return; - } - - if (sub_8144454((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) - { - gTasks[taskIdB].data[TDB_0] += 1; - return; - } - gTasks[taskIdB].data[TDB_0] += 1; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); - else - BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN); - return; - case 5: - if (!gPaletteFade.active) - { - MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskIdB].data[TDB_0] = 2; - } - return; - - case 10: - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_4] = 1; - DestroyTask(taskIdB); - return; - } -} - -static u8 sub_8144454(u8 page, u8 taskIdA) -{ - // Starts with bike + ocean + morning - - if (page == PAGE_PROGRAMMERS_1) - { - // Grass patch - gTasks[taskIdA].data[TDA_11] = 2; - } - - if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3) - { - // Bike + ocean + sunset - gTasks[taskIdA].data[TDA_7] = 1; - gTasks[taskIdA].data[TDA_11] = 1; - } - - if (page == PAGE_GAME_DESIGNERS_2) - { - // Grass patch - gTasks[taskIdA].data[TDA_11] = 2; - } - - if (page == PAGE_MAP_DATA_DESIGNERS) - { - // Bike + forest + sunset - gTasks[taskIdA].data[TDA_7] = 2; - gTasks[taskIdA].data[TDA_11] = 1; - } - - if (page == PAGE_SPECIAL_THANKS_1) - { - // Grass patch - gTasks[taskIdA].data[TDA_11] = 2; - } - - if (page == PAGE_TASK_MANAGERS) - { - // Bike + forest + sunset - gTasks[taskIdA].data[TDA_7] = 3; - gTasks[taskIdA].data[TDA_11] = 1; - } - - if (page == PAGE_TRANSLATION_COORDINATOR) - { - // Grass patch - gTasks[taskIdA].data[TDA_11] = 2; - } - - if (page == LAST_PAGE) - { - // Bike + town + night - gTasks[taskIdA].data[TDA_7] = 4; - gTasks[taskIdA].data[TDA_11] = 1; - } - - if (gTasks[taskIdA].data[TDA_11] != 0) - { - // Returns true if changed? - return TRUE; - } - - return FALSE; -} - -static void task_d_8144514(u8 taskIdD) -{ - struct Unk201C000 *r6 = &ewram1c000; - u8 r2; - - switch (gTasks[taskIdD].data[TDD_STATE]) - { - case 0: - break; - case 1: - if (r6->unk8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) - break; - gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0; - gTasks[taskIdD].data[TDD_STATE]++; - break; - case 2: - if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) - break; - r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); - if (r6->unk8C < r6->unk8E - 1) - { - r6->unk8C++; - gSprites[r2].data3 = 50; - } - else - { - r6->unk8C = 0; - gSprites[r2].data3 = 512; - } - r6->unk88++; - if (r6->unk8A == 2) - r6->unk8A = 0; - else - r6->unk8A++; - gTasks[taskIdD].data[TDD_3] = 50; - gTasks[taskIdD].data[TDD_STATE]++; - break; - case 3: - if (gTasks[taskIdD].data[TDD_3] != 0) - gTasks[taskIdD].data[TDD_3]--; - else - gTasks[taskIdD].data[TDD_STATE] = 1; - break; - } -} - -void task_c_8144664(u8 taskIdC) -{ - switch (gTasks[taskIdC].data[TDC_0]) - { - case 0: - gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[TDC_5]++; - break; - case 1: - if (gUnknown_0203935A != 0) - { - gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[TDC_5]++; - } - else - { - gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 2; - gTasks[taskIdC].data[TDC_5] = 0; - gTasks[taskIdC].data[TDC_0]++; - } - break; - case 2: - if (gTasks[taskIdC].data[TDC_5] < 64) - { - gTasks[taskIdC].data[TDC_5]++; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); - } - else - { - gTasks[taskIdC].data[TDC_0]++; - } - break; - case 3: - gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 3; - gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 1; - gTasks[taskIdC].data[TDC_4] = 120; - gTasks[taskIdC].data[TDC_0]++; - break; - case 4: - if (gTasks[taskIdC].data[TDC_4] != 0) - { - gTasks[taskIdC].data[TDC_4]--; - } - else - { - gTasks[taskIdC].data[TDC_5] = 64; - gTasks[taskIdC].data[TDC_0]++; - } - break; - case 5: - if (gTasks[taskIdC].data[TDC_5] > 0) - { - gTasks[taskIdC].data[TDC_5]--; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); - } - else - { - gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 1; - gTasks[taskIdC].data[TDC_0]++; - } - break; - case 6: - gTasks[taskIdC].data[TDC_0] = 50; - break; - case 10: - gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 2; - gTasks[taskIdC].data[TDC_0] = 50; - break; - case 20: - gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 4; - gTasks[taskIdC].data[TDC_0] = 50; - break; - case 30: - gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 5; - gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 3; - gTasks[taskIdC].data[TDC_0] = 50; - break; - case 50: - gTasks[taskIdC].data[TDC_0] = 0; - break; - } -} - -void task_e_8144934(u8 taskIdE) -{ - s16 taskIdC; - - switch (gTasks[taskIdE].data[TDE_0]) - { - default: - case 0: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) - { - - if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == PAGE_ART_DIRECTOR) - { - gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; - } - } - sub_8149020(0); - break; - case 1: - sub_8149020(0); - break; - case 2: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) - { - taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]; - - // Floor to multiple of 128 - if ((gTasks[taskIdC].data[TDC_5] & -128) == 640) - { - gTasks[taskIdC].data[TDC_0] = 1; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; - } - } - sub_8149020(1); - break; - case 3: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) - { - - if (gTasks[taskIdE].data[TDE_1] == UNK_DEF_1F3) - { - gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; - } - else - { - gTasks[taskIdE].data[TDE_1] += 1; - } - } - sub_8149020(1); - break; - case 4: - sub_8149020(2); - break; - } -} - -static void sub_8144A68(u8 data, u8 taskIdA) -{ - switch (data) - { - case 0: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; - gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); - break; - case 1: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; - gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); - break; - case 2: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; - gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); - break; - case 3: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; - gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); - break; - case 4: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; - gTasks[taskIdA].data[TDA_0] = sub_8148EC0(2, 0x2000, 0x200, 8); - break; - } - - gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data; - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0; - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA; - - gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; - - if (data == 2) - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45; -} - -static bool8 sub_8144ECC(u8 data, u8 taskIdA) -{ - u8 spriteId; - - switch (gMain.state) - { - default: - case 0: - REG_DISPCNT = 0; - REG_BG3HOFS = 8; - REG_BG3VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - ResetSpriteData(); - FreeAllSpritePalettes(); - gMain.state = 1; - break; - case 1: - gUnknown_02039358 = 34; - gUnknown_0203935A = 0; - sub_8148CB0(data); - gMain.state += 1; - break; - case 2: - if (gSaveBlock2.playerGender == MALE) - { - LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet); - LoadCompressedObjectPic(&gUnknown_08416E34); - LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet); - LoadSpritePalettes(gIntro2SpritePalettes); - - spriteId = intro_create_brendan_sprite(120, 46); - gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_player_8145378; - gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; - - spriteId = intro_create_may_sprite(272, 46); - gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_rival_8145420; - gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; - } - else - { - LoadCompressedObjectPic(&gIntro2MaySpriteSheet); - LoadCompressedObjectPic(&gUnknown_08416E24); - LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet); - LoadSpritePalettes(gIntro2SpritePalettes); - - spriteId = intro_create_may_sprite(120, 46); - gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_player_8145378; - gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; - - spriteId = intro_create_brendan_sprite(272, 46); - gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_rival_8145420; - gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; - }; - gMain.state += 1; - break; - case 3: - sub_8144A68(data, taskIdA); - sub_8148E90(data); - gMain.state = 0; - return TRUE; - } - return FALSE; -} - -static void sub_81450AC(u8 taskIdA) -{ - if (gTasks[taskIdA].data[TDA_0] != 0) - { - DestroyTask(gTasks[taskIdA].data[TDA_0]); - gTasks[taskIdA].data[TDA_0] = 0; - } - - if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0) - { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]); - gTasks[taskIdA].data[TDA_TASK_C_ID] = 0; - } - - if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0) - { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]); - gTasks[taskIdA].data[TDA_TASK_E_ID] = 0; - } - - if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0) - { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]); - gTasks[taskIdA].data[TDA_TASK_D_ID] = 0; - } - - gUnknown_0203935C = 1; -} - -static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) -{ - u16 baseTile; - u16 i; - - LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0)); - LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); - - baseTile = (arg2 / 16) << 12; - - for (i = 0; i < 32 * 32; i++) - ((u16 *) (VRAM + arg1))[i] = baseTile + 1; - - for (i = 0; i < 21; i++) - ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile; - - for (i = 0; i < 20; i++) - ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile; - - for (i = 0; i < 23; i++) - ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile; - - for (i = 0; i < 12; i++) - ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; -} - -u16 sub_8145208(u8 arg0) -{ - u16 out = (arg0 & 0x3F) + 80; - - if (arg0 == 0xFF) - return 1; - - if (arg0 & (1 << 7)) - out |= 1 << 11; - if (arg0 & (1 << 6)) - out |= 1 << 10; - - return out; -} - -void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) -{ - u8 y, x; - const u16 tileOffset = (palette / 16) << 12; - - for (y = 0; y < 5; y++) - { - for (x = 0; x < 3; x++) - ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); - } -} - -static void sub_81452D0(u16 arg0, u16 palette) -{ - u16 pos; - u16 baseTile = (palette / 16) << 12; - - for (pos = 0; pos < 32 * 32; pos++) - ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; - -#if ENGLISH - sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); - sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); - sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); - sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); -#elif GERMAN - sub_814524C(gUnknown_0840B85A, 7, 7, arg0, palette); - sub_814524C(gUnknown_0840B869, 11, 7, arg0, palette); - sub_814524C(gUnknown_0840B878, 15, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 19, 7, arg0, palette); -#endif -} - -static void spritecb_player_8145378(struct Sprite *sprite) -{ - if (gUnknown_0203935C != 0) - { - DestroySprite(sprite); - return; - } - - switch (sprite->data0) - { - case 0: - StartSpriteAnimIfDifferent(sprite, 0); - break; - case 1: - StartSpriteAnimIfDifferent(sprite, 1); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; - break; - case 2: - StartSpriteAnimIfDifferent(sprite, 2); - break; - case 3: - StartSpriteAnimIfDifferent(sprite, 3); - break; - case 4: - StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > 120) - sprite->pos1.x -= 1; - break; - case 5: - StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; - break; - } -} - -static void spritecb_rival_8145420(struct Sprite *sprite) -{ - if (gUnknown_0203935C != 0) - { - DestroySprite(sprite); - return; - } - - switch (sprite->data0) - { - case 0: - sprite->pos2.y = 0; - StartSpriteAnimIfDifferent(sprite, 0); - break; - case 1: - if (sprite->pos1.x > 200) - StartSpriteAnimIfDifferent(sprite, 1); - else - StartSpriteAnimIfDifferent(sprite, 2); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 2; - sprite->pos2.y = -gUnknown_0203935A; - break; - case 2: - sprite->data7 += 1; - StartSpriteAnimIfDifferent(sprite, 0); - if ((sprite->data7 & 3) == 0) - sprite->pos1.x += 1; - break; - case 3: - StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; - break; - } -} - -void spritecb_81454E0(struct Sprite *sprite) -{ - if (gUnknown_0203935C) - { - DestroySprite(sprite); - return; - } - - sprite->data7 += 1; - switch (sprite->data0) - { - case 0: - default: - sprite->oam.affineMode = 1; - sprite->oam.matrixNum = sprite->data1; - sprite->data2 = 16; - SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); - sprite->invisible = FALSE; - sprite->data0 = 1; - break; - case 1: - if (sprite->data2 < 256) - { - sprite->data2 += 8; - SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); - } - else - { - sprite->data0 += 1; - } - switch (sprite->data1) - { - case 1: - if ((sprite->data7 & 3) == 0) - sprite->pos1.y += 1; - sprite->pos1.x -= 2; - break; - case 2: - break; - case 3: - if ((sprite->data7 & 3) == 0) - sprite->pos1.y += 1; - sprite->pos1.x += 2; - break; - } - break; - case 2: - if (sprite->data3 != 0) - { - sprite->data3 -= 1; - } - else - { - REG_BLDCNT = 0xF40; - REG_BLDALPHA = 0x10; - sprite->oam.objMode = 1; - sprite->data3 = 16; - sprite->data0 += 1; - } - break; - case 3: - if (sprite->data3 != 0) - { - int data3; - vu16 *reg; - - sprite->data3 -= 1; - - reg = ®_BLDALPHA; - data3 = 16 - sprite->data3; - *reg = (data3 << 8) + sprite->data3; - } - else - { - sprite->invisible = TRUE; - sprite->data0 = 10; - } - break; - case 10: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - DestroySprite(sprite); - break; - } -} - -static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) -{ - u32 personality; - const u8 *lzPaletteData; - u8 spriteId; - u8 spriteId2; - - species = NationalPokedexNumToSpecies(species); - switch (species) - { - default: - personality = 0; - break; - case SPECIES_SPINDA: - personality = gSaveBlock2.pokedex.spindaPersonality; - break; - case SPECIES_UNOWN: - personality = gSaveBlock2.pokedex.unownPersonality; - break; - } - - LoadSpecialPokePic( - &gMonFrontPicTable[species], - gMonFrontPicCoords[species].coords, - gMonFrontPicCoords[species].y_offset, - 0x2000000, - gUnknown_0840B5A0[position], - species, - personality, - 1 - ); - - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); - sub_8143648(position, position); - - spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); - gSprites[spriteId].oam.paletteNum = position; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data1 = position + 1; - gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].callback = spritecb_81454E0; - - spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); - gSprites[spriteId2].data0 = spriteId; - - StartSpriteAnimIfDifferent(&gSprites[spriteId2], position); - - return spriteId; -} - -void spritecb_814580C(struct Sprite *sprite) -{ - if (gSprites[sprite->data0].data0 == 10 || gUnknown_0203935C) - { - DestroySprite(sprite); - return; - } - - sprite->invisible = gSprites[sprite->data0].invisible; - sprite->oam.objMode = gSprites[sprite->data0].oam.objMode; - sprite->oam.affineMode = gSprites[sprite->data0].oam.affineMode; - sprite->oam.matrixNum = gSprites[sprite->data0].oam.matrixNum; - sprite->pos1.x = gSprites[sprite->data0].pos1.x; - sprite->pos1.y = gSprites[sprite->data0].pos1.y; -} - -static void sub_81458DC(void) -{ - struct Unk201C000 *unk201C000 = &ewram1c000; - u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); - u16 seenTypesCount; - u16 page; - u16 dexNum; - u16 j; - - for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) - { - if (GetNationalPokedexFlag(dexNum, 1)) - { - unk201C000->unk90[seenTypesCount] = dexNum; - seenTypesCount++; - } - } - - for (dexNum = seenTypesCount; dexNum < 386; dexNum++) - unk201C000->unk90[dexNum] = 0; - - unk201C000->unk394 = seenTypesCount; - if (unk201C000->unk394 < POKEMON_TILE_COUNT) - unk201C000->unk8E = seenTypesCount; - else - unk201C000->unk8E = POKEMON_TILE_COUNT; - - j = 0; - do - { - page = Random() % unk201C000->unk394; - unk201C000->unk0[j] = unk201C000->unk90[page]; - - j++; - unk201C000->unk90[page] = 0; - unk201C000->unk394--; - if (page != unk201C000->unk394) - { - unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394]; - unk201C000->unk90[unk201C000->unk394] = 0; - } - } - while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT); - - if (unk201C000->unk8E < POKEMON_TILE_COUNT) - { - for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++) - { - unk201C000->unk0[j] = unk201C000->unk0[page]; - - page++; - if (page == unk201C000->unk8E) - page = 0; - } - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; - } - else - { - for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); - - if (dexNum < unk201C000->unk8E - 1) - { - unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; - } - else - { - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; - } - } - unk201C000->unk8E = POKEMON_TILE_COUNT; -} |