summaryrefslogtreecommitdiff
path: root/src/libultra/gu/sins.c
blob: 636b76bd6663539e0934fdcec99d87da4130f40f (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
#include "ultra64.h"

#include "sintable.inc.c"

/**
 * @param angle binang
 * @return sin(angle)*0x7FFF
 */
s16 sins(u16 angle) {
    s16 value;

    angle >>= 4;

    if (angle & 0x400) {
        value = sintable[0x3FF - (angle & 0x3FF)];
    } else {
        value = sintable[angle & 0x3FF];
    }

    if (angle & 0x800) {
        return -value;
    } else {
        return value;
    }
}