summaryrefslogtreecommitdiff
path: root/include/d/col/bg/d_bg_plc.h
blob: c7e5d5fcfafccfbbb291f91f4f0c938cb7dc0429 (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
#ifndef D_BG_PLC_H
#define D_BG_PLC_H

#include "d/col/bg/d_bg_pc.h"

enum {
    ZELDA_CODE_SIZE = 0x14
};

struct PLC {
    /* 0x0 */ u32 magic;
    /* 0x4 */ u16 m_code_size;
    /* 0x6 */ u16 m_num;
    /* 0x8 */ sBgPc field_0x8[0];
};

class dBgPlc {
public:
    dBgPlc() : mBase(nullptr) {}
    void setBase(void *);

    const sBgPc *getCode(int idx) const {
        sBgPc *rv = mBase->field_0x8;
        rv += idx;
        return rv;
    }

    const dBgPc *GetDBgPc(int idx) const {
        return (const dBgPc *)getCode(idx);
    }

    u32 getGrpCode(int idx) const;

private:
    /* 0x00 */ PLC *mBase;
};

#endif