#include "global.h" #include "m4a.h" #include "main.h" #include "menu.h" #include "palette.h" #include "songs.h" #include "sound.h" #include "sprite.h" #include "task.h" #include "text.h" 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, PAGE_ARTWORK, PAGE_TEXT_EDITOR, PAGE_NOA_TESTING, PAGE_BRAILLE_CODE_CHECK_1, PAGE_BRAILLE_CODE_CHECK_2, PAGE_SPECIAL_THANKS_4, PAGE_SPECIAL_THANKS_5, PAGE_COUNT }; #define UNK_DEFINE_82 (0x82) #define COLOR_DARK_GREEN 0x1967 #define COLOR_LIGHT_GREEN 0x328D enum { TD_CURRENT_PAGE = 2, }; struct Unk201C000 { u8 pad_00[0x88]; u16 var_88; u16 var_8A; u16 var_8C; }; struct HallOfFame { u8 sheet0[0x800]; u8 sheet1[0x800]; u8 sheet2[0x800]; }; struct CreditsEntry { u8 var_0; u8 *text; }; extern struct Unk201C000 unk_201C000; extern struct HallOfFame gHallOfFame; extern u8 unk_201e800[0x800]; extern u8 unk_201f000[0x800]; extern u16 unk_201f800[]; extern s16 gUnknown_02039320; extern u16 gUnknown_02039322; extern u8 gUnknown_02039324; extern u8 gUnknown_02039325; extern u16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; // data/starter_choose extern u16 gBirchBagGrassPal[32]; extern u8 gBirchBagTilemap[]; extern u8 gBirchHelpGfx[]; // data/credits extern u16 gUnknown_0840B7BC[32]; extern u16 gUnknown_0840B7FC[32]; extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; static void sub_8143B38(u8 taskId); void sub_8143B68(u8 taskId); static void sub_8143BFC(u8 taskId); static void c2_080C9BFC(u8 taskId); static void sub_8143CC0(u8 taskId); static void sub_8143D04(u8 taskId); static void sub_8143EBC(u8 taskId); static void sub_8143F04(u8 taskId); static void sub_8143F3C(u8 taskId); static void sub_8143FDC(u8 taskId); static void sub_8144024(u8 taskId); static void sub_8144080(u8 taskId); static void sub_8144114(u8 taskId); static void sub_8144130(void); static void sub_81441B8(u8 taskId); static u8 sub_8144454(u8 page, u8 taskId); void sub_8144514(u8 taskId); u8 sub_8144ECC(u8 data, u8 taskId); void sub_81450AC(u8 taskId); void sub_8145128(u16, u16, u16); void sub_81452D0(int, int); void sub_81458DC(void); static void sub_8143948(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } static void sub_814395C(void) { RunTasks(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); if (!(gMain.heldKeys & B_BUTTON)) { return; } if (!gUnknown_02039324) { return; } if (gTasks[gUnknown_02039322].func != sub_8143B68) { return; } sub_8143948(); RunTasks(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); gUnknown_02039325 = 1; } void sub_81439D0(void) { u8 taskId; s16 taskId3; u8 taskId2; u16 savedIme; struct Unk201C000 *c000; sub_8144130(); SetVBlankCallback(NULL); ResetPaletteFade(); ResetTasks(); taskId = CreateTask(sub_8143B38, 0); gTasks[taskId].data[4] = 0; gTasks[taskId].data[7] = 0; gTasks[taskId].data[11] = 0; gTasks[taskId].data[13] = 1; while (TRUE) { if (sub_8144ECC(0, taskId)) { break; } } taskId3 = gTasks[taskId].data[1]; gTasks[taskId3].data[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; taskId2 = CreateTask(sub_81441B8, 0); gTasks[taskId2].data[1] = taskId; gTasks[taskId].data[15] = taskId2; 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(sub_8143948); m4aSongNumStart(BGM_THANKFOR); SetMainCallback2(sub_814395C); gUnknown_02039325 = 0; c000 = &unk_201C000; sub_81458DC(); c000->var_88 = 0; c000->var_8A = 0; c000->var_8C = 0; gUnknown_02039322 = taskId; } void sub_8143B38(u8 taskId) { if (gPaletteFade.active) { return; } gTasks[taskId].func = sub_8143B68; } void sub_8143B68(u8 taskId) { u16 data11; if (gTasks[taskId].data[4]) { s16 secondaryTaskId; secondaryTaskId = gTasks[taskId].data[1]; gTasks[secondaryTaskId].data[0] = 30; gTasks[taskId].data[12] = 0x100; gTasks[taskId].func = sub_8143EBC; return; } gUnknown_02039320 = 0; data11 = gTasks[taskId].data[11]; if (gTasks[taskId].data[11] == 1) { gTasks[taskId].data[13] = data11; gTasks[taskId].data[11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_8143BFC; } else if (gTasks[taskId].data[11] == 2) { gTasks[taskId].data[13] = data11; gTasks[taskId].data[11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_8143CC0; } } static void sub_8143BFC(u8 taskId) { if (gPaletteFade.active) { return; } REG_DISPCNT = 0; sub_81450AC(taskId); gTasks[taskId].func = c2_080C9BFC; } static void c2_080C9BFC(u8 taskId) { u16 backup; SetVBlankCallback(NULL); if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) { return; } 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(sub_8143948); gTasks[taskId].func = sub_8143B38; } static void sub_8143CC0(u8 taskId) { if (gPaletteFade.active) { return; } REG_DISPCNT = 0; sub_81450AC(taskId); gTasks[taskId].func = sub_8143D04; } #ifdef NONMATCHING static void sub_8143D04(u8 taskId) { switch (gMain.state) { default: case 0: { u16 i; ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800)); LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2); for (i = 0; i < 0x800; i++) { gHallOfFame.sheet0[i] = 0x11; } for (i = 0; i < 0x800; i++) { gHallOfFame.sheet1[i] = 0x22; } for (i = 0; i < 0x800; i++) { gHallOfFame.sheet2[i] = 0x33; } unk_201f800[0] = 0; unk_201f800[1] = 0x53FF; // light yellow unk_201f800[2] = 0x529F; // light red unk_201f800[3] = 0x7E94; // light blue LoadSpriteSheet(&gUnknown_0840CAA0); LoadSpritePalette(&gUnknown_0840CAB0); gMain.state += 1; break; } case 1: { gTasks[taskId].data[3] = CreateTask(sub_8144514, 0); gTasks[gTasks[taskId].data[3]].data[0] = 1; gTasks[gTasks[taskId].data[3]].data[1] = taskId; gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7]; BeginNormalPaletteFade(-1, 0, 16, 0, 0); REG_BG3HOFS = 0; REG_BG3VOFS = 32; REG_BG3CNT = 0x703; REG_DISPCNT = 0x1940; gMain.state = 0; gUnknown_0203935C = 0; gTasks[taskId].func = sub_8143B38; break; } } } #else __attribute__((naked)) static void sub_8143D04(u8 taskId) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r9\n\ mov r6, r8\n\ push {r6,r7}\n\ sub sp, 0x4\n\ lsls r0, 24\n\ lsrs r6, r0, 24\n\ ldr r0, _08143DC8 @ =gMain\n\ ldr r1, _08143DCC @ =0x0000043c\n\ adds r1, r0\n\ mov r8, r1\n\ ldrb r7, [r1]\n\ cmp r7, 0\n\ beq _08143D24\n\ cmp r7, 0x1\n\ beq _08143E0C\n\ _08143D24:\n\ bl ResetSpriteData\n\ bl FreeAllSpritePalettes\n\ ldr r1, _08143DD0 @ =gReservedSpritePaletteCount\n\ movs r0, 0x8\n\ strb r0, [r1]\n\ ldr r0, _08143DD4 @ =gBirchHelpGfx\n\ movs r1, 0xC0\n\ lsls r1, 19\n\ bl LZ77UnCompVram\n\ ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\ ldr r1, _08143DDC @ =0x06003800\n\ bl LZ77UnCompVram\n\ ldr r0, _08143DE0 @ =gBirchBagGrassPal + 2\n\ movs r1, 0x1\n\ movs r2, 0x3E\n\ bl LoadPalette\n\ movs r1, 0\n\ ldr r4, _08143DE4 @ =0x0201e000\n\ movs r3, 0x11\n\ ldr r2, _08143DE8 @ =0x000007ff\n\ _08143D56:\n\ adds r0, r1, r4\n\ strb r3, [r0]\n\ adds r0, r1, 0x1\n\ lsls r0, 16\n\ lsrs r1, r0, 16\n\ cmp r1, r2\n\ bls _08143D56\n\ movs r1, 0\n\ ldr r2, _08143DEC @ =0x0201f800\n\ ldr r6, _08143DF0 @ =gUnknown_0840CAA0\n\ ldr r0, _08143DF4 @ =0xfffff000\n\ adds r5, r2, r0\n\ movs r4, 0x22\n\ ldr r3, _08143DE8 @ =0x000007ff\n\ _08143D72:\n\ adds r0, r1, r5\n\ strb r4, [r0]\n\ adds r0, r1, 0x1\n\ lsls r0, 16\n\ lsrs r1, r0, 16\n\ cmp r1, r3\n\ bls _08143D72\n\ movs r1, 0\n\ ldr r5, _08143DF8 @ =0x0201f000\n\ movs r4, 0x33\n\ ldr r3, _08143DE8 @ =0x000007ff\n\ _08143D88:\n\ adds r0, r1, r5\n\ strb r4, [r0]\n\ adds r0, r1, 0x1\n\ lsls r0, 16\n\ lsrs r1, r0, 16\n\ cmp r1, r3\n\ bls _08143D88\n\ movs r0, 0\n\ strh r0, [r2]\n\ ldr r1, _08143DFC @ =0x000053ff\n\ adds r0, r1, 0\n\ strh r0, [r2, 0x2]\n\ ldr r1, _08143E00 @ =0x0000529f\n\ adds r0, r1, 0\n\ strh r0, [r2, 0x4]\n\ ldr r1, _08143E04 @ =0x00007e94\n\ adds r0, r1, 0\n\ strh r0, [r2, 0x6]\n\ adds r0, r6, 0\n\ bl LoadSpriteSheet\n\ ldr r0, _08143E08 @ =gUnknown_0840CAB0\n\ bl LoadSpritePalette\n\ ldr r1, _08143DC8 @ =gMain\n\ ldr r2, _08143DCC @ =0x0000043c\n\ adds r1, r2\n\ ldrb r0, [r1]\n\ adds r0, 0x1\n\ strb r0, [r1]\n\ b _08143E90\n\ .align 2, 0\n\ _08143DC8: .4byte gMain\n\ _08143DCC: .4byte 0x0000043c\n\ _08143DD0: .4byte gReservedSpritePaletteCount\n\ _08143DD4: .4byte gBirchHelpGfx\n\ _08143DD8: .4byte gBirchGrassTilemap\n\ _08143DDC: .4byte 0x06003800\n\ _08143DE0: .4byte gBirchBagGrassPal + 2\n\ _08143DE4: .4byte 0x0201e000\n\ _08143DE8: .4byte 0x000007ff\n\ _08143DEC: .4byte 0x0201f800\n\ _08143DF0: .4byte gUnknown_0840CAA0\n\ _08143DF4: .4byte 0xfffff000\n\ _08143DF8: .4byte 0x0201f000\n\ _08143DFC: .4byte 0x000053ff\n\ _08143E00: .4byte 0x0000529f\n\ _08143E04: .4byte 0x00007e94\n\ _08143E08: .4byte gUnknown_0840CAB0\n\ _08143E0C:\n\ ldr r0, _08143EA0 @ =sub_8144514\n\ movs r1, 0\n\ bl CreateTask\n\ ldr r2, _08143EA4 @ =gTasks\n\ lsls r4, r6, 2\n\ adds r4, r6\n\ lsls r4, 3\n\ adds r4, r2\n\ lsls r0, 24\n\ lsrs r0, 24\n\ movs r1, 0\n\ mov r9, r1\n\ movs r5, 0\n\ strh r0, [r4, 0xE]\n\ movs r0, 0xE\n\ ldrsh r1, [r4, r0]\n\ lsls r0, r1, 2\n\ adds r0, r1\n\ lsls r0, 3\n\ adds r0, r2\n\ strh r7, [r0, 0x8]\n\ movs r0, 0xE\n\ ldrsh r1, [r4, r0]\n\ lsls r0, r1, 2\n\ adds r0, r1\n\ lsls r0, 3\n\ adds r0, r2\n\ strh r6, [r0, 0xA]\n\ movs r0, 0xE\n\ ldrsh r1, [r4, r0]\n\ lsls r0, r1, 2\n\ adds r0, r1\n\ lsls r0, 3\n\ adds r0, r2\n\ ldrh r1, [r4, 0x16]\n\ strh r1, [r0, 0xC]\n\ movs r0, 0x1\n\ negs r0, r0\n\ str r5, [sp]\n\ movs r1, 0\n\ movs r2, 0x10\n\ movs r3, 0\n\ bl BeginNormalPaletteFade\n\ ldr r0, _08143EA8 @ =REG_BG3HOFS\n\ strh r5, [r0]\n\ ldr r1, _08143EAC @ =REG_BG3VOFS\n\ movs r0, 0x20\n\ strh r0, [r1]\n\ subs r1, 0x10\n\ ldr r2, _08143EB0 @ =0x00000703\n\ adds r0, r2, 0\n\ strh r0, [r1]\n\ subs r1, 0xE\n\ movs r2, 0xCA\n\ lsls r2, 5\n\ adds r0, r2, 0\n\ strh r0, [r1]\n\ mov r1, r9\n\ mov r0, r8\n\ strb r1, [r0]\n\ ldr r0, _08143EB4 @ =gUnknown_0203935C\n\ strh r5, [r0]\n\ ldr r0, _08143EB8 @ =sub_8143B38\n\ str r0, [r4]\n\ _08143E90:\n\ add sp, 0x4\n\ pop {r3,r4}\n\ mov r8, r3\n\ mov r9, r4\n\ pop {r4-r7}\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ _08143EA0: .4byte sub_8144514\n\ _08143EA4: .4byte gTasks\n\ _08143EA8: .4byte 0x4000000 + 0x1c\n\ _08143EAC: .4byte 0x4000000 + 0x1e\n\ _08143EB0: .4byte 0x00000703\n\ _08143EB4: .4byte gUnknown_0203935C\n\ _08143EB8: .4byte sub_8143B38\n\ .syntax divided\n"); } #endif static void sub_8143EBC(u8 taskId) { if (gTasks[taskId].data[12]) { gTasks[taskId].data[12] -= 1; return; } BeginNormalPaletteFade(-1, 12, 0, 16, 0); gTasks[taskId].func = sub_8143F04; } static void sub_8143F04(u8 taskId) { if (gPaletteFade.active) { return; } sub_81450AC(taskId); gTasks[taskId].func = sub_8143F3C; } static void sub_8143F3C(u8 taskId) { u16 backup; sub_8144130(); ResetPaletteFade(); sub_8145128(0, 0x3800, 0); ResetSpriteData(); FreeAllSpritePalettes(); BeginNormalPaletteFade(-1, 8, 16, 0, 0); REG_BG0CNT = 0x700; backup = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = backup; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; REG_DISPCNT = 0x140; gTasks[taskId].data[0] = 0x100; gTasks[taskId].func = sub_8143FDC; } static void sub_8143FDC(u8 taskId) { if (gTasks[taskId].data[0]) { gTasks[taskId].data[0] -= 1; return; } BeginNormalPaletteFade(-1, 6, 0, 16, 0); gTasks[taskId].func = sub_8144024; } static void sub_8144024(u8 taskId) { if (gPaletteFade.active) { return; } sub_81452D0(0x3800, 0); BeginNormalPaletteFade(-1, 0, 0, 0, 0); gTasks[taskId].data[0] = 7200; gTasks[taskId].func = sub_8144080; } static void sub_8144080(u8 taskId) { if (gPaletteFade.active) { return; } if (gTasks[taskId].data[0] == 0) { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); gTasks[taskId].func = sub_8144114; return; } if (gMain.newKeys) { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); gTasks[taskId].func = sub_8144114; return; } if (gTasks[taskId].data[0] == 7144) { FadeOutBGM(8); } if (gTasks[taskId].data[0] == 6840) { m4aSongNumStart(BGM_END); } gTasks[taskId].data[0] -= 1; } static void sub_8144114(u8 taskId) { if (gPaletteFade.active) { return; } 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 sub_81441B8(u8 taskId) { u16 i; switch (gTasks[taskId].data[0]) { case 0: case 6: case 7: case 8: case 9: default: if (gPaletteFade.active) { return; } gTasks[taskId].data[0] = 1; gTasks[taskId].data[3] = 0x58; gTasks[gTasks[taskId].data[1]].data[14] = 0; gUnknown_02039320 = 0; return; case 1: if (gTasks[taskId].data[3] != 0) { gTasks[taskId].data[3] -= 1; return; } gTasks[taskId].data[0] += 1; return; case 2: REG_DISPCNT &= ~DISPCNT_BG0_ON; if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68) { if (gTasks[taskId].data[TD_CURRENT_PAGE] < PAGE_COUNT) { for (i = 0; i < 5; i++) { sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskId].data[TD_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); } gTasks[taskId].data[TD_CURRENT_PAGE] += 1; gTasks[taskId].data[0] += 1; gTasks[gTasks[taskId].data[1]].data[14] = 1; if (gTasks[gTasks[taskId].data[1]].data[13] == 1) { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); } else { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); } return; } gTasks[taskId].data[0] = 10; return; } gTasks[gTasks[taskId].data[1]].data[14] = 0; return; case 3: REG_DISPCNT |= DISPCNT_BG0_ON; if (gPaletteFade.active) { return; } gTasks[taskId].data[3] = UNK_DEFINE_82; gTasks[taskId].data[0] += 1; return; case 4: if (gTasks[taskId].data[3] != 0) { gTasks[taskId].data[3] -= 1; return; } if (sub_8144454((u8) gTasks[taskId].data[2], (u8) gTasks[taskId].data[1])) { gTasks[taskId].data[0] += 1; return; } gTasks[taskId].data[0] += 1; if (gTasks[gTasks[taskId].data[1]].data[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) { return; } MenuZeroFillWindowRect(0, 9, 29, 19); gTasks[taskId].data[0] = 2; return; case 10: gTasks[gTasks[taskId].data[1]].data[4] = 1; DestroyTask(taskId); return; } } #define LAST_PAGE (PAGE_TEXT_EDITOR) static u8 sub_8144454(u8 page, u8 taskId) { // Starts with bike + ocean + morning if (page == PAGE_PROGRAMMERS_1) { // Grass patch gTasks[taskId].data[11] = 2; } if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3) { // Bike + ocean + sunset gTasks[taskId].data[7] = 1; gTasks[taskId].data[11] = 1; } if (page == PAGE_GAME_DESIGNERS_2) { // Grass patch gTasks[taskId].data[11] = 2; } if (page == PAGE_MAP_DATA_DESIGNERS) { // Bike + forest + sunset gTasks[taskId].data[7] = 2; gTasks[taskId].data[11] = 1; } if (page == PAGE_SPECIAL_THANKS_1) { // Grass patch gTasks[taskId].data[11] = 2; } if (page == PAGE_TASK_MANAGERS) { // Bike + forest + sunset gTasks[taskId].data[7] = 3; gTasks[taskId].data[11] = 1; } if (page == PAGE_TRANSLATION_COORDINATOR) { // Grass patch gTasks[taskId].data[11] = 2; } if (page == LAST_PAGE) { // Bike + town + night gTasks[taskId].data[7] = 4; gTasks[taskId].data[11] = 1; } if (gTasks[taskId].data[11] != 0) { // Returns true if changed? return TRUE; } return FALSE; }