diff src/adplug/core/msc.cxx @ 955:4709ce4e209e trunk

[svn] Run indent -ts4 -nut -bli0 -cdw on this messy lot. Upstream is not consistent with whitespace anyway, no loss there.
author chainsaw
date Sat, 14 Apr 2007 15:23:50 -0700
parents cae46214b8bf
children f27d73fb0bcd
line wrap: on
line diff
--- a/src/adplug/core/msc.cxx	Sat Apr 14 08:48:41 2007 -0700
+++ b/src/adplug/core/msc.cxx	Sat Apr 14 15:23:50 2007 -0700
@@ -24,289 +24,314 @@
 #include "msc.h"
 #include "debug.h"
 
-const unsigned char CmscPlayer::msc_signature [MSC_SIGN_LEN] = {
-	'C', 'e', 'r', 'e', 's', ' ', '\x13', ' ',
-	'M', 'S', 'C', 'p', 'l', 'a', 'y', ' ' };
+const unsigned char
+  CmscPlayer::msc_signature[MSC_SIGN_LEN] = {
+  'C', 'e', 'r', 'e', 's', ' ', '\x13', ' ',
+  'M', 'S', 'C', 'p', 'l', 'a', 'y', ' '
+};
 
 /*** public methods *************************************/
 
-CPlayer *CmscPlayer::factory (Copl * newopl)
+CPlayer *
+CmscPlayer::factory (Copl * newopl)
 {
-	return new CmscPlayer (newopl);
+  return new CmscPlayer (newopl);
 }
 
-CmscPlayer::CmscPlayer(Copl * newopl) : CPlayer (newopl)
+CmscPlayer::CmscPlayer (Copl * newopl):CPlayer (newopl)
 {
-	desc = NULL;
-	msc_data = NULL;
-	raw_data = NULL;
-	nr_blocks = 0;
+  desc = NULL;
+  msc_data = NULL;
+  raw_data = NULL;
+  nr_blocks = 0;
 }
 
-CmscPlayer::~CmscPlayer()
+CmscPlayer::~CmscPlayer ()
 {
-	if (raw_data != NULL)
-		delete [] raw_data;
-	
-	if (msc_data != NULL) {
-		// free compressed blocks
-		for (int blk_num = 0; blk_num < nr_blocks; blk_num++) {
-			if (msc_data [blk_num].mb_data != NULL)
-				delete [] msc_data [blk_num].mb_data;
-		}
-		
-		delete [] msc_data;
-	}
-	
-	if (desc != NULL)
-		delete [] desc;
+  if (raw_data != NULL)
+    delete[]raw_data;
+
+  if (msc_data != NULL)
+  {
+    // free compressed blocks
+    for (int blk_num = 0; blk_num < nr_blocks; blk_num++)
+    {
+      if (msc_data[blk_num].mb_data != NULL)
+        delete[]msc_data[blk_num].mb_data;
+    }
+
+    delete[]msc_data;
+  }
+
+  if (desc != NULL)
+    delete[]desc;
 }
 
