aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-11-19 21:15:25 +0300
committerWohlstand <admin@wohlnet.ru>2017-11-19 21:15:25 +0300
commit7c9e90eb6b6e2b7459f056a9c76a1e3a12c27880 (patch)
tree2a4bcf00bd0c6741cb257033bab05b8d4f0bb13b
parent1ebfef778e67329d221d82eb11592a50b0b49b6a (diff)
downloadlibADLMIDI-7c9e90eb6b6e2b7459f056a9c76a1e3a12c27880.tar.gz
libADLMIDI-7c9e90eb6b6e2b7459f056a9c76a1e3a12c27880.tar.bz2
libADLMIDI-7c9e90eb6b6e2b7459f056a9c76a1e3a12c27880.zip
Upgrated support for WOPL bank format to v3
-rw-r--r--fm_banks/adldata-cache.datbin538864 -> 538864 bytes
-rw-r--r--fm_banks/wopl_files/DMXOPL3-by-sneakernets.woplbin15959 -> 15959 bytes
-rw-r--r--fm_banks/wopl_files/GM-By-J.A.Nguyen-and-Wohlstand.woplbin15959 -> 16983 bytes
-rw-r--r--fm_banks/wopl_files/lostvik.woplbin31899 -> 33947 bytes
-rw-r--r--src/adldata.cpp626
-rw-r--r--src/adlmidi_load.cpp54
-rw-r--r--utils/gen_adldata/file_formats/load_wopl.h21
-rw-r--r--utils/gen_adldata/measurer.cpp4
8 files changed, 364 insertions, 341 deletions
diff --git a/fm_banks/adldata-cache.dat b/fm_banks/adldata-cache.dat
index d59a91e..3a3e0ad 100644
--- a/fm_banks/adldata-cache.dat
+++ b/fm_banks/adldata-cache.dat
Binary files differ
diff --git a/fm_banks/wopl_files/DMXOPL3-by-sneakernets.wopl b/fm_banks/wopl_files/DMXOPL3-by-sneakernets.wopl
index a8d217f..1070f47 100644
--- a/fm_banks/wopl_files/DMXOPL3-by-sneakernets.wopl
+++ b/fm_banks/wopl_files/DMXOPL3-by-sneakernets.wopl
Binary files differ
diff --git a/fm_banks/wopl_files/GM-By-J.A.Nguyen-and-Wohlstand.wopl b/fm_banks/wopl_files/GM-By-J.A.Nguyen-and-Wohlstand.wopl
index 0b48cc5..b6bf991 100644
--- a/fm_banks/wopl_files/GM-By-J.A.Nguyen-and-Wohlstand.wopl
+++ b/fm_banks/wopl_files/GM-By-J.A.Nguyen-and-Wohlstand.wopl
Binary files differ
diff --git a/fm_banks/wopl_files/lostvik.wopl b/fm_banks/wopl_files/lostvik.wopl
index ce2c07e..6f10738 100644
--- a/fm_banks/wopl_files/lostvik.wopl
+++ b/fm_banks/wopl_files/lostvik.wopl
Binary files differ
diff --git a/src/adldata.cpp b/src/adldata.cpp
index 7bf37ed..955dd7e 100644
--- a/src/adldata.cpp
+++ b/src/adldata.cpp
@@ -4,7 +4,7 @@
* FROM A NUMBER OF SOURCES, MOSTLY PC GAMES.
* PREPROCESSED, CONVERTED, AND POSTPROCESSED OFF-SCREEN.
*/
-const adldata adl[4386] =
+const adldata adl[4384] =
{ // ,---------+-------- Wave select settings
// | ,-------ч-+------ Sustain/release rates
// | | ,-----ч-ч-+---- Attack/decay rates
@@ -4045,11 +4045,27 @@ const adldata adl[4386] =
{ 0x0F1F10F,0x007840F, 0x00,0x08, 0xC, +12 },
{ 0x6EF8800,0x608F502, 0x13,0x00, 0x0, +8 },
{ 0x0F1D101,0x0078400, 0x00,0x00, 0xE, +1 },
- { 0x254F307,0x306F805, 0x04,0x0B, 0x6, -5 },
- { 0x254F307,0x206F805, 0x04,0x0B, 0x8, +0 },
+ { 0x254F307,0x307F905, 0x04,0x0B, 0x6, -5 },
+ { 0x254F307,0x207F905, 0x04,0x0B, 0x8, +0 },
{ 0x25CD808,0x32B8A06, 0x04,0x08, 0xC, +0 },
{ 0x2F2E327,0x3F5C525, 0x04,0x08, 0xA, -5 },
{ 0x2F2F326,0x2F5C525, 0x04,0x08, 0x8, +0 },
+ { 0x292F108,0x354F201, 0x00,0x08, 0x8, +12 },
+ { 0x283E108,0x334D700, 0x00,0x08, 0x8, +12 },
+ { 0x283E109,0x334D500, 0x00,0x08, 0x8, +11 },
+ { 0x2E1F119,0x3F3F11B, 0x04,0x08, 0x8, +0 },
+ { 0x251F206,0x263C504, 0x04,0x09, 0xA, +0 },
+ { 0x241F287,0x353B502, 0x05,0x09, 0xA, +1 },
+ { 0x292F108,0x354F201, 0x00,0x03, 0x8, +12 },
+ { 0x456FB02,0x017F700, 0x81,0x00, 0x0, +12 },
+ { 0x556FA01,0x117F701, 0x00,0x0D, 0x6, +10 },
+ { 0x556FB02,0x117F701, 0x81,0x0D, 0x6, +10 },
+ { 0x106F680,0x016F610, 0x00,0x00, 0xC, +0 },
+ { 0x20F6F00,0x20F6F00, 0x00,0x00, 0x0, +0 },
+ { 0x106F680,0x016F610, 0x00,0x00, 0x6, +0 },
+ { 0x20F4F00,0x20F4F00, 0x00,0x00, 0x6, +0 },
+ { 0x1DC5D01,0x06FF79F, 0x0B,0x00, 0xA, +12 },
+ { 0x1C7C900,0x05FF49F, 0x07,0x00, 0xA, +12 },
{ 0x3F0E00A,0x0F7F21F, 0x7C,0x40, 0x8, +0 },
{ 0x3E0F50A,0x0FAF31F, 0x7C,0x40, 0x9, +0 },
{ 0x1F5F213,0x0F5F111, 0xC6,0x0A, 0x0, +0 },
@@ -4190,8 +4206,8 @@ const adldata adl[4386] =
{ 0x5BAF900,0x0B4F211, 0x87,0x48, 0x6, +0 },
{ 0x223F832,0x4055421, 0x99,0x8A, 0xC, +0 },
{ 0x433CB32,0x5057561, 0x9B,0x8A, 0xA, +0 },
- { 0x1029023,0x4043561, 0x5B,0x85, 0x4, +0 },
- { 0x4109023,0x2043520, 0xA8,0x85, 0xA, +0 },
+ { 0x1029033,0x4044561, 0x5B,0x85, 0x4, +0 },
+ { 0x4109033,0x2044520, 0xA8,0x85, 0xA, +0 },
{ 0x1254732,0x40256B1, 0xA4,0x0A, 0x8, +0 },
{ 0x1054934,0x50256B2, 0xAA,0x0D, 0x8, -12 },
{ 0x0031122,0x1046121, 0x58,0x84, 0x0, +0 },
@@ -4249,8 +4265,8 @@ const adldata adl[4386] =
{ 0x32B7320,0x12BF131, 0x40,0x00, 0x8, +0 },
{ 0x5029072,0x0069061, 0x96,0x09, 0x8, +0 },
{ 0x1019031,0x0069061, 0x1A,0x09, 0x6, +0 },
- { 0x195C120,0x1637030, 0x43,0x80, 0xA, +12 },
- { 0x1959120,0x1636131, 0x49,0x00, 0xA, +7 },
+ { 0x245C224,0x2550133, 0x83,0x80, 0x9, -36 },
+ { 0x2459224,0x2556133, 0x83,0x80, 0x9, -36 },
{ 0x132ED10,0x3E7D010, 0x87,0x08, 0x6, +12 },
{ 0x132ED30,0x3E7D010, 0x87,0x0D, 0x6, +12 },
{ 0x2946374,0x005A0A1, 0xA5,0x05, 0x2, +0 },
@@ -4286,8 +4302,8 @@ const adldata adl[4386] =
{ 0x2045501,0x2445501, 0x15,0x0D, 0xA, +0 },
{ 0x0B37121,0x5F48221, 0x16,0x08, 0x2, +0 },
{ 0x2B37102,0x5F48221, 0x90,0x08, 0x6, +0 },
- { 0x1127533,0x4F4F211, 0x58,0x0A, 0x6, +0 },
- { 0x3F0F014,0x6F7F611, 0x40,0x4A, 0xA, +0 },
+ { 0x1127533,0x4F4F211, 0x58,0x03, 0x6, +0 },
+ { 0x3F0F014,0x6F7F611, 0x40,0x43, 0xA, +0 },
{ 0x033F201,0x373F402, 0xD1,0x8A, 0x0, +0 },
{ 0x6A7F907,0x229A904, 0x1A,0x00, 0xA, -12 },
{ 0x332F320,0x6E49423, 0x0E,0x08, 0x8, +0 },
@@ -4321,29 +4337,20 @@ const adldata adl[4386] =
{ 0x6019460,0x1142120, 0x26,0x00, 0xC, -14 },
{ 0x200832F,0x6044020, 0x80,0x00, 0xE, -36 },
{ 0x200832F,0x6044020, 0x80,0x00, 0xE, -35 },
- { 0x230732F,0x6E6F400, 0x00,0x00, 0xE, +0 },
+ { 0x2305431,0x6E7F600, 0x00,0x00, 0xE, +0 },
{ 0x057FB00,0x046F800, 0x00,0x00, 0x0, +12 },
{ 0x287F702,0x678F802, 0x80,0x88, 0xE, +12 },
{ 0x2F7F602,0x0F8F802, 0x00,0x88, 0xE, +12 },
{ 0x05476C1,0x30892C5, 0x80,0x08, 0x0, +0 },
{ 0x05477C1,0x30892C5, 0x00,0x08, 0xA, -2 },
{ 0x508F601,0x104F600, 0x08,0x00, 0x6, +0 },
- { 0x254F307,0x307F905, 0x04,0x0B, 0x6, -5 },
- { 0x254F307,0x207F905, 0x04,0x0B, 0x8, +0 },
{ 0x254D307,0x3288905, 0x04,0x08, 0xA, -5 },
{ 0x508F601,0x104F600, 0x0C,0x00, 0x8, +0 },
- { 0x292F108,0x354F201, 0x00,0x08, 0x8, +12 },
{ 0x210F509,0x305FE03, 0x8A,0x88, 0xE, +12 },
{ 0x200F508,0x305FE03, 0xC7,0x88, 0xC, +12 },
- { 0x283E108,0x334D700, 0x00,0x08, 0x8, +12 },
- { 0x283E109,0x334D500, 0x00,0x08, 0x8, +11 },
- { 0x2E1F119,0x3F3F11B, 0x04,0x08, 0x8, +0 },
{ 0x2777603,0x3679601, 0x87,0x08, 0x6, +12 },
{ 0x277C643,0x3679601, 0x87,0x08, 0xE, +12 },
- { 0x251F206,0x263C504, 0x04,0x09, 0xA, +0 },
- { 0x241F287,0x353B502, 0x05,0x09, 0xA, +1 },
{ 0x366F905,0x099F701, 0x00,0x00, 0xC, +12 },
- { 0x292F108,0x354F201, 0x00,0x03, 0x8, +12 },
{ 0x422F120,0x056B40E, 0x81,0x00, 0xA, +12 },
{ 0x212FD04,0x305FD03, 0x01,0x00, 0x8, +12 },
{ 0x2A8F9E3,0x0779643, 0x1E,0x08, 0x2, +6 },
@@ -4354,22 +4361,13 @@ const adldata adl[4386] =
{ 0x0A5F7E9,0x0D8994A, 0x29,0x08, 0xC, +10 },
{ 0x2A8F9E2,0x0779642, 0x1E,0x00, 0xE, +8 },
{ 0x0A5F7E9,0x5D8994A, 0x08,0x00, 0xC, +0 },
- { 0x456FB02,0x017F700, 0x81,0x00, 0x0, +12 },
- { 0x556FA01,0x117F701, 0x00,0x0D, 0x6, +10 },
- { 0x556FB02,0x117F701, 0x81,0x0D, 0x6, +10 },
{ 0x367FD01,0x098F601, 0x00,0x08, 0x8, +12 },
{ 0x367FD10,0x098F901, 0x00,0x0D, 0x8, +6 },
{ 0x367FD10,0x098F901, 0x00,0x0D, 0x8, +11 },
{ 0x098600F,0x3FC8590, 0x08,0xC0, 0xE, +12 },
{ 0x009F020,0x37DA588, 0x07,0x00, 0xA, +12 },
{ 0x00FC020,0x32DA5A8, 0x07,0x00, 0xA, +12 },
- { 0x106F680,0x016F610, 0x00,0x00, 0xC, +0 },
- { 0x20F6F00,0x20F6F00, 0x00,0x00, 0x0, +0 },
- { 0x106F680,0x016F610, 0x00,0x00, 0x6, +0 },
- { 0x20F4F00,0x20F4F00, 0x00,0x00, 0x6, +0 },
{ 0x0D1F815,0x078F512, 0x44,0x00, 0x8, +12 },
- { 0x1DC5D01,0x06FF79F, 0x0B,0x00, 0xA, +12 },
- { 0x1C7C900,0x05FF49F, 0x07,0x00, 0xA, +12 },
{ 0x160F2C6,0x07AF4D4, 0x4F,0x80, 0x8, +12 },
{ 0x160F286,0x0B7F294, 0x4F,0x80, 0x8, +12 },
{ 0x227A305,0x36A560A, 0x87,0x08, 0xE, +12 },
@@ -8624,12 +8622,23 @@ const struct adlinsdata adlins[4528] =
{4024,4024, 35, 0, 40, 40,0.000000 },
{4025,4026, 38, 1, 93, 93,0.000000 },
{4027,4028, 38, 1, 120, 120,0.000000 },
- {4029,4030, 48, 1, 153, 153,-1.906250 },
+ {4029,4030, 48, 1, 73, 73,-1.906250 },
{4031,4031, 51, 0, 26, 26,0.000000 },
{4032,4033, 48, 1, 293, 293,-1.906250 },
+ {4034,4034, 61, 1, 1873, 1873,0.093750 },
{3369,1557, 70, 0, 906, 906,0.000000 },
+ {4035,4036, 79, 1, 293, 293,0.078125 },
+ {4037,4037, 62, 0, 1726, 1726,0.000000 },
+ {4038,4039, 67, 1, 240, 240,0.078125 },
+ {4040,4040, 62, 1, 2040, 2040,0.093750 },
+ {4041,4042, 54, 1, 80, 80,0.000000 },
+ {4041,4043, 48, 1, 80, 80,0.000000 },
{ 389, 389, 42, 0, 180, 180,0.000000 },
- {4034,4035, 64, 0, 646, 646,0.000000 },
+ {4044,4045, 48, 1, 80, 80,0.000000 },
+ {4046,4047, 48, 1, 53, 53,0.000000 },
+ {4048,4048, 16, 0, 20, 20,0.000000 },
+ {4049,4049, 16, 0, 146, 146,0.000000 },
+ {4050,4051, 64, 0, 646, 646,0.000000 },
{ 844, 844,244, 0, 13, 13,0.000000 },
{ 855, 855,244, 0, 246, 6,0.000000 },
{ 880, 880,232, 0, 46, 46,0.000000 },
@@ -8661,278 +8670,267 @@ const struct adlinsdata adlins[4528] =
{ 902, 902, 35, 0, 1006, 1006,0.000000 },
{ 903, 903, 35, 0, 40, 40,0.000000 },
{3500,3500, 35, 0, 5233, 6,0.000000 },
- {4036,4036, 0, 0, 1400, 1400,0.000000 },
- {4037,4037, 0, 0, 1206, 1206,0.000000 },
- {4038,4038, 0, 0, 40000, 46,0.000000 },
- {4039,4039, 0, 0, 40000, 26,0.000000 },
- {4040,4040, 0, 0, 3600, 3600,0.000000 },
- {4041,4041, 0, 0, 40000, 6,0.000000 },
- {4042,4042, 0, 0, 960, 960,0.000000 },
- {4043,4043, 0, 0, 80, 80,0.000000 },
- {4044,4044, 0, 0, 40000, 20,0.000000 },
- {4045,4045, 0, 0, 40000, 20,0.000000 },
- {4046,4046, 0, 0, 4473, 4473,0.000000 },
- {4047,4047, 0, 0, 380, 6,0.000000 },
- {4048,4048, 0, 0, 40000, 20,0.000000 },
- {4049,4049, 0, 0, 4593, 4593,0.000000 },
- {4050,4050, 0, 0, 40000, 20,0.000000 },
- {4051,4051, 0, 0, 40000, 0,0.000000 },
- {4052,4052, 0, 0, 40, 40,0.000000 },
- {4053,4053, 0, 0, 60, 60,0.000000 },
- {4054,4054, 0, 0, 100, 100,0.000000 },
- {4055,4055, 0, 0, 40000, 40,0.000000 },
- {4056,4056, 0, 0, 126, 126,0.000000 },
- {4057,4057, 0, 0, 40, 40,0.000000 },
- {4058,4058, 0, 0, 40000, 0,0.000000 },
- {4059,4059, 0, 0, 4193, 4193,0.000000 },
- {4060,4060, 0, 0, 806, 0,0.000000 },
- {4061,4061, 0, 0, 526, 526,0.000000 },
- {4062,4062, 0, 0, 40000, 73,0.000000 },
- {4063,4063, 0, 0, 40000, 6,0.000000 },
- {4064,4064, 0, 0, 40000, 153,0.000000 },
- {4065,4065, 0, 0, 40000, 0,0.000000 },
- {4066,4066, 0, 0, 40, 6,0.000000 },
- {4067,4067, 0, 0, 3400, 0,0.000000 },
- {4068,4068, 0, 0, 2280, 0,0.000000 },
- {4069,4069, 0, 0, 40000, 426,0.000000 },
- {4070,4070, 0, 0, 1206, 1206,0.000000 },
+ {4052,4052, 0, 0, 1400, 1400,0.000000 },
+ {4053,4053, 0, 0, 1206, 1206,0.000000 },
+ {4054,4054, 0, 0, 40000, 46,0.000000 },
+ {4055,4055, 0, 0, 40000, 26,0.000000 },
+ {4056,4056, 0, 0, 3600, 3600,0.000000 },
+ {4057,4057, 0, 0, 40000, 6,0.000000 },
+ {4058,4058, 0, 0, 960, 960,0.000000 },
+ {4059,4059, 0, 0, 80, 80,0.000000 },
+ {4060,4060, 0, 0, 40000, 20,0.000000 },
+ {4061,4061, 0, 0, 40000, 20,0.000000 },
+ {4062,4062, 0, 0, 4473, 4473,0.000000 },
+ {4063,4063, 0, 0, 380, 6,0.000000 },
+ {4064,4064, 0, 0, 40000, 20,0.000000 },
+ {4065,4065, 0, 0, 4593, 4593,0.000000 },
+ {4066,4066, 0, 0, 40000, 20,0.000000 },
+ {4067,4067, 0, 0, 40000, 0,0.000000 },
+ {4068,4068, 0, 0, 40, 40,0.000000 },
+ {4069,4069, 0, 0, 60, 60,0.000000 },
+ {4070,4070, 0, 0, 100, 100,0.000000 },
+ {4071,4071, 0, 0, 40000, 40,0.000000 },
+ {4072,4072, 0, 0, 126, 126,0.000000 },
+ {4073,4073, 0, 0, 40, 40,0.000000 },
+ {4074,4074, 0, 0, 40000, 0,0.000000 },
+ {4075,4075, 0, 0, 4193, 4193,0.000000 },
+ {4076,4076, 0, 0, 806, 0,0.000000 },
+ {4077,4077, 0, 0, 526, 526,0.000000 },
+ {4078,4078, 0, 0, 40000, 73,0.000000 },
+ {4079,4079, 0, 0, 40000, 6,0.000000 },
+ {4080,4080, 0, 0, 40000, 153,0.000000 },
+ {4081,4081, 0, 0, 40000, 0,0.000000 },
+ {4082,4082, 0, 0, 40, 6,0.000000 },
+ {4083,4083, 0, 0, 3400, 0,0.000000 },
+ {4084,4084, 0, 0, 2280, 0,0.000000 },
+ {4085,4085, 0, 0, 40000, 426,0.000000 },
+ {4086,4086, 0, 0, 1206, 1206,0.000000 },
{ 127, 127, 36, 0, 20, 20,0.000000 },
- {4071,4071, 36, 0, 6, 6,0.000000 },
+ {4087,4087, 36, 0, 6, 6,0.000000 },
{2030,2030, 36, 0, 93, 93,0.000000 },
{3782,3782, 48, 0, 6, 6,0.000000 },
{3783,3783, 36, 0, 33, 33,0.000000 },
- {4072,4072, 48, 0, 246, 246,0.000000 },
+ {4088,4088, 48, 0, 246, 246,0.000000 },
{ 132, 132, 69, 0, 13, 13,0.000000 },
- {4072,4072, 52, 0, 360, 360,0.000000 },
+ {4088,4088, 52, 0, 360, 360,0.000000 },
{ 152, 152, 48, 0, 86, 86,0.000000 },
- {4072,4072, 55, 0, 493, 493,0.000000 },
+ {4088,4088, 55, 0, 493, 493,0.000000 },
{ 139, 139, 57, 0, 93, 93,0.000000 },
- {4072,4072, 58, 0, 560, 560,0.000000 },
- {4072,4072, 60, 0, 580, 580,0.000000 },
- {4073,4073, 62, 0, 840, 840,0.000000 },
- {4072,4072, 63, 0, 626, 626,0.000000 },
+ {4088,4088, 58, 0, 560, 560,0.000000 },
+ {4088,4088, 60, 0, 580, 580,0.000000 },
+ {4089,4089, 62, 0, 840, 840,0.000000 },
+ {4088,4088, 63, 0, 626, 626,0.000000 },
{ 134, 134, 70, 0, 140, 140,0.000000 },
- {4074,4074, 70, 0, 286, 286,0.000000 },
- {4075,4075, 53, 0, 613, 613,0.000000 },
+ {4090,4090, 70, 0, 286, 286,0.000000 },
+ {4091,4091, 53, 0, 613, 613,0.000000 },
{3516,3516, 48, 0, 40, 40,0.000000 },
- {4076,4076, 84, 0, 420, 420,0.000000 },
- {4077,4077, 43, 0, 160, 160,0.000000 },
- {4078,4078, 56, 0, 326, 326,0.000000 },
+ {4092,4092, 84, 0, 420, 420,0.000000 },
+ {4093,4093, 43, 0, 160, 160,0.000000 },
+ {4094,4094, 56, 0, 326, 326,0.000000 },
{3791,3791, 24, 0, 140, 140,0.000000 },
{ 134, 134, 65, 0, 160, 160,0.000000 },
{ 146, 146, 48, 0, 40, 40,0.000000 },
{ 146, 146, 54, 0, 40, 40,0.000000 },
- {4079,4079, 42, 0, 46, 46,0.000000 },
- {4079,4079, 39, 0, 46, 46,0.000000 },
+ {4095,4095, 42, 0, 46, 46,0.000000 },
+ {4095,4095, 39, 0, 46, 46,0.000000 },
{3816,3816, 52, 0, 106, 106,0.000000 },
- {4080,4080, 52, 0, 200, 200,0.000000 },
+ {4096,4096, 52, 0, 200, 200,0.000000 },
{ 158, 158, 60, 0, 33, 33,0.000000 },
{ 158, 158, 66, 0, 33, 33,0.000000 },
{ 158, 158, 59, 0, 33, 33,0.000000 },
{3538,3538, 91, 0, 273, 273,0.000000 },
{3547,3547,109, 0, 1780, 1780,0.000000 },
- {4081,4081, 79, 0, 126, 126,0.000000 },
- {4082,4082, 0, 0, 3413, 3413,0.000000 },
- {4083,4084, 0, 1, 1773, 1773,0.031250 },
- {4085,4086, 0, 1, 1933, 1933,0.031250 },
- {4087,4088, 0, 1, 1580, 1580,0.031250 },
- {4089,4090, 0, 1, 1900, 1900,0.156250 },
- { 172,4091, 0, 1, 1740, 1740,0.046875 },
- {4092,4093, 0, 1, 1020, 1020,0.062500 },
- {4094,4095, 0, 1, 2126, 2126,0.000000 },
- {4096,4097, 0, 1, 1740, 1740,0.000000 },
- {4098,4099, 0, 1, 993, 993,0.000025 },
- {4100,4101, 0, 1, 886, 886,0.000000 },
- {4102,4103, 0, 1, 513, 513,0.062500 },
- {4104,4105, 0, 1, 1420, 1420,0.000000 },
- {4106,4107, 0, 1, 193, 193,0.000000 },
- {4108,4108, 0, 0, 1846, 1846,0.000000 },
- {4109,4110, 0, 1, 1400, 1400,0.031250 },
- {4111,4111, 0, 1, 980, 980,0.031250 },
- {4112,4113, 0, 1, 40000, 0,0.156250 },
- {4114,4115, 0, 1, 40, 13,0.000000 },
- {4116,4117, 0, 1, 7180, 7180,0.156250 },
- {4118,4119, 0, 1, 40000, 0,0.031250 },
- {4120,4121, 0, 1, 40000, 0,0.000000 },
- {4122,4123, 0, 1, 40000, 0,0.140625 },
- {4124,4125, 0, 1, 40000, 0,0.000000 },
- {4126,4127, 0, 1, 40000, 0,0.109375 },
- {4128,4129, 0, 1, 600, 600,0.000000 },
- {4130,4131, 0, 1, 653, 653,0.000025 },
- {4132,4133, 0, 1, 633, 633,0.000000 },
- {4134,4135, 0, 1, 893, 893,0.046875 },
- {4136,4137, 0, 1, 493, 493,0.000000 },
- {4138,4139, 0, 1, 40000, 0,-1.906250 },
- {4140,4141, 0, 1, 40000, 0,-1.906250 },
- {4142,4143, 0, 1, 2033, 2033,0.234375 },
- {4144,4145, 0, 1, 1600, 1600,0.031250 },
- {4146,4147, 0, 1, 1526, 1526,0.000000 },
- {4148,4149, 0, 1, 2133, 2133,0.000000 },
- {4150,4151, 0, 1, 1933, 1933,0.046875 },
- {4152,4153, 0, 1, 633, 633,0.000000 },
- {4154,4155, 0, 1, 486, 486,0.000000 },
- {4156,4156, 0, 0, 313, 313,0.000000 },
- {4157,4157, 0, 1, 40000, 33,0.156250 },
- {4158,4159, 0, 1, 2040, 13,0.000000 },
- {4160,4160, 0, 0, 40000, 66,0.000000 },
- {4161,4162, 0, 1, 40000, 0,0.000025 },
- {4163,4163, 0, 0, 40000, 133,0.000000 },
- {4164,4165, 0, 1, 40000, 0,0.078125 },
- {4166,4167, 0, 1, 320, 320,0.156250 },
- {4168,4169, 0, 1, 1813, 1813,0.031250 },
- {4170,4171, 0, 1, 1740, 1740,0.031250 },
- {4172,4173, 0, 1, 40000, 0,0.062500 },
- {4174,4175, 0, 1, 40000, 0,-0.062500 },
- {4176,4177, 0, 1, 40000, 1386,0.062500 },
- {4178,4179, 0, 1, 40000, 280,0.109375 },
- {4180,4181, 0, 1, 40000, 0,0.140625 },
- {4182,4183, 0, 1, 40000, 160,0.140625 },
- {4184,4185, 0, 1, 40000, 0,0.156250 },
- {4186,4187, 0, 1, 206, 206,0.125000 },
- {4188,4189, 0, 1, 40000, 26,0.000000 },
- {4190,4191, 0, 1, 40000, 0,0.031250 },
- {4192,4192, 0, 0, 40000, 6,0.000000 },
- {4193,4193, 0, 0, 40000, 20,0.000000 },
- {4194,4195, 0, 1, 40000, 0,0.031250 },
- {4196,4197, 0, 1, 40000, 146,0.062500 },
- {4198,4199, 0, 1, 2526, 2526,0.093750 },
- {4200,4200, 0, 1, 5153, 5153,0.125000 },
- {4201,4201, 0, 0, 40000, 66,0.000000 },
- {4202,4202, 0, 0, 40000, 40,0.000000 },
- {4203,4203, 0, 0, 40000, 0,0.000000 },
- {4204,4204, 0, 0, 40000, 0,0.000000 },
- {4205,4206, 0, 1, 40000, 0,0.000000 },
- {4207,4207, 0, 0, 40000, 33,0.000000 },
+ {4097,4097, 79, 0, 126, 126,0.000000 },
+ {4098,4098, 0, 0, 3413, 3413,0.000000 },
+ {4099,4100, 0, 1, 1773, 1773,0.031250 },
+ {4101,4102, 0, 1, 1933, 1933,0.031250 },
+ {4103,4104, 0, 1, 1580, 1580,0.031250 },
+ {4105,4106, 0, 1, 1900, 1900,0.156250 },
+ { 172,4107, 0, 1, 1740, 1740,0.046875 },
+ {4108,4109, 0, 1, 1020, 1020,0.062500 },
+ {4110,4111, 0, 1, 2126, 2126,0.000000 },
+ {4112,4113, 0, 1, 1740, 1740,0.000000 },
+ {4114,4115, 0, 1, 993, 993,0.000025 },
+ {4116,4117, 0, 1, 886, 886,0.000000 },
+ {4118,4119, 0, 1, 513, 513,0.062500 },
+ {4120,4121, 0, 1, 1420, 1420,0.000000 },
+ {4122,4123, 0, 1, 193, 193,0.000000 },
+ {4124,4124, 0, 0, 1846, 1846,0.000000 },
+ {4125,4126, 0, 1, 1400, 1400,0.031250 },
+ {4127,4127, 0, 1, 980, 980,0.031250 },
+ {4128,4129, 0, 1, 40000, 0,0.156250 },
+ {4130,4131, 0, 1, 40, 13,0.000000 },
+ {4132,4133, 0, 1, 7180, 7180,0.156250 },
+ {4134,4135, 0, 1, 40000, 0,0.031250 },
+ {4136,4137, 0, 1, 40000, 0,0.000000 },
+ {4138,4139, 0, 1, 40000, 0,0.140625 },
+ {4140,4141, 0, 1, 40000, 0,0.000000 },
+ {4142,4143, 0, 1, 40000, 0,0.109375 },
+ {4144,4145, 0, 1, 600, 600,0.000000 },
+ {4146,4147, 0, 1, 653, 653,0.000025 },
+ {4148,4149, 0, 1, 633, 633,0.000000 },
+ {4150,4151, 0, 1, 893, 893,0.046875 },
+ {4152,4153, 0, 1, 493, 493,0.000000 },
+ {4154,4155, 0, 1, 40000, 0,-1.906250 },
+ {4156,4157, 0, 1, 40000, 0,-1.906250 },
+ {4158,4159, 0, 1, 2033, 2033,0.234375 },
+ {4160,4161, 0, 1, 1600, 1600,0.031250 },
+ {4162,4163, 0, 1, 1526, 1526,0.000000 },
+ {4164,4165, 0, 1, 2133, 2133,0.000000 },
+ {4166,4167, 0, 1, 1933, 1933,0.046875 },
+ {4168,4169, 0, 1, 633, 633,0.000000 },
+ {4170,4171, 0, 1, 486, 486,0.000000 },
+ {4172,4172, 0, 0, 313, 313,0.000000 },
+ {4173,4173, 0, 1, 40000, 33,0.156250 },
+ {4174,4175, 0, 1, 2040, 13,0.000000 },
+ {4176,4176, 0, 0, 40000, 66,0.000000 },
+ {4177,4178, 0, 1, 40000, 0,0.000025 },
+ {4179,4179, 0, 0, 40000, 133,0.000000 },
+ {4180,4181, 0, 1, 40000, 0,0.078125 },
+ {4182,4183, 0, 1, 320, 320,0.156250 },
+ {4184,4185, 0, 1, 1813, 1813,0.031250 },
+ {4186,4187, 0, 1, 1740, 1740,0.031250 },
+ {4188,4189, 0, 1, 40000, 0,0.062500 },
+ {4190,4191, 0, 1, 40000, 0,-0.062500 },
+ {4192,4193, 0, 1, 40000, 1386,0.062500 },
+ {4194,4195, 0, 1, 40000, 280,0.109375 },
+ {4196,4197, 0, 1, 40000, 0,0.140625 },
+ {4198,4199, 0, 1, 40000, 160,0.140625 },
+ {4200,4201, 0, 1, 40000, 0,0.156250 },
+ {4202,4203, 0, 1, 206, 206,0.125000 },
+ {4204,4205, 0, 1, 40000, 26,0.000000 },
+ {4206,4207, 0, 1, 40000, 0,0.031250 },
{4208,4208, 0, 0, 40000, 6,0.000000 },
- {4209,4210, 0, 1, 40000, 40,0.000000 },
- {4211,4211, 0, 0, 40000, 0,0.000000 },
- {4212,4212, 0, 0, 40000, 0,0.000000 },
- {4213,4213, 0, 0, 40000, 33,0.000000 },
- {4214,4215, 0, 1, 40000, 33,0.031250 },
- {4216,4217, 0, 1, 40000, 20,0.046875 },
- {4218,4219, 0, 1, 420, 420,0.031250 },
- {4220,4220, 0, 0, 40000, 106,0.000000 },
- {4221,4221, 0, 0, 40000, 6,0.000000 },
- {4222,4223, 0, 1, 40000, 0,0.125000 },
- {4224,4225, 0, 1, 40000, 40,0.109375 },
- {4226,4227, 0, 1, 40000, 0,0.109375 },
- {4228,4229, 0, 1, 120, 0,-0.031250 },
- {4230,4230, 0, 0, 933, 933,0.000000 },
- {4231,4232, 0, 1, 40000, 0,0.156250 },
- {4233,4234, 0, 1, 1660, 80,-0.046875 },
- {4235,4236, 0, 1, 40000, 0,0.031250 },
- {4237,4238, 0, 1, 40000, 0,0.078125 },
- {4239,4240, 0, 1, 40000, 0,0.156250 },
- {4241,4242, 0, 1, 1293, 100,0.078125 },
- {4243,4244, 0, 1, 6773, 66,0.171875 },
- {4245,4246, 0, 1, 2040, 2040,0.109375 },
- {4247,4248, 0, 1, 1360, 1360,0.062500 },
- {4249,4250, 0, 1, 40000, 0,0.093750 },
- {4251,4252, 0, 1, 40000, 746,0.093750 },
- {4253,4254, 0, 1, 826, 826,0.093750 },
- {4255,4256, 0, 1, 40000, 0,0.062500 },
- {4257,4257, 0, 1, 886, 886,0.109375 },
- {4258,4259, 0, 1, 2186, 2186,-0.046875 },
- {4260,4261, 0, 1, 1486, 1486,0.125000 },
- {4262,4263, 0, 1, 40000, 0,-0.078125 },
- {4264,4265, 0, 1, 40000, 0,0.140625 },
- {4266,4267, 0, 1, 360, 360,0.078125 },
- {4268,4269, 0, 1, 1693, 1693,0.031250 },
- {4270,4271, 0, 1, 760, 760,0.000000 },
- {4272,4273, 0, 1, 126, 126,0.031250 },
- {4274,4274, 0, 0, 633, 633,0.000000 },
- {4275,4275, 0, 0, 246, 246,0.000000 },
- {4276,4277, 0, 1, 40000, 0,0.062500 },
- {4278,4278, 0, 0, 40000, 66,0.000000 },
- {4279,4279, 0, 0, 40000, 53,0.000000 },
- {4280,4280, 0, 0, 1940, 1940,0.000000 },
- {4281,4281, 0, 0, 86, 86,0.000000 },
- {4282,4283, 0, 1, 280, 280,0.031250 },
- {4284,4284, 0, 0, 40, 40,0.000000 },
- {4285,4286, 0, 1, 53, 53,0.000000 },
- {4287,4288, 0, 1, 140, 140,0.000000 },
- {4289,4290, 0, 1, 26, 26,0.000000 },
- {4291,4292, 0, 1, 2153, 2153,0.109375 },
- {4293,4293, 0, 0, 600, 600,0.000000 },
- {4294,4295, 0, 1, 993, 26,0.000000 },
- {4296,4297, 0, 1, 5613, 5613,0.000000 },
- {4298,4298, 0, 0, 220, 220,0.000000 },
- {4299,4300, 0, 1, 10306, 10306,0.000000 },
- {4301,4302, 0, 1, 1486, 13,0.000000 },
- {4303,4304, 0, 1, 40000, 0,0.000000 },
- {4305,4305, 0, 0, 566, 566,0.000000 },
- {4306,4306, 25, 0, 33, 33,0.000000 },
- {4307,4308, 61, 1, 40, 40,0.000000 },
- {4309,4310, 37, 1, 53, 53,0.000000 },
- {4311,4311, 32, 0, 60, 60,0.000000 },
- {4312,4313, 48, 1, 73, 73,-1.906250 },
- {4311,4311, 34, 0, 73, 73,0.000000 },
- {4314,4314, 48, 0, 53, 53,0.000000 },
- {4315,4315, 37, 0, 46, 46,0.000000 },
- {4315,4315, 40, 0, 40, 40,0.000000 },
- {4315,4315, 43, 0, 33, 33,0.000000 },
- {4316,4316, 61, 1, 1873, 1873,0.093750 },
- {4315,4315, 46, 0, 60, 60,0.000000 },
- {4317,4318, 60, 1, 286, 286,0.062500 },
- {4319,4320, 79, 1, 293, 293,0.078125 },
- {4321,4321, 62, 0, 1726, 1726,0.000000 },
- {4322,4323, 80, 1, 106, 106,0.125000 },
- {4324,4325, 67, 1, 240, 240,0.078125 },
- {4326,4326, 58, 0, 73, 73,0.000000 },
- {4327,4327, 62, 1, 2040, 2040,0.093750 },
- {4328,4328, 24, 0, 780, 780,0.000000 },
- {4329,4329, 61, 0, 206, 206,0.000000 },
- {4330,4331, 41, 1, 100, 100,0.000000 },
- {4332,4333, 35, 1, 160, 160,0.000000 },
- {4334,4335, 29, 1, 40, 40,0.000000 },
- {4336,4337, 41, 1, 166, 166,0.000000 },
- {4336,4337, 37, 1, 160, 160,0.000000 },
- {4338,4339, 54, 1, 80, 80,0.000000 },
- {4338,4340, 51, 1, 80, 80,0.000000 },
- {4341,4342, 78, 1, 126, 126,0.000000 },
- {4341,4343, 73, 1, 113, 113,0.000000 },
- {4344,4344, 40, 0, 140, 140,0.000000 },
- {4345,4345, 45, 0, 313, 313,0.000000 },
- {4346,4346, 42, 0, 40000, 0,0.000000 },
- {4347,4348, 48, 1, 80, 80,0.000000 },
- {4349,4350, 48, 1, 53, 53,0.000000 },
+ {4209,4209, 0, 0, 40000, 20,0.000000 },
+ {4210,4211, 0, 1, 40000, 0,0.031250 },
+ {4212,4213, 0, 1, 40000, 146,0.062500 },
+ {4214,4215, 0, 1, 2526, 2526,0.093750 },
+ {4216,4216, 0, 1, 5153, 5153,0.125000 },
+ {4217,4217, 0, 0, 40000, 66,0.000000 },
+ {4218,4218, 0, 0, 40000, 40,0.000000 },
+ {4219,4219, 0, 0, 40000, 0,0.000000 },
+ {4220,4220, 0, 0, 40000, 0,0.000000 },
+ {4221,4222, 0, 1, 40000, 0,0.000000 },
+ {4223,4223, 0, 0, 40000, 33,0.000000 },
+ {4224,4224, 0, 0, 40000, 6,0.000000 },
+ {4225,4226, 0, 1, 40000, 40,0.000000 },
+ {4227,4227, 0, 0, 40000, 0,0.000000 },
+ {4228,4228, 0, 0, 40000, 0,0.000000 },
+ {4229,4229, 0, 0, 40000, 33,0.000000 },
+ {4230,4231, 0, 1, 40000, 33,0.031250 },
+ {4232,4233, 0, 1, 40000, 20,0.046875 },
+ {4234,4235, 0, 1, 420, 420,0.031250 },
+ {4236,4236, 0, 0, 40000, 106,0.000000 },
+ {4237,4237, 0, 0, 40000, 6,0.000000 },
+ {4238,4239, 0, 1, 40000, 0,0.125000 },
+ {4240,4241, 0, 1, 40000, 40,0.109375 },
+ {4242,4243, 0, 1, 40000, 0,0.109375 },
+ {4244,4245, 0, 1, 120, 0,-0.031250 },
+ {4246,4246, 0, 0, 933, 933,0.000000 },
+ {4247,4248, 0, 1, 40000, 0,0.156250 },
+ {4249,4250, 0, 1, 3886, 3886,0.078125 },
+ {4251,4252, 0, 1, 40000, 0,0.031250 },
+ {4253,4254, 0, 1, 40000, 0,0.078125 },
+ {4255,4256, 0, 1, 40000, 0,0.156250 },
+ {4257,4258, 0, 1, 1293, 100,0.078125 },
+ {4259,4260, 0, 1, 6773, 66,0.171875 },
+ {4261,4262, 0, 1, 2040, 2040,0.109375 },
+ {4263,4264, 0, 1, 1360, 1360,0.062500 },
+ {4265,4266, 0, 1, 40000, 0,0.093750 },
+ {4267,4268, 0, 1, 40000, 746,0.093750 },
+ {4269,4270, 0, 1, 826, 826,0.093750 },
+ {4271,4272, 0, 1, 40000, 0,0.062500 },
+ {4273,4273, 0, 1, 886, 886,0.109375 },
+ {4274,4275, 0, 1, 2186, 2186,-0.046875 },
+ {4276,4277, 0, 1, 1486, 1486,0.125000 },
+ {4278,4279, 0, 1, 40000, 0,-0.078125 },
+ {4280,4281, 0, 1, 40000, 0,0.140625 },
+ {4282,4283, 0, 1, 360, 360,0.078125 },
+ {4284,4285, 0, 1, 1693, 1693,0.031250 },
+ {4286,4287, 0, 1, 760, 760,0.000000 },
+ {4288,4289, 0, 1, 126, 126,0.031250 },
+ {4290,4290, 0, 0, 633, 633,0.000000 },
+ {4291,4291, 0, 0, 246, 246,0.000000 },
+ {4292,4293, 0, 1, 40000, 0,0.062500 },
+ {4294,4294, 0, 0, 40000, 66,0.000000 },
+ {4295,4295, 0, 0, 40000, 53,0.000000 },
+ {4296,4296, 0, 0, 1940, 1940,0.000000 },
+ {4297,4297, 0, 0, 86, 86,0.000000 },
+ {4298,4299, 0, 1, 280, 280,0.031250 },
+ {4300,4300, 0, 0, 40, 40,0.000000 },
+ {4301,4302, 0, 1, 53, 53,0.000000 },
+ {4303,4304, 0, 1, 140, 140,0.000000 },
+ {4305,4306, 0, 1, 26, 26,0.000000 },
+ {4307,4308, 0, 1, 2153, 2153,0.109375 },
+ {4309,4309, 0, 0, 600, 600,0.000000 },
+ {4310,4311, 0, 1, 993, 26,0.000000 },
+ {4312,4313, 0, 1, 5613, 5613,0.000000 },
+ {4314,4314, 0, 0, 220, 220,0.000000 },
+ {4315,4316, 0, 1, 10306, 10306,0.000000 },
+ {4317,4318, 0, 1, 1486, 13,0.000000 },
+ {4319,4320, 0, 1, 40000, 0,0.000000 },
+ {4321,4321, 0, 0, 120, 120,0.000000 },
+ {4322,4322, 25, 0, 33, 33,0.000000 },
+ {4323,4324, 61, 1, 40, 40,0.000000 },
+ {4325,4326, 37, 1, 53, 53,0.000000 },
+ {4327,4327, 32, 0, 60, 60,0.000000 },
+ {4327,4327, 34, 0, 73, 73,0.000000 },
+ {4328,4328, 48, 0, 53, 53,0.000000 },
+ {4329,4329, 37, 0, 46, 46,0.000000 },
+ {4329,4329, 40, 0, 40, 40,0.000000 },
+ {4329,4329, 43, 0, 33, 33,0.000000 },
+ {4329,4329, 46, 0, 60, 60,0.000000 },
+ {4330,4331, 60, 1, 286, 286,0.062500 },
+ {4332,4333, 80, 1, 106, 106,0.125000 },
+ {4334,4334, 58, 0, 73, 73,0.000000 },
+ {4335,4335, 24, 0, 780, 780,0.000000 },
+ {4336,4336, 61, 0, 206, 206,0.000000 },
+ {4337,4338, 41, 1, 100, 100,0.000000 },
+ {4339,4340, 35, 1, 160, 160,0.000000 },
+ {4341,4342, 29, 1, 40, 40,0.000000 },
+ {4343,4344, 41, 1, 166, 166,0.000000 },
+ {4343,4344, 37, 1, 160, 160,0.000000 },
+ {4041,4043, 51, 1, 80, 80,0.000000 },
+ {4345,4346, 78, 1, 126, 126,0.000000 },
+ {4345,4347, 73, 1, 113, 113,0.000000 },
+ {4348,4348, 40, 0, 140, 140,0.000000 },
+ {4349,4349, 45, 0, 313, 313,0.000000 },
+ {4350,4350, 42, 0, 40000, 0,0.000000 },
{4351,4351, 73, 0, 60, 60,0.000000 },
- {4352,4352, 16, 0, 20, 20,0.000000 },
- {4353,4353, 16, 0, 146, 146,0.000000 },
- {4354,4354, 90, 0, 80, 80,0.000000 },
- {4355,4355, 90, 0, 306, 306,0.000000 },
- {4356,4357, 64, 1, 233, 233,0.031250 },
- {4358,4359, 80, 1, 140, 140,0.031250 },
- {4360,4360, 0, 0, 40000, 20,0.000000 },
- {4361,4361, 0, 0, 40000, 0,0.000000 },
- {4362,4362, 0, 0, 360, 360,0.000000 },
- {4363,4363, 0, 0, 586, 586,0.000000 },
+ {4352,4352, 90, 0, 80, 80,0.000000 },
+ {4353,4353, 90, 0, 306, 306,0.000000 },
+ {4354,4355, 64, 1, 233, 233,0.031250 },
+ {4356,4357, 80, 1, 140, 140,0.031250 },
+ {4358,4358, 0, 0, 40000, 20,0.000000 },
+ {4359,4359, 0, 0, 40000, 0,0.000000 },
+ {4360,4360, 0, 0, 360, 360,0.000000 },
+ {4361,4361, 0, 0, 586, 586,0.000000 },
+ {4362,4362, 0, 0, 40000, 0,0.000000 },
+ {4363,4363, 0, 0, 40000, 0,0.000000 },
{4364,4364, 0, 0, 40000, 0,0.000000 },
- {4365,4365, 0, 0, 40000, 0,0.000000 },
+ {4365,4365, 0, 0, 40000, 6,0.000000 },
{4366,4366, 0, 0, 40000, 0,0.000000 },
- {4367,4367, 0, 0, 40000, 6,0.000000 },
- {4368,4368, 0, 0, 40000, 0,0.000000 },
- {4369,4369, 0, 0, 146, 146,0.000000 },
- {4369,4369, 73, 0, 886, 886,0.000000 },
- {4370,4370, 0, 0, 40, 0,0.000000 },
- {4371,4371, 0, 0, 486, 0,0.000000 },
- {4372,4372, 0, 0, 1226, 1226,0.000000 },
- {4373,4373, 0, 0, 1480, 1480,0.000000 },
- {4374,4374, 0, 0, 46, 46,0.000000 },
- {4375,4375, 0, 0, 126, 126,0.000000 },
- {4375,4375, 12, 0, 106, 106,0.000000 },
- {4376,4376, 0, 0, 160, 160,0.000000 },
- {4376,4376, 1, 0, 153, 153,0.000000 },
- {4377,4377, 0, 0, 20, 20,0.000000 },
- {4377,4377, 23, 0, 26, 26,0.000000 },
- {4378,4378, 0, 0, 140, 140,0.000000 },
- {4379,4379, 0, 0, 486, 486,0.000000 },
- {4380,4380, 0, 0, 40000, 13,0.000000 },
- {4381,4381, 0, 0, 40000, 0,0.000000 },
- {4382,4382, 0, 0, 1226, 1226,0.000000 },
- {4383,4383, 0, 0, 766, 766,0.000000 },
- {4384,4384, 0, 0, 93, 93,0.000000 },
- {4385,4385, 0, 2, 40000, 0,0.000000 },
+ {4367,4367, 0, 0, 146, 146,0.000000 },
+ {4367,4367, 73, 0, 886, 886,0.000000 },
+ {4368,4368, 0, 0, 40, 0,0.000000 },
+ {4369,4369, 0, 0, 486, 0,0.000000 },
+ {4370,4370, 0, 0, 1226, 1226,0.000000 },
+ {4371,4371, 0, 0, 1480, 1480,0.000000 },
+ {4372,4372, 0, 0, 46, 46,0.000000 },
+ {4373,4373, 0, 0, 126, 126,0.000000 },
+ {4373,4373, 12, 0, 106, 106,0.000000 },
+ {4374,4374, 0, 0, 160, 160,0.000000 },
+ {4374,4374, 1, 0, 153, 153,0.000000 },
+ {4375,4375, 0, 0, 20, 20,0.000000 },
+ {4375,4375, 23, 0, 26, 26,0.000000 },
+ {4376,4376, 0, 0, 140, 140,0.000000 },
+ {4377,4377, 0, 0, 486, 486,0.000000 },
+ {4378,4378, 0, 0, 40000, 13,0.000000 },
+ {4379,4379, 0, 0, 40000, 0,0.000000 },
+ {4380,4380, 0, 0, 1226, 1226,0.000000 },
+ {4381,4381, 0, 0, 766, 766,0.000000 },
+ {4382,4382, 0, 0, 93, 93,0.000000 },
+ {4383,4383, 0, 2, 40000, 0,0.000000 },
};
@@ -10257,9 +10255,9 @@ const unsigned short banks[74][256] =
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806,4216,1470,1613,4217,1615,4218,1475,4219,1477,4220,1479,4221,1481,
-1482,1625,1484,4222,1628,1629,1630,1631,2291,1633,1634,3514,1636,1637,1638,1639,
-1640,1641,1642,1643,1644,1645,1646,4223, 342,1649,1650,1651,1652,1653,1654,1655,
-1656,4224,1658,1659,1660,1661,1662,1663, 806, 806, 806, 806, 806, 806, 806, 806,
+1482,4222,1484,4223,4224,4225,1630,4226,2291,4227,1634,3514,1636,1637,1638,1639,
+1640,4228,4229,1643,1644,1645,1646,4230, 342,4231,4232,1651,1652,1653,4233,4234,
+1656,4235,1658,1659,1660,1661,1662,1663, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
},
@@ -10269,33 +10267,33 @@ const unsigned short banks[74][256] =
876, 877, 878,2217, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891,
892, 893, 894,2218, 896, 897, 898, 899, 900,2219,2220, 903,2221, 905,2222,2223,
2224, 909,2225, 911, 912,2226,2227, 915, 916,2228,2229, 919, 920, 921, 922, 923,
-2230, 925, 926, 927, 928, 929,4225, 931, 932, 933, 934, 935,2232,2233, 938,2234,
- 940,4226, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955,
- 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966,4227, 968,4228,3643,3643,
-4229,4230,4231,4232,4233,4234,4235, 978,4236,4237,4238,4239,4240,4241,4242,4243,
-4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254, 975, 971, 972, 973, 974,
+2230, 925, 926, 927, 928, 929,4236, 931, 932, 933, 934, 935,2232,2233, 938,2234,
+ 940,4237, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955,
+ 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966,4238, 968,4239,3643,3643,
+4240,4241,4242,4243,4244,4245,4246, 978,4247,4248,4249,4250,4251,4252,4253,4254,
+4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265, 975, 971, 972, 973, 974,
975, 310, 976, 977, 978, 974,2239, 980,2240, 982,2241, 984,2242, 985,2243, 987,
988,2244, 990, 325,2244, 325, 991,2244,2245,2246, 330, 993,2247,2248,2249, 997,
998,2250,2251,1001,1002,1003, 340,1004,1005,1006,1007,1008,1009, 310,1010,1011,
-2252, 429,1003, 430,1013,1014, 974,1015,4255,4255,4255,4255,4255,4255,4255,4255,
-4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,
-4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,
+2252, 429,1003, 430,1013,1014, 974,1015,4266,4266,4266,4266,4266,4266,4266,4266,
+4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,
+4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,4266,
},
{
-3287,4256,3196,3196,4257,3196,3196,3196,3196,3196,3196, 378,3196,3196,3694,3196,
-3196,4258,3196,4259,4260,4261,3196,3196,3196, 370,3196,4262,4263,4264,4265,4266,
-3196,4267,4268,4269,3310,3310,4270, 442,4271,3196,3196,4272,4273,4272, 676,4274,
-4275,3196,3196,4276, 51,3196,3196,3196,4277,3324,4278,3196, 59,4279,4277, 62,
-3196,4280,4280,4281, 67,3196, 664,4282,3196,2316,3196,4283, 70,3196,4284, 78,
-4285,4286, 81,3196,3196,3196,3196,3196,3196,3196,3196, 90,3196,4287, 93,4288,
-3196,3196,3196,3196,3196,3196,3196,4289,3196,3196,3196,3196,3196,3196,3196,3196,
-3196,3196,3196,3196,3196,4101,3196,4290,3196,3196,3196,3196,3196,3196,3196,3196,
+3287,4267,3196,3196,4268,3196,3196,3196,3196,3196,3196, 378,3196,3196,3694,3196,
+3196,4269,3196,4270,4271,4272,3196,3196,3196, 370,3196,4273,4274,4275,4276,4277,
+3196,4278,4279,4280,3310,3310,4281, 442,4282,3196,3196,4283,4284,4283, 676,4285,
+4286,3196,3196,4287, 51,3196,3196,3196,4288,3324,4289,3196, 59,4290,4288, 62,
+3196,4291,4291,4292, 67,3196, 664,4293,3196,2316,3196,4294, 70,3196,4295, 78,
+4296,4297, 81,3196,3196,3196,3196,3196,3196,3196,3196, 90,3196,4298, 93,4299,
+3196,3196,3196,3196,3196,3196,3196,4300,3196,3196,3196,3196,3196,3196,3196,3196,
+3196,3196,3196,3196,3196,4101,3196,4301,3196,3196,3196,3196,3196,3196,3196,3196,
3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
-3196,3196,3196,4291,4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,
-4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,3196,3196,4315, 154,
-4316,4317,4318,3196,3196, 160,3196,3196,3196,4319,4320,4321,4322,4323,4324,3196,
-3196,4325, 160,4326,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
+3196,3196,3196,4302,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,
+4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,3196,3196,4326, 154,
+4327,4328,4329,3196,3196, 160,3196,3196,3196,4330,4331,4332,4333,4334,4335,3196,
+3196,4336, 160,4337,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,3196,
},
@@ -10307,7 +10305,7 @@ const unsigned short banks[74][256] =
3863,3864,3864,3865,3866,3867,3868,3869,3870,3871,3872,3873,3874,3875,3876,3877,
3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,
3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908,3909,
-3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,4327,3921,3922,3923,3924,3925,
+3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,4338,3921,3922,3923,3924,3925,
3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,
3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3976,3977,3977,3977,3977,3977,
3977,3977,3977,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,
@@ -10318,19 +10316,19 @@ const unsigned short banks[74][256] =
3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,3985,
},
{
-4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,
-4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,
-4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,
-4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,
-4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,
-4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,
-4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,
-4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,
+4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,
+4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,
+4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,
+4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,
+4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,
+4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,
+4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,
+4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
- 806, 806, 806,4456,1349,4457,4217,4458,4218,4459,4460,4461,4462,4463,4221,4464,
-4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,
-4481,4482,4483,4484,4485, 320,4486,4487,4488,4489,4490,4491,1373,1374,4492,4493,
+ 806, 806, 806,4467,1349,4468,4217,4469,4218,4470,4219,4471,4472,4473,4221,4474,
+4475,4222,4476,4477,4224,4225,4478,4226,4479,4227,4480,4481,4482,4483,4484,4485,
+4486,4228,4487,4488,4489, 320,4490,4491,4492,4231,4232,4493,1373,1374,4233,4234,
4494,4495,4496,4497, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
diff --git a/src/adlmidi_load.cpp b/src/adlmidi_load.cpp
index fefc80c..60c4151 100644
--- a/src/adlmidi_load.cpp
+++ b/src/adlmidi_load.cpp
@@ -88,7 +88,10 @@ static int16_t toSint16BE(const uint8_t *arr)
}
static const char *wopl3_magic = "WOPL3-BANK\0";
-static const uint16_t wopl_latest_version = 2;
+static const uint16_t wopl_latest_version = 3;
+
+#define WOPL_INST_SIZE_V2 62
+#define WOPL_INST_SIZE_V3 66
enum WOPL_InstrumentFlags
{
@@ -103,13 +106,23 @@ struct WOPL_Inst
char padding[7];
struct adlinsdata adlins;
struct adldata op[2];
+ uint16_t ms_sound_kon;
+ uint16_t ms_sound_koff;
};
-static bool readInstrument(MIDIplay::fileReader &file, WOPL_Inst &ins, bool isPercussion = false)
+static bool readInstrument(MIDIplay::fileReader &file, WOPL_Inst &ins, uint16_t &version, bool isPercussion = false)
{
- uint8_t idata[62];
- if(file.read(idata, 1, 62) != 62)
- return false;
+ uint8_t idata[WOPL_INST_SIZE_V3];
+ if(version >= 3)
+ {
+ if(file.read(idata, 1, WOPL_INST_SIZE_V3) != WOPL_INST_SIZE_V3)
+ return false;
+ }
+ else
+ {
+ if(file.read(idata, 1, WOPL_INST_SIZE_V2) != WOPL_INST_SIZE_V2)
+ return false;
+ }
//strncpy(ins.name, char_p(idata), 32);
ins.op[0].finetune = (int8_t)toSint16BE(idata + 32);
@@ -130,12 +143,6 @@ static bool readInstrument(MIDIplay::fileReader &file, WOPL_Inst &ins, bool isPe
ins.adlins.tone = isPercussion ? idata[38] : 0;
- /* TODO: add those fields into next version of WOPL format
- * and re-generate those values on file save! */
- ins.adlins.ms_sound_kon = 1000;
- ins.adlins.ms_sound_koff = 500;
- /* ----------------------------------------------------- */
-
uint8_t flags = idata[39];
ins.adlins.flags = (flags & WOPL_Flag_Enable4OP) && (flags & WOPL_Flag_Pseudo4OP) ? adlinsdata::Flag_Pseudo4op : 0;
ins.fourOps = (flags & WOPL_Flag_Enable4OP) || (flags & WOPL_Flag_Pseudo4OP);
@@ -167,6 +174,18 @@ static bool readInstrument(MIDIplay::fileReader &file, WOPL_Inst &ins, bool isPe
| ((static_cast<uint32_t>(idata[off + 0]) << 0) & 0x000000FF); //AVEKM
ins.op[slt].modulator_40 = idata[off + 1];//KSLL
}
+
+ if(version >= 3)
+ {
+ ins.ms_sound_kon = toUint16BE(idata + 62);
+ ins.ms_sound_koff = toUint16BE(idata + 64);
+ }
+ else
+ {
+ ins.ms_sound_kon = 1000;
+ ins.ms_sound_koff = 500;
+ }
+
return true;
}
@@ -260,8 +279,6 @@ bool MIDIplay::LoadBank(MIDIplay::fileReader &fr)
size_t offset = opl.dynamic_melodic_banks.size();
opl.dynamic_melodic_banks[bank] = offset;
//strncpy(bankMeta.name, char_p(bank_meta), 32);
- //bankMeta.lsb = bank_meta[32];
- //bankMeta.msb = bank_meta[33];
}
for(uint16_t i = 0; i < count_percusive_banks; i++)
@@ -276,8 +293,6 @@ bool MIDIplay::LoadBank(MIDIplay::fileReader &fr)
size_t offset = opl.dynamic_percussion_banks.size();
opl.dynamic_percussion_banks[bank] = offset;
//strncpy(bankMeta.name, char_p(bank_meta), 32);
- //bankMeta.lsb = bank_meta[32];
- //bankMeta.msb = bank_meta[33];
}
}
@@ -289,17 +304,14 @@ tryAgain:
{
WOPL_Inst ins;
std::memset(&ins, 0, sizeof(WOPL_Inst));
- if(!readInstrument(fr, ins, readPercussion))
+ if(!readInstrument(fr, ins, version, readPercussion))
{
opl.setEmbeddedBank(m_setup.AdlBank);
errorStringOut = "Custom bank: Fail to read instrument!";
return false;
}
-
- /*
- * 0..127 - melodic, 128...255 - percussion.
- * TODO: Make separated melodic and drum arrays and make MIDI bank ID support
- */
+ ins.adlins.ms_sound_kon = ins.ms_sound_kon;
+ ins.adlins.ms_sound_koff = ins.ms_sound_koff;
ins.adlins.adlno1 = static_cast<uint16_t>(opl.dynamic_instruments.size() | opl.DynamicInstrumentTag);
opl.dynamic_instruments.push_back(ins.op[0]);
ins.adlins.adlno2 = ins.adlins.adlno1;
diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h
index 311b742..d573283 100644
--- a/utils/gen_adldata/file_formats/load_wopl.h
+++ b/utils/gen_adldata/file_formats/load_wopl.h
@@ -5,7 +5,10 @@
#include "../midi_inst_list.h"
#include "common.h"
-static const uint8_t wopl_latest_version = 2;
+static const uint8_t wopl_latest_version = 3;
+
+#define WOPL_INST_SIZE_V2 62
+#define WOPL_INST_SIZE_V3 66
enum class WOPL_Flags
{
@@ -82,6 +85,10 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
}
}
+ size_t insSize = WOPL_INST_SIZE_V2;
+ if(version >= 3)
+ insSize = WOPL_INST_SIZE_V3;
+
uint32_t melodic_offset = 0;
uint32_t percussion_offset = 0;
if(version < 2)
@@ -89,7 +96,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
else
melodic_offset = 0x13 + 34 * mbanks_count + 34 * pbanks_count;
- percussion_offset = melodic_offset + (62 * 128 * mbanks_count);
+ percussion_offset = melodic_offset + (insSize * 128 * mbanks_count);
uint32_t root_offsets[2] = {melodic_offset, percussion_offset};
@@ -98,11 +105,11 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
bool is_percussion = (bset == 1);
for(uint32_t bankno = 0; bankno < 1; bankno++) // only first melodic bank (Until multi-banks support will be implemented)
{
- uint32_t bank_offset = root_offsets[bset] + (bankno * 62 * 128);
+ uint32_t bank_offset = root_offsets[bset] + (bankno * insSize * 128);
for(uint32_t i = 0; i < 128; i++)
{
- uint32_t offset = bank_offset + uint32_t(i * 62);
+ uint32_t offset = bank_offset + uint32_t(i * insSize);
std::string name;
insdata tmp[2];
@@ -147,6 +154,12 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
tmp[1].data[8] = data[offset + 52 + 6];
tmp[1].data[9] = data[offset + 52 + 1];
tmp[1].data[10] = data[offset + 41];
+ /*
+ * We will don't read two millisecond delays on tail of instrument
+ * as there are will be re-calculated by measurer here.
+ * Those fields are made for hot-loading while runtime, but not
+ * for generation of embedded banks database.
+ */
tmp[0].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32));
tmp[1].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 34));
diff --git a/utils/gen_adldata/measurer.cpp b/utils/gen_adldata/measurer.cpp
index 4789b43..f7108f6 100644
--- a/utils/gen_adldata/measurer.cpp
+++ b/utils/gen_adldata/measurer.cpp
@@ -223,8 +223,8 @@ DurationInfo MeasureDurations(const ins &in)
result.quarter_amplitude_time = (double)quarter_amplitude_time;
result.keyoff_out_time = (double)keyoff_out_time;
- result.ms_sound_kon = (long)(quarter_amplitude_time * 1000.0 / interval);
- result.ms_sound_koff = (long)(keyoff_out_time * 1000.0 / interval);
+ result.ms_sound_kon = (int64_t)(quarter_amplitude_time * 1000.0 / interval);
+ result.ms_sound_koff = (int64_t)(keyoff_out_time * 1000.0 / interval);
result.nosound = (peak_amplitude_value < 0.5);
return result;
}