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(0xFFFFFFFF, 0, 16, 0, RGB(0, 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; } }
void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct) { u16 i; struct SpriteSheet sprSheet = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; struct SpritePalette sprPalette = { gUnknownPal_083D18EC, 0 }; struct SpriteTemplate sprTemplate = { 0, 0, &gOamData_83D18D8, gSpriteAnimTable_83D18E8, NULL, gDummySpriteAffineAnimTable, sub_80C60CC, }; sprSheet.tag = unkStruct->tileTag; sprTemplate.tileTag = unkStruct->tileTag; sprPalette.tag = unkStruct->paletteTag; sprTemplate.paletteTag = unkStruct->paletteTag; LoadSpriteSheet(&sprSheet); LoadSpritePalette(&sprPalette); unkStruct->unk0C = 1; unkStruct->unk0A = 0; unkStruct->unk08 = 0; unkStruct->selectedPalettes = ~(0x10000 << IndexOfSpritePaletteTag(unkStruct->paletteTag)) & 0xFFFF0000; if (unkStruct->unk04 == 0) unkStruct->unk04 = 16; if (unkStruct->unk06 == 0) unkStruct->unk06 = 20; gUnknown_020387EC = unkStruct; for (i = 0; i < 8; i++) { u8 spriteId = CreateSprite(&sprTemplate, 32 * i + 8, 80, 0); if (spriteId == MAX_SPRITES) break; gSprites[spriteId].data[0] = (i < 4) ? -unkStruct->unk04 : unkStruct->unk04; } REG_BLDCNT = 191; REG_BLDY = 16; }
void ResetRtcScreen_CreateCursor(u8 taskId) { int spriteId; LoadSpritePalette(&gUnknown_083764BC); spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); gSprites[spriteId].callback = SpriteCB_ResetRtcCusor0; gSprites[spriteId].data[0] = taskId; gSprites[spriteId].data[1] = -1; spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); gSprites[spriteId].callback = SpriteCB_ResetRtcCusor1; gSprites[spriteId].data[0] = taskId; gSprites[spriteId].data[1] = -1; }
u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) { int v9; struct Sprite *v10; if (gUnknown_0203A3D0 != 0x40 || gUnknown_0203A3D1 != 0x40) sub_814A7FC(); v9 = 1; if (a2 == 0xFFFF) { gUnknown_0203A360[a3 & 0xF] = a4; if (LoadSpritePalette(&gUnknown_0842F240) != 0xFF) { a2 = 0xFFF0; v9 = 0; } } LoadSpriteSheetDeferred(&gUnknown_0842F140[a3 & 0xF]); gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 0xA0, a1); gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 0xA0, a1); if (gUnknown_0203A3D0 != 0x40) { v10 = &gSprites[gUnknown_0203A3D0]; if (a2 == 0xFFFF) v10->oam.paletteNum = 0; else v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); } if (gUnknown_0203A3D1 != 0x40) { v10 = &gSprites[gUnknown_0203A3D1]; if (a2 == 0xFFFF) v10->oam.paletteNum = 0; else v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); if (!(REG_DISPCNT & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON))) *(u8 *)(REG_ADDR_WINOUT) |= 0x1F; gUnknown_0203A3D3 = REG_DISPCNT >> 0xF; gUnknown_0203A3D4 = *(u8 *)(REG_BASE + REG_OFFSET_WINOUT + 1); REG_DISPCNT |= DISPCNT_OBJWIN_ON; *(u8 *)(REG_ADDR_WINOUT + 1) = 0x10; }
void sub_80C5E38(struct PCScreenEffectStruct * a0) { u16 i; u8 spriteId; struct SpriteSheet spriteSheet = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; struct SpritePalette spritePalette = { gUnknownPal_083D18EC, 0 }; struct SpriteTemplate spriteTemplate = { 0, 0, &gOamData_83D18D8, gSpriteAnimTable_83D18E8, NULL, gDummySpriteAffineAnimTable, sub_80C6130, }; spriteSheet.tag = a0->tileTag; spriteTemplate.tileTag = a0->tileTag; spritePalette.tag = a0->paletteTag; spriteTemplate.paletteTag = a0->paletteTag; LoadSpriteSheet(&spriteSheet); LoadSpritePalette(&spritePalette); a0->unk0C = 0x50; a0->unk08 = 0; a0->unk0A = 0; a0->selectedPalettes = 0xffff0000 & ~(0x10000 << IndexOfSpritePaletteTag(a0->paletteTag)); if (a0->unk04 == 0) a0->unk04 = 16; if (a0->unk06 == 0) a0->unk06 = 20; gUnknown_020387EC = a0; for (i = 0; i < 8; i++) { if (i < 4) { spriteId = CreateSprite(&spriteTemplate, i * 32 - 0x70, 0x50, 0); if (spriteId == MAX_SPRITES) break; gSprites[spriteId].data[0] = a0->unk04; gSprites[spriteId].data[1] = 1; } else { // Fakematching spriteId = CreateSprite(&spriteTemplate, ((i << 21) + (0x80 << 16)) >> 16, 0x50, 0); if (spriteId == MAX_SPRITES) break; gSprites[spriteId].data[0] = -a0->unk04; gSprites[spriteId].data[1] = -1; } gSprites[spriteId].data[2] = i * 32 + 8; gSprites[spriteId].data[4] = 0; gSprites[spriteId].invisible = TRUE; } REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; REG_BLDY = 16; HBlankIntrOn(sub_80C6078); }