-bool CmscPlayer::load(VFSFile * fd, const CFileProvider & fp)
+bool
+CmscPlayer::load (VFSFile * fd, const CFileProvider & fp)
 {
-	binistream * 	bf;
-	msc_header	hdr;
+  binistream *bf;
+  msc_header hdr;
+
+  // open and validate the file
+  bf = fp.open (fd);
+  if (!bf)
+    return false;
+
+  if (!load_header (bf, &hdr))
+  {
+    fp.close (bf);
+    return false;
+  }
+
+  // get stuff from the header
+  version = hdr.mh_ver;
+  timer_div = hdr.mh_timer;
+  nr_blocks = hdr.mh_nr_blocks;
+  block_len = hdr.mh_block_len;
 
-	// open and validate the file
-	bf = fp.open (fd);
-	if (! bf)
-		return false;
-	
-	if (! load_header (bf, & hdr)) {
-		fp.close (bf);
-		return false;
-	}
-	
-	// get stuff from the header
-	version = hdr.mh_ver;
-	timer_div = hdr.mh_timer;
-	nr_blocks = hdr.mh_nr_blocks;
-	block_len = hdr.mh_block_len;
-	
-	if (! nr_blocks) {
-		fp.close (bf);
-		return false;
-	}
-	
-	// load compressed data blocks
-	msc_data = new msc_block [nr_blocks];
-	raw_data = new u8 [block_len];
+  if (!nr_blocks)
+  {
+    fp.close (bf);
+    return false;
+  }
+
+  // load compressed data blocks
+  msc_data = new msc_block[nr_blocks];
+  raw_data = new u8[block_len];
+
+  for (int blk_num = 0; blk_num < nr_blocks; blk_num++)
+  {
+    msc_block blk;
 
-	for (int blk_num = 0; blk_num < nr_blocks; blk_num++) {
-		msc_block blk;
-		
-		blk.mb_length = bf->readInt (2);
-		blk.mb_data = new u8 [blk.mb_length];
-		for (int oct_num = 0; oct_num < blk.mb_length; oct_num++) {
-			blk.mb_data [oct_num] = bf->readInt (1);
-		}
-		
-		msc_data [blk_num] = blk;
-	}
-	
-	// clean up & initialize
-	fp.close (bf);
-	rewind (0);
-	
-	return true;	
+    blk.mb_length = bf->readInt (2);
+    blk.mb_data = new u8[blk.mb_length];
+    for (int oct_num = 0; oct_num < blk.mb_length; oct_num++)
+    {
+      blk.mb_data[oct_num] = bf->readInt (1);
+    }
+
+    msc_data[blk_num] = blk;
+  }
+
+  // clean up & initialize
+  fp.close (bf);
+  rewind (0);
+
+  return true;
 }
 
-bool CmscPlayer::update()
+bool
+CmscPlayer::update ()
 {
-	// output data
-	while (! delay) {
-		u8	cmnd;
-		u8	data;
+  // output data
+  while (!delay)
+  {
+    u8 cmnd;
+    u8 data;
+
+    // decode data
+    if (!decode_octet (&cmnd))
+      return false;
+
+    if (!decode_octet (&data))
+      return false;
+
+    // check for special commands
+    switch (cmnd)
+    {
 
-		// decode data
-		if (! decode_octet (& cmnd))
-			return false;
-			
-		if (! decode_octet (& data))
-			return false;
-			
-		// check for special commands
-		switch (cmnd) {
-		
-		// delay
-		case 0xff:
-			delay = 1 + (u8) (data - 1);
-			break;
-		
-		// play command & data
-		default:
-			opl->write (cmnd, data);
-			
-		} // command switch
-	} // play pass
-	
-	
-	// count delays
-	if (delay)
-		delay--;
-	
-	// advance player position
-	play_pos++;
-	return true;
+      // delay
+    case 0xff:
+      delay = 1 + (u8) (data - 1);
+      break;
+
+      // play command & data
+    default:
+      opl->write (cmnd, data);
+
+    }                           // command switch
+  }                             // play pass
+
+
+  // count delays
+  if (delay)
+    delay--;
+
+  // advance player position
+  play_pos++;
+  return true;
 }
 
-void CmscPlayer::rewind(int subsong)
+void
+CmscPlayer::rewind (int subsong)
 {
-	// reset state
-	dec_prefix = 0;
-	block_num = 0;
-	block_pos = 0;
-	play_pos = 0;
-	raw_pos = 0;
-	delay = 0;
-	
-	// init the OPL chip and go to OPL2 mode
-  opl->init();
-  opl->write(1, 32);
+  // reset state
+  dec_prefix = 0;
+  block_num = 0;
+  block_pos = 0;
+  play_pos = 0;
+  raw_pos = 0;
+  delay = 0;
+
+  // init the OPL chip and go to OPL2 mode
+  opl->init ();
+  opl->write (1, 32);
 }
 
