89a90,140
> 			if ((_gameId == GID_DIG) && (data[0] == 12)){
> 				uint32 size, rate, tag, chan;
> 				uint8 * ptr = getResourceAddress(rtSound, data[1]);
> 				if (ptr != NULL) {
> 					ptr+=16;       /* Skip header */
> 					for (;;) {
> 				    		tag = READ_BE_UINT32(ptr);  ptr+=4;
> 						switch(tag) {
> 							case MKID_BE('FRMT'):
> 								size = READ_BE_UINT32(ptr); ptr+=16;					
> 								rate = READ_BE_UINT32(ptr); ptr+=4;
> 								chan = READ_BE_UINT32(ptr); ptr+=4;
> 							break;
> 							case MKID_BE('TEXT'):
> 							case MKID_BE('REGN'):
> 							case MKID_BE('STOP'):
> 								size = READ_BE_UINT32(ptr); ptr+=size+4;
> 							break;
> 							case MKID_BE('DATA'):
> 								size = READ_BE_UINT32(ptr); ptr+=4;
> 							break;
> 							default:
> 								error("Unknown sfx header %c%c%c%c", tag>>24, tag>>16, tag>>8, tag);
> 						}
> 						if (tag == MKID_BE('DATA')) break;
> 					}
> 					if (chan == 1)
> 					{
> 						uint32 s_size = (size * 2) / 3;
> 						byte * buffer = (byte*)malloc (s_size);
> 						uint32 l = 0, r = 0, tmp;
> 						memset (buffer, 0, s_size);
> 						for (; l < size - 1; l += 3)
> 						{
> 							tmp = (ptr[l + 1] & 0x0f) << 8;
> 							tmp = (tmp | ptr[l + 0]) << 4;
> 							tmp -= 0x8000;
> //							buffer[r++] = (uint8)(tmp & 0xff);
> 							buffer[r++] = (uint8)((tmp >> 8) & 0xff);
> 
> 							tmp = (ptr[l + 1] & 0xf0) << 4;
> 							tmp = (tmp | ptr[l + 2]) << 4;
> 							tmp -= 0x8000;
> //							buffer[r++] = (uint8)(tmp & 0xff);
> 							buffer[r++] = (uint8)((tmp >> 8) & 0xff);
> 						}
> 						_mixer->play_raw(NULL, buffer, s_size, rate, SoundMixer::FLAG_AUTOFREE);
> 					}
> 				}
> 			}
> 																										    																																						
