summaryrefslogtreecommitdiff
path: root/src/subtask/subtaskMapHint.c
blob: d514770d54c20d6abc40e732434bd7c251701b6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
 * @file subtask.c
 * @ingroup Subtasks
 *
 * @brief Map Hint Subtask
 */
#include "menu.h"
#include "subtask.h"
#include "common.h"
#include "main.h"
#include "sound.h"
#include "save.h"
#include "affine.h"
#include "fade.h"

void sub_080A6438();

void Subtask_MapHint(void) {
    extern void (*const Subtask_MapHint_Functions[])(void);
    FlushSprites();
    Subtask_MapHint_Functions[gMenu.menuType]();
    if ((gGenericMenu.unk2c & 0x20) != 0) {
        sub_080A6438();
    }
    sub_080A6498();
    CopyOAM();
}

void Subtask_MapHint_0(void) {
    extern const u16 gUnk_08128F4C[];
    u32 val;
    sub_080A4D34();
    sub_080A4DB8(4);
    sub_080A6290();
    gScreen.lcd.displayControl = gScreen.lcd.displayControl & 0xf7ff;
    SetColor(0, gPaletteBuffer[81]);
    val = gUnk_08128F4C[gUI.field_0x3];
    gSave.map_hints |= val;
    gGenericMenu.unk10.h[1] = val & gGenericMenu.unk10.h[0];
    gGenericMenu.unk10.h[0] = 0;
    gMenu.transitionTimer = 60;
    SetMenuType(1);
    SetFade(FADE_INSTANT, 8);
}

void Subtask_MapHint_1(void) {
    if (!gFadeControl.active) {
        gGenericMenu.unk2c++;
        switch (gMenu.transitionTimer) {
            case 0x1e:
                gGenericMenu.unk10.h[0] = gGenericMenu.unk10.h[1];
                gGenericMenu.unk2c = 0x20;
                SoundReq(SFX_103);
            default:
                gMenu.transitionTimer--;
                break;
            case 0:
                switch (gInput.newKeys) {
                    case A_BUTTON:
                    case B_BUTTON:
                    case START_BUTTON:
                        Subtask_Exit();
                        break;
                }
                break;
        }
    }
}