diff options
Diffstat (limited to 'src/credits.c')
-rw-r--r-- | src/credits.c | 311 |
1 files changed, 83 insertions, 228 deletions
diff --git a/src/credits.c b/src/credits.c index 8ec126a41..8c4cfb84d 100644 --- a/src/credits.c +++ b/src/credits.c @@ -250,27 +250,17 @@ static void sub_814395C(void) BuildOamBuffer(); UpdatePaletteFade(); - if (!(gMain.heldKeys & B_BUTTON)) + if ((gMain.heldKeys & B_BUTTON) + && gUnknown_02039324 != 0 + && gTasks[gUnknown_02039322].func == task_a_8143B68) { - return; - } - - if (!gUnknown_02039324) - { - return; - } - - if (gTasks[gUnknown_02039322].func != task_a_8143B68) - { - return; + vblank_8143948(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_02039325 = 1; } - - vblank_8143948(); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - gUnknown_02039325 = 1; } void sub_81439D0(void) @@ -296,9 +286,7 @@ void sub_81439D0(void) while (TRUE) { if (sub_8144ECC(0, taskIdA)) - { break; - } } taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; @@ -344,12 +332,8 @@ void sub_81439D0(void) static void task_a_8143B38(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - gTasks[taskIdA].func = task_a_8143B68; + if (!gPaletteFade.active) + gTasks[taskIdA].func = task_a_8143B68; } static void task_a_8143B68(u8 taskIdA) @@ -389,14 +373,12 @@ static void task_a_8143B68(u8 taskIdA) static void task_a_8143BFC(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_80C9BFC; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_80C9BFC; } static void task_a_80C9BFC(u8 taskIdA) @@ -405,33 +387,29 @@ static void task_a_80C9BFC(u8 taskIdA) SetVBlankCallback(NULL); - if (!sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) + if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) { - return; - } - - BeginNormalPaletteFade(-1, 0, 16, 0, 0); + 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; + 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; + SetVBlankCallback(vblank_8143948); + gTasks[taskIdA].func = task_a_8143B38; + } } static void task_a_8143CC0(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143D04; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143D04; } void task_a_8143D04(u8 taskIdA) @@ -501,13 +479,11 @@ static void task_a_8143EBC(u8 taskIdA) static void task_a_8143F04(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143F3C; } - - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143F3C; } static void task_a_8143F3C(u8 taskIdA) @@ -547,62 +523,52 @@ static void task_a_8143FDC(u8 taskIdA) static void task_a_8144024(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; - } + sub_81452D0(0x3800, 0); - sub_81452D0(0x3800, 0); - - BeginNormalPaletteFade(-1, 0, 0, 0, 0); - gTasks[taskIdA].data[TDA_0] = 7200; - gTasks[taskIdA].func = task_a_8144080; + 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 (!gPaletteFade.active) { - return; - } + if (gTasks[taskIdA].data[TDA_0] == 0) + { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskIdA].func = task_a_8144114; + return; + } - 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 (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] == 7144) - { - FadeOutBGM(8); - } + if (gTasks[taskIdA].data[TDA_0] == 6840) + m4aSongNumStart(BGM_END); - if (gTasks[taskIdA].data[TDA_0] == 6840) - { - m4aSongNumStart(BGM_END); + gTasks[taskIdA].data[TDA_0] -= 1; } - - gTasks[taskIdA].data[TDA_0] -= 1; } static void task_a_8144114(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - SoftReset(0xFF); + if (!gPaletteFade.active) + SoftReset(0xFF); } static void sub_8144130(void) @@ -639,38 +605,30 @@ static void task_b_81441B8(u8 taskIdB) case 8: case 9: default: - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + 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; } - 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; @@ -678,36 +636,24 @@ static void task_b_81441B8(u8 taskIdB) 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) + if (!gPaletteFade.active) { - return; + gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; + gTasks[taskIdB].data[TDB_0] += 1; } - - gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; - gTasks[taskIdB].data[TDB_0] += 1; return; - case 4: if (gTasks[taskIdB].data[TDB_3] != 0) { @@ -720,28 +666,18 @@ static void task_b_81441B8(u8 taskIdB) 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) + if (!gPaletteFade.active) { - return; + MenuZeroFillWindowRect(0, 9, 29, 19); + gTasks[taskIdB].data[TDB_0] = 2; } - - MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskIdB].data[TDB_0] = 2; return; case 10: @@ -962,14 +898,11 @@ void task_e_8144934(u8 taskIdE) 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) { @@ -984,7 +917,6 @@ void task_e_8144934(u8 taskIdE) } sub_8149020(1); break; - case 3: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) { @@ -999,10 +931,8 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] += 1; } } - sub_8149020(1); break; - case 4: sub_8149020(2); break; @@ -1024,7 +954,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) 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; @@ -1036,7 +965,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) 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; @@ -1048,7 +976,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) 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; @@ -1060,7 +987,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) 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; @@ -1087,9 +1013,7 @@ static void sub_8144A68(u8 data, u8 taskIdA) 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) @@ -1113,14 +1037,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) 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) { @@ -1156,17 +1078,14 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) 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; } @@ -1199,7 +1118,8 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } -static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { +static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) +{ u16 baseTile; u16 i; @@ -1209,65 +1129,45 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { 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) { +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]); - } } } @@ -1307,37 +1207,26 @@ static void spritecb_player_8145378(struct Sprite *sprite) 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; } } @@ -1356,49 +1245,31 @@ static void spritecb_rival_8145420(struct Sprite *sprite) 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) { +void spritecb_81454E0(struct Sprite *sprite) +{ if (gUnknown_0203935C) { DestroySprite(sprite); @@ -1417,7 +1288,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->data0 = 1; break; - case 1: if (sprite->data2 < 256) { @@ -1432,23 +1302,18 @@ void spritecb_81454E0(struct Sprite *sprite) { { 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) { @@ -1463,7 +1328,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 += 1; } break; - case 3: if (sprite->data3 != 0) { @@ -1482,13 +1346,11 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 = 10; } break; - case 10: REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroySprite(sprite); break; - } } @@ -1500,17 +1362,14 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 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; @@ -1562,7 +1421,8 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } -static void sub_81458DC(void) { +static void sub_81458DC(void) +{ struct Unk201C000 *unk201C000 = &ewram1c000; u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); u16 seenTypesCount; @@ -1580,19 +1440,13 @@ static void sub_81458DC(void) { } 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 @@ -1625,7 +1479,6 @@ static void sub_81458DC(void) { } else { - for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); if (dexNum < unk201C000->unk8E - 1) @@ -1634,7 +1487,9 @@ static void sub_81458DC(void) { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } else + { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + } } unk201C000->unk8E = POKEMON_TILE_COUNT; } |