Ticket #8071: monkey1_instr2.diff
File monkey1_instr2.diff, 13.1 KB (added by , 22 years ago) |
---|
-
scumm/imuse.cpp
diff -ur scummorig/scumm/imuse.cpp scummvm/scumm/imuse.cpp
old new 3678 3678 3679 3679 port = channel_mappings[chan]; 3680 3680 adlib_write(port + 0x20, instr->flags_1); 3681 adlib_write(port + 0x40, (instr->oplvl_1 | 0x3F) - vol_1); 3682 adlib_write(port + 0x60, ~instr->atdec_1); 3683 adlib_write(port + 0x80, ~instr->sustrel_1); 3681 3682 if ((g_scumm->_gameId != GID_MONKEY_VGA) || (instr->feedback & 1)) 3683 adlib_write(port + 0x40, (instr->oplvl_1 | 0x3F) - vol_1 ); 3684 else 3685 adlib_write(port + 0x40, instr->oplvl_1); 3686 3687 adlib_write(port + 0x60, 0xff & (~instr->atdec_1)); 3688 adlib_write(port + 0x80, 0xff & (~instr->sustrel_1)); 3684 3689 adlib_write(port + 0xE0, instr->waveform_1); 3685 3690 3686 3691 port = channel_mappings_2[chan]; 3687 3692 adlib_write(port + 0x20, instr->flags_2); 3688 adlib_write(port + 0x40, (instr->oplvl_2 | 0x3F) - vol_2 );3689 adlib_write(port + 0x60, ~instr->atdec_2);3690 adlib_write(port + 0x80, ~instr->sustrel_2);3693 adlib_write(port + 0x40, (instr->oplvl_2 | 0x3F) - vol_2 ); 3694 adlib_write(port + 0x60, 0xff & (~instr->atdec_2)); 3695 adlib_write(port + 0x80, 0xff & (~instr->sustrel_2)); 3691 3696 adlib_write(port + 0xE0, instr->waveform_2); 3692 3697 3693 3698 adlib_write((byte)chan + 0xC0, instr->feedback); -
scumm/resource.cpp
diff -ur scummorig/scumm/resource.cpp scummvm/scumm/resource.cpp
old new 741 741 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 742 742 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 743 743 "\x00" // part/channel 744 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 744 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 745 745 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 746 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"746 "\x05\x04\x0c\x00\x03\x01\x01\x00" 747 747 "\x00\x00\x01\x01\x0e\x00\x02\x02" 748 "\x01\x00\x01\x00\x01\x02\x00\x0 a"748 "\x01\x00\x01\x00\x01\x02\x00\x01" 749 749 "\x08\x00\x00\x00\x01\x02\x04\x00" 750 750 "\x06\x02\x00\x00\x04\x00\x03\x02" 751 751 "\x04\x00\x00\xf7" … … 758 758 "\x01" // part/channel 759 759 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 760 760 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 761 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"761 "\x05\x04\x0c\x00\x03\x01\x01\x00" 762 762 "\x00\x00\x01\x01\x0e\x00\x02\x02" 763 "\x01\x00\x01\x00\x01\x02\x00\x0 a"763 "\x01\x00\x01\x00\x01\x02\x00\x01" 764 764 "\x08\x00\x00\x00\x01\x02\x04\x00" 765 765 "\x06\x02\x00\x00\x04\x00\x03\x02" 766 766 "\x04\x00\x00\xf7" … … 773 773 "\x02" // part/channel 774 774 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 775 775 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 776 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"776 "\x05\x04\x0c\x00\x03\x01\x01\x00" 777 777 "\x00\x00\x01\x01\x0e\x00\x02\x02" 778 "\x01\x00\x01\x00\x01\x02\x00\x0 a"778 "\x01\x00\x01\x00\x01\x02\x00\x01" 779 779 "\x08\x00\x00\x00\x01\x02\x04\x00" 780 780 "\x06\x02\x00\x00\x04\x00\x03\x02" 781 781 "\x04\x00\x00\xf7" … … 788 788 "\x03" // part/channel 789 789 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 790 790 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 791 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"791 "\x05\x04\x0c\x00\x03\x01\x01\x00" 792 792 "\x00\x00\x01\x01\x0e\x00\x02\x02" 793 "\x01\x00\x01\x00\x01\x02\x00\x0 a"793 "\x01\x00\x01\x00\x01\x02\x00\x01" 794 794 "\x08\x00\x00\x00\x01\x02\x04\x00" 795 795 "\x06\x02\x00\x00\x04\x00\x03\x02" 796 796 "\x04\x00\x00\xf7" … … 803 803 "\x04" // part/channel 804 804 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 805 805 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 806 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"806 "\x05\x04\x0c\x00\x03\x01\x01\x00" 807 807 "\x00\x00\x01\x01\x0e\x00\x02\x02" 808 "\x01\x00\x01\x00\x01\x02\x00\x0 a"808 "\x01\x00\x01\x00\x01\x02\x00\x01" 809 809 "\x08\x00\x00\x00\x01\x02\x04\x00" 810 810 "\x06\x02\x00\x00\x04\x00\x03\x02" 811 811 "\x04\x00\x00\xf7" … … 818 818 "\x05" // part/channel 819 819 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 820 820 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 821 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"821 "\x05\x04\x0c\x00\x03\x01\x01\x00" 822 822 "\x00\x00\x01\x01\x0e\x00\x02\x02" 823 "\x01\x00\x01\x00\x01\x02\x00\x0 a"823 "\x01\x00\x01\x00\x01\x02\x00\x01" 824 824 "\x08\x00\x00\x00\x01\x02\x04\x00" 825 825 "\x06\x02\x00\x00\x04\x00\x03\x02" 826 826 "\x04\x00\x00\xf7" … … 833 833 "\x06" // part/channel 834 834 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 835 835 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 836 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"836 "\x05\x04\x0c\x00\x03\x01\x01\x00" 837 837 "\x00\x00\x01\x01\x0e\x00\x02\x02" 838 "\x01\x00\x01\x00\x01\x02\x00\x0 a"838 "\x01\x00\x01\x00\x01\x02\x00\x01" 839 839 "\x08\x00\x00\x00\x01\x02\x04\x00" 840 840 "\x06\x02\x00\x00\x04\x00\x03\x02" 841 841 "\x04\x00\x00\xf7" … … 848 848 "\x07" // part/channel 849 849 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 850 850 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 851 "\x05\x04\x0c\x00\x03\x0 a\x01\x00"851 "\x05\x04\x0c\x00\x03\x01\x01\x00" 852 852 "\x00\x00\x01\x01\x0e\x00\x02\x02" 853 "\x01\x00\x01\x00\x01\x02\x00\x0 a"853 "\x01\x00\x01\x00\x01\x02\x00\x01" 854 854 "\x08\x00\x00\x00\x01\x02\x04\x00" 855 855 "\x06\x02\x00\x00\x04\x00\x03\x02" 856 856 "\x04\x00\x00\xf7" 857 "\x00\xb7\x07\x64" // Controller 7 = 100 858 // 8 859 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 860 "\x08\x00\x03" // part/channel 861 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 862 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 863 "\x08" // part/channel 864 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 865 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 866 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 867 "\x00\x00\x01\x01\x0e\x00\x02\x02" 868 "\x01\x00\x01\x00\x01\x02\x00\x0a" 869 "\x08\x00\x00\x00\x01\x02\x04\x00" 870 "\x06\x02\x00\x00\x04\x00\x03\x02" 871 "\x04\x00\x00\xf7" 872 "\x00\xb8\x07\x64" // Controller 7 = 100 873 // 9 874 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 875 "\x09\x00\x03" // part/channel 876 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 877 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 878 "\x09" // part/channel 879 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 880 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 881 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 882 "\x00\x00\x01\x01\x0e\x00\x02\x02" 883 "\x01\x00\x01\x00\x01\x02\x00\x0a" 884 "\x08\x00\x00\x00\x01\x02\x04\x00" 885 "\x06\x02\x00\x00\x04\x00\x03\x02" 886 "\x04\x00\x00\xf7" 887 "\x00\xb9\x07\x64" // Controller 7 = 100 888 // Channels after 9 realy necessary ?!? 889 // A 890 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 891 "\x0A\x00\x03" // part/channel 892 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 893 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 894 "\x0A" // part/channel 895 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 896 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 897 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 898 "\x00\x00\x01\x01\x0e\x00\x02\x02" 899 "\x01\x00\x01\x00\x01\x02\x00\x0a" 900 "\x08\x00\x00\x00\x01\x02\x04\x00" 901 "\x06\x02\x00\x00\x04\x00\x03\x02" 902 "\x04\x00\x00\xf7" 903 "\x00\xbA\x07\x64" // Controller 7 = 100 904 // B 905 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 906 "\x0B\x00\x03" // part/channel 907 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 908 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 909 "\x0B" // part/channel 910 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 911 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 912 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 913 "\x00\x00\x01\x01\x0e\x00\x02\x02" 914 "\x01\x00\x01\x00\x01\x02\x00\x0a" 915 "\x08\x00\x00\x00\x01\x02\x04\x00" 916 "\x06\x02\x00\x00\x04\x00\x03\x02" 917 "\x04\x00\x00\xf7" 918 "\x00\xbB\x07\x64" // Controller 7 = 100 919 // C 920 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 921 "\x0C\x00\x03" // part/channel 922 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 923 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 924 "\x0C" // part/channel 925 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 926 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 927 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 928 "\x00\x00\x01\x01\x0e\x00\x02\x02" 929 "\x01\x00\x01\x00\x01\x02\x00\x0a" 930 "\x08\x00\x00\x00\x01\x02\x04\x00" 931 "\x06\x02\x00\x00\x04\x00\x03\x02" 932 "\x04\x00\x00\xf7" 933 "\x00\xbC\x07\x64" // Controller 7 = 100 934 // D 935 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 936 "\x0D\x00\x03" // part/channel 937 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 938 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 939 "\x0D" // part/channel 940 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 941 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 942 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 943 "\x00\x00\x01\x01\x0e\x00\x02\x02" 944 "\x01\x00\x01\x00\x01\x02\x00\x0a" 945 "\x08\x00\x00\x00\x01\x02\x04\x00" 946 "\x06\x02\x00\x00\x04\x00\x03\x02" 947 "\x04\x00\x00\xf7" 948 "\x00\xbD\x07\x64" // Controller 7 = 100 949 // E 950 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 951 "\x0E\x00\x03" // part/channel 952 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 953 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 954 "\x0E" // part/channel 955 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 956 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 957 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 958 "\x00\x00\x01\x01\x0e\x00\x02\x02" 959 "\x01\x00\x01\x00\x01\x02\x00\x0a" 960 "\x08\x00\x00\x00\x01\x02\x04\x00" 961 "\x06\x02\x00\x00\x04\x00\x03\x02" 962 "\x04\x00\x00\xf7" 963 "\x00\xbE\x07\x64" // Controller 7 = 100 964 // F 965 "\x00\xf0\x14\x7d\x00" // sysex 00: part on/off 966 "\x0F\x00\x03" // part/channel 967 "\x00\x00\x07\x0f\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\xf7" 968 "\x04\xf0\x41\x7d\x10" // sysex 16: set instrument 969 "\x0F" // part/channel 970 "\x01\x06\x02\x0a\x08\x09\x0d\x08\x04\x04" 971 "\x04\x06\x02\x02\x03\x07\x0f\x0d" 972 "\x05\x04\x0c\x00\x03\x0a\x01\x00" 973 "\x00\x00\x01\x01\x0e\x00\x02\x02" 974 "\x01\x00\x01\x00\x01\x02\x00\x0a" 975 "\x08\x00\x00\x00\x01\x02\x04\x00" 976 "\x06\x02\x00\x00\x04\x00\x03\x02" 977 "\x04\x00\x00\xf7" 978 "\x00\xbF\x07\x64"; // Controller 7 = 100 857 "\x00\xb7\x07\x64"; // Controller 7 = 100 979 858 980 859 int Scumm::readSoundResourceSmallHeader(int type, int idx) 981 860 { 982 861 uint32 pos, total_size, size, dw, tag; 983 862 uint32 best_size = 0, best_offs = 0; 984 byte *ptr, *track ;863 byte *ptr, *track, *instr; 985 864 uint16 ticks, skip; 986 865 987 866 debug(4, "readSoundResourceSmallHeader(%s,%d)", resTypeFromId(type), idx); … … 1048 927 } else { 1049 928 skip = 0x98; 1050 929 } 930 931 /* copy the instrument data in another memory area */ 932 instr = (byte *)calloc(8 * 16, 1); 933 memcpy(instr, ptr + 0x19, 8*16); 934 1051 935 ptr += skip; // size + instruments 1052 936 size -= skip; // drop instruments for now 1053 937 CHECK_HEAP … … 1056 940 error("Out of memory while allocating %d", size); 1057 941 } 1058 942 memcpy(track, ptr, size); // saving MIDI track data 943 1059 944 nukeResource(type, idx); 1060 945 1061 946 total_size = 8 + 16 + 14 + 8 + 7 + sizeof(OLD256_MIDI_HACK) - 1 + size; … … 1090 975 *ptr++ = (byte)((dw >> 8) & 0xFF); 1091 976 *ptr++ = (byte)(dw & 0xFF); 1092 977 memcpy(ptr, OLD256_MIDI_HACK, sizeof(OLD256_MIDI_HACK) - 1); 978 979 /* now fill in the instruments */ 980 for (int i = 0; i < 8; i++) { 981 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 } 1026 1027 free(instr); 1028 1093 1029 ptr += sizeof(OLD256_MIDI_HACK) - 1; 1094 1030 memcpy(ptr, track, size); 1095 1031 free(track);