|
|
1.1.1.2 ! root 1: /* 1.1 root 2: * UAE - The Un*x Amiga Emulator 1.1.1.2 ! root 3: * 1.1 root 4: * Support for Mac OS sound 1.1.1.2 ! root 5: * 1.1 root 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; 1.1.1.2 ! root 26: 1.1 root 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; 1.1.1.2 ! root 36: SndDoCommand(newChannel, &theCmd, false); 1.1 root 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.