-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRolandE68ROM.bt
176 lines (155 loc) · 3.42 KB
/
RolandE68ROM.bt
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
//------------------------------------------------
//--- 010 Editor v12.0 Binary Template
//
// File: RolandE68ROM.bt
// Authors: Daniel Stien <[email protected]>
// Version:
// Purpose: Roland E-68 program ROM.
// Category: Misc
// File Mask: *.bin
// ID Bytes: 47 44 03 08
// History:
//------------------------------------------------
BigEndian();
#include "RolandArrangerTypes.bt"
FSeek(0x31AC);
char ModelBanner1[16];
struct {
FSeek(0x8FC3);
Label DrumsetNames(8)[9];
FSeek(0x97D0);
Label InstrumentNames(8)[241];
FSeek(0xD312);
Label StyleNames(8)[64];
} Names;
// Instruments
FSeek(0x10000);
Instrument Instruments[224];
Sample Samples[144];
// Drums
FSeek(0x20000);
DrumSample DrumSamples2[86];
FSeek(0x2BD00);
Sample DrumSamples3[79];
// Drums
//Instrument Drums[65];
FSeek(0x30000);
uint16 indices[128];
FSeek(0x38080);
Drumset Drumsets[13];
FSeek(0x3CA00);
GsInit GsInits;
struct {
FSeek(0x4107D);
char CreditsFull1[168];
FSeek(0x417DE);
Label RecorderLabels(8)[117];
FSeek(0x41D18);
Label FloppyLabels1(8)[67];
FSeek(0x47103);
char DemoBanner1[48];
Label DemoLabels1(8)[3];
FSeek(0x4EB7A);
Label TestMenuLabels(16)[94];
} Labels;
// Something...
FSeek(0x50000);
struct {
ubyte b0, b1, b2, b3;
} Something[2048];
// Style definitions
FSeek(0x5B119);
local int64 StyleSegments[7];
StyleSegments[0] = 0x70000;
StyleSegments[1] = 0x70000;
local int i;
for (i = 2; i < 7; i++) {
StyleSegments[i] = 0x80000 + (0x8000 * (i - i % 2));
Printf("Segment %d : Addr %05X\n", i+1, StyleSegments[i]);
}
local int s;
for (s = 0; s < 64; s++) {
// FIXME: Style name order and style definition order differ.
StyleHeader StyleHeaders(Names.StyleNames[s].Value, StyleSegments)<optimize=false>;
}
// Style events
FSeek(0x70000);
ChunkCollection Chunks1(52);
FSeek(0x78000);
ChunkCollection Chunks2(90);
// Strings
struct {
FSeek(0x831AC);
char ModelBanner2[16];
FSeek(0x833EB);
char CardModel[14];
FSeek(0x88FC3);
Label DrumsetNames2(8)[9];
FSeek(0x897D0);
Label InstumentNames2(8)[241];
FSeek(0x8D312);
Label StyleNames2(8)[64];
} Names;
// Style events
FSeek(0x90000);
ChunkCollection Chunks3(130);
FSeek(0x98000);
ChunkCollection Chunks4(182);
FSeek(0xA0000);
ChunkCollection Chunks5(240);
FSeek(0xA8000);
ChunkCollection Chunks6(353);
FSeek(0xB0000);
ChunkCollection Chunks7(783);
struct {
FSeek(0xC107D);
char CreditsFull2[168];
FSeek(0xC17DE);
Label MenuLabels(8)[117];
FSeek(0xC1D18);
char MenuLabels2[488];
char Charset[0x30]; // For 6-bit strings?
FSeek(0xC7103);
char DemoBanner2[48];
Label DemoLabels2(8)[3];
FSeek(0xCCB5E);
Label CardLabels(16)[9];
FSeek(0xCCDA4);
Label FloppyLabels2(16)[6];
FSeek(0x14F756);
Label VersionLabel(16);
} MiscLabels;
struct {
FSeek(0x170000);
Smf Demo1;
FSeek(0x179260);
Smf Demo2;
FSeek(0x17CB5C);
Smf Demo3;
FSeek(0x190000);
Smf Demo4; // Stl1
FSeek(0x193d7C);
Smf Demo5;
FSeek(0x196C7C);
Smf Demo6;
FSeek(0x19CACA);
Smf Demo7;
FSeek(0x1A0000);
Smf Demo8;
FSeek(0x1A6A06);
Smf Demo9;
FSeek(0x1AAB66);
Smf Demo10;
FSeek(0x1ACF9C);
Smf Demo11;
FSeek(0x1AF25E);
Smf Demo12;
FSeek(0x1B0000);
Smf Demo13;
FSeek(0x1B5C86);
Smf Demo14;
FSeek(0x1B9650);
Smf Demo15;
FSeek(0x1BCC22);
Smf Demo16;
} Demos;