-float CmscPlayer::getrefresh()
+float
+CmscPlayer::getrefresh ()
 {
-	// PC timer oscillator frequency / wait register
-	return 1193180 / (float) (timer_div ? timer_div : 0xffff);
+  // PC timer oscillator frequency / wait register
+  return 1193180 / (float) (timer_div ? timer_div : 0xffff);
 }
 
-std::string CmscPlayer::gettype()
+std::string CmscPlayer::gettype ()
 {
-	char vstr [40];
-	
-  sprintf(vstr, "AdLib MSCplay (version %d)", version);
-	return std::string (vstr);
+  char
+    vstr[40];
+
+  sprintf (vstr, "AdLib MSCplay (version %d)", version);
+  return std::string (vstr);
 }
 
 /*** private methods *************************************/
 
-bool CmscPlayer::load_header(binistream * bf, msc_header * hdr)
+bool
+CmscPlayer::load_header (binistream * bf, msc_header * hdr)
 {
-	// check signature
-	bf->readString ((char *) hdr->mh_sign, sizeof (hdr->mh_sign));
-	if (memcmp (msc_signature, hdr->mh_sign, MSC_SIGN_LEN) != 0)
-		return false;
+  // check signature
+  bf->readString ((char *) hdr->mh_sign, sizeof (hdr->mh_sign));
+  if (memcmp (msc_signature, hdr->mh_sign, MSC_SIGN_LEN) != 0)
+    return false;
 
-	// check version
-	hdr->mh_ver = bf->readInt (2);
-	if (hdr->mh_ver != 0)
-		return false;
+  // check version
+  hdr->mh_ver = bf->readInt (2);
+  if (hdr->mh_ver != 0)
+    return false;
 
-	bf->readString ((char *) hdr->mh_desc, sizeof (hdr->mh_desc));
-	hdr->mh_timer = bf->readInt (2);
-	hdr->mh_nr_blocks = bf->readInt (2);
-	hdr->mh_block_len = bf->readInt (2);
-	return true;
+  bf->readString ((char *) hdr->mh_desc, sizeof (hdr->mh_desc));
+  hdr->mh_timer = bf->readInt (2);
+  hdr->mh_nr_blocks = bf->readInt (2);
+  hdr->mh_block_len = bf->readInt (2);
+  return true;
 }
 
