mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-12-29 14:31:44 +00:00
Snapshot of working bincue build, although no audio plays yet; saving all files in case xcode messes something up and needs reverting
This commit is contained in:
parent
1824cd8dc4
commit
a25325fc7d
@ -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;
|
||||
}
|
||||
|
@ -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 = "<group>"; };
|
||||
5DDE95132255D076004D0E79 /* AudioDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDevice.cpp; sourceTree = "<group>"; };
|
||||
5DDE95142255D076004D0E79 /* AudioDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDevice.h; sourceTree = "<group>"; };
|
||||
5DDE95152255D076004D0E79 /* audio_macosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_macosx.cpp; sourceTree = "<group>"; };
|
||||
5DDE95162255D076004D0E79 /* MacOSX_sound_if.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacOSX_sound_if.cpp; sourceTree = "<group>"; };
|
||||
5DDE95172255D076004D0E79 /* AudioBackEnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBackEnd.cpp; sourceTree = "<group>"; };
|
||||
5DDE95182255D076004D0E79 /* MacOSX_sound_if.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacOSX_sound_if.h; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
@ -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 = "<group>";
|
||||
@ -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;
|
||||
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7539DFB11F23B17E006B2DF2"
|
||||
BuildableName = "BasiliskII.app"
|
||||
BlueprintName = "BasiliskII"
|
||||
ReferencedContainer = "container:BasiliskII.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7539DFB11F23B17E006B2DF2"
|
||||
BuildableName = "BasiliskII.app"
|
||||
BlueprintName = "BasiliskII"
|
||||
ReferencedContainer = "container:BasiliskII.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
debugAsWhichUser = "root"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7539DFB11F23B17E006B2DF2"
|
||||
BuildableName = "BasiliskII.app"
|
||||
BlueprintName = "BasiliskII"
|
||||
ReferencedContainer = "container:BasiliskII.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7539DFB11F23B17E006B2DF2"
|
||||
BuildableName = "BasiliskII.app"
|
||||
BlueprintName = "BasiliskII"
|
||||
ReferencedContainer = "container:BasiliskII.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
@ -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
|
||||
|
@ -19,6 +19,8 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef USE_SDL_AUDIO
|
||||
|
||||
#include "sysdeps.h"
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
@ -269,3 +271,5 @@ static int audioInt(void)
|
||||
TriggerInterrupt();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -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)) {
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -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 = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
0856CECF14A99EF0000B1711 /* bincue_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bincue_unix.cpp; sourceTree = "<group>"; };
|
||||
0856CED014A99EF0000B1711 /* bincue_unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bincue_unix.h; sourceTree = "<group>"; };
|
||||
0856CEE314A99EF0000B1711 /* ether_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ether_unix.cpp; sourceTree = "<group>"; };
|
||||
0856CEFB14A99EF0000B1711 /* main_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main_unix.cpp; sourceTree = "<group>"; };
|
||||
0856CF5A14A99EF0000B1711 /* prefs_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prefs_unix.cpp; sourceTree = "<group>"; };
|
||||
@ -323,6 +336,20 @@
|
||||
08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
08CD42E714B7B8AA009CA2A2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
||||
3D2C25B4221092BA00B635DE /* SheepVM.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = SheepVM.icns; sourceTree = "<group>"; };
|
||||
5D55CB3F225584D000FF8E81 /* cdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cdrom.cpp; path = ../../../BasiliskII/src/cdrom.cpp; sourceTree = "<group>"; };
|
||||
5D55CB422255B4FD00FF8E81 /* bincue_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bincue_unix.cpp; path = ../../../BasiliskII/src/Unix/bincue_unix.cpp; sourceTree = "<group>"; };
|
||||
5D55CB442255B50E00FF8E81 /* bincue_unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bincue_unix.h; path = ../../../BasiliskII/src/Unix/bincue_unix.h; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
5DDE94FD2255C740004D0E79 /* AudioBackEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioBackEnd.h; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.h; sourceTree = "<group>"; };
|
||||
5DDE94FF2255C74C004D0E79 /* AudioBackEnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioBackEnd.cpp; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.cpp; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
5DDE950B2255C895004D0E79 /* AudioBackEnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioBackEnd.h; path = ../../../BasiliskII/src/MacOSX/AudioBackEnd.h; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
5DDE950E2255C8B3004D0E79 /* audio_macosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = audio_macosx.cpp; path = ../../../BasiliskII/src/MacOSX/audio_macosx.cpp; sourceTree = "<group>"; };
|
||||
A7B1921218C35D4700791D8D /* DiskType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskType.h; sourceTree = "<group>"; };
|
||||
A7B1921318C35D4700791D8D /* DiskType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiskType.m; sourceTree = "<group>"; };
|
||||
E413A40220CF7E6D00FBE967 /* video_sdl2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = video_sdl2.cpp; path = ../../../BasiliskII/src/SDL/video_sdl2.cpp; sourceTree = "<group>"; };
|
||||
@ -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 = "<group>";
|
||||
@ -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;
|
||||
|
7
SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
SheepShaver/src/MacOSX/SheepShaver_Xcode8.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0856CCC014A99E1C000B1711"
|
||||
BuildableName = "SheepShaver.app"
|
||||
BlueprintName = "SheepShaver"
|
||||
ReferencedContainer = "container:SheepShaver_Xcode8.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0856CCC014A99E1C000B1711"
|
||||
BuildableName = "SheepShaver.app"
|
||||
BlueprintName = "SheepShaver"
|
||||
ReferencedContainer = "container:SheepShaver_Xcode8.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
debugAsWhichUser = "root"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0856CCC014A99E1C000B1711"
|
||||
BuildableName = "SheepShaver.app"
|
||||
BlueprintName = "SheepShaver"
|
||||
ReferencedContainer = "container:SheepShaver_Xcode8.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0856CCC014A99E1C000B1711"
|
||||
BuildableName = "SheepShaver.app"
|
||||
BlueprintName = "SheepShaver"
|
||||
ReferencedContainer = "container:SheepShaver_Xcode8.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
Loading…
Reference in New Issue
Block a user