aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/structs.h
blob: 48b3f914d0df90f291e0876aa528baeb7acf04c0 (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
133
134
135
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */

#include "common/endian.h"

struct Sprite {
	uint16 _updateCallback;
	uint16 updateCallback() const { return READ_LE_UINT16(&_updateCallback); }
	void setUpdateCallback(uint16 v) { WRITE_LE_UINT16(&_updateCallback, v); }
	uint16 w2;
	uint16 w4;
	uint16 _frameData;
	uint16 frameData() const { return READ_LE_UINT16(&_frameData); }
	void setFrameData(uint16 v) { WRITE_LE_UINT16(&_frameData, v); }
	uint16 w8;
	uint8  x;
	uint8  y;
	uint16 w12;
	uint8  b14;
	uint8  b15;
	uint8  b16;
	uint8  b17;
	uint8  delay;
	uint8  frame;
	uint16 _objData;
	uint16 objData() const { return READ_LE_UINT16(&_objData); }
	void setObjData(uint16 v) { WRITE_LE_UINT16(&_objData, v); }
	uint8  b22;
	uint8  priority;
	uint16 w24;
	uint16 w26;
	uint8  b28;
	uint8  b29;
	uint8  type;
	uint8  hidden;
};

struct ObjData {
	uint8 b0;
	uint8 b1;
	uint8 b2;
	uint8 b3;
	uint8 b4;
	uint8 b5;
	uint8 b6;
	uint8 delay;
	uint8 type;
	uint8 b9;
	uint8 b10;
	uint8 b11;
	uint8 b12;
	uint8 b13;
	uint8 b14;
	uint8 b15;
	uint8 b16;
	uint8 b17;
	uint8 b18[256]; // NB: Don't know the size yet
};

struct Frame {
	uint8  width;
	uint8  height;
	uint16 _ptr;
	uint16 ptr() const { return READ_LE_UINT16(&_ptr); }
	void setPtr(uint16 v) { WRITE_LE_UINT16(&_ptr, v); }
	uint8  x;
	uint8  y;
};

struct Reel {
	uint8 frame_lo;
	uint8 frame_hi;
	uint16 frame() const { return READ_LE_UINT16(&frame_lo); }
	void setFrame(uint16 v) { WRITE_LE_UINT16(&frame_lo, v); }
	uint8 x;
	uint8 y;
	uint8 b4;
};

struct Room {
	uint8 name[10];
	uint8 b10;
	uint8 b11;
	uint8 b12;
	uint8 roomsSample;
	uint8 b14;
	uint8 mapX;
	uint8 mapY;
	uint8 b17;
	uint8 b18;
	uint8 b19;
	uint8 liftFlag;
	uint8 b21;
	uint8 b22;
	uint8 countToOpen;
	uint8 liftPath;
	uint8 doorPath;
	uint8 b26;
	uint8 b27;
	uint8 b28;
	uint8 b29;
	uint8 b30;
	uint8 b31;
};

struct Rain {
	uint8 x;
	uint8 y;
	uint8 size;
	uint8 w3_lo;
	uint8 w3_hi;
	uint16 w3() const { return READ_LE_UINT16(&w3_lo); }
	void setW3(uint16 v) { WRITE_LE_UINT16(&w3_lo, v); }
	uint8 b5;
};