[Scummvm-cvs-logs] SF.net SVN: scummvm: [28513] scummvm/trunk/engines/agi/sound.cpp
buddha_ at users.sourceforge.net
buddha_ at users.sourceforge.net
Fri Aug 10 15:04:59 CEST 2007
Revision: 28513
http://scummvm.svn.sourceforge.net/scummvm/?rev=28513&view=rev
Author: buddha_
Date: 2007-08-10 06:04:59 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
Parsing Apple IIGS wave info into more easily accessible variables in the memory.
Modified Paths:
--------------
scummvm/trunk/engines/agi/sound.cpp
Modified: scummvm/trunk/engines/agi/sound.cpp
===================================================================
--- scummvm/trunk/engines/agi/sound.cpp 2007-08-09 21:32:26 UTC (rev 28512)
+++ scummvm/trunk/engines/agi/sound.cpp 2007-08-10 13:04:59 UTC (rev 28513)
@@ -66,22 +66,19 @@
struct IIgsWaveInfo {
uint8 top;
- uint8 addr;
- uint8 size;
-// Oscillator channel (Bits 4-7 of mode-byte). Simplified to use only stereo here.
-#define MASK_OSC_CHANNEL (1 << 4)
-#define OSC_CHANNEL_LEFT (1 << 4)
-#define OSC_CHANNEL_RIGHT (0 << 4)
-// Oscillator halt bit (Bit 0 of mode-byte)
-#define MASK_OSC_HALT (1 << 0)
-#define OSC_HALT (1 << 0)
-// Oscillator mode (Bits 1 and 2 of mode-byte)
-#define MASK_OSC_MODE (3 << 1)
-#define OSC_MODE_LOOP (0 << 1)
-#define OSC_MODE_ONESHOT (1 << 1)
-#define OSC_MODE_SYNC_AM (2 << 1)
-#define OSC_MODE_SWAP (3 << 1)
- uint8 mode;
+ uint addr;
+ uint size;
+// Oscillator channel
+#define OSC_CHANNEL_RIGHT 0
+#define OSC_CHANNEL_LEFT 1
+ uint channel;
+// Oscillator mode
+#define OSC_MODE_LOOP 0
+#define OSC_MODE_ONESHOT 1
+#define OSC_MODE_SYNC_AM 2
+#define OSC_MODE_SWAP 3
+ uint mode;
+ bool halt;
uint16 relPitch; ///< 8b.8b fixed point, big endian?
};
@@ -128,9 +125,15 @@
bool readIIgsWaveInfo(IIgsWaveInfo &waveInfo, Common::SeekableReadStream &stream) {
waveInfo.top = stream.readByte();
- waveInfo.addr = stream.readByte();
- waveInfo.size = stream.readByte();
- waveInfo.mode = stream.readByte();
+ waveInfo.addr = stream.readByte() * 256;
+ waveInfo.size = (1 << (stream.readByte() & 7)) * 256;
+
+ // Read mode byte and parse it into parts
+ byte mode = stream.readByte();
+ waveInfo.channel = (mode >> 4) & 1; // Bit 4
+ waveInfo.mode = (mode >> 1) & 3; // Bits 1-2
+ waveInfo.halt = (mode & 1) != 0; // Bit 0 (Converted to boolean)
+
waveInfo.relPitch = stream.readUint16BE();
return !stream.ioFailed();
}
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