[Scummvm-cvs-logs] SF.net SVN: scummvm:[33993] scummvm/trunk/engines/kyra/sound_towns.cpp

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Mon Aug 18 19:42:34 CEST 2008


Revision: 33993
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33993&view=rev
Author:   athrxx
Date:     2008-08-18 17:42:32 +0000 (Mon, 18 Aug 2008)

Log Message:
-----------
KYRA: FM-Towns/PC-98 Audio:
- adpcm decoding for rhythm channel
- cleanup

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/sound_towns.cpp

Modified: scummvm/trunk/engines/kyra/sound_towns.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_towns.cpp	2008-08-18 17:25:29 UTC (rev 33992)
+++ scummvm/trunk/engines/kyra/sound_towns.cpp	2008-08-18 17:42:32 UTC (rev 33993)
@@ -1535,31 +1535,35 @@
 	TownsPC98_OpnPercussionSource(const float rate);
 	~TownsPC98_OpnPercussionSource();
 
-	void init(uint8 *pcmData);
+	void init(const void *pcmData = 0);
 	void reset();
 	void writeReg(uint8 address, uint8 value);
 
 	void nextTick(int32 *buffer, uint32 bufferSize);
 
 private:
-	void recalcLevel(int instrument);
+	struct PcmInstrument {
+		const uint8 *data;
 
-	struct Pcm_Instrument {
-		const int16 *data;
-
-		const int16 *start;
-		const int16 *end;
-		const int16 *pos;
+		const uint8 *start;
+		const uint8 *end;
+		const uint8 *pos;
 		uint32 size;
-
 		bool active;
 		uint8 level;
+
+		int8 decState;
+		uint8 decStep;
+
+		int16 samples[2];
 		int out;
 	};
 
-	Pcm_Instrument _pcmInstr[6];
+	void recalcOuput(PcmInstrument *ins);
+	void advanceInput(PcmInstrument *ins);
+
+	PcmInstrument _pcmInstr[6];
 	uint8 _regs[48];
-	uint8 *_rsamples;
 
 	uint8 _totalLevel;
 
@@ -1583,7 +1587,7 @@
 	TownsPC98_OpnDriver(Audio::Mixer *mixer, OpnType type);
 	~TownsPC98_OpnDriver();
 
-	bool init(uint8 *pcmData = 0);
+	bool init();
 
 	void loadMusicData(uint8 *data, bool loadPaused = false);
 	void loadSoundEffectData(uint8 *data, uint8 trackNum);
@@ -2239,11 +2243,12 @@
 			_flags |= CHS_PITCHWHEELOFF;
 		}
 	} else {
-		//uint8 skipChannels = para / 36;
-		//uint8 entry = para % 36;
-		//TownsPC98_OpnDriver::TownsPC98_OpnChannel *t = &chan[skipChannels];
-		////// NOT IMPLEMENTED
-		//t->unnamedEntries[entry] = *_dataPtr++;
+		/* NOT IMPLEMENTED
+		uint8 skipChannels = para / 36;
+		uint8 entry = para % 36;
+		TownsPC98_OpnDriver::TownsPC98_OpnChannel *t = &chan[skipChannels];
+		
+		t->unnamedEntries[entry] = *_dataPtr++;*/
 	}
 	return true;
 }
@@ -2746,9 +2751,6 @@
 		_tleTable[i] = (int32) v;
 	}
 
-	//_mixer->playInputStream(Audio::Mixer::kMusicSoundType,
-	//	&_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
-
 	_ready = true;
 }
 
@@ -2806,34 +2808,33 @@
 }
 
 TownsPC98_OpnPercussionSource::TownsPC98_OpnPercussionSource(const float rate) :
