summaryrefslogtreecommitdiff
path: root/include/fieldmap.h
blob: 503b4b931270e7b2a14fff64eff68bb5cc5e8f9f (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
#ifndef GUARD_FIELDMAP_H
#define GUARD_FIELDMAP_H

typedef void (*TilesetCB)(void);

struct Tileset
{
    bool8 isCompressed;
    bool8 isSecondary;
    void *tiles;
    void *palettes;
    void *metatiles;
    void *metatileAttributes;
    TilesetCB callback;
};

struct MapData
{
    u32 width;
    u32 height;
    void *border;
    void *map;
    struct Tileset *primaryTileset;
    struct Tileset *secondaryTileset;
};

struct MapHeader
{
    struct MapData *mapData;
    void *events;
    u8 *mapScripts;
    // TODO: rest of struct
};

struct MapObject
{
    u32 active:1;
    u32 mapobj_bit_1:1;
    u32 mapobj_bit_2:1;
    u32 mapobj_bit_3:1;
    u32 mapobj_bit_4:1;
    u32 mapobj_bit_5:1;
    u32 mapobj_bit_6:1;
    u32 mapobj_bit_7:1;
    u32 mapobj_bit_8:1;
    u32 mapobj_bit_9:1;
    u32 mapobj_bit_10:1;
    u32 mapobj_bit_11:1;
    u32 mapobj_bit_12:1;
    u32 mapobj_bit_13:1;
    u32 mapobj_bit_14:1;
    u32 mapobj_bit_15:1;
    u32 mapobj_bit_16:1;
    u32 mapobj_bit_17:1;
    u32 mapobj_bit_18:1;
    u32 mapobj_bit_19:1;
    u32 mapobj_bit_20:1;
    u32 mapobj_bit_21:1;
    u32 mapobj_bit_22:1;
    u32 mapobj_bit_23:1;
    u32 mapobj_bit_24:1;
    u32 mapobj_bit_25:1;
    u32 mapobj_bit_26:1;
    u32 mapobj_bit_27:1;
    u32 mapobj_bit_28:1;
    u32 mapobj_bit_29:1;
    u32 mapobj_bit_30:1;
    u32 mapobj_bit_31:1;
    u8 spriteId;
    u8 graphicsId;
    u8 filler[0x1E];
};

struct MapObjectGraphicsInfo
{
    u16 tileTag;
    u16 paletteTag1;
    u16 paletteTag2;
    u16 size;
    s16 width;
    s16 height;
    u8 paletteSlot:4;
    u8 shadowSize:2;
    u8 inanimate:1;
    u8 disableReflectionPaletteLoad:1;
    u8 tracks;
    struct OamData *oam;
    struct SubspriteTable *subspriteTables;
    union AnimCmd **anims;
    struct SpriteFrameImage *images;
    union AffineAnimCmd **affineAnims;
};

struct PlayerAvatar
{
    u8 bitfield;
    u8 bike;
    u8 running2;
    u8 running1;
    u8 spriteId;
    u8 mapObjectId;
    // TODO: rest of struct
};

extern struct MapObject gMapObjects[];
extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
extern struct PlayerAvatar gPlayerAvatar;

#endif // GUARD_FIELDMAP_H