|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
4: * Support for Mac OS sound
5: *
6: * Copyright 1996 Ernesto Corvi
7: */
8:
9: #include <Sound.h>
10:
11: extern SndChannelPtr newChannel;
12: extern ExtSoundHeader theSndBuffer;
13: extern SndCommand theCmd;
14:
15: /* The buffer is too large... */
16: extern uae_u16 buffer0[44100], buffer1[44100], *sndbufpt;
17:
18: extern int have_sound;
19: extern int nextbuf;
20: extern Boolean sFlag;
21: extern int sndbufsize;
22:
23: static __inline__ void flush_sound_buffer (void)
24: {
25: sndbufpt = buffer0;
26:
27: theSndBuffer.samplePtr = (Ptr)buffer0;
28: theSndBuffer.numChannels = 1;
29: theSndBuffer.sampleRate = 0xac440000;
30: theSndBuffer.encode = extSH;
31: theSndBuffer.numFrames = sndbufsize;
32: theSndBuffer.sampleSize = 8;
33: theCmd.param1 = 0;
34: theCmd.param2 = (long)&theSndBuffer;
35: theCmd.cmd = bufferCmd;
36: SndDoCommand(newChannel, &theCmd, false);
37: }
38:
39: static __inline__ void check_sound_buffers (void)
40: {
41: if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
42: flush_sound_buffer ();
43: }
44: }
45:
46: #define PUT_SOUND_BYTE(b) do { *(uae_u8 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 1); } while (0)
47: #define PUT_SOUND_WORD(b) do { *(uae_u16 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 2); } while (0)
48: #define SOUND16_BASE_VAL 0
49: #define SOUND8_BASE_VAL 0
50:
51: #define DEFAULT_SOUND_BSIZ 8192
52: #define DEFAULT_SOUND_BITS 16
53: #define DEFAULT_SOUND_FREQ 44100
54:
55: #undef DONT_WANT_SOUND
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.