-	_tickLength((int)(rate * 65536.0)), _rsamples(0), _timer(0), _ready(false) {
-		memset(_pcmInstr, 0, sizeof(Pcm_Instrument) * 6);
+	_tickLength((int)(rate * 65536.0)), _timer(0), _ready(false) {
+		memset(_pcmInstr, 0, sizeof(PcmInstrument) * 6);
 }
 
 TownsPC98_OpnPercussionSource::~TownsPC98_OpnPercussionSource() {
-	delete [] _rsamples;
 }
 
-void TownsPC98_OpnPercussionSource::init(uint8 *pcmData) {
+void TownsPC98_OpnPercussionSource::init(const void *pcmData) {
 	if (_ready) {
 		reset();
 		return;
 	}
 
-	_rsamples = pcmData;
-	if (_rsamples) {
+	const uint8 *start = (const uint8*) pcmData;
+	const uint8 *pos = start;
+
+	if (pcmData) {
 		for (int i = 0; i < 6; i++) {
-			_pcmInstr[i].data = (const int16*) (_rsamples + READ_BE_UINT16(pcmData));
-			pcmData += 2;
-			_pcmInstr[i].size = READ_BE_UINT16(pcmData) >> 1;
-			pcmData += 2;
+			_pcmInstr[i].data = start + READ_BE_UINT16(pos);
+			pos += 2;
+			_pcmInstr[i].size = READ_BE_UINT16(pos);
+			pos += 2;
 		}
-
 		reset();
-
 		_ready = true;
 	} else {
-		memset(_pcmInstr, 0, sizeof(Pcm_Instrument) * 6);
+		memset(_pcmInstr, 0, sizeof(PcmInstrument) * 6);
 		_ready = false;
 	}
 }
@@ -2845,12 +2846,15 @@
 	memset(_regs, 0, 48);
 
 	for (int i = 0; i < 6; i++) {
-		Pcm_Instrument *s = &_pcmInstr[i];
+		PcmInstrument *s = &_pcmInstr[i];
 		s->pos = s->start = s->data;
 		s->end = s->data + s->size;
 		s->active = false;
 		s->level = 0;
 		s->out = 0;
+		s->decStep = 1;
+		s->decState = 0;
+		s->samples[0] = s->samples[1] = 0;
 	}
 }
 
@@ -2874,9 +2878,13 @@
 			//key on
 			for (int i = 0; i < 6; i++) {
 				if ((value >> i) & 1) {
-					_pcmInstr[i].pos = (const int16*) _pcmInstr[i].start;
-					_pcmInstr[i].active = true;
-					_pcmInstr[i].out = 0;
+					PcmInstrument *s = &_pcmInstr[i];
+					s->pos = s->start;
+					s->active = true;
+					s->out = 0;
+					s->samples[0] = s->samples[1] = 0;
+					s->decStep = 1;
+					s->decState = 0;
 				}
 			}
 		}
@@ -2884,12 +2892,12 @@
 		// total level
 		_totalLevel = (value & 63) ^ 63;
 		for (int i = 0; i < 6; i++)
-			recalcLevel(i);
+			recalcOuput(&_pcmInstr[i]);
 	} else if (!h && l & 8) {
 		// instrument level
 		l &= 7;
 		_pcmInstr[l].level = (value & 0x1f) ^ 0x1f;
-		recalcLevel(l);
+		recalcOuput(&_pcmInstr[l]);
 	} else if (h & 3) {
 		l &= 7;
 		if (h == 1) {
@@ -2912,10 +2920,15 @@
 			_timer -= 0x30000;
 
 			for (int ii = 0; ii < 6; ii++) {
-				if (_pcmInstr[ii].active) {
-					recalcLevel(ii);
-					if (++_pcmInstr[ii].pos == _pcmInstr[ii].end)
-						_pcmInstr[ii].active = false;
+				PcmInstrument *s = &_pcmInstr[ii];
+				if (s->active) {
+					recalcOuput(s);
+					if (s->decStep) {
+						advanceInput(s);
+						if (s->pos == s->end)
+							s->active = false;
+					}
+					s->decStep ^= 1;
 				}
 			}
 		}
@@ -2934,14 +2947,36 @@
 	}
 }
 
