summaryrefslogtreecommitdiff
path: root/games
diff options
context:
space:
mode:
authordillo <dillo>2004-05-28 11:09:44 +0000
committerdillo <dillo>2004-05-28 11:09:44 +0000
commitaf86990f785ee595f8f6b46520c55add450a10d4 (patch)
tree07685f6048829501e54c3edd39713df3e70e4e88 /games
parentcd62f07637dbbe1bf16381f323f40781e943541d (diff)
downloadpkgsrc-af86990f785ee595f8f6b46520c55add450a10d4.tar.gz
raw has been discontinued by its author, distfile no longer available
Diffstat (limited to 'games')
-rw-r--r--games/raw/DESCR5
-rw-r--r--games/raw/Makefile32
-rw-r--r--games/raw/PLIST4
-rw-r--r--games/raw/distinfo17
-rw-r--r--games/raw/patches/patch-aa26
-rw-r--r--games/raw/patches/patch-ab51
-rw-r--r--games/raw/patches/patch-ac22
-rw-r--r--games/raw/patches/patch-ad219
-rw-r--r--games/raw/patches/patch-ae54
-rw-r--r--games/raw/patches/patch-af124
-rw-r--r--games/raw/patches/patch-ag68
-rw-r--r--games/raw/patches/patch-ah49
-rw-r--r--games/raw/patches/patch-ai94
-rw-r--r--games/raw/patches/patch-aj26
-rw-r--r--games/raw/patches/patch-ak35
-rw-r--r--games/raw/patches/patch-al28
-rw-r--r--games/raw/patches/patch-am16
17 files changed, 0 insertions, 870 deletions
diff --git a/games/raw/DESCR b/games/raw/DESCR
deleted file mode 100644
index 7c219e38ea2..00000000000
--- a/games/raw/DESCR
+++ /dev/null
@@ -1,5 +0,0 @@
-raw is a rewrite of the engine used in the action/adventure game
-Another World/Out of this World released for DOS and Amiga. This
-program is designed as a cross-platform replacement for the original
-executable and uses the SDL library. You will need the data files
-from the DOS version of the game to play.
diff --git a/games/raw/Makefile b/games/raw/Makefile
deleted file mode 100644
index fdfcceffc1e..00000000000
--- a/games/raw/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# $NetBSD: Makefile,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-#
-
-DISTNAME= raw-0.1.0
-CATEGORIES= games
-MASTER_SITES= http://membres.lycos.fr/cyxdown/raw/
-EXTRACT_SUFX= .tar.bz2
-
-MAINTAINER= dillo@NetBSD.org
-HOMEPAGE= http://membres.lycos.fr/cyxdown/raw/
-COMMENT= Engine for playing Another World
-
-USE_BUILDLINK3= yes
-ALL_TARGET= raw
-
-.include "../../mk/endian.mk"
-.if ${MACHINE_ENDIAN} == "big"
-CFLAGS+= -DSYS_BIG_ENDIAN
-.elif ${MACHINE_ENDIAN} == "little"
-CFLAGS+= -DSYS_LITTLE_ENDIAN
-.else
-BROKEN= "Unknown endianness"
-.endif
-
-do-install:
- ${INSTALL_PROGRAM} ${WRKSRC}/raw ${PREFIX}/bin
- ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/raw
- ${INSTALL_DATA} ${WRKSRC}/README ${PREFIX}/share/doc/raw
-
-.include "../../devel/SDL/buildlink3.mk"
-.include "../../devel/zlib/buildlink3.mk"
-.include "../../mk/bsd.pkg.mk"
diff --git a/games/raw/PLIST b/games/raw/PLIST
deleted file mode 100644
index 383bc195ad7..00000000000
--- a/games/raw/PLIST
+++ /dev/null
@@ -1,4 +0,0 @@
-@comment $NetBSD: PLIST,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-bin/raw
-share/doc/raw/README
-@dirrm share/doc/raw
diff --git a/games/raw/distinfo b/games/raw/distinfo
deleted file mode 100644
index 7aa8a8478cc..00000000000
--- a/games/raw/distinfo
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD: distinfo,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-SHA1 (raw-0.1.0.tar.bz2) = 81072215bd88e5e214516e569e5df24c3b4cc5e0
-Size (raw-0.1.0.tar.bz2) = 26331 bytes
-SHA1 (patch-aa) = 8f8ac043d5e600388d15aae01cd3c0968cdfd1af
-SHA1 (patch-ab) = 4a9143b003884c7e3f320a80c9f1b3619eef3cfb
-SHA1 (patch-ac) = b67f0d5700291720c7d4fa88738e3af0e31f8856
-SHA1 (patch-ad) = a5ba4c8da7905bdad41f693c6d097061178730e7
-SHA1 (patch-ae) = b05eff9ac667666103a97c5cab944638a01f2ab2
-SHA1 (patch-af) = 9c47bdb96b26e44e2e9d5397d84b6250cfbca8f7
-SHA1 (patch-ag) = 13d29579e2d398b20c7cffd6fc8e3ea0f10db183
-SHA1 (patch-ah) = 27684e304edac6f155a1512fcc177d545c89e461
-SHA1 (patch-ai) = ce8d58ffeb58f766a3678693850c51be2d65dfcb
-SHA1 (patch-aj) = 48e1860506c9252ea4c12ab735559c13be81a909
-SHA1 (patch-ak) = adc6bc051193e9f54cc1bc80aa94da7965357d66
-SHA1 (patch-al) = 1e2879f83f816a3ac2a4a95766c0eb069ddd9242
-SHA1 (patch-am) = e55e7e7fcb0b36147088c916625f5e24249f415d
diff --git a/games/raw/patches/patch-aa b/games/raw/patches/patch-aa
deleted file mode 100644
index b160c7cf3bd..00000000000
--- a/games/raw/patches/patch-aa
+++ /dev/null
@@ -1,26 +0,0 @@
-$NetBSD: patch-aa,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- Makefile.orig Wed Apr 21 20:52:50 2004
-+++ Makefile
-@@ -2,14 +2,14 @@
- SDL_CFLAGS = `sdl-config --cflags`
- SDL_LIBS = `sdl-config --libs`
-
--DEFINES = -DLITTLE_ENDIAN
-+DEFINES = -DBYPASS_PROTECTION
-
--CXX = g++
--CXXFLAGS:= -g -O2 -Wall -Wuninitialized -Wno-unknown-pragmas -Wshadow -Wstrict-prototypes
--CXXFLAGS+= -Wimplicit -Wundef -Wreorder -Wwrite-strings -Wnon-virtual-dtor -Wno-multichar
-+#CXX = g++
-+#CXXFLAGS:= -g -O -Wall -Wuninitialized -Wno-unknown-pragmas -Wshadow -Wstrict-prototypes
-+#CXXFLAGS+= -Wimplicit -Wundef -Wreorder -Wwrite-strings -Wnon-virtual-dtor -Wno-multichar
- CXXFLAGS+= $(SDL_CFLAGS) $(DEFINES)
-
--SRCS = bank.cpp file.cpp engine.cpp logic.cpp resource.cpp sdlstub.cpp \
-+SRCS = bank.cpp file.cpp engine.cpp logic.cpp mixer.cpp resource.cpp sdlstub.cpp \
- serializer.cpp staticres.cpp util.cpp video.cpp main.cpp
-
- OBJS = $(SRCS:.cpp=.o)
diff --git a/games/raw/patches/patch-ab b/games/raw/patches/patch-ab
deleted file mode 100644
index 7ed87afe595..00000000000
--- a/games/raw/patches/patch-ab
+++ /dev/null
@@ -1,51 +0,0 @@
-$NetBSD: patch-ab,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- engine.cpp.orig Mon Apr 19 21:01:30 2004
-+++ engine.cpp
-@@ -23,14 +23,13 @@
-
-
- Engine::Engine(SystemStub *stub, const char *dataDir, const char *saveDir)
-- : _stub(stub), _log(&_res, &_vid, stub), _res(&_vid, dataDir), _vid(&_res, stub),
-+ : _stub(stub), _log(&_mix, &_res, &_vid, stub), _mix(_stub), _res(&_vid, dataDir), _vid(&_res, stub),
- _dataDir(dataDir), _saveDir(saveDir), _stateSlot(0) {
- }
-
- void Engine::run() {
- _stub->init("Out Of This World");
- setup();
-- // XXX
- _log.restartAt(0x3E80); // demo starts at 0x3E81
- while (!_stub->_pi.quit) {
- _log.setupScripts();
-@@ -47,10 +46,11 @@ void Engine::setup() {
- _res.allocMemBlock();
- _res.readEntries();
- _log.init();
-+ _mix.init();
- }
-
- void Engine::finish() {
-- // XXX
-+ _mix.free();
- _res.freeMemBlock();
- }
-
-@@ -100,6 +100,7 @@ void Engine::saveGameState(uint8 slot, c
- _log.saveOrLoad(s);
- _res.saveOrLoad(s);
- _vid.saveOrLoad(s);
-+ // XXX _mix.saveOrLoad(s);
- if (f.ioErr()) {
- warning("I/O error when saving game state");
- } else {
-@@ -128,6 +129,7 @@ void Engine::loadGameState(uint8 slot) {
- _log.saveOrLoad(s);
- _res.saveOrLoad(s);
- _vid.saveOrLoad(s);
-+ // XXX _mix.saveOrLoad(s);
- }
- if (f.ioErr()) {
- warning("I/O error when loading game state");
diff --git a/games/raw/patches/patch-ac b/games/raw/patches/patch-ac
deleted file mode 100644
index bd8adaa0447..00000000000
--- a/games/raw/patches/patch-ac
+++ /dev/null
@@ -1,22 +0,0 @@
-$NetBSD: patch-ac,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- engine.h.orig Sun Apr 18 19:42:26 2004
-+++ engine.h
-@@ -21,6 +21,7 @@
-
- #include "intern.h"
- #include "logic.h"
-+#include "mixer.h"
- #include "resource.h"
- #include "video.h"
-
-@@ -33,6 +34,7 @@ struct Engine {
-
- SystemStub *_stub;
- Logic _log;
-+ Mixer _mix;
- Resource _res;
- Video _vid;
- const char *_dataDir, *_saveDir;
diff --git a/games/raw/patches/patch-ad b/games/raw/patches/patch-ad
deleted file mode 100644
index b36f63f8528..00000000000
--- a/games/raw/patches/patch-ad
+++ /dev/null
@@ -1,219 +0,0 @@
-$NetBSD: patch-ad,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-This includes sound-20040508.diff and txhf-20040426.diff from the
-master site.
-
---- logic.cpp.orig Wed Apr 21 20:20:36 2004
-+++ logic.cpp
-@@ -18,14 +18,15 @@
-
- #include <ctime>
- #include "logic.h"
-+#include "mixer.h"
- #include "resource.h"
- #include "video.h"
- #include "serializer.h"
- #include "systemstub.h"
-
-
--Logic::Logic(Resource *res, Video *vid, SystemStub *stub)
-- : _res(res), _vid(vid), _stub(stub) {
-+Logic::Logic(Mixer *mix, Resource *res, Video *vid, SystemStub *stub)
-+ : _mix(mix), _res(res), _vid(vid), _stub(stub) {
- }
-
- void Logic::init() {
-@@ -57,6 +58,16 @@ void Logic::op_add() {
- }
-
- void Logic::op_addConst() {
-+ if (_res->_curPtrsId == 0x3E86 && _scriptPtr.pc == _res->_segCode + 0x6D48) {
-+ warning("Logic::op_addConst() hack for non-stop looping gun bug");
-+ // the script 0x27 slot 0x17 doesn't stop the gun sound from looping, I
-+ // don't really know why ; for now, let's play the 'stopping sound' like
-+ // the other scripts do
-+ // (0x6D43) jmp(0x6CE5)
-+ // (0x6D46) break
-+ // (0x6D47) VAR(6) += -50
-+ snd_playSound(0x5B, 1, 64, 1);
-+ }
- uint8 i = _scriptPtr.fetchByte();
- int16 n = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_addConst(0x%02X, %d)", i, n);
-@@ -68,12 +79,18 @@ void Logic::op_call() {
- uint8 sp = _stackPtr;
- debug(DBG_LOGIC, "Logic::op_call(0x%X)", off);
- _scriptStackCalls[sp] = _scriptPtr.pc - _res->_segCode;
-+ if (_stackPtr == 0xFF) {
-+ error("Logic::op_call() ec=0x%X stack overflow", 0x8F);
-+ }
- ++_stackPtr;
- _scriptPtr.pc = _res->_segCode + off;
- }
-
- void Logic::op_ret() {
- debug(DBG_LOGIC, "Logic::op_ret()");
-+ if (_stackPtr == 0) {
-+ error("Logic::op_ret() ec=0x%X stack underflow", 0x8F);
-+ }
- --_stackPtr;
- uint8 sp = _stackPtr;
- _scriptPtr.pc = _res->_segCode + _scriptStackCalls[sp];
-@@ -123,13 +140,14 @@ void Logic::op_condJmp() {
- #endif
- uint8 op = _scriptPtr.fetchByte();
- int16 b = _scriptVars[_scriptPtr.fetchByte()];
-- int16 a = _scriptPtr.fetchByte();
-+ uint8 c = _scriptPtr.fetchByte();
-+ int16 a;
- if (op & 0x80) {
-- a = _scriptVars[a];
-+ a = _scriptVars[c];
-+ } else if (op & 0x40) {
-+ a = c * 256 + _scriptPtr.fetchByte();
- } else {
-- if (op & 0x40) {
-- a = (a << 8) | _scriptPtr.fetchByte();
-- }
-+ a = c;
- }
- debug(DBG_LOGIC, "Logic::op_condJmp(%d, 0x%02X, 0x%02X)", op, b, a);
- bool expr = false;
-@@ -178,21 +196,19 @@ void Logic::op_resetScript() {
- return;
- }
- ++n;
-- uint8 _al = _scriptPtr.fetchByte();
-+ uint8 a = _scriptPtr.fetchByte();
-
-- debug(DBG_LOGIC, "Logic::op_resetScript(%d, %d, %d)", j, i, _al);
-+ debug(DBG_LOGIC, "Logic::op_resetScript(%d, %d, %d)", j, i, a);
-
-- if (_al == 2) {
-- uint16 *_si = &_scriptPos[1][j];
-+ if (a == 2) {
-+ uint16 *p = &_scriptPos[1][j];
- while (n--) {
-- *_si = 0xFFFE;
-- ++_si;
-+ *p++ = 0xFFFE;
- }
-- } else if (_al < 2) {
-- uint8 *_si = &_scriptPaused[1][j];
-+ } else if (a < 2) {
-+ uint8 *p = &_scriptPaused[1][j];
- while (n--) {
-- *_si = _al;
-- ++_si;
-+ *p++ = a;
- }
- }
- }
-@@ -267,54 +283,60 @@ void Logic::op_and() {
- uint8 i = _scriptPtr.fetchByte();
- uint16 n = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_and(0x%02X, %d)", i, n);
-- _scriptVars[i] &= n;
-+ _scriptVars[i] = (uint16)_scriptVars[i] & n;
- }
-
- void Logic::op_or() {
- uint8 i = _scriptPtr.fetchByte();
- uint16 n = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_or(0x%02X, %d)", i, n);
-- _scriptVars[i] |= n;
-+ _scriptVars[i] = (uint16)_scriptVars[i] | n;
- }
-
- void Logic::op_shl() {
- uint8 i = _scriptPtr.fetchByte();
- uint16 n = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_shl(0x%02X, %d)", i, n);
-- _scriptVars[i] <<= n;
-+ _scriptVars[i] = (uint16)_scriptVars[i] << n;
- }
-
- void Logic::op_shr() {
- uint8 i = _scriptPtr.fetchByte();
- uint16 n = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_shr(0x%02X, %d)", i, n);
-- _scriptVars[i] >>= n;
-+ _scriptVars[i] = (uint16)_scriptVars[i] >> n;
- }
-
--void Logic::op_soundUnk1() {
-- uint16 b = _scriptPtr.fetchWord();
-- uint16 c = _scriptPtr.fetchWord();
-- uint8 a = _scriptPtr.fetchByte();
-- debug(DBG_LOGIC, "Logic::op_soundUnk1(0x%X, 0x%X, %d)", b, c, a);
-- // XXX
-+void Logic::op_playSound() {
-+ uint16 resNum = _scriptPtr.fetchWord();
-+ uint8 freq = _scriptPtr.fetchByte();
-+ uint8 vol = _scriptPtr.fetchByte();
-+ uint8 channel = _scriptPtr.fetchByte();
-+ debug(DBG_LOGIC, "Logic::op_playSound(0x%X, %d, %d, %d)", resNum, freq, vol, channel);
-+ snd_playSound(resNum, freq, vol, channel);
- }
-
- void Logic::op_updateMemList() {
- uint16 num = _scriptPtr.fetchWord();
- debug(DBG_LOGIC, "Logic::op_updateMemList(%d)", num);
-- _res->update(num);
-+ if (num == 0) {
-+ _mix->stopAll();
-+ _res->invalidateRes();
-+ } else {
-+ _res->update(num);
-+ }
- }
-
--void Logic::op_soundUnk2() {
-- uint16 b = _scriptPtr.fetchWord();
-- uint16 c = _scriptPtr.fetchWord();
-- uint8 a = _scriptPtr.fetchByte();
-- debug(DBG_LOGIC, "Logic::op_soundUnk2(0x%X, 0x%X, %d)", b, c, a);
-- // XXX
-+void Logic::op_playMusic() {
-+ uint16 resNum = _scriptPtr.fetchWord();
-+ uint16 delay = _scriptPtr.fetchWord();
-+ uint8 pos = _scriptPtr.fetchByte();
-+ debug(DBG_LOGIC, "Logic::op_playMusic(0x%X, %d, %d)", resNum, delay, pos);
-+// snd_playMusic(resNum, delay, pos);
- }
-
- void Logic::restartAt(uint16 ptrId) {
-- // XXX
-+ _mix->stopAll();
- _scriptVars[0xE4] = 0x14;
- _res->setupPtrs(ptrId);
- memset((uint8 *)_scriptPos, 0xFF, sizeof(_scriptPos));
-@@ -489,6 +511,28 @@ void Logic::inp_handleSpecialKeys() {
- // XXX
- if (_scriptVars[0xC9] == 1) {
- warning("Logic::inp_handleSpecialKeys() unhandled case (_scriptVars[0xC9] == 1)");
-+ }
-+}
-+
-+void Logic::snd_playSound(uint16 resNum, uint8 freq, uint8 vol, uint8 channel) {
-+ debug(DBG_SND, "snd_playSound(0x%X, %d, %d, %d)", resNum, freq, vol, channel);
-+ // XXX if (_res->_curPtrsId != 0x3E80 && _scriptVar_0xBF != _scriptVars[0xBF])
-+ MemEntry *me = &_res->_memList[resNum];
-+ if (me->valid == 1) {
-+ if (vol == 0) {
-+ _mix->stopChannel(channel);
-+ } else {
-+ MixerChunk mc;
-+ memset(&mc, 0, sizeof(mc));
-+ mc.data = me->bufPtr + 8; // skip header
-+ mc.len = READ_BE_UINT16(me->bufPtr) * 2;
-+ mc.loopLen = READ_BE_UINT16(me->bufPtr + 2) * 2;
-+ if (mc.loopLen != 0) {
-+ mc.loopPos = mc.len;
-+ }
-+ assert(freq < 40);
-+ _mix->playChannel(channel & 3, &mc, _freqTable[freq], MIN(vol, 0x3F));
-+ }
- }
- }
-
diff --git a/games/raw/patches/patch-ae b/games/raw/patches/patch-ae
deleted file mode 100644
index f0995b7b99b..00000000000
--- a/games/raw/patches/patch-ae
+++ /dev/null
@@ -1,54 +0,0 @@
-$NetBSD: patch-ae,v 1.1.1.1 2004/05/14 15:42:14 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- logic.h.orig Sun Apr 18 19:30:48 2004
-+++ logic.h
-@@ -21,6 +21,7 @@
-
- #include "intern.h"
-
-+struct Mixer;
- struct Resource;
- struct Serializer;
- struct SystemStub;
-@@ -46,7 +47,9 @@ struct Logic {
- };
-
- static const OpcodeStub _opTable[];
-+ static const uint16 _freqTable[];
-
-+ Mixer *_mix;
- Resource *_res;
- Video *_vid;
- SystemStub *_stub;
-@@ -61,7 +64,7 @@ struct Logic {
- bool _scriptHalted;
- bool _fastMode;
-
-- Logic(Resource *res, Video *vid, SystemStub *stub);
-+ Logic(Mixer *mix, Resource *res, Video *vid, SystemStub *stub);
- void init();
-
- void op_movConst();
-@@ -88,9 +91,9 @@ struct Logic {
- void op_or();
- void op_shl();
- void op_shr();
-- void op_soundUnk1();
-+ void op_playSound();
- void op_updateMemList();
-- void op_soundUnk2();
-+ void op_playMusic();
-
- void restartAt(uint16 ptrId);
- void setupPtrs(uint16 ptrId);
-@@ -100,6 +103,8 @@ struct Logic {
-
- void inp_updatePlayer();
- void inp_handleSpecialKeys();
-+
-+ void snd_playSound(uint16 resNum, uint8 freq, uint8 vol, uint8 channel);
-
- void saveOrLoad(Serializer &ser);
- };
diff --git a/games/raw/patches/patch-af b/games/raw/patches/patch-af
deleted file mode 100644
index 824bee58920..00000000000
--- a/games/raw/patches/patch-af
+++ /dev/null
@@ -1,124 +0,0 @@
-$NetBSD: patch-af,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- mixer.cpp.orig Sun May 9 21:04:46 2004
-+++ mixer.cpp
-@@ -0,0 +1,117 @@
-+/* Raw - Another World Interpreter
-+ * Copyright (C) 2004 Gregory Montoir
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#include "mixer.h"
-+#include "systemstub.h"
-+
-+
-+static int8 addclamp(int a, int b) {
-+ int add = a + b;
-+ if (add < -128) {
-+ add = -128;
-+ }
-+ else if (add > 127) {
-+ add = 127;
-+ }
-+ return (int8)add;
-+}
-+
-+Mixer::Mixer(SystemStub *stub)
-+ : _stub(stub) {
-+}
-+
-+void Mixer::init() {
-+ memset(_channels, 0, sizeof(_channels));
-+ _stub->startAudio(Mixer::mixCallback, this);
-+}
-+
-+void Mixer::free() {
-+ _stub->stopAudio();
-+}
-+
-+void Mixer::playChannel(uint8 channel, const MixerChunk *mc, uint16 freq, uint8 volume) {
-+ debug(DBG_SND, "Mixer::playChannel(%d, %d, %d)", channel, freq, volume);
-+ assert(channel < NUM_CHANNELS);
-+ _stub->lockAudio();
-+ MixerChannel *ch = &_channels[channel];
-+ ch->active = true;
-+ ch->volume = volume;
-+ ch->chunk = *mc;
-+ ch->chunkPos = 0;
-+ ch->chunkInc = (freq << 8) / _stub->getOutputSampleRate();
-+ _stub->unlockAudio();
-+}
-+
-+void Mixer::stopChannel(uint8 channel) {
-+ debug(DBG_SND, "Mixer::stopChannel(%d)", channel);
-+ assert(channel < NUM_CHANNELS);
-+ _stub->lockAudio();
-+ _channels[channel].active = false;
-+ _stub->unlockAudio();
-+}
-+
-+void Mixer::stopAll() {
-+ debug(DBG_SND, "Mixer::stopAll()");
-+ _stub->lockAudio();
-+ for (uint8 i = 0; i < NUM_CHANNELS; ++i) {
-+ _channels[i].active = false;
-+ }
-+ _stub->unlockAudio();
-+}
-+
-+void Mixer::mix(int8 *buf, int len) {
-+ memset(buf, 0, len);
-+ for (uint8 i = 0; i < NUM_CHANNELS; ++i) {
-+ MixerChannel *ch = &_channels[i];
-+ if (ch->active) {
-+ int8 *pBuf = buf;
-+ for (int j = 0; j < len; ++j, ++pBuf) {
-+ uint16 p1, p2;
-+ uint16 ilc = (ch->chunkPos & 0xFF);
-+ p1 = ch->chunkPos >> 8;
-+ ch->chunkPos += ch->chunkInc;
-+ if (ch->chunk.loopLen != 0) {
-+ if (p1 == ch->chunk.loopPos + ch->chunk.loopLen - 1) {
-+ debug(DBG_SND, "Looping sample on channel %d", i);
-+ ch->chunkPos = p2 = ch->chunk.loopPos;
-+ } else {
-+ p2 = p1 + 1;
-+ }
-+ } else {
-+ if (p1 == ch->chunk.len - 1) {
-+ debug(DBG_SND, "Stopping sample on channel %d", i);
-+ ch->active = false;
-+ break;
-+ } else {
-+ p2 = p1 + 1;
-+ }
-+ }
-+ // interpolate
-+ int8 b1 = *(int8 *)(ch->chunk.data + p1);
-+ int8 b2 = *(int8 *)(ch->chunk.data + p2);
-+ int8 b = (int8)((b1 * (0xFF - ilc) + b2 * ilc) >> 8);
-+ // set volume and clamp
-+ *pBuf = addclamp(*pBuf, (int)b * ch->volume / 0x40);
-+ }
-+ }
-+ }
-+}
-+
-+void Mixer::mixCallback(void *param, uint8 *buf, int len) {
-+ ((Mixer *)param)->mix((int8 *)buf, len);
-+}
diff --git a/games/raw/patches/patch-ag b/games/raw/patches/patch-ag
deleted file mode 100644
index a8d4ac01435..00000000000
--- a/games/raw/patches/patch-ag
+++ /dev/null
@@ -1,68 +0,0 @@
-$NetBSD: patch-ag,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- mixer.h.orig Sun May 9 21:04:49 2004
-+++ mixer.h
-@@ -0,0 +1,61 @@
-+/* Raw - Another World Interpreter
-+ * Copyright (C) 2004 Gregory Montoir
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifndef __MIXER_H__
-+#define __MIXER_H__
-+
-+#include "intern.h"
-+
-+struct MixerChunk {
-+ const uint8 *data;
-+ uint16 len;
-+ uint16 loopPos;
-+ uint16 loopLen;
-+};
-+
-+struct MixerChannel {
-+ bool active;
-+ uint8 volume;
-+ MixerChunk chunk;
-+ uint32 chunkPos;
-+ uint32 chunkInc;
-+};
-+
-+struct SystemStub;
-+
-+struct Mixer {
-+ enum {
-+ NUM_CHANNELS = 4
-+ };
-+
-+ SystemStub *_stub;
-+ MixerChannel _channels[NUM_CHANNELS];
-+
-+ Mixer(SystemStub *stub);
-+ void init();
-+ void free();
-+
-+ void playChannel(uint8 channel, const MixerChunk *mc, uint16 freq, uint8 volume);
-+ void stopChannel(uint8 channel);
-+ void stopAll();
-+ void mix(int8 *buf, int len);
-+
-+ static void mixCallback(void *param, uint8 *buf, int len);
-+};
-+
-+#endif
diff --git a/games/raw/patches/patch-ah b/games/raw/patches/patch-ah
deleted file mode 100644
index a9935016693..00000000000
--- a/games/raw/patches/patch-ah
+++ /dev/null
@@ -1,49 +0,0 @@
-$NetBSD: patch-ah,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- resource.cpp.orig Wed Apr 21 20:29:26 2004
-+++ resource.cpp
-@@ -127,7 +127,6 @@ void Resource::load() {
- }
-
- void Resource::invalidateRes() {
-- // XXX call ds:sound_stub_1_ptr
- MemEntry *me = _memList;
- uint16 i = _numMemList;
- while (i--) {
-@@ -150,23 +149,19 @@ void Resource::invalidateAll() {
- }
-
- void Resource::update(uint16 num) {
-- if (num == 0) {
-- invalidateRes();
-+ if (num > _numMemList) {
-+ _newPtrsId = num;
- } else {
-- if (num > _numMemList) {
-- _newPtrsId = num;
-- } else {
-- if (false) { // XXX (_audio_use_pro_or_adlib == 1 || _audio_use_spk == 1) {
-- for (const uint16 *ml = _memListAudio; *ml != 0xFFFF; ++ml) {
-- if (*ml == num)
-- return;
-- }
-- }
-- MemEntry *me = &_memList[num];
-- if (me->valid == 0) {
-- me->valid = 2;
-- load();
-+ if (false) { // XXX (_audio_use_pro_or_adlib == 1 || _audio_use_spk == 1) {
-+ for (const uint16 *ml = _memListAudio; *ml != 0xFFFF; ++ml) {
-+ if (*ml == num)
-+ return;
- }
-+ }
-+ MemEntry *me = &_memList[num];
-+ if (me->valid == 0) {
-+ me->valid = 2;
-+ load();
- }
- }
- }
diff --git a/games/raw/patches/patch-ai b/games/raw/patches/patch-ai
deleted file mode 100644
index 2a40b09c2f9..00000000000
--- a/games/raw/patches/patch-ai
+++ /dev/null
@@ -1,94 +0,0 @@
-$NetBSD: patch-ai,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- sdlstub.cpp.orig Wed Apr 21 20:29:56 2004
-+++ sdlstub.cpp
-@@ -26,7 +26,8 @@ struct SDLStub : SystemStub {
-
- enum {
- SCREEN_W = 320,
-- SCREEN_H = 200
-+ SCREEN_H = 200,
-+ SOUND_SAMPLE_RATE = 22050
- };
-
- struct Scaler {
-@@ -52,6 +53,11 @@ struct SDLStub : SystemStub {
- virtual void processEvents();
- virtual void sleep(uint32 duration);
- virtual uint32 getTimeStamp();
-+ virtual void lockAudio();
-+ virtual void unlockAudio();
-+ virtual void startAudio(AudioCallback callback, void *param);
-+ virtual void stopAudio();
-+ virtual uint32 getOutputSampleRate();
-
- void prepareGfxMode();
- void cleanupGfxMode();
-@@ -73,7 +79,7 @@ SystemStub *SystemStub_SDL_create() {
- }
-
- void SDLStub::init(const char *title) {
-- SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
-+ SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER);
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
- SDL_ShowCursor(SDL_DISABLE);
- SDL_WM_SetCaption(title, NULL);
-@@ -89,6 +95,7 @@ void SDLStub::init(const char *title) {
-
- void SDLStub::destroy() {
- cleanupGfxMode();
-+ SDL_Quit();
- }
-
- void SDLStub::setPalette(uint8 s, uint8 n, const uint8 *buf) {
-@@ -128,7 +135,7 @@ void SDLStub::processEvents() {
- while(SDL_PollEvent(&ev)) {
- switch (ev.type) {
- case SDL_QUIT:
-- exit(0);
-+ _pi.quit = true;
- break;
- case SDL_KEYUP:
- switch(ev.key.keysym.sym) {
-@@ -224,6 +231,39 @@ void SDLStub::sleep(uint32 duration) {
-
- uint32 SDLStub::getTimeStamp() {
- return SDL_GetTicks();
-+}
-+
-+void SDLStub::lockAudio() {
-+ SDL_LockAudio();
-+}
-+
-+void SDLStub::unlockAudio() {
-+ SDL_UnlockAudio();
-+}
-+
-+void SDLStub::startAudio(AudioCallback callback, void *param) {
-+ SDL_AudioSpec desired;
-+ memset(&desired, 0, sizeof(desired));
-+
-+ desired.freq = SOUND_SAMPLE_RATE;
-+ desired.format = AUDIO_S8;
-+ desired.channels = 1;
-+ desired.samples = 2048;
-+ desired.callback = callback;
-+ desired.userdata = param;
-+ if (SDL_OpenAudio(&desired, NULL) == 0) {
-+ SDL_PauseAudio(0);
-+ } else {
-+ error("SDLStub::startAudio() unable to open sound device");
-+ }
-+}
-+
-+void SDLStub::stopAudio() {
-+ SDL_CloseAudio();
-+}
-+
-+uint32 SDLStub::getOutputSampleRate() {
-+ return SOUND_SAMPLE_RATE;
- }
-
- void SDLStub::prepareGfxMode() {
diff --git a/games/raw/patches/patch-aj b/games/raw/patches/patch-aj
deleted file mode 100644
index 8429fbd591c..00000000000
--- a/games/raw/patches/patch-aj
+++ /dev/null
@@ -1,26 +0,0 @@
-$NetBSD: patch-aj,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- staticres.cpp.orig Sat Apr 17 19:07:36 2004
-+++ staticres.cpp
-@@ -53,9 +53,17 @@ const Logic::OpcodeStub Logic::_opTable[
- &Logic::op_shl,
- &Logic::op_shr,
- /* 0x18 */
-- &Logic::op_soundUnk1,
-+ &Logic::op_playSound,
- &Logic::op_updateMemList,
-- &Logic::op_soundUnk2
-+ &Logic::op_playMusic
-+};
-+
-+const uint16 Logic::_freqTable[] = {
-+ 0x0CFF, 0x0DC3, 0x0E91, 0x0F6F, 0x1056, 0x114E, 0x1259, 0x136C,
-+ 0x149F, 0x15D9, 0x1726, 0x1888, 0x19FD, 0x1B86, 0x1D21, 0x1EDE,
-+ 0x20AB, 0x229C, 0x24B3, 0x26D7, 0x293F, 0x2BB2, 0x2E4C, 0x3110,
-+ 0x33FB, 0x370D, 0x3A43, 0x3DDF, 0x4157, 0x4538, 0x4998, 0x4DAE,
-+ 0x5240, 0x5764, 0x5C9A, 0x61C8, 0x6793, 0x6E19, 0x7485, 0x7BBD
- };
-
- const uint16 Resource::_memListAudio[] = {
diff --git a/games/raw/patches/patch-ak b/games/raw/patches/patch-ak
deleted file mode 100644
index 02495426756..00000000000
--- a/games/raw/patches/patch-ak
+++ /dev/null
@@ -1,35 +0,0 @@
-$NetBSD: patch-ak,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- sys.h.orig Sat Apr 17 19:06:50 2004
-+++ sys.h
-@@ -26,7 +26,7 @@ typedef signed short int16;
- typedef unsigned long uint32;
- typedef signed long int32;
-
--#if defined LITTLE_ENDIAN
-+#if defined SYS_LITTLE_ENDIAN
-
- inline uint16 READ_BE_UINT16(const void *ptr) {
- const uint8 *b = (const uint8 *)ptr;
-@@ -38,16 +38,14 @@ inline uint32 READ_BE_UINT32(const void
- return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
- }
-
--#elif defined BIG_ENDIAN
-+#elif defined SYS_BIG_ENDIAN
-
- inline uint16 READ_BE_UINT16(const void *ptr) {
-- return (const uint8 *)ptr;
-- return (b[1] << 8) | b[0];
-+ return *(const uint16 *)ptr;
- }
-
- inline uint32 READ_BE_UINT32(const void *ptr) {
-- const uint8 *b = (const uint8 *)ptr;
-- return (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | b[0];
-+ return *(const uint32 *)ptr;
- }
-
- #else
diff --git a/games/raw/patches/patch-al b/games/raw/patches/patch-al
deleted file mode 100644
index d6693536597..00000000000
--- a/games/raw/patches/patch-al
+++ /dev/null
@@ -1,28 +0,0 @@
-$NetBSD: patch-al,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- systemstub.h.orig Sun Apr 18 16:17:32 2004
-+++ systemstub.h
-@@ -41,6 +41,8 @@ struct PlayerInput {
- };
-
- struct SystemStub {
-+ typedef void (*AudioCallback)(void *param, uint8 *stream, int len);
-+
- PlayerInput _pi;
-
- virtual ~SystemStub() {}
-@@ -54,6 +56,12 @@ struct SystemStub {
- virtual void processEvents() = 0;
- virtual void sleep(uint32 duration) = 0;
- virtual uint32 getTimeStamp() = 0;
-+
-+ virtual void lockAudio() = 0;
-+ virtual void unlockAudio() = 0;
-+ virtual void startAudio(AudioCallback callback, void *param) = 0;
-+ virtual void stopAudio() = 0;
-+ virtual uint32 getOutputSampleRate() = 0;
- };
-
- extern SystemStub *SystemStub_SDL_create();
diff --git a/games/raw/patches/patch-am b/games/raw/patches/patch-am
deleted file mode 100644
index 2f32863f0ce..00000000000
--- a/games/raw/patches/patch-am
+++ /dev/null
@@ -1,16 +0,0 @@
-$NetBSD: patch-am,v 1.1.1.1 2004/05/14 15:42:15 dillo Exp $
-
-This includes sound-20040508.diff from the master site.
-
---- util.h.orig Wed Apr 21 20:17:42 2004
-+++ util.h
-@@ -25,7 +25,8 @@ enum {
- DBG_LOGIC = 1 << 0,
- DBG_BANK = 1 << 1,
- DBG_VIDEO = 1 << 2,
-- DBG_INFO = 1 << 3
-+ DBG_INFO = 1 << 3,
-+ DBG_SND = 1 << 4
- };
-
- extern uint16 g_debugMask;