[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,2.78,2.79 imuse_player.cpp,2.21,2.22 resource.cpp,1.125,1.126 scummvm.cpp,2.331,2.332
Jamieson Christian
jamieson630 at users.sourceforge.net
Thu Aug 14 07:06:41 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv16867
Modified Files:
imuse.cpp imuse_player.cpp resource.cpp scummvm.cpp
Log Message:
Added support for Roland MT-32 music tracks
in monkeyvga/ega. Tested in monkeyvga, but
not in monkeyega yet. There are still wrinkles
to work out, but the parser for the new format
is in and hooked up.
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.78
retrieving revision 2.79
diff -u -d -r2.78 -r2.79
--- imuse.cpp 12 Aug 2003 07:32:42 -0000 2.78
+++ imuse.cpp 14 Aug 2003 08:26:59 -0000 2.79
@@ -85,6 +85,10 @@
return NULL;
}
+ // Check for old-style headers first, like 'RO'
+ if (ptr[4] == 'R' && ptr[5] == 'O')
+ return ptr + 4;
+
ptr += 8;
size = READ_BE_UINT32(ptr);
ptr += 4;
@@ -129,6 +133,10 @@
return false;
}
+ // Check old style headers, like 'RO'
+ if (ptr[4] == 'R' && ptr[5] == 'O')
+ return true;
+
return false;
}
@@ -160,6 +168,10 @@
return false;
}
+ // Check old style headers, like 'RO'
+ if (ptr[4] == 'R' && ptr[5] == 'O')
+ return true;
+
return false;
}
@@ -189,7 +201,7 @@
bool IMuseInternal::startSound(int sound) {
Player *player;
- void *mdhd;
+ void *ptr;
// Do not start a sound if it is already set to
// start on an ImTrigger event. This fixes carnival
@@ -204,24 +216,12 @@
return false;
}
- // Not sure exactly what the old code was doing,
- // but we'll go ahead and do a similar check.
- mdhd = findStartOfSound(sound);
- if (!mdhd) {
+ ptr = findStartOfSound(sound);
+ if (!ptr) {
debug(2, "IMuseInternal::startSound(): Couldn't find sound %d!", sound);
return false;
}
-/*
- mdhd = findTag(sound, MDHD_TAG, 0);
- if (!mdhd) {
- mdhd = findTag(sound, MDPG_TAG, 0);
- if (!mdhd) {
- debug(2, "SE::startSound failed: Couldn't find sound %d", sound);
- return false;
- }
- }
-*/
-
+
// Check which MIDI driver this track should use.
// If it's NULL, it ain't something we can play.
MidiDriver *driver = getBestMidiDriver(sound);
Index: imuse_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_player.cpp,v
retrieving revision 2.21
retrieving revision 2.22
diff -u -d -r2.21 -r2.22
--- imuse_player.cpp 13 Aug 2003 22:45:22 -0000 2.21
+++ imuse_player.cpp 14 Aug 2003 08:26:59 -0000 2.22
@@ -38,6 +38,8 @@
//
////////////////////////////////////////
+extern MidiParser *MidiParser_createRO();
+
static uint read_word(byte *a) {
return (a[0] << 8) + a[1];
}
@@ -84,13 +86,13 @@
}
bool Player::startSound(int sound, MidiDriver *midi) {
- void *mdhd;
+ void *ptr;
int i;
// Not sure what the old code was doing,
// but we'll go ahead and do a similar check.
- mdhd = _se->findStartOfSound(sound);
- if (!mdhd) {
+ ptr = _se->findStartOfSound(sound);
+ if (!ptr) {
warning("Player::startSound(): Couldn't find start of sound %d!", sound);
return false;
}
@@ -177,10 +179,17 @@
if (_parser)
delete _parser;
- if (!memcmp(ptr, "FORM", 4))
+ if (!memcmp (ptr, "RO", 2)) {
+ // Old style 'RO' resource
+ _parser = MidiParser_createRO();
+ } else if (!memcmp(ptr, "FORM", 4)) {
+ // Humongous Games XMIDI resource
_parser = MidiParser::createParser_XMIDI();
- else
+ } else {
+ // SCUMM SMF resource
_parser = MidiParser::createParser_SMF();
+ }
+
_parser->setMidiDriver(this);
_parser->property(MidiParser::mpSmartJump, 1);
_parser->loadMusic(ptr, 0);
Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -d -r1.125 -r1.126
--- resource.cpp 14 Aug 2003 06:28:54 -0000 1.125
+++ resource.cpp 14 Aug 2003 08:26:59 -0000 1.126
@@ -1451,7 +1451,7 @@
(char) (tag & 0xff),
(char) ((tag >> 8) & 0xff), size);
- if (tag == 0x5247) { // RO
+ if (tag == 0x4F52) { // RO
ro_size = size;
ro_offs = _fileHandle.pos();
} else {
@@ -1484,18 +1484,9 @@
}
}
- // AD resources have a header, instrument definitions and one MIDI track.
- // We build an 'ADL ' resource from that:
- // 8 bytes resource header
- // 16 bytes MDhd header
- // 14 bytes MThd header
- // 8 bytes MTrk header
- // 7 bytes MIDI tempo sysex
- // + some default instruments
-
if (ro_offs != 0) {
- _fileHandle.seek(ro_offs - 6, SEEK_SET);
- _fileHandle.read(createResource(type, idx, ro_size + 6), ro_size + 6);
+ _fileHandle.seek(ro_offs - 2, SEEK_SET);
+ _fileHandle.read(createResource(type, idx, ro_size + 2), ro_size + 2);
return 1;
} else if (((_midiDriver == MD_PCJR) || (_midiDriver == MD_PCSPK)) && wa_offs != 0) {
if (_features & GF_OLD_BUNDLE) {
@@ -1507,6 +1498,14 @@
}
return 1;
} else if (ad_offs != 0) {
+ // AD resources have a header, instrument definitions and one MIDI track.
+ // We build an 'ADL ' resource from that:
+ // 8 bytes resource header
+ // 16 bytes MDhd header
+ // 14 bytes MThd header
+ // 8 bytes MTrk header
+ // 7 bytes MIDI tempo sysex
+ // + some default instruments
byte *ptr;
if (_features & GF_OLD_BUNDLE) {
ptr = (byte *) calloc(ad_size - 4, 1);
Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.331
retrieving revision 2.332
diff -u -d -r2.331 -r2.332
--- scummvm.cpp 14 Aug 2003 02:28:19 -0000 2.331
+++ scummvm.cpp 14 Aug 2003 08:26:59 -0000 2.332
@@ -92,7 +92,7 @@
GF_SMALL_HEADER | GF_USE_KEY | GF_16COLOR, "000.LFL"},
/* Scumm version 5 */
- {"monkeyVGA", "Monkey Island 1 (256 color Floppy version)", GID_MONKEY_VGA, 4, VersionSettings::ADLIB_ALWAYS,
+ {"monkeyVGA", "Monkey Island 1 (256 color Floppy version)", GID_MONKEY_VGA, 4, VersionSettings::ADLIB_PREFERRED,
GF_SMALL_HEADER | GF_USE_KEY, "000.LFL"},
{"loomcd", "Loom (256 color CD version)", GID_LOOM256, 4, VersionSettings::ADLIB_ALWAYS,
GF_SMALL_HEADER | GF_USE_KEY | GF_AUDIOTRACKS, "000.LFL"},
@@ -1049,7 +1049,12 @@
} else {
VAR(VAR_CURRENTDRIVE) = 0;
VAR(VAR_FIXEDDISK) = true;
- VAR(VAR_SOUNDCARD) = (_midiDriver == MD_PCSPK || _midiDriver == MD_PCJR) ? 0 : 3;
+ switch (_midiDriver) {
+ case MD_ADLIB: VAR(VAR_SOUNDCARD) = 3; break;
+ case MD_PCSPK:
+ case MD_PCJR: VAR(VAR_SOUNDCARD) = 0; break;
+ default: VAR(VAR_SOUNDCARD) = 4;
+ }
VAR(VAR_VIDEOMODE) = 0x13;
VAR(VAR_HEAPSPACE) = 1400;
VAR(VAR_MOUSEPRESENT) = true; // FIXME - used to be 0, but that seems odd?!?
More information about the Scummvm-git-logs
mailing list