-void TownsPC98_OpnPercussionSource::recalcLevel(int instrument) {
-	Pcm_Instrument *i = &_pcmInstr[instrument];
-	uint32 s = _totalLevel + i->level;
+void TownsPC98_OpnPercussionSource::recalcOuput(PcmInstrument *ins) {
+	uint32 s = _totalLevel + ins->level;
 	uint32 x = s > 62 ? 0 : (1 + (s >> 3));
 	int32 y = s > 62 ? 0 : (15 - (s & 7));
-	i->out = (((int16)READ_LE_UINT16(i->pos) * y) >> x) & ~3;
+	ins->out = ((ins->samples[ins->decStep] * y) >> x) & ~3;
 }
 
+void TownsPC98_OpnPercussionSource::advanceInput(PcmInstrument *ins) {
+	static const int8 adjustIndex[] = {-1, -1, -1, -1, 2, 5, 7, 9 };
+
+	static const int16 stepTable[] = { 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55,
+		60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337,
+		371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552
+	};
+	
+	int d = ins->samples[1];
+	uint8 cur = (int8) *ins->pos++;
+
+	for (int i = 0; i < 2; i++) {
+		int b = (2 * (cur & 7) + 1) * stepTable[ins->decState] / 8;
+		if (cur & 8)
+			b = -b;
+		d += b;
+		d = CLIP<int16>(d, -2048, 2047);
+		ins->samples[i] = d;
+		ins->decState = CLIP<int8>(ins->decState + adjustIndex[cur & 7], 0, 48);
+		cur >>= 4;
+	}
+}
+
 void TownsPC98_OpnSquareSineSource::nextTick(int32 *buffer, uint32 bufferSize) {
 	if (!_ready)
 		return;
@@ -3051,7 +3086,7 @@
 	delete [] _ssgPatches;
 }
 
-bool TownsPC98_OpnDriver::init(uint8 *pcmData) {
+bool TownsPC98_OpnDriver::init() {
 	if (_ready) {
 		reset();
 		return true;
@@ -3114,10 +3149,8 @@
 	}
 
 	if (_hasPCM) {
-		if (pcmData) {
-			_pcm = new TownsPC98_OpnPercussionSource(_baserate);
-			_pcm->init(pcmData);
-		}
+		_pcm = new TownsPC98_OpnPercussionSource(_baserate);
+		_pcm->init();
 
 		delete _pcmChannel;
 		_pcmChannel = new TownsPC98_OpnChannelPCM(this, 0, 0, 0, 0, 0, 1);
@@ -3480,119 +3513,6 @@
 	_samplesPerCallbackRemainder = _tempo ? (getRate() % _tempo) : 0;
 }
 
-const uint8 TownsPC98_OpnDriver::_drvTables[] = {
-	//	channel presets
-	0x00, 0x80, 0x00, 0x00, 0x00, 0x01,
-	0x01, 0x80, 0x01, 0x01, 0x00, 0x02,
-	0x02, 0x80, 0x02, 0x02, 0x00, 0x04,
-	0x00, 0x80, 0x03, 0x04, 0x01, 0x08,
-	0x01, 0x80, 0x04, 0x05, 0x01, 0x10,
-	0x02, 0x80, 0x05, 0x06, 0x01, 0x20,
-
-	//	control event size
-	0x01, 0x01, 0x01, 0x01,	0x01, 0x01, 0x04, 0x05,
-	0x02, 0x06, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02,
-
-	//	fmt level presets
-	0x54, 0x50,	0x4C, 0x48,	0x44, 0x40, 0x3C, 0x38,
-	0x34, 0x30, 0x2C, 0x28, 0x24, 0x20, 0x1C, 0x18,
-	0x14, 0x10, 0x0C, 0x08,	0x04, 0x90, 0x90, 0x90,
-
-	//	carriers
-	0x08, 0x08, 0x08, 0x08,	0x0C, 0x0E, 0x0E, 0x0F,
-
-	//	frequencies
-	0x6A, 0x02, 0x8F, 0x02, 0xB6, 0x02,	0xDF, 0x02,
-	0x0B, 0x03, 0x39, 0x03, 0x6A, 0x03, 0x9E, 0x03,
-	0xD5, 0x03,	0x10, 0x04, 0x4E, 0x04, 0x8F, 0x04,
-	0x00, 0x00, 0x00, 0x00,
-
-	//	unused
-	0x01, 0x00,	0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-	0x02, 0x00,	0x00, 0x00,	0x05, 0x00, 0x00, 0x00,
-	0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-	0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-
-	//	detune
-	0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
-	0x04, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07,
-	0x08, 0x08, 0x08, 0x08, 0x01, 0x01,	0x01, 0x01,
-	0x02, 0x02, 0x02, 0x02, 0x02, 0x03,	0x03, 0x03,
-	0x04, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07,
-	0x08, 0x08, 0x09, 0x0a,	0x0b, 0x0c, 0x0d, 0x0e,
-	0x10, 0x10, 0x10, 0x10,	0x02, 0x02, 0x02, 0x02,
-	0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05,
-	0x05, 0x06,	0x06, 0x07, 0x08, 0x08, 0x09, 0x0a,
-	0x0b, 0x0c,	0x0d, 0x0e, 0x10, 0x11, 0x13, 0x14,
-	0x16, 0x16, 0x16, 0x16,
-
-	//	pc98 level presets
-	0x40, 0x3B, 0x38, 0x34, 0x30, 0x2A, 0x28, 0x25,
-	0x22, 0x20, 0x1D, 0x1A, 0x18, 0x15, 0x12, 0x10,
-	0x0D, 0x0A, 0x08, 0x05, 0x02, 0x90, 0x90, 0x90,
-
-	//	ssg frequencies
-	0xE8, 0x0E, 0x12, 0x0E, 0x48, 0x0D, 0x89, 0x0C,
-	0xD5, 0x0B, 0x2B, 0x0B, 0x8A, 0x0A, 0xF3, 0x09,
-	0x64, 0x09, 0xDD, 0x08, 0x5E, 0x08, 0xE6, 0x07,
-
-	// ssg patch data
-	0x00, 0x00, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0x37, 0x81, 0xC8, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0x37, 0x81, 0xC8, 0x00,
-	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
-	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
-	0x04, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
-	0x0A, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0x01, 0x00,
-	0xFF, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
-	0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0x00,
-	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x64, 0x01, 0xFF, 0x64, 0xFF, 0x81, 0xFF, 0x00,
-	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-
-	0x02, 0x01, 0xFF, 0x28, 0xFF, 0x81, 0xF0, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xC8, 0x00,
-	0x01, 0x81, 0x00, 0x00, 0x28, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0x78, 0x5F, 0x81, 0xA0, 0x00,
-	0x05, 0x81, 0x00, 0x00, 0x28, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
-	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
-	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00
-};
-
-const uint32 TownsPC98_OpnDriver::_adtStat[] = {
-	0x00010001, 0x00010001,	0x00010001, 0x01010001,
-	0x00010101, 0x00010101, 0x00010101, 0x01010101,
-	0x01010101, 0x01010101, 0x01010102, 0x01010102,
-	0x01020102, 0x01020102, 0x01020202, 0x01020202,
-	0x02020202, 0x02020202, 0x02020204, 0x02020204,
-	0x02040204, 0x02040204, 0x02040404, 0x02040404,
-	0x04040404, 0x04040404, 0x04040408, 0x04040408,
-	0x04080408, 0x04080408, 0x04080808, 0x04080808,
-	0x08080808, 0x08080808, 0x10101010, 0x10101010
-};
-
-const int TownsPC98_OpnDriver::_ssgTables[] = {
-	0x01202A, 0x0092D2, 0x006B42, 0x0053CB, 0x003DF8, 0x003053, 0x0022DA, 0x001A8C,
-	0x00129B, 0x000DC1, 0x000963, 0x0006C9, 0x000463, 0x0002FA, 0x0001B6, 0x0000FB,
-	0x0193B6, 0x01202A, 0x00CDB1, 0x0092D2, 0x007D7D, 0x006B42, 0x005ECD, 0x0053CB,
-	0x00480F, 0x003DF8, 0x0036B9, 0x003053, 0x00290A, 0x0022DA, 0x001E6B, 0x001A8C,
-	0x001639, 0x00129B, 0x000FFF, 0x000DC1, 0x000B5D, 0x000963, 0x0007FB, 0x0006C9,
-	0x000575, 0x000463, 0x00039D, 0x0002FA, 0x000242, 0x0001B6, 0x00014C, 0x0000FB
-};
-
 SoundTowns::SoundTowns(KyraEngine_v1 *vm, Audio::Mixer *mixer)
 	: Sound(vm, mixer), _lastTrack(-1), _currentSFX(0), _sfxFileData(0),
 	_sfxFileIndex((uint)-1), _sfxWDTable(0), _sfxBTTable(0), _parser(0) {
@@ -3954,7 +3874,7 @@
 		(Common::File::exists("track1.mp3") || Common::File::exists("track1.ogg") ||
 		 Common::File::exists("track1.flac") || Common::File::exists("track1.fla")))
 			_musicEnabled = 2;
-
+	
 	return _driver->init();
 }
 
@@ -4089,6 +4009,121 @@
 	_driver->loadSoundEffectData(_sfxTrackData, track);
 }
 
+// static resources
+
+const uint8 TownsPC98_OpnDriver::_drvTables[] = {
+	//	channel presets
+	0x00, 0x80, 0x00, 0x00, 0x00, 0x01,
+	0x01, 0x80, 0x01, 0x01, 0x00, 0x02,
+	0x02, 0x80, 0x02, 0x02, 0x00, 0x04,
+	0x00, 0x80, 0x03, 0x04, 0x01, 0x08,
+	0x01, 0x80, 0x04, 0x05, 0x01, 0x10,
+	0x02, 0x80, 0x05, 0x06, 0x01, 0x20,
+
+	//	control event size
+	0x01, 0x01, 0x01, 0x01,	0x01, 0x01, 0x04, 0x05,
+	0x02, 0x06, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02,
+
+	//	fmt level presets
+	0x54, 0x50,	0x4C, 0x48,	0x44, 0x40, 0x3C, 0x38,
+	0x34, 0x30, 0x2C, 0x28, 0x24, 0x20, 0x1C, 0x18,
+	0x14, 0x10, 0x0C, 0x08,	0x04, 0x90, 0x90, 0x90,
+
+	//	carriers
+	0x08, 0x08, 0x08, 0x08,	0x0C, 0x0E, 0x0E, 0x0F,
+
+	//	frequencies
+	0x6A, 0x02, 0x8F, 0x02, 0xB6, 0x02,	0xDF, 0x02,
+	0x0B, 0x03, 0x39, 0x03, 0x6A, 0x03, 0x9E, 0x03,
+	0xD5, 0x03,	0x10, 0x04, 0x4E, 0x04, 0x8F, 0x04,
+	0x00, 0x00, 0x00, 0x00,
+
+	//	unused
+	0x01, 0x00,	0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+	0x02, 0x00,	0x00, 0x00,	0x05, 0x00, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+	0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+
+	//	detune
+	0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+	0x04, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07,
+	0x08, 0x08, 0x08, 0x08, 0x01, 0x01,	0x01, 0x01,
+	0x02, 0x02, 0x02, 0x02, 0x02, 0x03,	0x03, 0x03,
+	0x04, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07,
+	0x08, 0x08, 0x09, 0x0a,	0x0b, 0x0c, 0x0d, 0x0e,
+	0x10, 0x10, 0x10, 0x10,	0x02, 0x02, 0x02, 0x02,
+	0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05,
+	0x05, 0x06,	0x06, 0x07, 0x08, 0x08, 0x09, 0x0a,
+	0x0b, 0x0c,	0x0d, 0x0e, 0x10, 0x11, 0x13, 0x14,
+	0x16, 0x16, 0x16, 0x16,
+
+	//	pc98 level presets
+	0x40, 0x3B, 0x38, 0x34, 0x30, 0x2A, 0x28, 0x25,
+	0x22, 0x20, 0x1D, 0x1A, 0x18, 0x15, 0x12, 0x10,
+	0x0D, 0x0A, 0x08, 0x05, 0x02, 0x90, 0x90, 0x90,
+
+	//	ssg frequencies
+	0xE8, 0x0E, 0x12, 0x0E, 0x48, 0x0D, 0x89, 0x0C,
+	0xD5, 0x0B, 0x2B, 0x0B, 0x8A, 0x0A, 0xF3, 0x09,
+	0x64, 0x09, 0xDD, 0x08, 0x5E, 0x08, 0xE6, 0x07,
+
+	// ssg patch data
+	0x00, 0x00, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0x37, 0x81, 0xC8, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0x37, 0x81, 0xC8, 0x00,
+	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
+	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
+	0x04, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xBE, 0x00,
+	0x0A, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0x01, 0x00,
+	0xFF, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
+	0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0x00,
+	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x64, 0x01, 0xFF, 0x64, 0xFF, 0x81, 0xFF, 0x00,
+	0x01, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+
+	0x02, 0x01, 0xFF, 0x28, 0xFF, 0x81, 0xF0, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0x0A, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xC8, 0x00,
+	0x01, 0x81, 0x00, 0x00, 0x28, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0x78, 0x5F, 0x81, 0xA0, 0x00,
+	0x05, 0x81, 0x00, 0x00, 0x28, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00,
+	0x00, 0x01, 0xFF, 0xFF, 0x00, 0x81, 0x00, 0x00,
+	0x00, 0x81, 0x00, 0x00, 0xFF, 0x81, 0x00, 0x00
+};
+
+const uint32 TownsPC98_OpnDriver::_adtStat[] = {
+	0x00010001, 0x00010001,	0x00010001, 0x01010001,
+	0x00010101, 0x00010101, 0x00010101, 0x01010101,
+	0x01010101, 0x01010101, 0x01010102, 0x01010102,
+	0x01020102, 0x01020102, 0x01020202, 0x01020202,
+	0x02020202, 0x02020202, 0x02020204, 0x02020204,
+	0x02040204, 0x02040204, 0x02040404, 0x02040404,
+	0x04040404, 0x04040404, 0x04040408, 0x04040408,
+	0x04080408, 0x04080408, 0x04080808, 0x04080808,
+	0x08080808, 0x08080808, 0x10101010, 0x10101010
+};
+
+const int TownsPC98_OpnDriver::_ssgTables[] = {
+	0x01202A, 0x0092D2, 0x006B42, 0x0053CB, 0x003DF8, 0x003053, 0x0022DA, 0x001A8C,
+	0x00129B, 0x000DC1, 0x000963, 0x0006C9, 0x000463, 0x0002FA, 0x0001B6, 0x0000FB,
+	0x0193B6, 0x01202A, 0x00CDB1, 0x0092D2, 0x007D7D, 0x006B42, 0x005ECD, 0x0053CB,
+	0x00480F, 0x003DF8, 0x0036B9, 0x003053, 0x00290A, 0x0022DA, 0x001E6B, 0x001A8C,
+	0x001639, 0x00129B, 0x000FFF, 0x000DC1, 0x000B5D, 0x000963, 0x0007FB, 0x0006C9,
+	0x000575, 0x000463, 0x00039D, 0x0002FA, 0x000242, 0x0001B6, 0x00014C, 0x0000FB
+};
+
 } // end of namespace Kyra
 
 #undef EUPHONY_FADEOUT_TICKS


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list