931 | | /* copy the instrument data in another memory area */ |
932 | | instr = (byte *)calloc(8 * 16, 1); |
933 | | memcpy(instr, ptr + 0x19, 8*16); |
| 931 | /* copy the instrument data in another memory area */ |
| 932 | if (size >= 0x19 + 8*16) { |
| 933 | instr = (byte *)calloc(8 * 16, 1); |
| 934 | if (instr) |
| 935 | memcpy(instr, ptr + 0x19, 8*16); |
| 936 | } else { |
| 937 | instr = 0; |
| 938 | } |
982 | | /* flags_1 */ |
983 | | ptr[95 * i + 30 + 0] = (instr[i * 16 + 3] >> 4) & 0xf; |
984 | | ptr[95 * i + 30 + 1] = instr[i * 16 + 3] & 0xf; |
985 | | |
986 | | /* oplvl_1 */ |
987 | | ptr[95 * i + 30 + 2] = (instr[i * 16 + 4] >> 4) & 0xf; |
988 | | ptr[95 * i + 30 + 3] = instr[i * 16 + 4] & 0xf; |
989 | | |
990 | | /* atdec_1 */ |
991 | | ptr[95 * i + 30 + 4] = ((~instr[i * 16 + 5]) >> 4) & 0xf; |
992 | | ptr[95 * i + 30 + 5] = (~instr[i * 16 + 5]) & 0xf; |
993 | | |
994 | | /* sustrel_1 */ |
995 | | ptr[95 * i + 30 + 6] = ((~instr[i * 16 + 6]) >> 4) & 0xf; |
996 | | ptr[95 * i + 30 + 7] = (~instr[i * 16 + 6]) & 0xf; |
997 | | |
998 | | /* waveform_1 */ |
999 | | ptr[95 * i + 30 + 8] = (instr[i * 16 + 7] >> 4) & 0xf; |
1000 | | ptr[95 * i + 30 + 9] = instr[i * 16 + 7] & 0xf; |
1001 | | |
1002 | | /* flags_2 */ |
1003 | | ptr[95 * i + 30 + 10] = (instr[i * 16 + 8] >> 4) & 0xf; |
1004 | | ptr[95 * i + 30 + 11] = instr[i * 16 + 8] & 0xf; |
1005 | | |
1006 | | /* oplvl_2 */ |
1007 | | ptr[95 * i + 30 + 12] = 3; |
1008 | | ptr[95 * i + 30 + 13] = 0xF; |
1009 | | |
1010 | | /* atdec_2 */ |
1011 | | ptr[95 * i + 30 + 14] = ((~instr[i * 16 + 10]) >> 4) & 0xf; |
1012 | | ptr[95 * i + 30 + 15] = (~instr[i * 16 + 10]) & 0xf; |
1013 | | |
1014 | | /* sustrel_2 */ |
1015 | | ptr[95 * i + 30 + 16] = ((~instr[i * 16 + 11]) >> 4) & 0xf; |
1016 | | ptr[95 * i + 30 + 17] = (~instr[i * 16 + 11]) & 0xf; |
1017 | | |
1018 | | /* waveform_2 */ |
1019 | | ptr[95 * i + 30 + 18] = (instr[i * 16 + 12] >> 4) & 0xf; |
1020 | | ptr[95 * i + 30 + 19] = instr[i * 16 + 12] & 0xf; |
1021 | | |
1022 | | /* feedback */ |
1023 | | ptr[95 * i + 30 + 20] = (instr[i * 16 + 2] >> 4) & 0xf; |
1024 | | ptr[95 * i + 30 + 21] = instr[i * 16 + 2] & 0xf; |
1025 | | } |
| 986 | /* now fill in the instruments */ |
| 987 | for (int i = 0; i < 8; i++) { |
| 988 | |
| 989 | /* flags_1 */ |
| 990 | ptr[95 * i + 30 + 0] = (instr[i * 16 + 3] >> 4) & 0xf; |
| 991 | ptr[95 * i + 30 + 1] = instr[i * 16 + 3] & 0xf; |
| 992 | |
| 993 | /* oplvl_1 */ |
| 994 | ptr[95 * i + 30 + 2] = (instr[i * 16 + 4] >> 4) & 0xf; |
| 995 | ptr[95 * i + 30 + 3] = instr[i * 16 + 4] & 0xf; |
| 996 | |
| 997 | /* atdec_1 */ |
| 998 | ptr[95 * i + 30 + 4] = ((~instr[i * 16 + 5]) >> 4) & 0xf; |
| 999 | ptr[95 * i + 30 + 5] = (~instr[i * 16 + 5]) & 0xf; |
| 1000 | |
| 1001 | /* sustrel_1 */ |
| 1002 | ptr[95 * i + 30 + 6] = ((~instr[i * 16 + 6]) >> 4) & 0xf; |
| 1003 | ptr[95 * i + 30 + 7] = (~instr[i * 16 + 6]) & 0xf; |
| 1004 | |
| 1005 | /* waveform_1 */ |
| 1006 | ptr[95 * i + 30 + 8] = (instr[i * 16 + 7] >> 4) & 0xf; |
| 1007 | ptr[95 * i + 30 + 9] = instr[i * 16 + 7] & 0xf; |
1027 | | free(instr); |
| 1009 | /* flags_2 */ |
| 1010 | ptr[95 * i + 30 + 10] = (instr[i * 16 + 8] >> 4) & 0xf; |
| 1011 | ptr[95 * i + 30 + 11] = instr[i * 16 + 8] & 0xf; |
| 1012 | |
| 1013 | /* oplvl_2 */ |
| 1014 | ptr[95 * i + 30 + 12] = 3; |
| 1015 | ptr[95 * i + 30 + 13] = 0xF; |
| 1016 | |
| 1017 | /* atdec_2 */ |
| 1018 | ptr[95 * i + 30 + 14] = ((~instr[i * 16 + 10]) >> 4) & 0xf; |
| 1019 | ptr[95 * i + 30 + 15] = (~instr[i * 16 + 10]) & 0xf; |
| 1020 | |
| 1021 | /* sustrel_2 */ |
| 1022 | ptr[95 * i + 30 + 16] = ((~instr[i * 16 + 11]) >> 4) & 0xf; |
| 1023 | ptr[95 * i + 30 + 17] = (~instr[i * 16 + 11]) & 0xf; |
| 1024 | |
| 1025 | /* waveform_2 */ |
| 1026 | ptr[95 * i + 30 + 18] = (instr[i * 16 + 12] >> 4) & 0xf; |
| 1027 | ptr[95 * i + 30 + 19] = instr[i * 16 + 12] & 0xf; |
| 1028 | |
| 1029 | /* feedback */ |
| 1030 | ptr[95 * i + 30 + 20] = (instr[i * 16 + 2] >> 4) & 0xf; |
| 1031 | ptr[95 * i + 30 + 21] = instr[i * 16 + 2] & 0xf; |
| 1032 | } |
| 1033 | |
| 1034 | free(instr); |
| 1035 | } |