Pages: [1] 2   Go Down
  Print  
Author Topic: Turning off the CM-32P Parts  (Read 6848 times)
0 Members and 1 Guest are viewing this topic.
Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« on: November 19, 2005, 04:54:38 PM »

I have a request.  I know you can embed sysex commands into a midi file.  You can also create a midi file entirely of sysex commands.  I need a midi file that can completely disable the CM-32P parts (11-16) of a CM-32L + CM_32P, CM-64 or CM-500 Mode B setup without affecting the MT-32 parts (2-9, 10).  I know it can be done with sysex, but I would prefer something more convenient and I don't know how to do it.  This is necessary for those early Sierra SCI games that improperly use the extra parts.
Logged

Cloudschatze
Guest
« Reply #1 on: November 19, 2005, 05:50:14 PM »

Quote from: Great Hierophant
...This is necessary for those early Sierra SCI games that improperly use the extra parts.


Using a later SCI0 MT32.DRV will produce the same result as a SysEx file disabling parts 11-16.
Logged
Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« Reply #2 on: November 20, 2005, 04:16:07 PM »

Could you identify specific MT32.DRVs that worked to solve the problem?  I keep getting into trouble with KQ4 and LSL2.
Logged

Alistair
Senior Member
*
Offline Offline

Posts: 4,052



View Profile WWW
« Reply #3 on: November 20, 2005, 09:03:13 PM »

They're not later SCI0 MT-32.DRV's, they'r ethe earliest ones!

I think Eric means, like QFG2 and such.

- Alistair
Logged
Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« Reply #4 on: November 20, 2005, 09:18:06 PM »

I meant that the solution does work, except for KQ4 and LSL2.  I hesitiate to use the MT32.DRV from QG2 because QG2 really uses the SCI1 engine and only looks like an SCI0 game.
Logged

Alistair
Senior Member
*
Offline Offline

Posts: 4,052



View Profile WWW
« Reply #5 on: November 20, 2005, 09:32:55 PM »

Well then, QFG1 or LSL3. Yeesh. Tongue

- Alistair
Logged
Cloudschatze
Guest
« Reply #6 on: November 21, 2005, 06:06:11 PM »

Great Hierophant, were you able to get everything working?

I picked on KQ1SCI's driver for substitution into KQ4, PQ2, and LSL2.

The driver from QFG2 should not work, as you state.
Logged
Kaminari
Senior Member
*
Offline Offline

Posts: 149



View Profile WWW
« Reply #7 on: November 22, 2005, 06:38:46 AM »

I have a CM-500 set to Mode B and I'm looking too for a solution to disable the "AdLib" parts. So far, no other MT32.DRV has done the trick. I've tried the ones from KQ1SCI, LSL3 and QFG1 with no luck. Some parts are indeed muted, but the active ones don't sound right at all.

[Edit] I've found something very interesting.

If you launch a later SCI game like QFG1 or QFG2, then quit the game and reset the CM-64/500 with the reset SysEx available in the QS Resource Center (Utilities), parts 1 and 11-16 will remain muted unless you power the synth off -- KQ4, PQ2 and LSL2 will play perfectly until then (with their original driver).

I've been using DOSBox in my tests, but maybe it works in pure DOS too.
Logged
Cloudschatze
Guest
« Reply #8 on: November 22, 2005, 11:59:58 AM »

Not to speculate, but could DOSBox be fouling something up? From everything I've tried, you should be able to take and use the driver from any game that does play correctly. When editing such a driver, you will see "CM-64" etc. in the top line.

I've never had an issue doing as I've suggested, but in case it's environment-specific, I'm using a DOS-based 486 and hardware MPU interfaces (MPU-IPC-T, LAPC-I).
Logged
NewRisingSUn
Senior Member
*
Offline Offline

Posts: 634


View Profile
« Reply #9 on: November 22, 2005, 03:44:38 PM »

I always use the CM-500 in Mode A (both GS+LA), sending this sysex for General MIDI data and this sysex for MT-32 data. Works nice for KQ4 1.000.111 and everything else except for those few silly games from Origin Systems that use the MT-32 driver (which sends an MT-32 Reset Sysex) to play General MIDI music. For them, I just remove that Reset Sysex from the driver file itself.

Quote from: Cloudschatze
From everything I've tried, you should be able to take and use the driver from any game that does play correctly.
No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource.
« Last Edit: February 11, 2008, 09:55:27 PM by NewRisingSUn » Logged
Cloudschatze
Guest
« Reply #10 on: November 23, 2005, 05:20:18 AM »

