summaryrefslogtreecommitdiff
path: root/src/more_input.c
blob: 9ab4c97d8d223ff1c8e51974f136f63f939ec5d0 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "global.h"
#include "input.h"

struct UnkInputStruct
{
    /* 0x0 */ u8 unk0;
    /* 0x1 */ u8 unk1;
    /* 0x2 */ u8 unk2;
    /* 0x3 */ u8 unk3;
    /* 0x4 */ u8 unk4;
    /* 0x5 */ u32 unk5;
    /* 0x9 */ u32 unk9;
    /* 0xD */ u32 unkD;
    /* 0x12 */ u32 unk11;
    /* 0x16 */ u32 unk15;
    /* 0x1A */ u32 unk19;
    /* 0x1E */ u32 unk1D;
    /* 0x24 */ u32 unk24;
    /* 0x28 */ u8 unk28;
    /* 0x29 */ u8 a_button;
    /* 0x2A */ u8 b_button;
    /* 0x2B */ u8 dpad_right;
    /* 0x2C */ u8 dpad_left;
};


extern void nullsub_34(struct UnkInputStruct *r0);
extern struct Inputs gRealInputs;
u32 sub_8012AE8(void);

u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1)
{
    if(r0 == NULL)
    {
        return sub_8012AE8();
    }
    if(r1 != -1)
    {
        nullsub_34(r0);
    }
    if(r0->unk1 != 0)
    {
        r0->unk1 = 0;
        return 1;
    }
    if(r0->unk2 == 0)
    {
        return sub_8012AE8();
    }
    r0->unk2 = r0->unk1;
    return 2;
}

u32 GetKeyPress(struct UnkInputStruct *r0)
{
    if(r0 != NULL)
    {
        if(r0->a_button != 0)
        {
            return 1;
        }
        if(r0->b_button != 0)
        {
            return 2;
        }
        if(r0->dpad_left != 0)
        {
            return 9;
        }
        if(r0->dpad_right != 0)
        {
            return 10;
        }
    }
    return sub_8012AE8();
}

u32 sub_8012AE8(void)
{
  if ((gRealInputs.held & R_BUTTON) != 0) {
    if ((gRealInputs.pressed & A_BUTTON) != 0) {
        return 11;
    }
    if ((gRealInputs.repeated & DPAD_UP) != 0) {
        return 12;
    }
    if ((gRealInputs.repeated & DPAD_DOWN) != 0) {
        return 13;
    }
    if ((gRealInputs.repeated & DPAD_LEFT) != 0) {
        return 14;
    }
    if ((gRealInputs.repeated & DPAD_RIGHT) != 0) {
        return 15;
    }
    if ((gRealInputs.repeated & R_BUTTON) != 0) {
        return  6;
    }
  }
  else
  {
    if ((gRealInputs.pressed & A_BUTTON) != 0) {
        return 1;
    }
    if ((gRealInputs.pressed & B_BUTTON) != 0) {
        return 2;
    }
    if ((gRealInputs.pressed & SELECT_BUTTON) != 0) {
        return 3;
    }
    if ((gRealInputs.pressed & START_BUTTON) != 0) {
        return 4;
    }
    if ((gRealInputs.repeated & DPAD_UP) != 0) {
        return 7;
    }
    if ((gRealInputs.repeated & DPAD_DOWN) != 0) {
        return 8;
    }
    if ((gRealInputs.repeated & DPAD_LEFT) != 0) {
        return 9;
    }
    if ((gRealInputs.repeated & DPAD_RIGHT) != 0) {
        return 10;
    }
    if ((gRealInputs.repeated & L_BUTTON) != 0) {
        return 5;
    }
  }
  return 0;
}