|
|
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.