-bool CmscPlayer::decode_octet(u8 * output)
+bool
+CmscPlayer::decode_octet (u8 * output)
 {
-	msc_block blk;			// compressed data block
-	
-	if (block_num >= nr_blocks)
-		return false;
-		
-	blk = msc_data [block_num];
-	while (1) {
-		u8 	octet;		// decoded octet
-    u8	len_corr;	// length correction
-		
-		// advance to next block if necessary
-		if (block_pos >= blk.mb_length && dec_len == 0) {
-			block_num++;
-			if (block_num >= nr_blocks)
-				return false;
-				
-			blk = msc_data [block_num];
-			block_pos = 0;
-			raw_pos = 0;
-		}
-		
-		// decode the compressed music data
-		switch (dec_prefix) {
-		
-		// decode prefix
-		case 155:
-		case 175:
-			octet = blk.mb_data [block_pos++];
-			if (octet == 0) {
-				// invalid prefix, output original
-				octet = dec_prefix;
-				dec_prefix = 0;
-				break;
-			}
-			
-			// isolate length and distance
-			dec_len = (octet & 0x0F);
-			len_corr = 2;
+  msc_block blk;                // compressed data block
+
+  if (block_num >= nr_blocks)
+    return false;
+
+  blk = msc_data[block_num];
+  while (1)
+  {
+    u8 octet;                   // decoded octet
+    u8 len_corr;                // length correction
+
+    // advance to next block if necessary
+    if (block_pos >= blk.mb_length && dec_len == 0)
+    {
+      block_num++;
+      if (block_num >= nr_blocks)
+        return false;
+
+      blk = msc_data[block_num];
+      block_pos = 0;
+      raw_pos = 0;
+    }
 
-			dec_dist = (octet & 0xF0) >> 4;
-			if (dec_prefix == 155)
-				dec_dist++;
-				
-			// next decode step for respective prefix type
-			dec_prefix++;
-			continue;
-			
+    // decode the compressed music data
+    switch (dec_prefix)
+    {
 
-		// check for extended length
-		case 156:
-			if (dec_len == 15)
-				dec_len += blk.mb_data [block_pos++];
+      // decode prefix
+    case 155:
+    case 175:
+      octet = blk.mb_data[block_pos++];
+      if (octet == 0)
+      {
+        // invalid prefix, output original
+        octet = dec_prefix;
+        dec_prefix = 0;
+        break;
+      }
+
+      // isolate length and distance
+      dec_len = (octet & 0x0F);
+      len_corr = 2;
+
+      dec_dist = (octet & 0xF0) >> 4;
+      if (dec_prefix == 155)
+        dec_dist++;
+
+      // next decode step for respective prefix type
+      dec_prefix++;
+      continue;
+
 
-			// add length correction and go for copy mode
-			dec_len += len_corr;
-			dec_prefix = 255;
-			continue;
-			
-			
-		// get extended distance
-		case 176:
-			dec_dist += 17 + 16 * blk.mb_data [block_pos++];
-			len_corr = 3;
-			
-			// check for extended length
-			dec_prefix = 156;
-			continue;
-			
-			
-		// prefix copy mode
-		case 255:
-      if((int)raw_pos >= dec_dist)
-			octet = raw_data [raw_pos - dec_dist];
-      else {
-	AdPlug_LogWrite("error! read before raw_data buffer.\n");
-	octet = 0;
+      // check for extended length
+    case 156:
+      if (dec_len == 15)
+        dec_len += blk.mb_data[block_pos++];
+
+      // add length correction and go for copy mode
+      dec_len += len_corr;
+      dec_prefix = 255;
+      continue;
+
+
+      // get extended distance
+    case 176:
+      dec_dist += 17 + 16 * blk.mb_data[block_pos++];
+      len_corr = 3;
+
+      // check for extended length
+      dec_prefix = 156;
+      continue;
+
+
+      // prefix copy mode
+    case 255:
+      if ((int) raw_pos >= dec_dist)
+        octet = raw_data[raw_pos - dec_dist];
+      else
+      {
+        AdPlug_LogWrite ("error! read before raw_data buffer.\n");
+        octet = 0;
       }
-			
-			dec_len--;
-			if (dec_len == 0) {
-				// back to normal mode
-				dec_prefix = 0;
-			}
-			
-			break;
+
+      dec_len--;
+      if (dec_len == 0)
+      {
+        // back to normal mode
+        dec_prefix = 0;
+      }
+
+      break;
+
 
-			
-		// normal mode
-		default:
-			octet = blk.mb_data [block_pos++];
-			if (octet == 155 || octet == 175) {
-				// it's a prefix, restart
-				dec_prefix = octet;
-				continue;
-			}
-		} // prefix switch
+      // normal mode
+    default:
+      octet = blk.mb_data[block_pos++];
+      if (octet == 155 || octet == 175)
+      {
+        // it's a prefix, restart
+        dec_prefix = octet;
+        continue;
+      }
+    }                           // prefix switch
 
-			
-		// output the octet
-		if (output != NULL)
-			*output = octet;
-			
-		raw_data [raw_pos++] = octet;
-		break;
-	}; // decode pass
+
+    // output the octet
+    if (output != NULL)
+      *output = octet;
 
-	return true;
-}	
+    raw_data[raw_pos++] = octet;
+    break;
+  };                            // decode pass
+
+  return true;
+}