summaryrefslogtreecommitdiff
path: root/include/JSystem/JAudio2/JASSeqReader.h
blob: 416e1e81f01c236e872c6daf3a7c897878409310 (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
#ifndef JASSEQREADER_H
#define JASSEQREADER_H

#include "dolphin/types.h"

/**
 * @ingroup jsystem-jaudio
 * 
 */
class JASSeqReader {
public:
    /* 80296108 */ void init();
    /* 80296148 */ void init(void*);
    /* 8029618C */ bool call(u32);
    /* 802961CC */ bool loopStart(u32);
    /* 80296210 */ bool loopEnd();
    /* 8029627C */ bool ret();
    /* 802962B0 */ int readMidiValue();

    void jump(u32 param_1) {
        field_0x04 = (u8*)field_0x00 + param_1;
    }

    void jump(void* param_1) {
        field_0x04 = (u8*)param_1;
    }

    u32 get24(int param_0) {
        return (*(u32*)((int)field_0x00 + param_0 - 1)) & 0xffffff;
    }

    u32* getBase() { return field_0x00; }
    void* getAddr(u32 param_0) { return (u8*)field_0x00 + param_0; }
    u8 getByte(u32 param_0) { return *((u8*)field_0x00 + param_0); }
    u16 get16(u32 param_0) { return *(u16*)((u8*)field_0x00 + param_0); }
    u32 get32(u32 param_0) { return *(u32*)((u8*)field_0x00 + param_0); }
    u8* getCur() { return field_0x04; }
    u32 readByte() { return *field_0x04++; }
    u32 read16() {
        u16* tmp = (u16*)field_0x04;
        field_0x04 += 2;
        return *tmp;
    }
    u32 read24() {
        field_0x04--;
        u32* tmp = (u32*)field_0x04;
        field_0x04 += 4;
        return *tmp & 0x00ffffff;
    }
    u16 getLoopCount() const { return field_0x08 == 0 ? 0 : field_0x2c[field_0x08 - 1]; }

    /* 0x00 */ u32* field_0x00;
    /* 0x04 */ u8* field_0x04;
    /* 0x08 */ u32 field_0x08;
    /* 0x0C */ u16* field_0x0c[8];
    /* 0x2C */ u16 field_0x2c[8];
};

#endif /* JASSEQREADER_H */