[Scummvm-cvs-logs] CVS: scummvm/scumm player_v3a.cpp,1.6,1.7 player_v3a.h,1.5,1.6 resource.cpp,1.149,1.150
Max Horn
fingolfin at users.sourceforge.net
Mon Sep 8 20:20:55 CEST 2003
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/common engine.cpp,1.33,1.34 engine.h,1.34,1.35 gameDetector.cpp,1.152,1.153 gameDetector.h,1.59,1.60 main.cpp,1.40,1.41 plugins.cpp,1.1,1.2 plugins.h,1.1,1.2 timer.cpp,1.12,1.13
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gui launcher.cpp,1.46,1.47
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv29963
Modified Files:
player_v3a.cpp player_v3a.h resource.cpp
Log Message:
some cleanup
Index: player_v3a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- player_v3a.cpp 8 Sep 2003 01:42:23 -0000 1.6
+++ player_v3a.cpp 8 Sep 2003 11:29:57 -0000 1.7
@@ -38,12 +38,6 @@
//
////////////////////////////////////////
-static void playerv3a_handler (void *engine) {
- Scumm *scumm = (Scumm *)engine;
- if (scumm && scumm->_playerV3A)
- scumm->_playerV3A->playMusic();
-}
-
Player_V3A::Player_V3A(Scumm *scumm) {
int i;
_scumm = scumm;
@@ -62,13 +56,13 @@
_maxvol = 255;
- scumm->_timer->installProcedure(playerv3a_handler,16666);
+ scumm->_timer->installProcedure(timerHandler, 16666);
_isinit = false;
}
Player_V3A::~Player_V3A() {
- _scumm->_timer->releaseProcedure(playerv3a_handler);
+ _scumm->_timer->releaseProcedure(timerHandler);
if (!_isinit)
return;
for (int i = 0; _wavetable[i] != NULL; i++) {
@@ -152,66 +146,51 @@
byte *data = _scumm->getResourceAddress(rtSound, nr);
assert(data);
+ if (_scumm->_gameId != GID_INDY3 && _scumm->_gameId != GID_LOOM)
+ error("player_v3a - unknown game!");
+
if (!_isinit) {
int i;
+ unsigned char *ptr;
+ int offset = 4;
+ int numInstruments;
+
if (_scumm->_gameId == GID_INDY3) {
- unsigned char *ptr = _scumm->getResourceAddress(rtSound,83);
- int offset = 4;
- _wavetable = (instData **)malloc(13 * sizeof(void *));
- for (i = 0; i < 12; i++) {
- _wavetable[i] = (instData *)malloc(sizeof(instData));
- for (int j = 0; j < 6; j++) {
- int off, len;
- off = READ_BE_UINT16(ptr + offset + 0);
- _wavetable[i]->_ilen[j] = len = READ_BE_UINT16(ptr + offset + 2);
- if (len) {
- _wavetable[i]->_idat[j] = (char *)malloc(len);
- memcpy(_wavetable[i]->_idat[j],ptr + off,len);
- } else _wavetable[i]->_idat[j] = NULL;
- off = READ_BE_UINT16(ptr + offset + 4);
- _wavetable[i]->_llen[j] = len = READ_BE_UINT16(ptr + offset + 6);
- if (len) {
- _wavetable[i]->_ldat[j] = (char *)malloc(len);
- memcpy(_wavetable[i]->_ldat[j],ptr + off,len);
- } else _wavetable[i]->_ldat[j] = NULL;
- _wavetable[i]->_oct[j] = READ_BE_UINT16(ptr + offset + 8);
- offset += 10;
- }
+ ptr = _scumm->getResourceAddress(rtSound, 83);
+ numInstruments = 12;
+ } else {
+ ptr = _scumm->getResourceAddress(rtSound, 79);
+ numInstruments = 9;
+ }
+ _wavetable = (instData **)malloc((numInstruments + 1) * sizeof(void *));
+ for (i = 0; i < numInstruments; i++) {
+ _wavetable[i] = (instData *)malloc(sizeof(instData));
+ for (int j = 0; j < 6; j++) {
+ int off, len;
+ off = READ_BE_UINT16(ptr + offset + 0);
+ _wavetable[i]->_ilen[j] = len = READ_BE_UINT16(ptr + offset + 2);
+ if (len) {
+ _wavetable[i]->_idat[j] = (char *)malloc(len);
+ memcpy(_wavetable[i]->_idat[j],ptr + off,len);
+ } else _wavetable[i]->_idat[j] = NULL;
+ off = READ_BE_UINT16(ptr + offset + 4);
+ _wavetable[i]->_llen[j] = len = READ_BE_UINT16(ptr + offset + 6);
+ if (len) {
+ _wavetable[i]->_ldat[j] = (char *)malloc(len);
+ memcpy(_wavetable[i]->_ldat[j],ptr + off,len);
+ } else _wavetable[i]->_ldat[j] = NULL;
+ _wavetable[i]->_oct[j] = READ_BE_UINT16(ptr + offset + 8);
+ offset += 10;
+ }
+ if (_scumm->_gameId == GID_INDY3) {
_wavetable[i]->_pitadjust = 0;
offset += 2;
- }
- _wavetable[i] = NULL;
- }
- else if (_scumm->_gameId == GID_LOOM) {
- unsigned char *ptr = _scumm->getResourceAddress(rtSound,79);
- int offset = 4;
- _wavetable = (instData **)malloc(10 * sizeof(void *));
- for (i = 0; i < 9; i++) {
- _wavetable[i] = (instData *)malloc(sizeof(instData));
- for (int j = 0; j < 6; j++) {
- int off, len;
- off = READ_BE_UINT16(ptr + offset + 0);
- _wavetable[i]->_ilen[j] = len = READ_BE_UINT16(ptr + offset + 2);
- if (len) {
- _wavetable[i]->_idat[j] = (char *)malloc(len);
- memcpy(_wavetable[i]->_idat[j],ptr + off,len);
- } else _wavetable[i]->_idat[j] = NULL;
- off = READ_BE_UINT16(ptr + offset + 4);
- _wavetable[i]->_llen[j] = len = READ_BE_UINT16(ptr + offset + 6);
- if (len) {
- _wavetable[i]->_ldat[j] = (char *)malloc(len);
- memcpy(_wavetable[i]->_ldat[j],ptr + off,len);
- } else _wavetable[i]->_ldat[j] = NULL;
- _wavetable[i]->_oct[j] = READ_BE_UINT16(ptr + offset + 8);
- offset += 10;
- }
+ } else {
_wavetable[i]->_pitadjust = READ_BE_UINT16(ptr + offset + 2);
offset += 4;
}
- _wavetable[i] = NULL;
}
- else
- error("player_v3a - unknown game!");
+ _wavetable[i] = NULL;
_isinit = true;
}
@@ -247,6 +226,12 @@
playSound(nr, sound, size, rate, vol, tl, false);
}
}
+}
+
+void Player_V3A::timerHandler(void *engine) {
+ Scumm *scumm = (Scumm *)engine;
+ if (scumm && scumm->_playerV3A)
+ scumm->_playerV3A->playMusic();
}
void Player_V3A::playMusic() {
Index: player_v3a.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- player_v3a.h 8 Sep 2003 01:42:23 -0000 1.5
+++ player_v3a.h 8 Sep 2003 11:29:57 -0000 1.6
@@ -44,7 +44,6 @@
virtual void stopAllSounds();
virtual int getMusicTimer() const;
- virtual void playMusic();
virtual int getSoundStatus(int nr) const;
protected:
@@ -75,6 +74,8 @@
} **_wavetable;
void playSound (int nr, char *data, int size, int rate, int vol, int tl, bool looped, int loopStart = 0, int loopEnd = 0);
+ void playMusic();
+ static void timerHandler(void *engine);
};
#endif
Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.149
retrieving revision 1.150
diff -u -d -r1.149 -r1.150
--- resource.cpp 7 Sep 2003 17:14:56 -0000 1.149
+++ resource.cpp 8 Sep 2003 11:29:57 -0000 1.150
@@ -1026,22 +1026,21 @@
byte num_instr;
byte *channel, *instr, *track;
byte *tracks[3];
- int ppqn;
+ // We will ignore the PPQN in the original resource, because
+ // it's invalid anyway. We use a constant PPQN of 480.
+ const int ppqn = 480;
int delay, delay2, olddelay;
int i, ch;
int total_size = 8 + 16 + 14 + 8 + 7 + 8*sizeof(ADLIB_INSTR_MIDI_HACK) + size;
total_size += 24; // Up to 24 additional bytes are needed for the jump sysex
ptr = createResource(type, idx, total_size);
- // We will ignore the PPQN in the original resource, because
- // it's invalid anyway. We use a constant PPQN of 480.
- ppqn = 480;
src_ptr += 2;
size -= 2;
if (*src_ptr == 0x80) {
- // 0x80: is music; otherwise not.
+ // 0x80 marks a music resource. Otherwise it's a SFX
memcpy(ptr, "ADL ", 4); ptr += 4;
uint32 dw = READ_BE_UINT32(&total_size);
memcpy(ptr, &dw, 4); ptr += 4;
@@ -1087,11 +1086,12 @@
// Unfortunate LOOM and INDY3 have different interpretation
// of the ticks value.
if (_gameId == GID_INDY3) {
- dw = 1000000 * 256 / 473 * ppqn / 2 / ticks;
+ // Note: since we fix ppqn at 480, ppqn/473 is almost 1
+ dw = 500000 * 256 * ppqn / 473 / ticks;
} else if (_gameId == GID_LOOM) {
- dw = 1000000 * ppqn / 4 / 2 / ticks;
+ dw = 500000 * ppqn / 4 / ticks;
} else {
- dw = (500000 * 256) / ticks;
+ dw = 500000 * 256 / ticks;
}
debug(4, " ticks = %d, speed = %ld", ticks, dw);
@@ -1295,7 +1295,7 @@
break;
src_ptr = tracks[ch];
- chunk_type = *(src_ptr);
+ chunk_type = *src_ptr;
if (current_note[ch] >= 0) {
@@ -1379,7 +1379,6 @@
delay = mintime - curtime;
curtime = mintime;
-
{
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/common engine.cpp,1.33,1.34 engine.h,1.34,1.35 gameDetector.cpp,1.152,1.153 gameDetector.h,1.59,1.60 main.cpp,1.40,1.41 plugins.cpp,1.1,1.2 plugins.h,1.1,1.2 timer.cpp,1.12,1.13
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gui launcher.cpp,1.46,1.47
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list