Quote from: NewRisingSUn
Quote from: Cloudschatze
From everything I've tried, you should be able to take and use the driver from any game that does play correctly.
No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource.


Ah. 1.006.004 seems to work though.
Logged
Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« Reply #11 on: November 23, 2005, 11:18:26 PM »

Quote
Ah. 1.006.004 seems to work though.


Indeed it does for Kq4.  The problem I had is that I had 1.000.111 (copy-protected crack.)  Fortunately, I found the later version on my King's Quest Collection CD.  Unfortunately, it is not cracked and has stripped down graphics/sound options (no CGA/Tandy at all.)  

Quote
No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource.


Do early versions of LSL2 do this?
Logged

Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« Reply #12 on: November 26, 2005, 02:02:11 AM »

The sysex commands to turn off all CM-32P parts, if I read Roland's midi interpretation correctly, are:

F0 41 10 16 12 52 00 0A 10 14 F7
F0 41 10 16 12 52 00 0B 10 13 F7
F0 41 10 16 12 52 00 0C 10 12 F7
F0 41 10 16 12 52 00 0D 10 11 F7
F0 41 10 16 12 52 00 0E 10 10 F7
F0 41 10 16 12 52 00 0F 10 0F F7

Now, how can I turn those commands into a regular single midi file?
Logged

Cloudschatze
Guest
« Reply #13 on: November 26, 2005, 03:32:26 AM »

Quote from: Great Hierophant
Now, how can I turn those commands into a regular single midi file?


I created a SysEx file using Cakewalk:

cm32p_off.syx

And then saved it into a Format 0 MIDI file:

cm32p_off.mid
Logged
Great Hierophant
Senior Member
*
Offline Offline

Posts: 988



View Profile
« Reply #14 on: November 26, 2005, 01:57:09 PM »

That seems to work, just don't use Windows Media Player.  By the way, Roland's manual implies I can achieve the same result with this single command:

F0 41 10 16 12 52 00 0A 10 10 10 10 10 10 10 C4 F7

It didn't work very well when I tried to send it through my sysex program.  Why not?
Logged

NewRisingSUn
Senior Member
*
Offline Offline

Posts: 634


View Profile
« Reply #15 on: November 26, 2005, 02:41:56 PM »

The checksum should be 34, not C4.
Logged
Tom
Administrator
Senior Member
*
Offline Offline

Posts: 5,618



View Profile WWW
« Reply #16 on: November 26, 2005, 04:13:11 PM »

Question...

I need a refresher -- it's been so long since I've done this:

F0 41 10 16 12 52 00 0A 10 10 10 10 10 10 10 CHKSM F7

I've always used Hex Workshop to calculate checksums, and the resulting SysEx files I've created seem to work fine -- but it's been years.  When you calculate the checksum for the above string, I've forgotten what numbers to include in the calculation?  Hex Workshop does the calculation, but I can't find any combination of numbers that produces a checksum of 34, as you've stated it should be.
Logged

NewRisingSUn
Senior Member
*
Offline Offline

Posts: 634


View Profile
« Reply #17 on: November 26, 2005, 04:21:28 PM »

> 52 00 0A 10 10 10 10 10 10 10

Generally:
checksum = neg (sum (address/data bytes)) and 7F

52+00+0A+70 (10x7) = CC
neg CC = 34
and 7F = 34
=> checksum = 34
Logged
Tom
Administrator
Senior Member
*
Offline Offline

Posts: 5,618



View Profile WWW
« Reply #18 on: November 26, 2005, 04:53:05 PM »

I think I've figured it out; Roland gives a little tutorial and several examples in the back of my 8820 manual that explains it as:

The SUM of the ADDRESS and SIZE, divided by 128.
The remainder subtracted from 128 gives you the checksum.

I've tried a few 8820 SysEx strings that came with my module and they're calculating correctly.  And now I also come up with a checksum of 34 for the above string.  I have to convert everything to decimals -- HEX makes me dizzy.
Logged

Laust
Senior Member
*
Offline Offline

Posts: 722


View Profile
« Reply #19 on: November 26, 2005, 06:55:26 PM »

Calculating SysEx checksums by hand is truly "oldschool", but if you want to cheat, there's a nice little tool here that can do it for you Smiley
Logged
Pages: [1] 2   Go Up
  Print  
 
Jump to: