ScummVM API documentation
castle.musicdata.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef FREESCAPE_CASTLE_MUSICDATA_H
23 #define FREESCAPE_CASTLE_MUSICDATA_H
24 
25 #include "common/scummsys.h"
26 
35 namespace Freescape {
36 namespace CastleMusicData {
37 
38 const byte kOrderTranspose = 0x80;
39 const byte kOrderEnd = 0xFF;
40 
42  byte arpeggio;
43  byte pulseWidth;
44  byte control;
45  byte attackDecay;
46  byte sustainRelease;
47  byte gateOffTime;
48  byte pitchStep;
49  byte vibrato;
50  byte effect;
51 };
52 
53 const InstrumentData kInstruments[] = {
54  { 0x00, 0x05, 0x41, 0x0A, 0x0F, 0x02, 0x7F, 0x00, 0x00 },
55  { 0x00, 0x05, 0x81, 0x25, 0x07, 0x02, 0x7F, 0x00, 0x05 },
56  { 0x00, 0x05, 0x00, 0x1B, 0x07, 0x02, 0x7F, 0x00, 0x05 },
57  { 0x00, 0x05, 0x81, 0x18, 0x07, 0x02, 0x7F, 0x00, 0x00 },
58  { 0x00, 0x08, 0x41, 0x06, 0x0A, 0x02, 0x7F, 0x20, 0x05 },
59  { 0x00, 0x06, 0x41, 0x09, 0x33, 0x02, 0x7F, 0x10, 0x00 },
60  { 0x00, 0x04, 0x41, 0x0A, 0x0F, 0x02, 0x7F, 0x18, 0x00 },
61  { 0x00, 0x08, 0x41, 0x13, 0x0F, 0x02, 0x7F, 0x00, 0x05 }
62 };
63 
64 extern const byte kCastleSIDFreqLo[96];
65 extern const byte kCastleSIDFreqHi[96];
66 
67 uint16 getCastleSIDFrequency(int note);
68 const int8 *getCastleVibratoTable(byte vibrato);
69 byte getCastleSIDControlForInstrument(byte instrument);
70 
71 const byte kOrderList0[] = {
72  0x80, 0xFB, 0x00, 0x03, 0x03, 0x03, 0x03, 0x0A, 0x0A, 0x0D, 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12,
73  0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1A, 0xFF
74 };
75 
76 const byte kOrderList1[] = {
77  0x80, 0xFB, 0x01, 0x04, 0x06, 0x08, 0x08, 0x0B, 0x0B, 0x0E, 0x11, 0x11, 0x13, 0x13, 0x16, 0x13,
78  0x13, 0x16, 0x18, 0x18, 0x16, 0x1A, 0x00, 0x01, 0x1B, 0xFF
79 };
80 
81 const byte kOrderList2[] = {
82  0x80, 0xFB, 0x02, 0x05, 0x07, 0x09, 0x09, 0x0C, 0x0C, 0x0F, 0x10, 0x10, 0x14, 0x15, 0x17, 0x14,
83  0x15, 0x17, 0x19, 0x19, 0x17, 0x1B, 0x01, 0x00, 0x1C, 0xFF
84 };
85 
86 const byte *const kChannelOrderLists[] = {
87  kOrderList0,
88  kOrderList1,
89  kOrderList2
90 };
91 
92 const uint16 kPatternOffsets[] = {
93  0, 52, 104, 124, 158, 164, 170, 182, 196, 216, 238, 288,
94  311, 334, 390, 426, 460, 512, 553, 634, 690, 724, 778, 833,
95  873, 927, 937, 943, 949
96 };
97 
98 const byte kPatternData[] = {
99  0x86, 0x1B, 0x18, 0x1E, 0x18, 0x19, 0x18, 0x1B, 0x18, 0x16, 0x18, 0x19, 0x18, 0x1D, 0x18, 0x19,
100  0x18, 0x86, 0x1B, 0x0C, 0x27, 0x0C, 0x20, 0x0C, 0x22, 0x0C, 0x23, 0x0C, 0x1E, 0x0C, 0x20, 0x0C,
101  0x22, 0x0C, 0x86, 0x1B, 0x0C, 0x27, 0x0C, 0x20, 0x0C, 0x22, 0x0C, 0x23, 0x0C, 0x1E, 0x0C, 0x20,
102  0x0C, 0x22, 0x0C, 0xFF, 0x85, 0xA0, 0x0C, 0x1B, 0x18, 0x1E, 0x18, 0x19, 0x18, 0x1B, 0x18, 0x16,
103  0x18, 0x19, 0x18, 0x1D, 0x18, 0x19, 0x18, 0x85, 0x1B, 0x0C, 0x27, 0x0C, 0x20, 0x0C, 0x22, 0x0C,
104  0x23, 0x0C, 0x1E, 0x0C, 0x20, 0x0C, 0x22, 0x0C, 0x85, 0x1B, 0x0C, 0x27, 0x0C, 0x20, 0x0C, 0x22,
105  0x0C, 0x23, 0x0C, 0x1E, 0x0C, 0x20, 0x0C, 0xFF, 0x80, 0xA0, 0xC0, 0x27, 0x18, 0x22, 0x18, 0x23,
106  0x18, 0x25, 0x18, 0x27, 0x18, 0x22, 0x18, 0x20, 0x18, 0x1E, 0x18, 0xFF, 0x86, 0x0F, 0x24, 0x0F,
107  0x0C, 0x0A, 0x24, 0x0A, 0x0C, 0x06, 0x24, 0x06, 0x0C, 0x08, 0x24, 0x08, 0x0C, 0x0F, 0x24, 0x0F,
108  0x0C, 0x0A, 0x24, 0x0A, 0x0C, 0x06, 0x24, 0x06, 0x0C, 0x08, 0x24, 0x08, 0x0C, 0xFF, 0x86, 0x1B,
109  0xC0, 0xA0, 0xC0, 0xFF, 0x85, 0x1B, 0xC0, 0xA0, 0xC0, 0xFF, 0x85, 0x27, 0x30, 0x2F, 0x30, 0x2C,
110  0x30, 0x2E, 0x30, 0xA0, 0xC0, 0xFF, 0x85, 0xA0, 0x0C, 0x27, 0x30, 0x2F, 0x30, 0x2C, 0x30, 0x2E,
111  0x30, 0xA0, 0xB4, 0xFF, 0x86, 0x27, 0x30, 0x2A, 0x30, 0x29, 0x18, 0x2A, 0x18, 0x29, 0x18, 0x27,
112  0x0C, 0x25, 0x0C, 0x27, 0x30, 0x22, 0x90, 0xFF, 0x86, 0xA0, 0x0C, 0x27, 0x30, 0x2A, 0x30, 0x29,
113  0x18, 0x2A, 0x18, 0x29, 0x18, 0x27, 0x0C, 0x25, 0x0C, 0x27, 0x30, 0x22, 0x84, 0xFF, 0x80, 0x0F,
114  0x18, 0x1B, 0x0C, 0x0F, 0x0C, 0x0A, 0x18, 0x16, 0x0C, 0x0A, 0x0C, 0x06, 0x18, 0x12, 0x0C, 0x06,
115  0x0C, 0x08, 0x18, 0x14, 0x0C, 0x08, 0x0C, 0x0F, 0x18, 0x1B, 0x0C, 0x0F, 0x0C, 0x0A, 0x18, 0x16,
116  0x0C, 0x0A, 0x0C, 0x0B, 0x18, 0x17, 0x0C, 0x0B, 0x0C, 0x0D, 0x18, 0x19, 0x0C, 0x0D, 0x0C, 0xFF,
117  0x85, 0x27, 0x30, 0x2E, 0x30, 0x29, 0x30, 0x2A, 0x30, 0x27, 0x48, 0x86, 0x27, 0x18, 0x29, 0x18,
118  0x2A, 0x18, 0x2C, 0x18, 0x2E, 0x18, 0xFF, 0x85, 0x2A, 0x30, 0x31, 0x30, 0x2C, 0x30, 0x2E, 0x30,
119  0x1B, 0x54, 0x86, 0x27, 0x18, 0x29, 0x18, 0x2A, 0x18, 0x2C, 0x18, 0x2E, 0x0C, 0xFF, 0x80, 0x0F,
120  0x18, 0x1B, 0x0C, 0x0F, 0x0C, 0x0A, 0x0C, 0x16, 0x0C, 0x0A, 0x0C, 0x06, 0x18, 0x06, 0x0C, 0x12,
121  0x0C, 0x06, 0x0C, 0x08, 0x0C, 0x14, 0x0C, 0x08, 0x18, 0x0F, 0x18, 0x1B, 0x0C, 0x0F, 0x0C, 0x0A,
122  0x0C, 0x16, 0x0C, 0x0A, 0x0C, 0x06, 0x18, 0x06, 0x0C, 0x12, 0x0C, 0x06, 0x0C, 0x08, 0x0C, 0x14,
123  0x0C, 0x0D, 0x0C, 0x19, 0x0C, 0xFF, 0x85, 0xA0, 0x18, 0x27, 0x0C, 0x25, 0x0C, 0x27, 0x30, 0x22,
124  0x0C, 0x22, 0x0C, 0x20, 0x0C, 0x22, 0x18, 0x22, 0x0C, 0x1E, 0x18, 0x1B, 0x30, 0x1E, 0x30, 0x1D,
125  0x18, 0x1E, 0x0C, 0x1D, 0x0C, 0x1B, 0x18, 0x19, 0x18, 0xFF, 0x85, 0xA0, 0x18, 0x2A, 0x0C, 0x29,
126  0x0C, 0x2A, 0x30, 0x25, 0x0C, 0x25, 0x0C, 0x23, 0x0C, 0x25, 0x18, 0x25, 0x0C, 0x22, 0x18, 0x1E,
127  0x60, 0x27, 0x18, 0x25, 0x18, 0x22, 0x0C, 0x20, 0x0C, 0x22, 0x18, 0xFF, 0x85, 0x27, 0x0C, 0x33,
128  0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x2F, 0x0C, 0x2A, 0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x27, 0x0C, 0x33,
129  0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x2F, 0x0C, 0x2A, 0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x27, 0x0C, 0x33,
130  0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x2F, 0x0C, 0x2A, 0x0C, 0x2C, 0x0C, 0x2E, 0x0C, 0x27, 0x60, 0xFF,
131  0x80, 0xA0, 0x18, 0x27, 0x18, 0x29, 0x18, 0x2A, 0x18, 0x2C, 0x0C, 0x2A, 0x0C, 0x29, 0x0C, 0x2A,
132  0x0C, 0x2E, 0x24, 0x2A, 0x06, 0x29, 0x06, 0x27, 0x6C, 0x86, 0x22, 0x0C, 0x25, 0x0C, 0x27, 0x0C,
133  0x29, 0x0C, 0x2A, 0x0C, 0x29, 0x0C, 0x25, 0x0C, 0xFF, 0x84, 0x12, 0x0C, 0x23, 0x0C, 0x81, 0x1E,
134  0x0C, 0x84, 0x12, 0x0C, 0x23, 0x0C, 0x23, 0x0C, 0x81, 0x1E, 0x18, 0x84, 0x12, 0x0C, 0x23, 0x0C,
135  0x81, 0x12, 0x0C, 0x84, 0x12, 0x0C, 0x23, 0x06, 0x19, 0x06, 0x12, 0x0C, 0x81, 0x1E, 0x18, 0x84,
136  0x12, 0x0C, 0x23, 0x0C, 0x81, 0x1E, 0x0C, 0x84, 0x12, 0x0C, 0x23, 0x0C, 0x23, 0x0C, 0x81, 0x1E,
137  0x18, 0x84, 0x12, 0x0C, 0x23, 0x0C, 0x81, 0x12, 0x0C, 0x84, 0x12, 0x0C, 0x23, 0x06, 0x19, 0x06,
138  0x12, 0x0C, 0x81, 0x1E, 0x0C, 0x1E, 0x06, 0x1E, 0x06, 0xFF, 0x80, 0x0F, 0x18, 0x1B, 0x0C, 0x0F,
139  0x0C, 0x1B, 0x0C, 0x1B, 0x0C, 0x0F, 0x0C, 0x08, 0x18, 0x08, 0x0C, 0x14, 0x0C, 0x08, 0x0C, 0x06,
140  0x0C, 0x12, 0x0C, 0x06, 0x18, 0x0F, 0x18, 0x0F, 0x0C, 0x0F, 0x0C, 0x1B, 0x0C, 0x1B, 0x0C, 0x0F,
141  0x0C, 0x08, 0x18, 0x14, 0x0C, 0x14, 0x0C, 0x08, 0x0C, 0x0A, 0x0C, 0x16, 0x0C, 0x0D, 0x0C, 0x19,
142  0x0C, 0xFF, 0x85, 0x27, 0x48, 0x2E, 0x18, 0x2C, 0x18, 0x2A, 0x18, 0x29, 0x0C, 0x2A, 0x0C, 0x2C,
143  0x18, 0x27, 0x24, 0x25, 0x0C, 0x27, 0x18, 0x2A, 0x18, 0x2C, 0x0C, 0x2E, 0x0C, 0x25, 0x0C, 0x2A,
144  0x24, 0x29, 0x18, 0xFF, 0x85, 0x27, 0x18, 0x27, 0x06, 0x29, 0x06, 0x2A, 0x0C, 0x2C, 0x0C, 0x2A,
145  0x0C, 0x29, 0x0C, 0x2A, 0x0C, 0x27, 0x18, 0x25, 0x18, 0x22, 0x18, 0x20, 0x0C, 0x22, 0x0C, 0x1E,
146  0x18, 0x1D, 0x0C, 0x1E, 0x0C, 0x1B, 0x18, 0x1B, 0x0C, 0x1D, 0x0C, 0x1E, 0x0C, 0x20, 0x0C, 0x25,
147  0x18, 0x20, 0x18, 0x20, 0x06, 0x22, 0x06, 0x25, 0x0C, 0xFF, 0x08, 0x18, 0x14, 0x0C, 0x08, 0x0C,
148  0x14, 0x0C, 0x12, 0x0C, 0x14, 0x0C, 0x06, 0x18, 0x06, 0x0C, 0x12, 0x0C, 0x06, 0x0C, 0x12, 0x18,
149  0x11, 0x0C, 0x12, 0x0C, 0x08, 0x18, 0x14, 0x0C, 0x08, 0x0C, 0x14, 0x0C, 0x08, 0x0C, 0x09, 0x0C,
150  0x0A, 0x18, 0x22, 0x0C, 0x25, 0x0C, 0x22, 0x0C, 0x20, 0x0C, 0x22, 0x0C, 0x25, 0x0C, 0x2A, 0x0C,
151  0xFF, 0x85, 0x1E, 0x18, 0x1E, 0x18, 0x20, 0x0C, 0x22, 0x18, 0x25, 0x18, 0x22, 0x0C, 0x20, 0x0C,
152  0x22, 0x0C, 0x20, 0x18, 0x1B, 0x18, 0x1E, 0x18, 0x1E, 0x0C, 0x20, 0x0C, 0x22, 0x0C, 0x25, 0x18,
153  0x27, 0x3C, 0x22, 0x18, 0x25, 0x0C, 0x2A, 0x0C, 0xFF, 0x80, 0x0F, 0x18, 0x1B, 0x0C, 0x0F, 0x0C,
154  0x1B, 0x0C, 0x1B, 0x0C, 0x0F, 0x0C, 0x09, 0x18, 0x09, 0x0C, 0x15, 0x0C, 0x09, 0x0C, 0x15, 0x0C,
155  0x15, 0x0C, 0x09, 0x18, 0x0F, 0x18, 0x1B, 0x0C, 0x0F, 0x0C, 0x1B, 0x0C, 0x1B, 0x0C, 0x0F, 0x0C,
156  0x09, 0x18, 0x09, 0x0C, 0x15, 0x0C, 0x09, 0x0C, 0x15, 0x0C, 0x15, 0x0C, 0x09, 0x18, 0xFF, 0x85,
157  0x27, 0x60, 0x2D, 0x60, 0x27, 0x60, 0x21, 0x60, 0xFF, 0x85, 0x0F, 0xC0, 0xA0, 0xC0, 0xFF, 0x86,
158  0x27, 0xC0, 0xA0, 0xC0, 0xFF, 0x85, 0x1B, 0xC0, 0xA0, 0xC0, 0xFF
159 };
160 
161 } // namespace CastleMusicData
162 } // namespace Freescape
163 
164 #endif
Definition: area.h:36
Definition: castle.musicdata.h:41