The commercial games factor is quite settled on. I could never allow anyone to make commercial games with an engine that isn't my own. So, freeware only, not even shareware.
  The IDB, as bg has probably told you, is a no-no. Only reason being that I really don't have the time to copy it all to 20 discs + backups and take it uphere (the university) to email it. 
 However, switch-cases/subops, if you haven't noticed, there's a list of all the opcodes for CMI at the SCUMMRev site. The decompiler was GOING to have a full disassembler with byte offsets etc. etc. (and it probably will have when I get further with the compiler). I'll let you know if I make a new version for study with ScummIDE. Otherwise, I'll try to dig up the complete list of opcodes, arguments etc. that I did when doing the decompiler. 
 For now, look at 
http://scummrev.mixnmojo.com/specs/CMIOpcodes.shtml) 
 The ones with an opcode number of 1xx (i.e. greater than 255) are just subopcodes, strip the 1 and check for the rest of the number. So to do WaitForActor, the compiled code is: 
 0xAC O_ACTOR_STUFF
 0x1E O_WAIT_FOR_ACTOR 
 With some pushes before this (as far as I recall, O_WAIT_FOR_ACTOR takes an actor argument). Remember that most arguments are passed with pushes. Only strings (and a few other cases - the pushes themselves, of course, being one example) are stored after the opcode. The rest is done like: 
 0x01 0x00000001 
 O_PUSH_NUMBER 1
 0x02 0x80000001 
 O_PUSH_VARIABLE Var1 (as far as I recall)
 0x08
 O_EQ
 0x65 0x00000010
 O_IF_NOT 16 
 in short:
 if !(Var1 == 1) jump 16 bytes forward. 
 You probably already know all that, but just to be sure. 
 Otherwise, I'll try and find the complete opcodes and arguments list. 
 - Serge