diff options
Diffstat (limited to 'script_v1.cpp')
-rw-r--r-- | script_v1.cpp | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/script_v1.cpp b/script_v1.cpp index 0c1a3522cb..481a10c10f 100644 --- a/script_v1.cpp +++ b/script_v1.cpp @@ -17,6 +17,10 @@ * * Change Log: * $Log$ + * Revision 1.6 2001/11/05 19:21:49 strigeus + * bug fixes, + * speech in dott + * * Revision 1.5 2001/10/29 22:09:20 strigeus * script invoked loading&saving in compatible mode * @@ -1046,7 +1050,7 @@ void Scumm::o5_isSoundRunning() { getResultPos(); snd = getVarOrDirectByte(0x80); if (snd) - snd = unkSoundProc23(snd); + snd = isSoundRunning(snd); setResult(snd); } @@ -1071,7 +1075,6 @@ void Scumm::o5_lights() { void Scumm::o5_loadRoom() { int room = getVarOrDirectByte(0x80); - debug(1,"Loading room %d", room); startScene(room, 0, 0); _fullRedraw = 1; } @@ -1259,60 +1262,60 @@ void Scumm::o5_resourceRoutines() { res = getVarOrDirectByte(0x80); switch(_opcode&0x1F) { case 1: /* load script */ - ensureResourceLoaded(2, res); + ensureResourceLoaded(rtScript, res); break; case 2: /* load sound */ - ensureResourceLoaded(4, res); + ensureResourceLoaded(rtSound, res); break; case 3: /* load costume */ - ensureResourceLoaded(3, res); + ensureResourceLoaded(rtCostume, res); break; case 4: /* load room */ - ensureResourceLoaded(1, res); + ensureResourceLoaded(rtRoom, res); break; case 5: /* nuke script */ - setResourceFlags(2, res, 0x7F); + setResourceCounter(rtScript, res, 0x7F); break; case 6: /* nuke sound */ - setResourceFlags(4, res, 0x7F); + setResourceCounter(rtSound, res, 0x7F); break; case 7: /* nuke costume */ - setResourceFlags(3, res, 0x7F); + setResourceCounter(rtCostume, res, 0x7F); break; case 8: /* nuke room */ - setResourceFlags(1, res, 0x7F); + setResourceCounter(rtRoom, res, 0x7F); break; case 9: /* lock script */ if (res >= _numGlobalScripts) break; - lock(2,res); + lock(rtScript,res); break; case 10:/* lock sound */ - lock(4,res); + lock(rtSound,res); break; case 11:/* lock costume */ - lock(3,res); + lock(rtCostume,res); break; case 12:/* lock room */ if (res > 0x7F) res = _resourceMapper[res&0x7F]; - lock(1,res); + lock(rtRoom,res); break; case 13:/* unlock script */ if (res >= _numGlobalScripts) break; - unlock(2,res); + unlock(rtScript,res); break; case 14:/* unlock sound */ - unlock(4,res); + unlock(rtSound,res); break; case 15:/* unlock costume */ - unlock(3,res); + unlock(rtCostume,res); break; case 16:/* unlock room */ if (res > 0x7F) res = _resourceMapper[res&0x7F]; - unlock(1,res); + unlock(rtRoom,res); break; case 17:/* clear heap */ heapClear(0); @@ -1324,8 +1327,8 @@ void Scumm::o5_resourceRoutines() { case 19:/* nuke charset */ nukeCharset(res); break; - case 20:/* ? */ - unkResProc(getVarOrDirectWord(0x40), res); + case 20:/* load fl object */ + loadFlObject(getVarOrDirectWord(0x40), res); break; } } @@ -1573,7 +1576,6 @@ void Scumm::o5_soundKludge() { getWordVararg(items); soundKludge(items); - } void Scumm::o5_startMusic() { @@ -1613,8 +1615,7 @@ void Scumm::o5_startSound() { } void Scumm::o5_stopMusic() { - /* TODO: not implemented */ - warning("o5_stopMusic: not implemented"); + stopAllSounds(); } void Scumm::o5_stopObjectCode() { @@ -1636,7 +1637,7 @@ void Scumm::o5_stopScript() { } void Scumm::o5_stopSound() { - unkSoundProc1(getVarOrDirectByte(0x80)); + stopSound(getVarOrDirectByte(0x80)); } void Scumm::o5_stringOps() { @@ -1651,9 +1652,9 @@ void Scumm::o5_stringOps() { case 2: /* copystring */ a = getVarOrDirectByte(0x80); b = getVarOrDirectByte(0x40); - nukeResource(7, a); - ptr = getResourceAddress(7, b); - if (ptr) loadPtrToResource(7, a, ptr); + nukeResource(rtString, a); + ptr = getResourceAddress(rtString, b); + if (ptr) loadPtrToResource(rtString, a, ptr); break; case 3: /* set string char */ a = getVarOrDirectByte(0x80); @@ -1668,7 +1669,7 @@ void Scumm::o5_stringOps() { getResultPos(); a = getVarOrDirectByte(0x80); b = getVarOrDirectByte(0x40); - ptr = getResourceAddress(7, a); + ptr = getResourceAddress(rtString, a); if (ptr==NULL) error("String %d does not exist", a); setResult(ptr[b]); break; @@ -1676,9 +1677,9 @@ void Scumm::o5_stringOps() { case 5: /* create empty string */ a = getVarOrDirectByte(0x80); b = getVarOrDirectByte(0x40); - nukeResource(7, a); + nukeResource(rtString, a); if (b) { - ptr = createResource(7, a, b); + ptr = createResource(rtString, a, b); if (ptr) { for(i=0; i<b; i++) ptr[i] = 0; @@ -1719,9 +1720,9 @@ void Scumm::o5_verbOps() { } break; case 2: /* load from code */ - loadPtrToResource(8, slot, NULL); + loadPtrToResource(rtVerb, slot, NULL); if (slot==0) - nukeResource(8, slot); + nukeResource(rtVerb, slot); vs->type = 0; vs->imgindex = 0; break; @@ -1781,14 +1782,14 @@ void Scumm::o5_verbOps() { vs->center = 1; break; case 20: /* set to string */ - ptr = getResourceAddress(7, getVarOrDirectWord(0x80)); + ptr = getResourceAddress(rtString, getVarOrDirectWord(0x80)); if (!ptr) - nukeResource(8, slot); + nukeResource(rtVerb, slot); else { - loadPtrToResource(8, slot, ptr); + loadPtrToResource(rtVerb, slot, ptr); } if (slot==0) - nukeResource(8, slot); + nukeResource(rtVerb, slot); vs->type = 0; vs->imgindex = 0; break; @@ -1832,11 +1833,11 @@ void Scumm::o5_wait() { case 4: /* wait for sentence */ if (_sentenceIndex!=0xFF) { if (sentence[_sentenceIndex].unk && - !isScriptLoaded(_vars[VAR_SENTENCE_SCRIPT]) ) + !isScriptInUse(_vars[VAR_SENTENCE_SCRIPT]) ) return; break; } - if (!isScriptLoaded(_vars[VAR_SENTENCE_SCRIPT])) + if (!isScriptInUse(_vars[VAR_SENTENCE_SCRIPT])) return; break; default: |