diff --git a/BasiliskII/src/MacOSX/AudioDevice.cpp b/BasiliskII/src/MacOSX/AudioDevice.cpp index 9fe065f6..7b6e860e 100644 --- a/BasiliskII/src/MacOSX/AudioDevice.cpp +++ b/BasiliskII/src/MacOSX/AudioDevice.cpp @@ -51,23 +51,23 @@ void AudioDevice::Init(AudioDeviceID devid, bool isInput) UInt32 propsize; propsize = sizeof(UInt32); - verify_noerr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertySafetyOffset, &propsize, &mSafetyOffset)); + __Verify_noErr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertySafetyOffset, &propsize, &mSafetyOffset)); propsize = sizeof(UInt32); - verify_noerr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, &propsize, &mBufferSizeFrames)); + __Verify_noErr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, &propsize, &mBufferSizeFrames)); propsize = sizeof(AudioStreamBasicDescription); - verify_noerr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyStreamFormat, &propsize, &mFormat)); + __Verify_noErr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyStreamFormat, &propsize, &mFormat)); } void AudioDevice::SetBufferSize(UInt32 size) { UInt32 propsize = sizeof(UInt32); - verify_noerr(AudioDeviceSetProperty(mID, NULL, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, propsize, &size)); + __Verify_noErr(AudioDeviceSetProperty(mID, NULL, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, propsize, &size)); propsize = sizeof(UInt32); - verify_noerr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, &propsize, &mBufferSizeFrames)); + __Verify_noErr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyBufferFrameSize, &propsize, &mBufferSizeFrames)); } int AudioDevice::CountChannels() @@ -92,6 +92,6 @@ int AudioDevice::CountChannels() char * AudioDevice::GetName(char *buf, UInt32 maxlen) { - verify_noerr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyDeviceName, &maxlen, buf)); + __Verify_noErr(AudioDeviceGetProperty(mID, 0, mIsInput, kAudioDevicePropertyDeviceName, &maxlen, buf)); return buf; } diff --git a/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.pbxproj b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.pbxproj index 20f9daa5..ec3f4e8a 100644 --- a/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.pbxproj +++ b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.pbxproj @@ -7,6 +7,13 @@ objects = { /* Begin PBXBuildFile section */ + 5DDE95192255D076004D0E79 /* AudioDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95132255D076004D0E79 /* AudioDevice.cpp */; }; + 5DDE951A2255D076004D0E79 /* audio_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95152255D076004D0E79 /* audio_macosx.cpp */; }; + 5DDE951B2255D076004D0E79 /* MacOSX_sound_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95162255D076004D0E79 /* MacOSX_sound_if.cpp */; }; + 5DDE951C2255D076004D0E79 /* AudioBackEnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95172255D076004D0E79 /* AudioBackEnd.cpp */; }; + 5DDE951E2255D0A9004D0E79 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE951D2255D0A9004D0E79 /* CoreAudio.framework */; }; + 5DDE95202255D0B6004D0E79 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE951F2255D0B6004D0E79 /* AudioToolbox.framework */; }; + 5DDE95222255D0C2004D0E79 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE95212255D0C2004D0E79 /* AudioUnit.framework */; }; 752F26F91F240E51001032B4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 752F26F81F240E51001032B4 /* Foundation.framework */; }; 752F26FB1F240E69001032B4 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 752F26FA1F240E69001032B4 /* IOKit.framework */; }; 752F27011F242BAF001032B4 /* prefs_sdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 752F27001F242BAF001032B4 /* prefs_sdl.cpp */; }; @@ -192,6 +199,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 5DDE95122255D075004D0E79 /* AudioBackEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBackEnd.h; sourceTree = ""; }; + 5DDE95132255D076004D0E79 /* AudioDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDevice.cpp; sourceTree = ""; }; + 5DDE95142255D076004D0E79 /* AudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDevice.h; sourceTree = ""; }; + 5DDE95152255D076004D0E79 /* audio_macosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_macosx.cpp; sourceTree = ""; }; + 5DDE95162255D076004D0E79 /* MacOSX_sound_if.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacOSX_sound_if.cpp; sourceTree = ""; }; + 5DDE95172255D076004D0E79 /* AudioBackEnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBackEnd.cpp; sourceTree = ""; }; + 5DDE95182255D076004D0E79 /* MacOSX_sound_if.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacOSX_sound_if.h; sourceTree = ""; }; + 5DDE951D2255D0A9004D0E79 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + 5DDE951F2255D0B6004D0E79 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 5DDE95212255D0C2004D0E79 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; 752F26F81F240E51001032B4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 752F26FA1F240E69001032B4 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 752F27001F242BAF001032B4 /* prefs_sdl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prefs_sdl.cpp; sourceTree = ""; }; @@ -426,6 +443,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5DDE95222255D0C2004D0E79 /* AudioUnit.framework in Frameworks */, + 5DDE95202255D0B6004D0E79 /* AudioToolbox.framework in Frameworks */, + 5DDE951E2255D0A9004D0E79 /* CoreAudio.framework in Frameworks */, E413D93620D260DA00E437D8 /* SDL2.framework in Frameworks */, 756C1B391F25306A00620917 /* AppKit.framework in Frameworks */, 752F26FB1F240E69001032B4 /* IOKit.framework in Frameworks */, @@ -488,6 +508,9 @@ 752F26F71F240E51001032B4 /* Frameworks */ = { isa = PBXGroup; children = ( + 5DDE95212255D0C2004D0E79 /* AudioUnit.framework */, + 5DDE951F2255D0B6004D0E79 /* AudioToolbox.framework */, + 5DDE951D2255D0A9004D0E79 /* CoreAudio.framework */, E413D93520D260DA00E437D8 /* SDL2.framework */, 756C1B381F25306A00620917 /* AppKit.framework */, 752F26FA1F240E69001032B4 /* IOKit.framework */, @@ -619,6 +642,13 @@ 756C1B321F252FC100620917 /* utils_macosx.h */, 756C1B331F252FC100620917 /* utils_macosx.mm */, 7539E02E1F23B25A006B2DF2 /* Versions.html */, + 5DDE95152255D076004D0E79 /* audio_macosx.cpp */, + 5DDE95172255D076004D0E79 /* AudioBackEnd.cpp */, + 5DDE95122255D075004D0E79 /* AudioBackEnd.h */, + 5DDE95132255D076004D0E79 /* AudioDevice.cpp */, + 5DDE95142255D076004D0E79 /* AudioDevice.h */, + 5DDE95162255D076004D0E79 /* MacOSX_sound_if.cpp */, + 5DDE95182255D076004D0E79 /* MacOSX_sound_if.h */, ); name = MacOSX; sourceTree = ""; @@ -1058,6 +1088,7 @@ 756C1B341F252FC100620917 /* utils_macosx.mm in Sources */, E413D92620D260BC00E437D8 /* misc.c in Sources */, 753253321F5368370024025B /* cpuemu.cpp in Sources */, + 5DDE951C2255D076004D0E79 /* AudioBackEnd.cpp in Sources */, 7539E2701F23B32A006B2DF2 /* tinyxml2.cpp in Sources */, 7539E1721F23B25A006B2DF2 /* rsrc_patches.cpp in Sources */, 7539E2931F23C56F006B2DF2 /* serial_dummy.cpp in Sources */, @@ -1087,6 +1118,8 @@ 7539E26C1F23B32A006B2DF2 /* sshpty.c in Sources */, 7539E1781F23B25A006B2DF2 /* serial.cpp in Sources */, 757A2BF01F5AF9D6003EDB01 /* user_strings_unix.cpp in Sources */, + 5DDE951B2255D076004D0E79 /* MacOSX_sound_if.cpp in Sources */, + 5DDE951A2255D076004D0E79 /* audio_macosx.cpp in Sources */, E413D92D20D260BC00E437D8 /* tcp_timer.c in Sources */, E413D92820D260BC00E437D8 /* tcp_subr.c in Sources */, 7539E1991F23B25A006B2DF2 /* flags.cpp in Sources */, @@ -1096,7 +1129,7 @@ 7539E18E1F23B25A006B2DF2 /* sony.cpp in Sources */, 7539E26F1F23B32A006B2DF2 /* timer_unix.cpp in Sources */, 7539E12E1F23B25A006B2DF2 /* extfs.cpp in Sources */, - 7539E23F1F23B32A006B2DF2 /* bincue_unix.cpp in Sources */, + 5DDE95192255D076004D0E79 /* AudioDevice.cpp in Sources */, 7539E12C1F23B25A006B2DF2 /* emul_op.cpp in Sources */, E413D92720D260BC00E437D8 /* debug.c in Sources */, E413D92220D260BC00E437D8 /* mbuf.c in Sources */, @@ -1119,6 +1152,7 @@ 7539E2681F23B32A006B2DF2 /* rpc_unix.cpp in Sources */, E413D92F20D260BC00E437D8 /* bootp.c in Sources */, 7539E2911F23C56F006B2DF2 /* prefs_editor_dummy.cpp in Sources */, + 7539E23F1F23B32A006B2DF2 /* bincue_unix.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1358,6 +1392,15 @@ GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + HAVE_CONFIG_H, + "USE_XCODE=1", + "DEBUG=1", + "USE_SDL_AUDIO=1", + "BINCUE=1", + "OSX_CORE_AUDIO=1", + ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_USE_STANDARD_INCLUDE_SEARCHING = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; @@ -1410,6 +1453,14 @@ GCC_ENABLE_PASCAL_STRINGS = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + HAVE_CONFIG_H, + "USE_XCODE=1", + "USE_SDL_AUDIO=1", + "OSX_CORE_AUDIO=1", + "BINCUE=1", + ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_USE_STANDARD_INCLUDE_SEARCHING = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; diff --git a/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/xcshareddata/xcschemes/BasiliskII.xcscheme b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/xcshareddata/xcschemes/BasiliskII.xcscheme new file mode 100644 index 00000000..8594df9a --- /dev/null +++ b/BasiliskII/src/MacOSX/BasiliskII.xcodeproj/xcshareddata/xcschemes/BasiliskII.xcscheme @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BasiliskII/src/MacOSX/MacOSX_sound_if.h b/BasiliskII/src/MacOSX/MacOSX_sound_if.h index 5cfdd438..06e06da4 100644 --- a/BasiliskII/src/MacOSX/MacOSX_sound_if.h +++ b/BasiliskII/src/MacOSX/MacOSX_sound_if.h @@ -18,6 +18,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef MACOSX_SOUND_IF +#define MACOSX_SOUND_IF typedef int (*audioCallback)(void); @@ -39,3 +41,5 @@ class OSXsoundOutput { unsigned int bufferSizeFrames(); int sendAudioBuffer(void *buffer, int numFrames); }; + +#endif diff --git a/BasiliskII/src/MacOSX/audio_macosx.cpp b/BasiliskII/src/MacOSX/audio_macosx.cpp index 840d2f13..5e5d25a3 100644 --- a/BasiliskII/src/MacOSX/audio_macosx.cpp +++ b/BasiliskII/src/MacOSX/audio_macosx.cpp @@ -19,6 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifndef USE_SDL_AUDIO + #include "sysdeps.h" #include @@ -269,3 +271,5 @@ static int audioInt(void) TriggerInterrupt(); return 0; } + +#endif diff --git a/BasiliskII/src/Unix/bincue_unix.cpp b/BasiliskII/src/Unix/bincue_unix.cpp index 612cf790..63ed2e73 100644 --- a/BasiliskII/src/Unix/bincue_unix.cpp +++ b/BasiliskII/src/Unix/bincue_unix.cpp @@ -91,6 +91,7 @@ typedef struct { unsigned int length; // Track length in frames loff_t fileoffset; // Track frame start within file unsigned int pregap; // Silence in frames to generate + unsigned int postgap; // Silence in frames to generate at end unsigned char tcf; // Track control field } Track; @@ -342,8 +343,18 @@ static bool ParseCueSheet(FILE *fh, CueSheet *cs, const char *cuefile) } curr->pregap = MSFToFrames(msf); + } else if (!strcmp("POSTGAP", keyword)) { + MSF msf; + char *field = strtok(NULL, " \t\n\r"); + if (3 != sscanf(field, "%d:%d:%d", + &msf.m, &msf.s, &msf.f)) { + D(bug("Expected postgap frame\n")); + goto fail; + } + curr->postgap = MSFToFrames(msf); + // Ignored directives - + } else if (!strcmp("TITLE", keyword)) { } else if (!strcmp("PERFORMER", keyword)) { } else if (!strcmp("REM", keyword)) { diff --git a/BasiliskII/src/cdrom.cpp b/BasiliskII/src/cdrom.cpp index 370322d1..a84ca895 100644 --- a/BasiliskII/src/cdrom.cpp +++ b/BasiliskII/src/cdrom.cpp @@ -58,7 +58,7 @@ const uint8 CDROMIcon[258] = { 0x8a, 0xaa, 0xaa, 0xe4, 0x8d, 0x55, 0x55, 0xc4, 0x86, 0xaa, 0xab, 0xc4, 0x83, 0x55, 0x57, 0x84, 0x81, 0xaa, 0xaf, 0x04, 0x80, 0xf5, 0x7e, 0x04, 0x80, 0x3f, 0xf8, 0x04, 0x80, 0x0f, 0xe0, 0x04, 0xff, 0xff, 0xff, 0xfc, 0x80, 0x00, 0x00, 0x04, 0x80, 0x1f, 0xf0, 0x04, 0x7f, 0xff, 0xff, 0xf8, - + 0x3f, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, @@ -67,7 +67,7 @@ const uint8 CDROMIcon[258] = { 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xf8, - + 0, 0 }; @@ -103,7 +103,7 @@ static const uint8 bin2bcd[256] = { }; static const uint8 bcd2bin[256] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -126,9 +126,9 @@ static const uint8 bcd2bin[256] = { struct cdrom_drive_info { cdrom_drive_info() : num(0), fh(NULL), start_byte(0), status(0) {} cdrom_drive_info(void *fh_) : num(0), fh(fh_), start_byte(0), status(0) {} - + void close_fh(void) { SysAllowRemoval(fh); Sys_close(fh); } - + int num; // Drive number void *fh; // File handle int block_size; // CD-ROM block size @@ -136,12 +136,14 @@ struct cdrom_drive_info { loff_t start_byte; // Start of HFS partition on disk bool to_be_mounted; // Flag: drive must be mounted in accRun bool mount_non_hfs; // Flag: Issue disk-inserted events for non-HFS disks - + uint8 toc[804]; // TOC of currently inserted disk uint8 lead_out[3]; // MSF address of lead-out track uint8 stop_at[3]; // MSF address of audio play stopping point - + uint8 play_mode; // Audio play mode + uint8 play_order; // Play mode order (normal, shuffle, program) + bool repeat; // Repeat flag uint8 power_mode; // Power mode uint32 status; // Mac address of drive status record }; @@ -181,18 +183,18 @@ static void find_hfs_partition(cdrom_drive_info &info) info.start_byte = 0; uint8 *map = new uint8[512]; D(bug("Looking for HFS partitions on CD-ROM...\n")); - + // Search first 64 blocks for HFS partition for (int i=0; i<64; i++) { if (Sys_read(info.fh, map, i * 512, 512) != 512) break; D(bug(" block %d, signature '%c%c' (%02x%02x)\n", i, map[0], map[1], map[0], map[1])); - + // Not a partition map block? Then look at next block uint16 sig = (map[0] << 8) | map[1]; if (sig != 0x504d) continue; - + // Partition map block found, Apple HFS partition? if (strcmp((char *)(map + 48), "Apple_HFS") == 0) { info.start_byte = (loff_t)((map[8] << 24) | (map[9] << 16) | (map[10] << 8) | map[11]) << 9; @@ -214,7 +216,7 @@ static void read_toc(cdrom_drive_info &info) // Read TOC memset(info.toc, 0, sizeof(info.toc)); SysCDReadTOC(info.fh, info.toc); - + #if DEBUG // Dump TOC for debugging D(bug(" TOC:\n %02x%02x%02x%02x : %d bytes, first track = %d, last track = %d\n", info.toc[0], info.toc[1], info.toc[2], info.toc[3], (info.toc[0] << 8) | info.toc[1], info.toc[2], info.toc[3])); @@ -226,7 +228,7 @@ static void read_toc(cdrom_drive_info &info) break; } #endif - + // Find lead-out track info.lead_out[0] = 0; info.lead_out[1] = 0; @@ -290,7 +292,7 @@ void CDROMInit(void) // No drives specified in prefs? Then add defaults if (PrefsFindString("cdrom", 0) == NULL) SysAddCDROMPrefs(); - + // Add drives specified in preferences int index = 0; const char *str; @@ -348,15 +350,15 @@ static void mount_mountable_volumes(void) { drive_vec::iterator info, end = drives.end(); for (info = drives.begin(); info != end; ++info) { - + // Disk in drive? if (ReadMacInt8(info->status + dsDiskInPlace) == 0) { - + // No, check if disk was inserted if (SysIsDiskInserted(info->fh)) CDROMMountVolume(info->fh); } - + // Mount disk if flagged if (info->to_be_mounted) { D(bug(" mounting drive %d\n", info->num)); @@ -377,25 +379,25 @@ static void mount_mountable_volumes(void) int16 CDROMOpen(uint32 pb, uint32 dce) { D(bug("CDROMOpen\n")); - + // Set up DCE WriteMacInt32(dce + dCtlPosition, 0); acc_run_called = false; - + // Install drives drive_vec::iterator info, end = drives.end(); for (info = drives.begin(); info != end; ++info) { - + info->num = FindFreeDriveNumber(1); info->to_be_mounted = false; - + if (info->fh) { info->mount_non_hfs = true; info->block_size = 512; info->twok_offset = -1; info->play_mode = 0x09; info->power_mode = 0; - + // Allocate drive status record M68kRegisters r; r.d[0] = SIZEOF_DrvSts; @@ -404,12 +406,12 @@ int16 CDROMOpen(uint32 pb, uint32 dce) continue; info->status = r.a[0]; D(bug(" DrvSts at %08lx\n", info->status)); - + // Set up drive status WriteMacInt8(info->status + dsWriteProt, 0x80); WriteMacInt8(info->status + dsInstalled, 1); WriteMacInt8(info->status + dsSides, 1); - + // Disk in drive? if (SysIsDiskInserted(info->fh)) { SysPreventRemoval(info->fh); @@ -418,7 +420,7 @@ int16 CDROMOpen(uint32 pb, uint32 dce) find_hfs_partition(*info); info->to_be_mounted = true; } - + // Add drive to drive queue D(bug(" adding drive %d\n", info->num)); r.d[0] = (info->num << 16) | (CDROMRefNum & 0xffff); @@ -437,14 +439,14 @@ int16 CDROMOpen(uint32 pb, uint32 dce) int16 CDROMPrime(uint32 pb, uint32 dce) { WriteMacInt32(pb + ioActCount, 0); - + // Drive valid and disk inserted? drive_vec::iterator info = get_drive_info(ReadMacInt16(pb + ioVRefNum)); if (info == drives.end()) return nsDrvErr; if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + // Get parameters void *buffer = Mac2HostAddr(ReadMacInt32(pb + ioBuffer)); size_t length = ReadMacInt32(pb + ioReqCount); @@ -452,17 +454,17 @@ int16 CDROMPrime(uint32 pb, uint32 dce) if ((length & (info->block_size - 1)) || (position & (info->block_size - 1))) return paramErr; info->twok_offset = (position + info->start_byte) & 0x7ff; - + size_t actual = 0; if ((ReadMacInt16(pb + ioTrap) & 0xff) == aRdCmd) { - + // Read actual = Sys_read(info->fh, buffer, position + info->start_byte, length); if (actual != length) { - + // Read error, tried to read HFS root block? if (length == 0x200 && position == 0x400) { - + // Yes, fake (otherwise audio CDs won't get mounted) memset(buffer, 0, 0x200); actual = 0x200; @@ -473,7 +475,7 @@ int16 CDROMPrime(uint32 pb, uint32 dce) } else { return wPrErr; } - + // Update ParamBlock and DCE WriteMacInt32(pb + ioActCount, actual); WriteMacInt32(dce + dCtlPosition, ReadMacInt32(dce + dCtlPosition) + actual); @@ -489,24 +491,24 @@ int16 CDROMControl(uint32 pb, uint32 dce) { uint16 code = ReadMacInt16(pb + csCode); D(bug("CDROMControl %d\n", code)); - + // General codes switch (code) { case 1: // KillIO return noErr; - + case 65: { // Periodic action (accRun, "insert" disks on startup) mount_mountable_volumes(); WriteMacInt16(dce + dCtlFlags, ReadMacInt16(dce + dCtlFlags) & ~0x2000); // Disable periodic action acc_run_called = true; return noErr; } - + case 81: // Set poll freq WriteMacInt16(dce + dCtlDelay, ReadMacInt16(pb + csParam)); return noErr; } - + // Drive valid? drive_vec::iterator info = get_drive_info(ReadMacInt16(pb + ioVRefNum)); if (info == drives.end()) { @@ -516,7 +518,7 @@ int16 CDROMControl(uint32 pb, uint32 dce) info = drives.begin(); // This is needed for Apple's Audio CD program } } - + // Drive-specific codes switch (code) { case 5: // VerifyTheDisc @@ -524,10 +526,10 @@ int16 CDROMControl(uint32 pb, uint32 dce) return noErr; else return offLinErr; - + case 6: // FormatTheDisc return writErr; - + case 7: // EjectTheDisc if (ReadMacInt8(info->status + dsDiskInPlace) > 0) { SysAllowRemoval(info->fh); @@ -536,16 +538,16 @@ int16 CDROMControl(uint32 pb, uint32 dce) info->twok_offset = -1; } return noErr; - + case 21: // GetDriveIcon case 22: // GetMediaIcon WriteMacInt32(pb + csParam, CDROMIconAddr); return noErr; - + case 23: // GetDriveInfo WriteMacInt32(pb + csParam, 0x00000b01); // Unspecified external removable SCSI disk return noErr; - + case 70: { // SetPowerMode uint8 mode = ReadMacInt8(pb + csParam); if (mode > 3) { @@ -555,11 +557,11 @@ int16 CDROMControl(uint32 pb, uint32 dce) return noErr; } } - + case 76: // ModifyPostEvent info->mount_non_hfs = ReadMacInt16(pb + csParam) != 0; return noErr; - + case 79: { // Change block size uint16 size = ReadMacInt16(pb + csParam); D(bug(" change block size to %d bytes\n", size)); @@ -570,7 +572,7 @@ int16 CDROMControl(uint32 pb, uint32 dce) return noErr; } } - + case 80: // SetUserEject if (ReadMacInt8(info->status + dsDiskInPlace) > 0) { if (ReadMacInt16(pb + csParam) == 1) @@ -581,11 +583,11 @@ int16 CDROMControl(uint32 pb, uint32 dce) } else { return offLinErr; } - + case 100: { // ReadTOC if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + int action = ReadMacInt16(pb + csParam); D(bug(" read TOC %d\n", action)); switch (action) { @@ -594,26 +596,26 @@ int16 CDROMControl(uint32 pb, uint32 dce) WriteMacInt8(pb + csParam + 1, bin2bcd[info->toc[3]]); WriteMacInt16(pb + csParam + 2, 0); break; - + case 2: // Get lead out MSF starting address WriteMacInt8(pb + csParam, bin2bcd[info->lead_out[0]]); WriteMacInt8(pb + csParam + 1, bin2bcd[info->lead_out[1]]); WriteMacInt8(pb + csParam + 2, bin2bcd[info->lead_out[2]]); WriteMacInt8(pb + csParam + 3, 0); break; - + case 3: { // Get track starting address uint32 buf = ReadMacInt32(pb + csParam + 2); uint16 buf_size = ReadMacInt16(pb + csParam + 6); int track = bcd2bin[ReadMacInt8(pb + csParam + 8)]; - + // Search start track in TOC int i; for (i=4; i<804; i+=8) { if (info->toc[i+2] == track) break; } - + // Fill buffer if (i != 804) { while (buf_size > 0) { @@ -621,18 +623,91 @@ int16 CDROMControl(uint32 pb, uint32 dce) WriteMacInt8(buf, bin2bcd[info->toc[i+5]]); buf++; // M WriteMacInt8(buf, bin2bcd[info->toc[i+6]]); buf++; // S WriteMacInt8(buf, bin2bcd[info->toc[i+7]]); buf++; // F - + // Lead-Out? Then stop if (info->toc[i+2] == 0xaa) break; - + buf_size -= 4; i += 8; } } break; } - + + case 4: { // Type 4 TOC for non-AppleCD SC + uint32 buf = ReadMacInt32(pb + csParam + 2); + uint16 buf_size = 512; // buffer must be 512 bytes for this TOC type + + // start filling buffer + WriteMacInt8(buf, 0); buf++; // first byte reserved for 0 + buf_size--; + + int i = 4; + // in TOC, first 4 are session and/or track number; so tracks start at i = 4 + // (info->toc[2] is first track num and info->toc[3] is last num) + // each track entry is 8 bytes: + // 0: unused, 1: control, 2: tracknum, 3: unused + // 4: unused, 5: MIN, 6: SEC, 7: FRAME + + // entry for point A0 (first track num) + WriteMacInt8(buf, info->toc[i+1] & 0x0f); buf++; // control field + WriteMacInt8(buf, bin2bcd[info->toc[2]]); buf++; // track number + WriteMacInt8(buf, bin2bcd[info->toc[i+5]]); buf++; // PMIN + WriteMacInt8(buf, bin2bcd[info->toc[i+6]]); buf++; // PSEC + WriteMacInt8(buf, bin2bcd[info->toc[i+7]]); buf++; // PFRAME + buf_size -= 5; // every 8 bits written decreases byte buffer size by 1 + + // entry for point A1 (last track) + int buf_a1 = buf; // save for filling last track num + buf += 5; buf_size -= 5; + + // entry for point A2 (address of start of lead out) + int buf_a2 = buf; // save for filling at end + buf += 5; buf_size -= 5; + + // Fill buffer + while (i <= 804 && buf_size > 1) { // index 511 never used + // Lead out? then fill a2 and stop + if (info->toc[i+2] == 0xaa) { + // entry for point a2 + WriteMacInt8(buf_a2, info->toc[i+1] & 0x0f); // Control + WriteMacInt8(buf_a2 + 1, bin2bcd[info->toc[i+2]]); // tracknum + WriteMacInt8(buf_a2 + 2, bin2bcd[info->lead_out[0]]); // M, same as toc[i+5] + WriteMacInt8(buf_a2 + 3, bin2bcd[info->lead_out[1]]); // S + WriteMacInt8(buf_a2 + 4, bin2bcd[info->lead_out[2]]); // F + break; + } + + WriteMacInt8(buf, info->toc[i+1] & 0x0f); buf++; // Control + WriteMacInt8(buf, bin2bcd[info->toc[i+2]]); buf++; // tracknum + WriteMacInt8(buf, bin2bcd[info->toc[i+5]]); buf++; // M + WriteMacInt8(buf, bin2bcd[info->toc[i+6]]); buf++; // S + WriteMacInt8(buf, bin2bcd[info->toc[i+7]]); buf++; // F + + // Last track? fill a1 as well + if (info->toc[i+2] == info->toc[3]) { + // entry for point a1 + WriteMacInt8(buf_a1, info->toc[i+1] & 0x0f); // Control + WriteMacInt8(buf_a1 + 1, bin2bcd[info->toc[3]]); // tracknum + WriteMacInt8(buf_a1 + 2, bin2bcd[info->toc[i+5]]); // M + WriteMacInt8(buf_a1 + 3, bin2bcd[info->toc[i+6]]); // S + WriteMacInt8(buf_a1 + 4, bin2bcd[info->toc[i+7]]); // F + } + + buf_size -= 5; + i += 8; + } + + // fill rest of buffer with zeroes + while (buf_size > 0) { + WriteMacInt8(buf, 0); buf++; + buf_size--; + } + + break; + } + case 5: // Get session information WriteMacInt16(pb + csParam, 1); // First session number WriteMacInt16(pb + csParam + 2, 1); // Last session number @@ -642,20 +717,20 @@ int16 CDROMControl(uint32 pb, uint32 dce) WriteMacInt8(pb + csParam + 8, bin2bcd[info->toc[10]]); // S WriteMacInt8(pb + csParam + 9, bin2bcd[info->toc[11]]); // F break; - + default: printf("FATAL: .AppleCD/Control(100): unimplemented TOC type\n"); return paramErr; } return noErr; } - + case 101: { // ReadTheQSubcode if (ReadMacInt8(info->status + dsDiskInPlace) == 0) { Mac_memset(pb + csParam, 0, 10); return offLinErr; } - + uint8 pos[16]; if (SysCDGetPosition(info->fh, pos)) { uint32 p = pb + csParam; @@ -674,16 +749,16 @@ int16 CDROMControl(uint32 pb, uint32 dce) return ioErr; } } - + case 102: // ReadHeader printf("FATAL: .AppleCD/Control(102): unimplemented call\n"); return controlErr; - + case 103: { // AudioTrackSearch D(bug(" AudioTrackSearch postype %d, pos %08x, hold %d\n", ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), ReadMacInt16(pb + csParam + 6))); if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + uint8 start_m, start_s, start_f; if (!position2msf(*info, ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), false, start_m, start_s, start_f)) return paramErr; @@ -694,12 +769,12 @@ int16 CDROMControl(uint32 pb, uint32 dce) SysCDPause(info->fh); return noErr; } - + case 104: // AudioPlay D(bug(" AudioPlay postype %d, pos %08lx, hold %d\n", ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), ReadMacInt16(pb + csParam + 6))); if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + if (ReadMacInt16(pb + csParam + 6)) { // Given stopping address if (!position2msf(*info, ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), true, info->stop_at[0], info->stop_at[1], info->stop_at[2])) @@ -714,11 +789,11 @@ int16 CDROMControl(uint32 pb, uint32 dce) return paramErr; } return noErr; - + case 105: // AudioPause if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + switch (ReadMacInt32(pb + csParam)) { case 0: if (!SysCDResume(info->fh)) @@ -732,12 +807,12 @@ int16 CDROMControl(uint32 pb, uint32 dce) return paramErr; } return noErr; - + case 106: // AudioStop D(bug(" AudioStop postype %d, pos %08lx\n", ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2))); if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + if (ReadMacInt16(pb + csParam) == 0 && ReadMacInt32(pb + csParam + 2) == 0) { // Stop immediately if (!SysCDStop(info->fh, info->lead_out[0], info->lead_out[1], info->lead_out[2])) @@ -748,15 +823,15 @@ int16 CDROMControl(uint32 pb, uint32 dce) return paramErr; } return noErr; - + case 107: { // AudioStatus if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + uint8 pos[16]; if (!SysCDGetPosition(info->fh, pos)) return paramErr; - + uint32 p = pb + csParam; switch (pos[1]) { case 0x11: @@ -783,34 +858,34 @@ int16 CDROMControl(uint32 pb, uint32 dce) WriteMacInt8(p, bin2bcd[pos[11]]); p++; // F (abs) return noErr; } - + case 108: { // AudioScan if (ReadMacInt8(info->status + dsDiskInPlace) == 0) return offLinErr; - + uint8 start_m, start_s, start_f; if (!position2msf(*info, ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), false, start_m, start_s, start_f)) return paramErr; - + if (!SysCDScan(info->fh, start_m, start_s, start_f, ReadMacInt16(pb + csParam + 6) != 0)) { return paramErr; } else { return noErr; } } - + case 109: // AudioControl SysCDSetVolume(info->fh, ReadMacInt8(pb + csParam), ReadMacInt8(pb + csParam + 1)); return noErr; - + case 110: // ReadMCN printf("FATAL: .AppleCD/Control(110): unimplemented call\n"); return controlErr; - + case 111: // ReadISRC printf("FATAL: .AppleCD/Control(111): unimplemented call\n"); return controlErr; - + case 112: { // ReadAudioVolume uint8 left = 0, right = 0; SysCDGetVolume(info->fh, left, right); @@ -818,43 +893,50 @@ int16 CDROMControl(uint32 pb, uint32 dce) WriteMacInt8(pb + csParam + 1, right); return noErr; } - + case 113: // GetSpindleSpeed WriteMacInt16(pb + csParam, 0xff); return noErr; - + case 114: // SetSpindleSpeed return noErr; - + case 115: // ReadAudio printf("FATAL: .AppleCD/Control(115): unimplemented call\n"); return controlErr; - + case 116: // ReadAllSubcodes printf("FATAL: .AppleCD/Control(116): unimplemented call\n"); return controlErr; - + case 122: // SetTrackList printf("FATAL: .AppleCD/Control(122): unimplemented call\n"); return controlErr; - + case 123: // GetTrackList printf("FATAL: .AppleCD/Control(123): unimplemented call\n"); return controlErr; - + case 124: // GetTrackIndex printf("FATAL: .AppleCD/Control(124): unimplemented call\n"); return controlErr; - + case 125: // SetPlayMode - D(bug(" SetPlayMode %04x\n", ReadMacInt16(pb + csParam))); - printf("FATAL: .AppleCD/Control(125): unimplemented call\n"); - return controlErr; - - case 126: // GetPlayMode (Apple's Audio CD program needs this) - WriteMacInt16(pb + csParam, 0); + // repeat flag (0 is off, 1 is on) + info->repeat = ReadMacInt8(pb + csParam); + // playmode (0 is normal, 1 is shuffle, 2 is program mode) + info->play_order = ReadMacInt8(pb + csParam + 1); + // D(bug(" SetPlayMode %04x\n", ReadMacInt16(pb + csParam))); + // printf("FATAL: .AppleCD/Control(125): unimplemented call\n"); return noErr; - + + case 126: // GetPlayMode (Apple's Audio CD program needs this) + // repeat flag + WriteMacInt8(pb + csParam, bcd2bin[info->repeat]); + // playmode + WriteMacInt8(pb + csParam + 1, bcd2bin[info->play_order]); + return noErr; + default: printf("WARNING: Unknown CDROMControl(%d)\n", code); return controlErr; @@ -871,7 +953,7 @@ int16 CDROMStatus(uint32 pb, uint32 dce) drive_vec::iterator info = get_drive_info(ReadMacInt16(pb + ioVRefNum)); uint16 code = ReadMacInt16(pb + csCode); D(bug("CDROMStatus %d\n", code)); - + // General codes (we can get these even if the drive was invalid) switch (code) { case 43: { // DriverGestalt @@ -917,7 +999,7 @@ int16 CDROMStatus(uint32 pb, uint32 dce) } return noErr; } - + case 97: { // WhoIsThere uint8 drives_present = 0; drive_vec::iterator info, end = drives.end(); @@ -929,7 +1011,7 @@ int16 CDROMStatus(uint32 pb, uint32 dce) return noErr; } } - + // Drive valid? if (info == drives.end()) { if (drives.empty()) @@ -937,7 +1019,7 @@ int16 CDROMStatus(uint32 pb, uint32 dce) else info = drives.begin(); // This is needed for Apple's Audio CD program } - + // Drive-specific codes switch (code) { case 6: // Return format list @@ -950,15 +1032,15 @@ int16 CDROMStatus(uint32 pb, uint32 dce) } else { return paramErr; } - + case 8: // DriveStatus Mac2Mac_memcpy(pb + csParam, info->status, 22); return noErr; - + case 70: // GetPowerMode WriteMacInt16(pb + csParam, info->power_mode << 8); return noErr; - + case 95: // Get2KOffset if (info->twok_offset > 0) { WriteMacInt16(pb + csParam, info->twok_offset); @@ -966,24 +1048,24 @@ int16 CDROMStatus(uint32 pb, uint32 dce) } else { return statusErr; } - + case 96: // Get drive type WriteMacInt16(pb + csParam, 3); // Apple CD 300 or newer return noErr; - + case 98: // Get block size WriteMacInt16(pb + csParam, info->block_size); return noErr; - + case 120: // Return device ident WriteMacInt32(pb + csParam, 0); return noErr; - + case 121: // Get CD features WriteMacInt16(pb + csParam, 0x0200); // 300 KB/s WriteMacInt16(pb + csParam + 2, 0x0c00); // SCSI-2, stereo return noErr; - + default: printf("WARNING: Unknown CDROMStatus(%d)\n", code); return statusErr; @@ -999,6 +1081,6 @@ void CDROMInterrupt(void) { if (!acc_run_called) return; - + mount_mountable_volumes(); } diff --git a/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.pbxproj b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.pbxproj index 7a4b5145..0c710e54 100755 --- a/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.pbxproj +++ b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.pbxproj @@ -30,7 +30,6 @@ 0846E51314B128ED00574779 /* sheepshaver_glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CDBB14A99EEF000B1711 /* sheepshaver_glue.cpp */; }; 0856CFC114A99EF0000B1711 /* adb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD4B14A99EEF000B1711 /* adb.cpp */; }; 0856CFC214A99EF0000B1711 /* audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD4C14A99EEF000B1711 /* audio.cpp */; }; - 0856CFE214A99EF0000B1711 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD7814A99EEF000B1711 /* cdrom.cpp */; }; 0856CFE614A99EF0000B1711 /* disk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD7D14A99EEF000B1711 /* disk.cpp */; }; 0856CFEC14A99EF0000B1711 /* scsi_dummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD8414A99EEF000B1711 /* scsi_dummy.cpp */; }; 0856CFEE14A99EF0000B1711 /* emul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CD8614A99EEF000B1711 /* emul_op.cpp */; }; @@ -55,7 +54,6 @@ 0856D07C14A99EF1000B1711 /* thunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CEC114A99EF0000B1711 /* thunks.cpp */; }; 0856D07D14A99EF1000B1711 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CEC214A99EF0000B1711 /* timer.cpp */; }; 0856D07E14A99EF1000B1711 /* about_window_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CEC414A99EF0000B1711 /* about_window_unix.cpp */; }; - 0856D08714A99EF1000B1711 /* bincue_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CECF14A99EF0000B1711 /* bincue_unix.cpp */; }; 0856D09814A99EF1000B1711 /* ether_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CEE314A99EF0000B1711 /* ether_unix.cpp */; }; 0856D0AA14A99EF1000B1711 /* main_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CEFB14A99EF0000B1711 /* main_unix.cpp */; }; 0856D10614A99EF1000B1711 /* prefs_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CF5A14A99EF0000B1711 /* prefs_unix.cpp */; }; @@ -80,6 +78,24 @@ 08CD42DC14B7B85B009CA2A2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */; }; 08CD42E814B7B8AA009CA2A2 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CD42E714B7B8AA009CA2A2 /* Carbon.framework */; }; 3D2C25B5221092BA00B635DE /* SheepVM.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3D2C25B4221092BA00B635DE /* SheepVM.icns */; }; + 5D55CB40225584D000FF8E81 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D55CB3F225584D000FF8E81 /* cdrom.cpp */; }; + 5D55CB432255B4FE00FF8E81 /* bincue_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D55CB422255B4FD00FF8E81 /* bincue_unix.cpp */; }; + 5D55CB452255B50E00FF8E81 /* bincue_unix.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D55CB442255B50E00FF8E81 /* bincue_unix.h */; }; + 5DDE94F92255C70C004D0E79 /* MacOSX_sound_if.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DDE94F82255C70C004D0E79 /* MacOSX_sound_if.h */; }; + 5DDE94FB2255C712004D0E79 /* MacOSX_sound_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE94FA2255C712004D0E79 /* MacOSX_sound_if.cpp */; }; + 5DDE94FC2255C712004D0E79 /* MacOSX_sound_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE94FA2255C712004D0E79 /* MacOSX_sound_if.cpp */; }; + 5DDE94FE2255C740004D0E79 /* AudioBackEnd.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DDE94FD2255C740004D0E79 /* AudioBackEnd.h */; }; + 5DDE95002255C74C004D0E79 /* AudioBackEnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE94FF2255C74C004D0E79 /* AudioBackEnd.cpp */; }; + 5DDE95012255C74C004D0E79 /* AudioBackEnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE94FF2255C74C004D0E79 /* AudioBackEnd.cpp */; }; + 5DDE95032255C7FE004D0E79 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE95022255C7FE004D0E79 /* AudioToolbox.framework */; }; + 5DDE95052255C822004D0E79 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE95042255C822004D0E79 /* CoreAudio.framework */; }; + 5DDE95072255C844004D0E79 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDE95062255C844004D0E79 /* AudioUnit.framework */; }; + 5DDE95092255C88E004D0E79 /* AudioDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95082255C88E004D0E79 /* AudioDevice.cpp */; }; + 5DDE950A2255C88E004D0E79 /* AudioDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE95082255C88E004D0E79 /* AudioDevice.cpp */; }; + 5DDE950C2255C896004D0E79 /* AudioBackEnd.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DDE950B2255C895004D0E79 /* AudioBackEnd.h */; }; + 5DDE950F2255C8B4004D0E79 /* audio_defs_macosx.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DDE950D2255C8B3004D0E79 /* audio_defs_macosx.h */; }; + 5DDE95102255C8B4004D0E79 /* audio_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE950E2255C8B3004D0E79 /* audio_macosx.cpp */; }; + 5DDE95112255C8B4004D0E79 /* audio_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDE950E2255C8B3004D0E79 /* audio_macosx.cpp */; }; A7B1921418C35D4700791D8D /* DiskType.m in Sources */ = {isa = PBXBuildFile; fileRef = A7B1921318C35D4700791D8D /* DiskType.m */; }; E413A40320CF7E6D00FBE967 /* video_sdl2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E413A40220CF7E6D00FBE967 /* video_sdl2.cpp */; }; E4150D1220D557820077C51A /* SDL2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E4150D1120D557820077C51A /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -155,7 +171,6 @@ 0856CCC114A99E1C000B1711 /* SheepShaver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SheepShaver.app; sourceTree = BUILT_PRODUCTS_DIR; }; 0856CD4B14A99EEF000B1711 /* adb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = adb.cpp; path = ../adb.cpp; sourceTree = SOURCE_ROOT; }; 0856CD4C14A99EEF000B1711 /* audio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = audio.cpp; path = ../audio.cpp; sourceTree = SOURCE_ROOT; }; - 0856CD7814A99EEF000B1711 /* cdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cdrom.cpp; path = ../cdrom.cpp; sourceTree = SOURCE_ROOT; }; 0856CD7D14A99EEF000B1711 /* disk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = disk.cpp; path = ../disk.cpp; sourceTree = SOURCE_ROOT; }; 0856CD8414A99EEF000B1711 /* scsi_dummy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scsi_dummy.cpp; sourceTree = ""; }; 0856CD8614A99EEF000B1711 /* emul_op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = emul_op.cpp; path = ../emul_op.cpp; sourceTree = SOURCE_ROOT; }; @@ -273,8 +288,6 @@ 0856CEC114A99EF0000B1711 /* thunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = thunks.cpp; path = ../thunks.cpp; sourceTree = SOURCE_ROOT; }; 0856CEC214A99EF0000B1711 /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = timer.cpp; path = ../timer.cpp; sourceTree = SOURCE_ROOT; }; 0856CEC414A99EF0000B1711 /* about_window_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = about_window_unix.cpp; sourceTree = ""; }; - 0856CECF14A99EF0000B1711 /* bincue_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bincue_unix.cpp; sourceTree = ""; }; - 0856CED014A99EF0000B1711 /* bincue_unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bincue_unix.h; sourceTree = ""; }; 0856CEE314A99EF0000B1711 /* ether_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ether_unix.cpp; sourceTree = ""; }; 0856CEFB14A99EF0000B1711 /* main_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main_unix.cpp; sourceTree = ""; }; 0856CF5A14A99EF0000B1711 /* prefs_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prefs_unix.cpp; sourceTree = ""; }; @@ -323,6 +336,20 @@ 08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 08CD42E714B7B8AA009CA2A2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; 3D2C25B4221092BA00B635DE /* SheepVM.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = SheepVM.icns; sourceTree = ""; }; + 5D55CB3F225584D000FF8E81 /* cdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cdrom.cpp; path = ../../../BasiliskII/src/cdrom.cpp; sourceTree = ""; }; + 5D55CB422255B4FD00FF8E81 /* bincue_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bincue_unix.cpp; path = ../../../BasiliskII/src/Unix/bincue_unix.cpp; sourceTree = ""; }; + 5D55CB442255B50E00FF8E81 /* bincue_unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bincue_unix.h; path = ../../../BasiliskII/src/Unix/bincue_unix.h; sourceTree = ""; }; + 5DDE94F82255C70C004D0E79 /* MacOSX_sound_if.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacOSX_sound_if.h; path = ../../../BasiliskII/src/MacOSX/MacOSX_sound_if.h; sourceTree = ""; }; + 5DDE94FA2255C712004D0E79 /* MacOSX_sound_if.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MacOSX_sound_if.cpp; path = ../../../BasiliskII/src/MacOSX/MacOSX_sound_if.cpp; sourceTree = ""; }; + 5DDE94FD2255C740004D0E79 /* AudioBackEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioBackEnd.h; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.h; sourceTree = ""; }; + 5DDE94FF2255C74C004D0E79 /* AudioBackEnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioBackEnd.cpp; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.cpp; sourceTree = ""; }; + 5DDE95022255C7FE004D0E79 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 5DDE95042255C822004D0E79 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + 5DDE95062255C844004D0E79 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + 5DDE95082255C88E004D0E79 /* AudioDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDevice.cpp; path = ../../../BasiliskII/src/MacOSX/AudioDevice.cpp; sourceTree = ""; }; + 5DDE950B2255C895004D0E79 /* AudioBackEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioBackEnd.h; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.h; sourceTree = ""; }; + 5DDE950D2255C8B3004D0E79 /* audio_defs_macosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = audio_defs_macosx.h; path = ../../../BasiliskII/src/MacOSX/audio_defs_macosx.h; sourceTree = ""; }; + 5DDE950E2255C8B3004D0E79 /* audio_macosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = audio_macosx.cpp; path = ../../../BasiliskII/src/MacOSX/audio_macosx.cpp; sourceTree = ""; }; A7B1921218C35D4700791D8D /* DiskType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskType.h; sourceTree = ""; }; A7B1921318C35D4700791D8D /* DiskType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiskType.m; sourceTree = ""; }; E413A40220CF7E6D00FBE967 /* video_sdl2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = video_sdl2.cpp; path = ../../../BasiliskII/src/SDL/video_sdl2.cpp; sourceTree = ""; }; @@ -391,6 +418,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5DDE95072255C844004D0E79 /* AudioUnit.framework in Frameworks */, + 5DDE95052255C822004D0E79 /* CoreAudio.framework in Frameworks */, + 5DDE95032255C7FE004D0E79 /* AudioToolbox.framework in Frameworks */, E420910120D0C4FA0094654F /* SDL2.framework in Frameworks */, 0856D21514A9A6C6000B1711 /* IOKit.framework in Frameworks */, 08CD42DC14B7B85B009CA2A2 /* Cocoa.framework in Frameworks */, @@ -448,7 +478,7 @@ 087B91B11B780EC900825F7F /* CrossPlatform */, 0856CD4B14A99EEF000B1711 /* adb.cpp */, 0856CD4C14A99EEF000B1711 /* audio.cpp */, - 0856CD7814A99EEF000B1711 /* cdrom.cpp */, + 5D55CB3F225584D000FF8E81 /* cdrom.cpp */, 0856CD7D14A99EEF000B1711 /* disk.cpp */, 0856CD7E14A99EEF000B1711 /* dummy */, 0856CD8614A99EEF000B1711 /* emul_op.cpp */, @@ -708,6 +738,12 @@ children = ( 0873A76514ABD151004F12B7 /* config */, 0856D2D614A9A704000B1711 /* Launcher */, + 5DDE950D2255C8B3004D0E79 /* audio_defs_macosx.h */, + 5DDE950E2255C8B3004D0E79 /* audio_macosx.cpp */, + 5DDE94FD2255C740004D0E79 /* AudioBackEnd.h */, + 5DDE94FF2255C74C004D0E79 /* AudioBackEnd.cpp */, + 5DDE95082255C88E004D0E79 /* AudioDevice.cpp */, + 5DDE950B2255C895004D0E79 /* AudioBackEnd.h */, E456E2AC20C82B60006C8DC2 /* clip_macosx64.mm */, 0856CE2D14A99EF0000B1711 /* extfs_macosx.cpp */, 0879BDAF15A8B1AA00DC277D /* Info.plist.in */, @@ -718,6 +754,8 @@ 0856CE8714A99EF0000B1711 /* sys_darwin.cpp */, 0873A80014AC515D004F12B7 /* utils_macosx.h */, 0873A80114AC515D004F12B7 /* utils_macosx.mm */, + 5DDE94F82255C70C004D0E79 /* MacOSX_sound_if.h */, + 5DDE94FA2255C712004D0E79 /* MacOSX_sound_if.cpp */, ); name = MacOSX; sourceTree = ""; @@ -791,8 +829,8 @@ 08003F841E0624BD00A3ADAB /* dyngen_precompiled */, 082AC25614AA59DA00071F5E /* Darwin */, 0856CEC414A99EF0000B1711 /* about_window_unix.cpp */, - 0856CECF14A99EF0000B1711 /* bincue_unix.cpp */, - 0856CED014A99EF0000B1711 /* bincue_unix.h */, + 5D55CB422255B4FD00FF8E81 /* bincue_unix.cpp */, + 5D55CB442255B50E00FF8E81 /* bincue_unix.h */, 083E370A16EFE85000CCCA59 /* disk_sparsebundle.cpp */, 083E370B16EFE85000CCCA59 /* disk_unix.h */, 0856CEE314A99EF0000B1711 /* ether_unix.cpp */, @@ -862,6 +900,9 @@ 08CD42DF14B7B865009CA2A2 /* Frameworks */ = { isa = PBXGroup; children = ( + 5DDE95062255C844004D0E79 /* AudioUnit.framework */, + 5DDE95042255C822004D0E79 /* CoreAudio.framework */, + 5DDE95022255C7FE004D0E79 /* AudioToolbox.framework */, E420910020D0C4FA0094654F /* SDL2.framework */, 08CD42E714B7B8AA009CA2A2 /* Carbon.framework */, 08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */, @@ -878,9 +919,14 @@ buildActionMask = 2147483647; files = ( 08003F8F1E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp in Headers */, + 5DDE94F92255C70C004D0E79 /* MacOSX_sound_if.h in Headers */, 08003F8E1E0624D100A3ADAB /* basic-dyngen-ops.hpp in Headers */, E4C9A03E1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp in Headers */, E4C9A0401FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp in Headers */, + 5DDE950C2255C896004D0E79 /* AudioBackEnd.h in Headers */, + 5DDE950F2255C8B4004D0E79 /* audio_defs_macosx.h in Headers */, + 5D55CB452255B50E00FF8E81 /* bincue_unix.h in Headers */, + 5DDE94FE2255C740004D0E79 /* AudioBackEnd.h in Headers */, 08163339158C121000C449F9 /* dis-asm.h in Headers */, 08003F8C1E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp in Headers */, 08003F911E0624D100A3ADAB /* ppc-dyngen-ops.hpp in Headers */, @@ -995,13 +1041,17 @@ files = ( 0846E4B114B1264700574779 /* ieeefp.cpp in Sources */, 0846E4B314B1264F00574779 /* mathlib.cpp in Sources */, + 5DDE950A2255C88E004D0E79 /* AudioDevice.cpp in Sources */, 0846E4B514B1265500574779 /* utils-cpuinfo.cpp in Sources */, 0846E4B614B1265A00574779 /* ppc-translate.cpp in Sources */, 0846E4B814B1266000574779 /* ppc-jit.cpp in Sources */, 0846E4B914B1266600574779 /* ppc-execute.cpp in Sources */, 0846E4BC14B1267200574779 /* ppc-dyngen.cpp in Sources */, + 5DDE94FC2255C712004D0E79 /* MacOSX_sound_if.cpp in Sources */, + 5DDE95112255C8B4004D0E79 /* audio_macosx.cpp in Sources */, 0846E4BE14B1267A00574779 /* ppc-decode.cpp in Sources */, 0846E4C014B1267F00574779 /* ppc-cpu.cpp in Sources */, + 5DDE95012255C74C004D0E79 /* AudioBackEnd.cpp in Sources */, 0846E4C114B1268B00574779 /* jit-cache.cpp in Sources */, 0846E4C214B1269600574779 /* basic-dyngen.cpp in Sources */, 0846E51314B128ED00574779 /* sheepshaver_glue.cpp in Sources */, @@ -1014,11 +1064,11 @@ buildActionMask = 2147483647; files = ( E44C460B20D262B0000583AE /* debug.c in Sources */, + 5DDE94FB2255C712004D0E79 /* MacOSX_sound_if.cpp in Sources */, E44C460C20D262B0000583AE /* tcp_subr.c in Sources */, 0856CFC114A99EF0000B1711 /* adb.cpp in Sources */, E44C461520D262B0000583AE /* ip_output.c in Sources */, 0856CFC214A99EF0000B1711 /* audio.cpp in Sources */, - 0856CFE214A99EF0000B1711 /* cdrom.cpp in Sources */, E44C461820D262B0000583AE /* tcp_output.c in Sources */, 0856CFE614A99EF0000B1711 /* disk.cpp in Sources */, 0856CFEC14A99EF0000B1711 /* scsi_dummy.cpp in Sources */, @@ -1043,6 +1093,7 @@ E44C461420D262B0000583AE /* ip_input.c in Sources */, E44C461320D262B0000583AE /* bootp.c in Sources */, 0856D05E14A99EF1000B1711 /* prefs.cpp in Sources */, + 5D55CB40225584D000FF8E81 /* cdrom.cpp in Sources */, 0856D05F14A99EF1000B1711 /* rom_patches.cpp in Sources */, 0856D06014A99EF1000B1711 /* rsrc_patches.cpp in Sources */, 0856D06114A99EF1000B1711 /* scsi.cpp in Sources */, @@ -1052,10 +1103,11 @@ 0856D07B14A99EF1000B1711 /* sony.cpp in Sources */, 0856D07C14A99EF1000B1711 /* thunks.cpp in Sources */, 0856D07D14A99EF1000B1711 /* timer.cpp in Sources */, + 5DDE95002255C74C004D0E79 /* AudioBackEnd.cpp in Sources */, 0856D07E14A99EF1000B1711 /* about_window_unix.cpp in Sources */, E44C460720D262B0000583AE /* ip_icmp.c in Sources */, - 0856D08714A99EF1000B1711 /* bincue_unix.cpp in Sources */, E4CBF46120CFC451009F40CC /* video_sdl.cpp in Sources */, + 5DDE95102255C8B4004D0E79 /* audio_macosx.cpp in Sources */, 0856D09814A99EF1000B1711 /* ether_unix.cpp in Sources */, 0856D0AA14A99EF1000B1711 /* main_unix.cpp in Sources */, E413A40320CF7E6D00FBE967 /* video_sdl2.cpp in Sources */, @@ -1070,9 +1122,11 @@ 0856D11114A99EF1000B1711 /* user_strings_unix.cpp in Sources */, E44C461020D262B0000583AE /* slirp.c in Sources */, 0856D11614A99EF1000B1711 /* xpram_unix.cpp in Sources */, + 5DDE95092255C88E004D0E79 /* AudioDevice.cpp in Sources */, 0856D11714A99EF1000B1711 /* user_strings.cpp in Sources */, E44C460920D262B0000583AE /* tcp_input.c in Sources */, 0856D11814A99EF1000B1711 /* video.cpp in Sources */, + 5D55CB432255B4FE00FF8E81 /* bincue_unix.cpp in Sources */, E41936C420CFE64D003A7654 /* SDLMain.m in Sources */, E44C461220D262B0000583AE /* socket.c in Sources */, 0856D13F14A99EF1000B1711 /* xpram.cpp in Sources */, @@ -1128,6 +1182,8 @@ "_GNU_SOURCE=1", _THREAD_SAFE, _REENTRANT, + "USE_SDL_AUDIO=1", + "BINCUE=1", ); HEADER_SEARCH_PATHS = ( /Library/Frameworks/SDL2.framework/Headers/, @@ -1165,6 +1221,8 @@ "_GNU_SOURCE=1", _THREAD_SAFE, _REENTRANT, + "USE_SDL_AUDIO=1", + "BINCUE=1", ); HEADER_SEARCH_PATHS = ( /Library/Frameworks/SDL2.framework/Headers/, @@ -1232,6 +1290,9 @@ "_GNU_SOURCE=1", _THREAD_SAFE, _REENTRANT, + "BINCUE=1", + "OSX_CORE_AUDIO=1", + "USE_SDL_AUDIO=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_UNUSED_FUNCTION = YES; @@ -1292,6 +1353,9 @@ "_GNU_SOURCE=1", _THREAD_SAFE, _REENTRANT, + "BINCUE=1", + "OSX_CORE_AUDIO=1", + "USE_SDL_AUDIO=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_UNUSED_FUNCTION = YES; diff --git a/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/xcshareddata/xcschemes/SheepShaver.xcscheme b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/xcshareddata/xcschemes/SheepShaver.xcscheme new file mode 100644 index 00000000..baa5b56b --- /dev/null +++ b/SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/xcshareddata/xcschemes/SheepShaver.xcscheme @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +