mirror of
https://github.com/zydeco/minivmac4ios.git
synced 2024-05-31 19:41:32 +00:00
put emulator in loadable bundle
This commit is contained in:
parent
49f43e540f
commit
0f729c662f
|
@ -7,6 +7,24 @@
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
283422D21CF8EF8C0088B634 /* MacPlus4M.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
283422D81CF8F16C0088B634 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */; };
|
||||||
|
283422D91CF8F16C0088B634 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */; };
|
||||||
|
283422DA1CF8F16C0088B634 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */; };
|
||||||
|
283422DB1CF8F16C0088B634 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */; };
|
||||||
|
283422DC1CF8F16C0088B634 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */; };
|
||||||
|
283422DD1CF8F16C0088B634 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */; };
|
||||||
|
283422DE1CF8F16C0088B634 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */; };
|
||||||
|
283422DF1CF8F16C0088B634 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */; };
|
||||||
|
283422E01CF8F16C0088B634 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */; };
|
||||||
|
283422E11CF8F16C0088B634 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */; };
|
||||||
|
283422E21CF8F16C0088B634 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */; };
|
||||||
|
283422E31CF8F16C0088B634 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */; };
|
||||||
|
283422E41CF8F16C0088B634 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */; };
|
||||||
|
283422E51CF8F16C0088B634 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */; };
|
||||||
|
283422E61CF8F16C0088B634 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */; };
|
||||||
|
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||||
|
283422F41CF8F55E0088B634 /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = 283422F21CF8F5400088B634 /* Emulator.m */; };
|
||||||
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B611CDE97D600B86C45 /* InsertDiskViewController.m */; };
|
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B611CDE97D600B86C45 /* InsertDiskViewController.m */; };
|
||||||
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B641CDE97E900B86C45 /* SettingsViewController.m */; };
|
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B641CDE97E900B86C45 /* SettingsViewController.m */; };
|
||||||
28BA897E1CE7315400A98104 /* KBKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89751CE7315400A98104 /* KBKey.m */; };
|
28BA897E1CE7315400A98104 /* KBKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89751CE7315400A98104 /* KBKey.m */; };
|
||||||
|
@ -15,22 +33,6 @@
|
||||||
28BA89821CE7336500A98104 /* Keyboard Layouts in Resources */ = {isa = PBXBuildFile; fileRef = 28BA89811CE7336500A98104 /* Keyboard Layouts */; };
|
28BA89821CE7336500A98104 /* Keyboard Layouts in Resources */ = {isa = PBXBuildFile; fileRef = 28BA89811CE7336500A98104 /* Keyboard Layouts */; };
|
||||||
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89841CE73E7200A98104 /* TrackPad.m */; };
|
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89841CE73E7200A98104 /* TrackPad.m */; };
|
||||||
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89871CE73FBC00A98104 /* MNVMApplication.m */; };
|
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89871CE73FBC00A98104 /* MNVMApplication.m */; };
|
||||||
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */; };
|
|
||||||
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */; };
|
|
||||||
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */; };
|
|
||||||
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */; };
|
|
||||||
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */; };
|
|
||||||
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */; };
|
|
||||||
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */; };
|
|
||||||
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */; };
|
|
||||||
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */; };
|
|
||||||
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */; };
|
|
||||||
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */; };
|
|
||||||
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */; };
|
|
||||||
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */; };
|
|
||||||
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */; };
|
|
||||||
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */; };
|
|
||||||
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
|
||||||
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */; };
|
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */; };
|
||||||
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D5A3FC1CD6868E001A33F6 /* TouchScreen.m */; };
|
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D5A3FC1CD6868E001A33F6 /* TouchScreen.m */; };
|
||||||
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C11CD15E0B00FC6FA6 /* main.m */; };
|
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C11CD15E0B00FC6FA6 /* main.m */; };
|
||||||
|
@ -62,7 +64,28 @@
|
||||||
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F6B4CE1CF77099002D76D0 /* compat.m */; };
|
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F6B4CE1CF77099002D76D0 /* compat.m */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
283422CF1CF8EF8C0088B634 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 28F676B51CD15E0B00FC6FA6 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 283422C91CF8EF8C0088B634;
|
||||||
|
remoteInfo = "minivmac-plus4m";
|
||||||
|
};
|
||||||
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
283422D61CF8EF8C0088B634 /* Embed Frameworks */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "";
|
||||||
|
dstSubfolderSpec = 13;
|
||||||
|
files = (
|
||||||
|
283422D21CF8EF8C0088B634 /* MacPlus4M.framework in Embed Frameworks */,
|
||||||
|
);
|
||||||
|
name = "Embed Frameworks";
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
28F6B48C1CF07DDD002D76D0 /* CopyFiles */ = {
|
28F6B48C1CF07DDD002D76D0 /* CopyFiles */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
@ -94,6 +117,14 @@
|
||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MacPlus4M.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
283422CE1CF8EF8C0088B634 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorProtocol.h; sourceTree = "<group>"; };
|
||||||
|
283422E71CF8F1C80088B634 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
|
||||||
|
283422E81CF8F1C80088B634 /* CNFGRAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = "<group>"; };
|
||||||
|
283422E91CF8F1C80088B634 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
|
||||||
|
283422F11CF8F5400088B634 /* Emulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Emulator.h; sourceTree = "<group>"; };
|
||||||
|
283422F21CF8F5400088B634 /* Emulator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Emulator.m; sourceTree = "<group>"; };
|
||||||
28848B601CDE97D600B86C45 /* InsertDiskViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertDiskViewController.h; sourceTree = "<group>"; };
|
28848B601CDE97D600B86C45 /* InsertDiskViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertDiskViewController.h; sourceTree = "<group>"; };
|
||||||
28848B611CDE97D600B86C45 /* InsertDiskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsertDiskViewController.m; sourceTree = "<group>"; };
|
28848B611CDE97D600B86C45 /* InsertDiskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsertDiskViewController.m; sourceTree = "<group>"; };
|
||||||
28848B631CDE97E900B86C45 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; };
|
28848B631CDE97E900B86C45 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; };
|
||||||
|
@ -109,9 +140,6 @@
|
||||||
28BA89841CE73E7200A98104 /* TrackPad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrackPad.m; sourceTree = "<group>"; };
|
28BA89841CE73E7200A98104 /* TrackPad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrackPad.m; sourceTree = "<group>"; };
|
||||||
28BA89861CE73FBC00A98104 /* MNVMApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MNVMApplication.h; sourceTree = "<group>"; };
|
28BA89861CE73FBC00A98104 /* MNVMApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MNVMApplication.h; sourceTree = "<group>"; };
|
||||||
28BA89871CE73FBC00A98104 /* MNVMApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MNVMApplication.m; sourceTree = "<group>"; };
|
28BA89871CE73FBC00A98104 /* MNVMApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MNVMApplication.m; sourceTree = "<group>"; };
|
||||||
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
|
|
||||||
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = "<group>"; };
|
|
||||||
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
|
|
||||||
28CE8E8F1CD4C3B200FE25A8 /* COMOSGLU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = COMOSGLU.h; sourceTree = "<group>"; };
|
28CE8E8F1CD4C3B200FE25A8 /* COMOSGLU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = COMOSGLU.h; sourceTree = "<group>"; };
|
||||||
28CE8E911CD4C3B200FE25A8 /* DATE2SEC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DATE2SEC.h; sourceTree = "<group>"; };
|
28CE8E911CD4C3B200FE25A8 /* DATE2SEC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DATE2SEC.h; sourceTree = "<group>"; };
|
||||||
28CE8E921CD4C3B200FE25A8 /* ENDIANAC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ENDIANAC.h; sourceTree = "<group>"; };
|
28CE8E921CD4C3B200FE25A8 /* ENDIANAC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ENDIANAC.h; sourceTree = "<group>"; };
|
||||||
|
@ -211,6 +239,13 @@
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
283422C61CF8EF8C0088B634 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
28F676BA1CD15E0B00FC6FA6 /* Frameworks */ = {
|
28F676BA1CD15E0B00FC6FA6 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
@ -245,6 +280,38 @@
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
283422CB1CF8EF8C0088B634 /* MacPlus4M */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
283422E71CF8F1C80088B634 /* CNFGGLOB.h */,
|
||||||
|
283422E81CF8F1C80088B634 /* CNFGRAPI.h */,
|
||||||
|
283422E91CF8F1C80088B634 /* EMCONFIG.h */,
|
||||||
|
283422CE1CF8EF8C0088B634 /* Info.plist */,
|
||||||
|
);
|
||||||
|
path = MacPlus4M;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
283422EF1CF8F33A0088B634 /* Emulator Bundles */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
283422F01CF8F3530088B634 /* Shared */,
|
||||||
|
283422CB1CF8EF8C0088B634 /* MacPlus4M */,
|
||||||
|
);
|
||||||
|
name = "Emulator Bundles";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
283422F01CF8F3530088B634 /* Shared */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */,
|
||||||
|
283422F11CF8F5400088B634 /* Emulator.h */,
|
||||||
|
283422F21CF8F5400088B634 /* Emulator.m */,
|
||||||
|
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
|
||||||
|
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */,
|
||||||
|
);
|
||||||
|
name = Shared;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
28BA896E1CE7314500A98104 /* Keyboard */ = {
|
28BA896E1CE7314500A98104 /* Keyboard */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -259,16 +326,6 @@
|
||||||
name = Keyboard;
|
name = Keyboard;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */,
|
|
||||||
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */,
|
|
||||||
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */,
|
|
||||||
);
|
|
||||||
path = mnvm_cfg;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */ = {
|
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -329,6 +386,7 @@
|
||||||
28F6B48E1CF07DDD002D76D0 /* liblibhfs.a */,
|
28F6B48E1CF07DDD002D76D0 /* liblibhfs.a */,
|
||||||
28F6B4A81CF07EC9002D76D0 /* liblibmfs.a */,
|
28F6B4A81CF07EC9002D76D0 /* liblibmfs.a */,
|
||||||
28F6B4B61CF07F32002D76D0 /* liblibres.a */,
|
28F6B4B61CF07F32002D76D0 /* liblibres.a */,
|
||||||
|
283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -340,7 +398,6 @@
|
||||||
28F676C41CD15E0B00FC6FA6 /* AppDelegate.m */,
|
28F676C41CD15E0B00FC6FA6 /* AppDelegate.m */,
|
||||||
28BA89861CE73FBC00A98104 /* MNVMApplication.h */,
|
28BA89861CE73FBC00A98104 /* MNVMApplication.h */,
|
||||||
28BA89871CE73FBC00A98104 /* MNVMApplication.m */,
|
28BA89871CE73FBC00A98104 /* MNVMApplication.m */,
|
||||||
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
|
|
||||||
28CE8ED41CD4F56C00FE25A8 /* ScreenView.h */,
|
28CE8ED41CD4F56C00FE25A8 /* ScreenView.h */,
|
||||||
28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */,
|
28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */,
|
||||||
28D5A3FB1CD6868E001A33F6 /* TouchScreen.h */,
|
28D5A3FB1CD6868E001A33F6 /* TouchScreen.h */,
|
||||||
|
@ -358,13 +415,12 @@
|
||||||
28BA896E1CE7314500A98104 /* Keyboard */,
|
28BA896E1CE7314500A98104 /* Keyboard */,
|
||||||
28F676CE1CD15E0B00FC6FA6 /* LaunchScreen.storyboard */,
|
28F676CE1CD15E0B00FC6FA6 /* LaunchScreen.storyboard */,
|
||||||
28F676D11CD15E0B00FC6FA6 /* Info.plist */,
|
28F676D11CD15E0B00FC6FA6 /* Info.plist */,
|
||||||
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */,
|
|
||||||
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */,
|
|
||||||
28F676C01CD15E0B00FC6FA6 /* Supporting Files */,
|
28F676C01CD15E0B00FC6FA6 /* Supporting Files */,
|
||||||
28F6B4501CF07C48002D76D0 /* UIImage+DiskImageIcon.h */,
|
28F6B4501CF07C48002D76D0 /* UIImage+DiskImageIcon.h */,
|
||||||
28F6B4511CF07C48002D76D0 /* UIImage+DiskImageIcon.m */,
|
28F6B4511CF07C48002D76D0 /* UIImage+DiskImageIcon.m */,
|
||||||
28F6B4C91CF1FA7A002D76D0 /* about.plist */,
|
28F6B4C91CF1FA7A002D76D0 /* about.plist */,
|
||||||
28F6B4CE1CF77099002D76D0 /* compat.m */,
|
28F6B4CE1CF77099002D76D0 /* compat.m */,
|
||||||
|
283422EF1CF8F33A0088B634 /* Emulator Bundles */,
|
||||||
);
|
);
|
||||||
path = "Mini vMac";
|
path = "Mini vMac";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -450,7 +506,35 @@
|
||||||
};
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
|
283422C71CF8EF8C0088B634 /* Headers */ = {
|
||||||
|
isa = PBXHeadersBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXHeadersBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
283422C91CF8EF8C0088B634 /* MacPlus4M */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 283422D31CF8EF8C0088B634 /* Build configuration list for PBXNativeTarget "MacPlus4M" */;
|
||||||
|
buildPhases = (
|
||||||
|
283422C51CF8EF8C0088B634 /* Sources */,
|
||||||
|
283422C61CF8EF8C0088B634 /* Frameworks */,
|
||||||
|
283422C71CF8EF8C0088B634 /* Headers */,
|
||||||
|
283422C81CF8EF8C0088B634 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = MacPlus4M;
|
||||||
|
productName = "minivmac-plus4m";
|
||||||
|
productReference = 283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */;
|
||||||
|
productType = "com.apple.product-type.framework";
|
||||||
|
};
|
||||||
28F676BC1CD15E0B00FC6FA6 /* Mini vMac */ = {
|
28F676BC1CD15E0B00FC6FA6 /* Mini vMac */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 28F676D41CD15E0B00FC6FA6 /* Build configuration list for PBXNativeTarget "Mini vMac" */;
|
buildConfigurationList = 28F676D41CD15E0B00FC6FA6 /* Build configuration list for PBXNativeTarget "Mini vMac" */;
|
||||||
|
@ -459,10 +543,13 @@
|
||||||
28F676BA1CD15E0B00FC6FA6 /* Frameworks */,
|
28F676BA1CD15E0B00FC6FA6 /* Frameworks */,
|
||||||
28F676BB1CD15E0B00FC6FA6 /* Resources */,
|
28F676BB1CD15E0B00FC6FA6 /* Resources */,
|
||||||
28F6B4CD1CF76D88002D76D0 /* ShellScript */,
|
28F6B4CD1CF76D88002D76D0 /* ShellScript */,
|
||||||
|
283422D61CF8EF8C0088B634 /* Embed Frameworks */,
|
||||||
|
283422F51CF9ACAD0088B634 /* Change PlugIn extensions to mnvm */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
|
283422D01CF8EF8C0088B634 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "Mini vMac";
|
name = "Mini vMac";
|
||||||
productName = "Mini vMac";
|
productName = "Mini vMac";
|
||||||
|
@ -529,6 +616,10 @@
|
||||||
LastUpgradeCheck = 0730;
|
LastUpgradeCheck = 0730;
|
||||||
ORGANIZATIONNAME = namedfork;
|
ORGANIZATIONNAME = namedfork;
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
|
283422C91CF8EF8C0088B634 = {
|
||||||
|
CreatedOnToolsVersion = 7.3.1;
|
||||||
|
DevelopmentTeam = UJXNDZ5TNU;
|
||||||
|
};
|
||||||
28F676BC1CD15E0B00FC6FA6 = {
|
28F676BC1CD15E0B00FC6FA6 = {
|
||||||
CreatedOnToolsVersion = 7.3;
|
CreatedOnToolsVersion = 7.3;
|
||||||
DevelopmentTeam = UJXNDZ5TNU;
|
DevelopmentTeam = UJXNDZ5TNU;
|
||||||
|
@ -561,11 +652,19 @@
|
||||||
28F6B48D1CF07DDD002D76D0 /* libhfs */,
|
28F6B48D1CF07DDD002D76D0 /* libhfs */,
|
||||||
28F6B4A71CF07EC9002D76D0 /* libmfs */,
|
28F6B4A71CF07EC9002D76D0 /* libmfs */,
|
||||||
28F6B4B51CF07F32002D76D0 /* libres */,
|
28F6B4B51CF07F32002D76D0 /* libres */,
|
||||||
|
283422C91CF8EF8C0088B634 /* MacPlus4M */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
283422C81CF8EF8C0088B634 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
28F676BB1CD15E0B00FC6FA6 /* Resources */ = {
|
28F676BB1CD15E0B00FC6FA6 /* Resources */ = {
|
||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
@ -581,6 +680,20 @@
|
||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
283422F51CF9ACAD0088B634 /* Change PlugIn extensions to mnvm */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Change PlugIn extensions to mnvm";
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "cd \"$BUILT_PRODUCTS_DIR/$PLUGINS_FOLDER_PATH\"\nfor name in *.framework\ndo\n mv \"$name\" \"${name%.framework}.mnvm\"\ndone\n";
|
||||||
|
};
|
||||||
28F6B4CD1CF76D88002D76D0 /* ShellScript */ = {
|
28F6B4CD1CF76D88002D76D0 /* ShellScript */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
@ -597,39 +710,47 @@
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
283422C51CF8EF8C0088B634 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
283422F41CF8F55E0088B634 /* Emulator.m in Sources */,
|
||||||
|
283422D81CF8F16C0088B634 /* GLOBGLUE.c in Sources */,
|
||||||
|
283422E11CF8F16C0088B634 /* SCCEMDEV.c in Sources */,
|
||||||
|
283422E01CF8F16C0088B634 /* RTCEMDEV.c in Sources */,
|
||||||
|
283422DB1CF8F16C0088B634 /* M68KITAB.c in Sources */,
|
||||||
|
283422DF1CF8F16C0088B634 /* ROMEMDEV.c in Sources */,
|
||||||
|
283422DE1CF8F16C0088B634 /* PROGMAIN.c in Sources */,
|
||||||
|
283422D91CF8F16C0088B634 /* IWMEMDEV.c in Sources */,
|
||||||
|
283422E21CF8F16C0088B634 /* SCRNEMDV.c in Sources */,
|
||||||
|
283422E61CF8F16C0088B634 /* VIAEMDEV.c in Sources */,
|
||||||
|
283422DD1CF8F16C0088B634 /* MOUSEMDV.c in Sources */,
|
||||||
|
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */,
|
||||||
|
283422E31CF8F16C0088B634 /* SCSIEMDV.c in Sources */,
|
||||||
|
283422E51CF8F16C0088B634 /* SONYEMDV.c in Sources */,
|
||||||
|
283422DA1CF8F16C0088B634 /* KBRDEMDV.c in Sources */,
|
||||||
|
283422E41CF8F16C0088B634 /* SNDEMDEV.c in Sources */,
|
||||||
|
283422DC1CF8F16C0088B634 /* MINEM68K.c in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
28F676B91CD15E0B00FC6FA6 /* Sources */ = {
|
28F676B91CD15E0B00FC6FA6 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
28BA897E1CE7315400A98104 /* KBKey.m in Sources */,
|
28BA897E1CE7315400A98104 /* KBKey.m in Sources */,
|
||||||
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */,
|
|
||||||
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */,
|
|
||||||
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */,
|
|
||||||
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */,
|
|
||||||
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */,
|
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */,
|
||||||
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */,
|
|
||||||
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */,
|
|
||||||
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */,
|
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */,
|
||||||
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */,
|
|
||||||
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */,
|
|
||||||
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */,
|
|
||||||
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */,
|
|
||||||
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */,
|
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */,
|
||||||
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */,
|
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */,
|
||||||
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */,
|
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */,
|
||||||
28F6B4521CF07C48002D76D0 /* UIImage+DiskImageIcon.m in Sources */,
|
28F6B4521CF07C48002D76D0 /* UIImage+DiskImageIcon.m in Sources */,
|
||||||
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */,
|
|
||||||
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */,
|
|
||||||
28BA897F1CE7315400A98104 /* KBKeyboardLayout.m in Sources */,
|
28BA897F1CE7315400A98104 /* KBKeyboardLayout.m in Sources */,
|
||||||
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */,
|
|
||||||
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */,
|
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */,
|
||||||
28F676C81CD15E0B00FC6FA6 /* ViewController.m in Sources */,
|
28F676C81CD15E0B00FC6FA6 /* ViewController.m in Sources */,
|
||||||
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */,
|
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */,
|
||||||
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */,
|
|
||||||
28F676C51CD15E0B00FC6FA6 /* AppDelegate.m in Sources */,
|
28F676C51CD15E0B00FC6FA6 /* AppDelegate.m in Sources */,
|
||||||
28BA89801CE7315400A98104 /* KBKeyboardView.m in Sources */,
|
28BA89801CE7315400A98104 /* KBKeyboardView.m in Sources */,
|
||||||
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */,
|
|
||||||
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */,
|
|
||||||
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */,
|
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -672,6 +793,14 @@
|
||||||
};
|
};
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXTargetDependency section */
|
||||||
|
283422D01CF8EF8C0088B634 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 283422C91CF8EF8C0088B634 /* MacPlus4M */;
|
||||||
|
targetProxy = 283422CF1CF8EF8C0088B634 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
28F676C91CD15E0B00FC6FA6 /* Main.storyboard */ = {
|
28F676C91CD15E0B00FC6FA6 /* Main.storyboard */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
|
@ -692,6 +821,52 @@
|
||||||
/* End PBXVariantGroup section */
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
|
283422D41CF8EF8C0088B634 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEFINES_MODULE = NO;
|
||||||
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/MacPlus4M/Info.plist";
|
||||||
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
|
LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
VERSION_INFO_PREFIX = "";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
283422D51CF8EF8C0088B634 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEFINES_MODULE = NO;
|
||||||
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/MacPlus4M/Info.plist";
|
||||||
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
|
LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
VERSION_INFO_PREFIX = "";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
28F676D21CD15E0B00FC6FA6 /* Debug */ = {
|
28F676D21CD15E0B00FC6FA6 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
@ -877,6 +1052,14 @@
|
||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
283422D31CF8EF8C0088B634 /* Build configuration list for PBXNativeTarget "MacPlus4M" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
283422D41CF8EF8C0088B634 /* Debug */,
|
||||||
|
283422D51CF8EF8C0088B634 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
};
|
||||||
28F676B81CD15E0B00FC6FA6 /* Build configuration list for PBXProject "Mini vMac" */ = {
|
28F676B81CD15E0B00FC6FA6 /* Build configuration list for PBXProject "Mini vMac" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
|
|
@ -7,35 +7,22 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
#import "EmulatorProtocol.h"
|
||||||
extern NSString * const MNVMDidInsertDiskNotification;
|
|
||||||
extern NSString * const MNVMDidEjectDiskNotification;
|
|
||||||
|
|
||||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||||
|
|
||||||
@property (strong, nonatomic) UIWindow *window;
|
@property (strong, nonatomic) UIWindow *window;
|
||||||
@property (assign, nonatomic, getter=isEmulatorRunning) BOOL emulatorRunning;
|
|
||||||
@property (nonatomic, readonly) NSString *documentsPath;
|
@property (nonatomic, readonly) NSString *documentsPath;
|
||||||
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
|
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
|
||||||
|
@property (nonatomic, readonly) NSArray<NSBundle*> *availableEmulators;
|
||||||
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
|
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
|
||||||
|
|
||||||
+ (instancetype)sharedInstance;
|
+ (instancetype)sharedInstance;
|
||||||
|
+ (id<Emulator>)sharedEmulator;
|
||||||
|
|
||||||
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
|
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
|
||||||
- (IBAction)showInsertDisk:(id)sender;
|
- (IBAction)showInsertDisk:(id)sender;
|
||||||
- (IBAction)showSettings:(id)sender;
|
- (IBAction)showSettings:(id)sender;
|
||||||
|
|
||||||
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y;
|
|
||||||
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y;
|
|
||||||
- (void)setMouseButton:(BOOL)down;
|
|
||||||
|
|
||||||
- (void)keyDown:(int)scancode;
|
|
||||||
- (void)keyUp:(int)scancode;
|
|
||||||
|
|
||||||
- (BOOL)insertDisk:(NSString*)path;
|
|
||||||
- (BOOL)isDiskInserted:(NSString*)path;
|
|
||||||
|
|
||||||
- (void)macInterrupt;
|
|
||||||
- (void)macReset;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -9,27 +9,9 @@
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
#import "SettingsViewController.h"
|
#import "SettingsViewController.h"
|
||||||
#import "InsertDiskViewController.h"
|
#import "InsertDiskViewController.h"
|
||||||
#include "CNFGRAPI.h"
|
|
||||||
#include "SYSDEPNS.h"
|
|
||||||
#include "MYOSGLUE.h"
|
|
||||||
|
|
||||||
IMPORTPROC RunEmulator(void);
|
|
||||||
IMPORTFUNC blnr GetSpeedStopped(void);
|
|
||||||
IMPORTPROC SetSpeedStopped(blnr stopped);
|
|
||||||
IMPORTPROC SetMouseButton(blnr down);
|
|
||||||
IMPORTPROC SetMouseLoc(ui4r h, ui4r v);
|
|
||||||
IMPORTPROC SetMouseDelta(ui4r dh, ui4r dv);
|
|
||||||
IMPORTFUNC blnr Sony_Insert1(NSString *filePath, blnr silentfail);
|
|
||||||
IMPORTFUNC blnr Sony_IsInserted(NSString *filePath);
|
|
||||||
IMPORTFUNC blnr AnyDiskInserted(void);
|
|
||||||
EXPORTVAR(ui3b,SpeedValue);
|
|
||||||
IMPORTPROC SetKeyState(int key, blnr down);
|
|
||||||
IMPORTPROC MacInterrupt();
|
|
||||||
IMPORTPROC MacReset();
|
|
||||||
|
|
||||||
static AppDelegate *sharedAppDelegate = nil;
|
static AppDelegate *sharedAppDelegate = nil;
|
||||||
NSString * const MNVMDidInsertDiskNotification = @"MNVMDidInsertDisk";
|
static NSObject<Emulator> *sharedEmulator = nil;
|
||||||
NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
|
|
||||||
|
|
||||||
@interface AppDelegate () <UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning>
|
@interface AppDelegate () <UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning>
|
||||||
|
|
||||||
|
@ -44,10 +26,18 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
|
||||||
return sharedAppDelegate;
|
return sharedAppDelegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (id<Emulator>)sharedEmulator {
|
||||||
|
return sharedEmulator;
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||||
sharedAppDelegate = self;
|
sharedAppDelegate = self;
|
||||||
[self initDefaults];
|
[self initDefaults];
|
||||||
[self performSelector:@selector(runEmulator) withObject:nil afterDelay:0.1];
|
if (![self loadEmulator:[[NSUserDefaults standardUserDefaults] stringForKey:@"machine"]]) {
|
||||||
|
[self loadEmulator:@"MacPlus4M"];
|
||||||
|
}
|
||||||
|
[sharedEmulator performSelector:@selector(run) withObject:nil afterDelay:0.1];
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,32 +49,54 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
|
||||||
NSString *firstLanguage = [NSBundle preferredLocalizationsFromArray:layoutForLanguage.allKeys].firstObject;
|
NSString *firstLanguage = [NSBundle preferredLocalizationsFromArray:layoutForLanguage.allKeys].firstObject;
|
||||||
NSDictionary *defaultValues = @{@"trackpad": @([UIDevice currentDevice].userInterfaceIdiom != UIUserInterfaceIdiomPad),
|
NSDictionary *defaultValues = @{@"trackpad": @([UIDevice currentDevice].userInterfaceIdiom != UIUserInterfaceIdiomPad),
|
||||||
@"frameskip": @(0),
|
@"frameskip": @(0),
|
||||||
@"keyboardLayout": layoutForLanguage[firstLanguage]
|
@"keyboardLayout": layoutForLanguage[firstLanguage],
|
||||||
|
@"machine": @"MacPlus4M"
|
||||||
};
|
};
|
||||||
|
|
||||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||||
[defaults registerDefaults:defaultValues];
|
[defaults registerDefaults:defaultValues];
|
||||||
[defaults setValue:@(WantInitSpeedValue) forKey:@"speedValue"];
|
[defaults setValue:@(sharedEmulator.initialSpeed) forKey:@"speedValue"];
|
||||||
[defaults addObserver:self forKeyPath:@"speedValue" options:0 context:NULL];
|
[defaults addObserver:self forKeyPath:@"speedValue" options:0 context:NULL];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
|
||||||
if (object == [NSUserDefaults standardUserDefaults]) {
|
if (object == [NSUserDefaults standardUserDefaults]) {
|
||||||
if ([keyPath isEqualToString:@"speedValue"]) {
|
if ([keyPath isEqualToString:@"speedValue"]) {
|
||||||
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
|
sharedEmulator.speed = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSArray<NSBundle*>*)availableEmulators {
|
||||||
|
NSString *pluginsPath = [NSBundle mainBundle].builtInPlugInsPath;
|
||||||
|
NSArray<NSString*> *names = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pluginsPath error:NULL];
|
||||||
|
NSMutableArray *emulatorBundles = [NSMutableArray arrayWithCapacity:names.count];
|
||||||
|
for (NSString *name in [names pathsMatchingExtensions:@[@"mnvm"]]) {
|
||||||
|
NSBundle *bundle = [NSBundle bundleWithPath:[pluginsPath stringByAppendingPathComponent:name]];
|
||||||
|
[emulatorBundles addObject:bundle];
|
||||||
|
}
|
||||||
|
return emulatorBundles;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)loadEmulator:(NSString*)name {
|
||||||
|
NSString *emulatorBundleName = [name stringByAppendingPathExtension:@"mnvm"];
|
||||||
|
NSString *emulatorBundlePath = [[NSBundle mainBundle].builtInPlugInsPath stringByAppendingPathComponent:emulatorBundleName];
|
||||||
|
NSBundle *emulatorBundle = [NSBundle bundleWithPath:emulatorBundlePath];
|
||||||
|
[emulatorBundle load];
|
||||||
|
sharedEmulator = [[emulatorBundle principalClass] new];
|
||||||
|
sharedEmulator.dataPath = self.documentsPath;
|
||||||
|
return sharedEmulator != nil;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
||||||
self.emulatorRunning = NO;
|
sharedEmulator.running = NO;
|
||||||
if (AnyDiskInserted() == falseblnr) {
|
if (sharedEmulator.anyDiskInserted == NO) {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||||
self.emulatorRunning = YES;
|
sharedEmulator.running = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
|
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
|
||||||
|
@ -259,75 +271,4 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Emulation
|
|
||||||
|
|
||||||
- (void)runEmulator {
|
|
||||||
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
|
|
||||||
if (SpeedValue > 3) {
|
|
||||||
SpeedValue = 3;
|
|
||||||
}
|
|
||||||
RunEmulator();
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)isEmulatorRunning {
|
|
||||||
return !GetSpeedStopped();
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setEmulatorRunning:(BOOL)emulatorRunning {
|
|
||||||
SetSpeedStopped(emulatorRunning);
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Mouse
|
|
||||||
|
|
||||||
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y {
|
|
||||||
SetMouseLoc(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y {
|
|
||||||
SetMouseDelta(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setMouseButton:(BOOL)down {
|
|
||||||
SetMouseButton(down);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)macInterrupt {
|
|
||||||
MacInterrupt();
|
|
||||||
}
|
|
||||||
|
|
||||||
-(void)macReset {
|
|
||||||
MacReset();
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Keyboard
|
|
||||||
|
|
||||||
- (int)translateScanCode:(int)scancode {
|
|
||||||
switch (scancode) {
|
|
||||||
case 54: return 59; // left control
|
|
||||||
case 59: return 70; // arrow left
|
|
||||||
case 60: return 66; // arrow right
|
|
||||||
case 61: return 72; // arrow down
|
|
||||||
case 62: return 77; // arrow up
|
|
||||||
default: return scancode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)keyDown:(int)scancode {
|
|
||||||
SetKeyState([self translateScanCode:scancode], true);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)keyUp:(int)scancode {
|
|
||||||
SetKeyState([self translateScanCode:scancode], false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Disk Drive
|
|
||||||
|
|
||||||
- (BOOL)insertDisk:(NSString *)path {
|
|
||||||
return Sony_Insert1(path.stringByStandardizingPath, falseblnr);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)isDiskInserted:(NSString *)path {
|
|
||||||
return Sony_IsInserted(path.stringByStandardizingPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
16
Mini vMac/Emulator.h
Normal file
16
Mini vMac/Emulator.h
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
//
|
||||||
|
// Emulator.h
|
||||||
|
// Mini vMac
|
||||||
|
//
|
||||||
|
// Created by Jesús A. Álvarez on 27/05/2016.
|
||||||
|
// Copyright © 2016 namedfork. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import "EmulatorProtocol.h"
|
||||||
|
|
||||||
|
@interface Emulator : NSObject <Emulator>
|
||||||
|
|
||||||
|
- (void)updateScreen:(CGImageRef)screenImage;
|
||||||
|
|
||||||
|
@end
|
154
Mini vMac/Emulator.m
Normal file
154
Mini vMac/Emulator.m
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
//
|
||||||
|
// Emulator.m
|
||||||
|
// Mini vMac
|
||||||
|
//
|
||||||
|
// Created by Jesús A. Álvarez on 27/05/2016.
|
||||||
|
// Copyright © 2016 namedfork. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "Emulator.h"
|
||||||
|
#include "CNFGRAPI.h"
|
||||||
|
#include "SYSDEPNS.h"
|
||||||
|
#include "ENDIANAC.h"
|
||||||
|
#include "MYOSGLUE.h"
|
||||||
|
|
||||||
|
IMPORTPROC RunEmulator(void);
|
||||||
|
IMPORTFUNC blnr GetSpeedStopped(void);
|
||||||
|
IMPORTPROC SetSpeedStopped(blnr stopped);
|
||||||
|
IMPORTPROC SetMouseButton(blnr down);
|
||||||
|
IMPORTPROC SetMouseLoc(ui4r h, ui4r v);
|
||||||
|
IMPORTPROC SetMouseDelta(ui4r dh, ui4r dv);
|
||||||
|
IMPORTFUNC blnr Sony_Insert1(NSString *filePath, blnr silentfail);
|
||||||
|
IMPORTFUNC blnr Sony_IsInserted(NSString *filePath);
|
||||||
|
IMPORTPROC SetKeyState(int key, blnr down);
|
||||||
|
|
||||||
|
static Emulator *sharedEmulator = nil;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
|
||||||
|
@implementation Emulator
|
||||||
|
|
||||||
|
@synthesize dataPath;
|
||||||
|
|
||||||
|
+ (instancetype)sharedEmulator {
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
sharedEmulator = [self new];
|
||||||
|
});
|
||||||
|
return sharedEmulator;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)init {
|
||||||
|
if ((self = [super init])) {
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
sharedEmulator = self;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
- (void)run {
|
||||||
|
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
|
||||||
|
if (SpeedValue > 3) {
|
||||||
|
SpeedValue = 3;
|
||||||
|
}
|
||||||
|
RunEmulator();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSInteger)initialSpeed {
|
||||||
|
return WantInitSpeedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSInteger)speed {
|
||||||
|
return SpeedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setSpeed:(NSInteger)speed {
|
||||||
|
SpeedValue = speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isRunning {
|
||||||
|
return !GetSpeedStopped();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setRunning:(BOOL)running {
|
||||||
|
SetSpeedStopped(running ? falseblnr : trueblnr);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)interrupt {
|
||||||
|
WantMacInterrupt = trueblnr;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)reset {
|
||||||
|
WantMacReset = trueblnr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Screen
|
||||||
|
|
||||||
|
@synthesize screenLayer;
|
||||||
|
|
||||||
|
- (CGSize)screenSize {
|
||||||
|
return CGSizeMake(vMacScreenWidth, vMacScreenHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)updateScreen:(CGImageRef)screenImage {
|
||||||
|
screenLayer.contents = (__bridge id)screenImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Disk
|
||||||
|
|
||||||
|
@synthesize insertDiskNotification, ejectDiskNotification;
|
||||||
|
|
||||||
|
- (BOOL)anyDiskInserted {
|
||||||
|
return AnyDiskInserted();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isDiskInserted:(NSString *)path {
|
||||||
|
return Sony_IsInserted(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)insertDisk:(NSString *)path {
|
||||||
|
return Sony_Insert1(path, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)insertDiskNotification {
|
||||||
|
return @"didInsertDisk";
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)ejectDiskNotification {
|
||||||
|
return @"didEjectDisk";
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Keyboard
|
||||||
|
|
||||||
|
- (int)translateScanCode:(int)scancode {
|
||||||
|
switch (scancode) {
|
||||||
|
case 54: return 59; // left control
|
||||||
|
case 59: return 70; // arrow left
|
||||||
|
case 60: return 66; // arrow right
|
||||||
|
case 61: return 72; // arrow down
|
||||||
|
case 62: return 77; // arrow up
|
||||||
|
default: return scancode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)keyDown:(int)scancode {
|
||||||
|
SetKeyState([self translateScanCode:scancode], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)keyUp:(int)scancode {
|
||||||
|
SetKeyState([self translateScanCode:scancode], false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Mouse
|
||||||
|
|
||||||
|
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y {
|
||||||
|
SetMouseLoc(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y {
|
||||||
|
SetMouseDelta(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setMouseButton:(BOOL)down {
|
||||||
|
SetMouseButton(down);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
42
Mini vMac/EmulatorProtocol.h
Normal file
42
Mini vMac/EmulatorProtocol.h
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
//
|
||||||
|
// EmulatorProtocol.h
|
||||||
|
// Mini vMac
|
||||||
|
//
|
||||||
|
// Created by Jesús A. Álvarez on 27/05/2016.
|
||||||
|
// Copyright © 2016 namedfork. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
@import Foundation;
|
||||||
|
@import CoreGraphics;
|
||||||
|
@import QuartzCore;
|
||||||
|
|
||||||
|
@protocol Emulator <NSObject>
|
||||||
|
|
||||||
|
@property (nonatomic, strong) NSString *dataPath;
|
||||||
|
@property (nonatomic, assign, getter=isRunning) BOOL running;
|
||||||
|
@property (nonatomic, assign) NSInteger speed;
|
||||||
|
@property (nonatomic, weak) CALayer *screenLayer;
|
||||||
|
|
||||||
|
@property (nonatomic, readonly) CGSize screenSize;
|
||||||
|
@property (nonatomic, readonly) NSString *insertDiskNotification, *ejectDiskNotification;
|
||||||
|
@property (nonatomic, readonly) NSInteger initialSpeed;
|
||||||
|
|
||||||
|
@property (nonatomic, readonly) BOOL anyDiskInserted;
|
||||||
|
|
||||||
|
+ (instancetype)sharedEmulator;
|
||||||
|
|
||||||
|
- (void)run;
|
||||||
|
- (void)reset;
|
||||||
|
- (void)interrupt;
|
||||||
|
|
||||||
|
- (void)keyDown:(int)scancode;
|
||||||
|
- (void)keyUp:(int)scancode;
|
||||||
|
|
||||||
|
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y;
|
||||||
|
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y;
|
||||||
|
- (void)setMouseButton:(BOOL)down;
|
||||||
|
|
||||||
|
- (BOOL)insertDisk:(NSString*)path;
|
||||||
|
- (BOOL)isDiskInserted:(NSString*)path;
|
||||||
|
|
||||||
|
@end
|
|
@ -49,15 +49,15 @@
|
||||||
- (void)viewDidAppear:(BOOL)animated {
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||||
[nc addObserver:self selector:@selector(reloadData:) name:MNVMDidInsertDiskNotification object:nil];
|
[nc addObserver:self selector:@selector(reloadData:) name:[AppDelegate sharedEmulator].insertDiskNotification object:nil];
|
||||||
[nc addObserver:self selector:@selector(reloadData:) name:MNVMDidEjectDiskNotification object:nil];
|
[nc addObserver:self selector:@selector(reloadData:) name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidDisappear:(BOOL)animated {
|
- (void)viewDidDisappear:(BOOL)animated {
|
||||||
[super viewDidDisappear:animated];
|
[super viewDidDisappear:animated];
|
||||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||||
[nc removeObserver:self name:MNVMDidInsertDiskNotification object:nil];
|
[nc removeObserver:self name:[AppDelegate sharedEmulator].insertDiskNotification object:nil];
|
||||||
[nc removeObserver:self name:MNVMDidEjectDiskNotification object:nil];
|
[nc removeObserver:self name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)loadDirectoryContents {
|
- (void)loadDirectoryContents {
|
||||||
|
@ -89,11 +89,11 @@
|
||||||
|
|
||||||
- (void)macInterrupt:(id)sender {
|
- (void)macInterrupt:(id)sender {
|
||||||
[self dismiss:sender];
|
[self dismiss:sender];
|
||||||
[[AppDelegate sharedInstance] macInterrupt];
|
[[AppDelegate sharedEmulator] interrupt];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)macReset:(id)sender {
|
- (void)macReset:(id)sender {
|
||||||
[[AppDelegate sharedInstance] macReset];
|
[[AppDelegate sharedEmulator] reset];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Table view data source
|
#pragma mark - Table view data source
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
NSString *filePath = [self fileAtIndexPath:indexPath];
|
NSString *filePath = [self fileAtIndexPath:indexPath];
|
||||||
if (filePath) {
|
if (filePath) {
|
||||||
cell.filePath = filePath;
|
cell.filePath = filePath;
|
||||||
if ([[AppDelegate sharedInstance] isDiskInserted:filePath]) {
|
if ([[AppDelegate sharedEmulator] isDiskInserted:filePath]) {
|
||||||
cell.userInteractionEnabled = NO;
|
cell.userInteractionEnabled = NO;
|
||||||
cell.textLabel.enabled = NO;
|
cell.textLabel.enabled = NO;
|
||||||
cell.imageView.alpha = 0.5;
|
cell.imageView.alpha = 0.5;
|
||||||
|
@ -179,7 +179,7 @@
|
||||||
return UITableViewCellEditingStyleInsert;
|
return UITableViewCellEditingStyleInsert;
|
||||||
}
|
}
|
||||||
NSString *filePath = [self fileAtIndexPath:indexPath];
|
NSString *filePath = [self fileAtIndexPath:indexPath];
|
||||||
BOOL isInserted = [[AppDelegate sharedInstance] isDiskInserted:filePath];
|
BOOL isInserted = [[AppDelegate sharedEmulator] isDiskInserted:filePath];
|
||||||
return isInserted ? UITableViewCellEditingStyleNone : UITableViewCellEditingStyleDelete;
|
return isInserted ? UITableViewCellEditingStyleNone : UITableViewCellEditingStyleDelete;
|
||||||
} else {
|
} else {
|
||||||
return UITableViewCellEditingStyleDelete;
|
return UITableViewCellEditingStyleDelete;
|
||||||
|
@ -213,9 +213,9 @@
|
||||||
|
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
NSString *filePath = [self fileAtIndexPath:indexPath];
|
NSString *filePath = [self fileAtIndexPath:indexPath];
|
||||||
if (filePath && ![[AppDelegate sharedInstance] isDiskInserted:filePath]) {
|
if (filePath && ![[AppDelegate sharedEmulator] isDiskInserted:filePath]) {
|
||||||
[self dismissViewControllerAnimated:YES completion:^{
|
[self dismissViewControllerAnimated:YES completion:^{
|
||||||
[[AppDelegate sharedInstance] insertDisk:filePath];
|
[[AppDelegate sharedEmulator] insertDisk:filePath];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,18 +65,18 @@ static int8_t usb_to_adb_scancode[] = {
|
||||||
if (scancode == 57) {
|
if (scancode == 57) {
|
||||||
// caps lock
|
// caps lock
|
||||||
if (event._isKeyDown && !physicalCapsLocked) {
|
if (event._isKeyDown && !physicalCapsLocked) {
|
||||||
[[AppDelegate sharedInstance] keyDown:scancode];
|
[[AppDelegate sharedEmulator] keyDown:scancode];
|
||||||
physicalCapsLocked = YES;
|
physicalCapsLocked = YES;
|
||||||
} else if (event._isKeyDown && physicalCapsLocked) {
|
} else if (event._isKeyDown && physicalCapsLocked) {
|
||||||
[[AppDelegate sharedInstance] keyUp:scancode];
|
[[AppDelegate sharedEmulator] keyUp:scancode];
|
||||||
physicalCapsLocked = NO;
|
physicalCapsLocked = NO;
|
||||||
}
|
}
|
||||||
} else if (scancode >= 0 && [AppDelegate sharedInstance].emulatorRunning) {
|
} else if (scancode >= 0 && [AppDelegate sharedEmulator].running) {
|
||||||
if (event._isKeyDown) {
|
if (event._isKeyDown) {
|
||||||
[self _updateCapsLockStatus:event];
|
[self _updateCapsLockStatus:event];
|
||||||
[[AppDelegate sharedInstance] keyDown:scancode];
|
[[AppDelegate sharedEmulator] keyDown:scancode];
|
||||||
} else {
|
} else {
|
||||||
[[AppDelegate sharedInstance] keyUp:scancode];
|
[[AppDelegate sharedEmulator] keyUp:scancode];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,9 +90,9 @@ static int8_t usb_to_adb_scancode[] = {
|
||||||
if (currentCapsLock != physicalCapsLocked) {
|
if (currentCapsLock != physicalCapsLocked) {
|
||||||
physicalCapsLocked = currentCapsLock;
|
physicalCapsLocked = currentCapsLock;
|
||||||
if (physicalCapsLocked) {
|
if (physicalCapsLocked) {
|
||||||
[[AppDelegate sharedInstance] keyDown:57];
|
[[AppDelegate sharedEmulator] keyDown:57];
|
||||||
} else {
|
} else {
|
||||||
[[AppDelegate sharedInstance] keyUp:57];
|
[[AppDelegate sharedEmulator] keyUp:57];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,8 +32,7 @@
|
||||||
#include "ENDIANAC.h"
|
#include "ENDIANAC.h"
|
||||||
#include "MYOSGLUE.h"
|
#include "MYOSGLUE.h"
|
||||||
#include "STRCONST.h"
|
#include "STRCONST.h"
|
||||||
#import "ScreenView.h"
|
#import "Emulator.h"
|
||||||
#import "AppDelegate.h"
|
|
||||||
|
|
||||||
#pragma mark - some simple utilities
|
#pragma mark - some simple utilities
|
||||||
|
|
||||||
|
@ -145,7 +144,7 @@ LOCALPROC Screen_UnInit(void) {
|
||||||
LOCALVAR NSString *MyDataPath = nil;
|
LOCALVAR NSString *MyDataPath = nil;
|
||||||
|
|
||||||
LOCALFUNC blnr InitCocoaStuff(void) {
|
LOCALFUNC blnr InitCocoaStuff(void) {
|
||||||
MyDataPath = [AppDelegate sharedInstance].documentsPath;
|
MyDataPath = [Emulator sharedEmulator].dataPath;
|
||||||
if (MyDataPath) {
|
if (MyDataPath) {
|
||||||
[MyDataPath retain];
|
[MyDataPath retain];
|
||||||
}
|
}
|
||||||
|
@ -464,7 +463,7 @@ LOCALFUNC tMacErr vSonyEject0(tDrive Drive_No, blnr deleteit) {
|
||||||
NSDictionary *userInfo = @{@"path": DriveNames[Drive_No],
|
NSDictionary *userInfo = @{@"path": DriveNames[Drive_No],
|
||||||
@"drive": @(Drive_No),
|
@"drive": @(Drive_No),
|
||||||
@"delete": @(deleteit)};
|
@"delete": @(deleteit)};
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MNVMDidEjectDiskNotification object:[AppDelegate sharedInstance] userInfo:userInfo];
|
[[NSNotificationCenter defaultCenter] postNotificationName:[Emulator sharedEmulator].ejectDiskNotification object:[Emulator sharedEmulator] userInfo:userInfo];
|
||||||
DiskEjectedNotify(Drive_No);
|
DiskEjectedNotify(Drive_No);
|
||||||
|
|
||||||
#if HaveAdvisoryLocks
|
#if HaveAdvisoryLocks
|
||||||
|
@ -540,8 +539,8 @@ LOCALFUNC blnr Sony_Insert0(FILE *refnum, blnr locked, NSString *filePath) {
|
||||||
} else {
|
} else {
|
||||||
NSDictionary *userInfo = @{@"path": filePath,
|
NSDictionary *userInfo = @{@"path": filePath,
|
||||||
@"drive": @(Drive_No)};
|
@"drive": @(Drive_No)};
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MNVMDidInsertDiskNotification object:[AppDelegate sharedInstance] userInfo:userInfo];
|
[[NSNotificationCenter defaultCenter] postNotificationName:[Emulator sharedEmulator].insertDiskNotification object:[Emulator sharedEmulator] userInfo:userInfo];
|
||||||
|
|
||||||
/* printf("Sony_Insert0 %d\n", (int)Drive_No); */
|
/* printf("Sony_Insert0 %d\n", (int)Drive_No); */
|
||||||
|
|
||||||
#if HaveAdvisoryLocks
|
#if HaveAdvisoryLocks
|
||||||
|
@ -859,7 +858,7 @@ LOCALPROC HaveChangedScreenBuff(ui4r top, ui4r left, ui4r bottom, ui4r right) {
|
||||||
CGBitmapInfo options = 0;
|
CGBitmapInfo options = 0;
|
||||||
|
|
||||||
CGImageRef screenImage = CGImageCreate(vMacScreenWidth, vMacScreenHeight, bitsPerComponent, bitsPerPixel, vMacScreenByteWidth, screenColorSpace, options, screenDataProvider, NULL, false, kCGRenderingIntentDefault);
|
CGImageRef screenImage = CGImageCreate(vMacScreenWidth, vMacScreenHeight, bitsPerComponent, bitsPerPixel, vMacScreenByteWidth, screenColorSpace, options, screenDataProvider, NULL, false, kCGRenderingIntentDefault);
|
||||||
[[ScreenView sharedScreenView] updateScreen:screenImage];
|
[[Emulator sharedEmulator] updateScreen:screenImage];
|
||||||
CGImageRelease(screenImage);
|
CGImageRelease(screenImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1703,11 +1702,3 @@ GLOBALPROC RunEmulator(void) {
|
||||||
}
|
}
|
||||||
UnInitOSGLU();
|
UnInitOSGLU();
|
||||||
}
|
}
|
||||||
|
|
||||||
GLOBALPROC MacInterrupt(void) {
|
|
||||||
WantMacInterrupt = trueblnr;
|
|
||||||
}
|
|
||||||
|
|
||||||
GLOBALPROC MacReset(void) {
|
|
||||||
WantMacReset = trueblnr;
|
|
||||||
}
|
|
28
Mini vMac/MacPlus4M/Info.plist
Normal file
28
Mini vMac/MacPlus4M/Info.plist
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<?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>CFBundleDisplayName</key>
|
||||||
|
<string>Mac Plus 4M</string>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>MnvM</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>Emulator</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -14,6 +14,5 @@
|
||||||
@property (nonatomic, readonly) CGSize screenSize;
|
@property (nonatomic, readonly) CGSize screenSize;
|
||||||
|
|
||||||
+ (instancetype)sharedScreenView;
|
+ (instancetype)sharedScreenView;
|
||||||
- (void)updateScreen:(CGImageRef)screenImage;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "ScreenView.h"
|
#import "ScreenView.h"
|
||||||
#import "CNFGGLOB.h"
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
static ScreenView *sharedScreenView = nil;
|
static ScreenView *sharedScreenView = nil;
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ static ScreenView *sharedScreenView = nil;
|
||||||
[super awakeFromNib];
|
[super awakeFromNib];
|
||||||
sharedScreenView = self;
|
sharedScreenView = self;
|
||||||
videoLayer = [CALayer layer];
|
videoLayer = [CALayer layer];
|
||||||
screenSize = CGSizeMake(vMacScreenWidth, vMacScreenHeight);
|
[AppDelegate sharedEmulator].screenLayer = videoLayer;
|
||||||
|
screenSize = [AppDelegate sharedEmulator].screenSize;
|
||||||
[self.layer addSublayer:videoLayer];
|
[self.layer addSublayer:videoLayer];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,12 +40,6 @@ static ScreenView *sharedScreenView = nil;
|
||||||
return screenSize;
|
return screenSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateScreen:(CGImageRef)newScreenImage {
|
|
||||||
CGImageRelease(screenImage);
|
|
||||||
screenImage = CGImageRetain(newScreenImage);
|
|
||||||
videoLayer.contents = (__bridge id)screenImage;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)layoutSubviews {
|
- (void)layoutSubviews {
|
||||||
[super layoutSubviews];
|
[super layoutSubviews];
|
||||||
CGRect viewBounds = self.bounds;
|
CGRect viewBounds = self.bounds;
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#import "SettingsViewController.h"
|
#import "SettingsViewController.h"
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
#import "CNFGRAPI.h"
|
|
||||||
|
|
||||||
@interface SettingsViewController ()
|
@interface SettingsViewController ()
|
||||||
|
|
||||||
|
@ -49,12 +48,12 @@
|
||||||
|
|
||||||
- (void)viewDidAppear:(BOOL)animated {
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
[AppDelegate sharedInstance].emulatorRunning = NO;
|
[AppDelegate sharedEmulator].running = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewWillDisappear:(BOOL)animated {
|
- (void)viewWillDisappear:(BOOL)animated {
|
||||||
[super viewWillDisappear:animated];
|
[super viewWillDisappear:animated];
|
||||||
[AppDelegate sharedInstance].emulatorRunning = YES;
|
[AppDelegate sharedEmulator].running = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showInsertDisk:(id)sender {
|
- (void)showInsertDisk:(id)sender {
|
||||||
|
@ -146,10 +145,6 @@
|
||||||
NSString *versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
|
NSString *versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
|
||||||
NSString *commitString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GitVersion"];
|
NSString *commitString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GitVersion"];
|
||||||
cell.detailTextLabel.text = commitString.length > 0 ? [NSString stringWithFormat:@"%@ (%@)", versionString, commitString] : versionString;
|
cell.detailTextLabel.text = commitString.length > 0 ? [NSString stringWithFormat:@"%@ (%@)", versionString, commitString] : versionString;
|
||||||
} else if ([detailText isEqualToString:@"kAppVariationStr"]) {
|
|
||||||
cell.detailTextLabel.text = @(kAppVariationStr);
|
|
||||||
} else if ([detailText isEqualToString:@"kMaintainerName"]) {
|
|
||||||
cell.detailTextLabel.text = @(kMaintainerName);
|
|
||||||
} else {
|
} else {
|
||||||
cell.detailTextLabel.text = detailText;
|
cell.detailTextLabel.text = detailText;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,11 +41,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)mouseDown {
|
- (void)mouseDown {
|
||||||
[[AppDelegate sharedInstance] setMouseButton:YES];
|
[[AppDelegate sharedEmulator] setMouseButton:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)mouseUp {
|
- (void)mouseUp {
|
||||||
[[AppDelegate sharedInstance] setMouseButton:NO];
|
[[AppDelegate sharedEmulator] setMouseButton:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (CGPoint)effectiveTouchPointForEvent:(UIEvent *)event {
|
- (CGPoint)effectiveTouchPointForEvent:(UIEvent *)event {
|
||||||
|
@ -61,29 +61,29 @@
|
||||||
|
|
||||||
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
|
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
|
||||||
[currentTouches unionSet:touches];
|
[currentTouches unionSet:touches];
|
||||||
if (![AppDelegate sharedInstance].emulatorRunning) return;
|
if (![AppDelegate sharedEmulator].running) return;
|
||||||
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
||||||
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
||||||
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
||||||
[self performSelector:@selector(mouseDown) withObject:nil afterDelay:mouseButtonDelay];
|
[self performSelector:@selector(mouseDown) withObject:nil afterDelay:mouseButtonDelay];
|
||||||
previousTouchLoc = touchLoc;
|
previousTouchLoc = touchLoc;
|
||||||
previousTouchTime = event.timestamp;
|
previousTouchTime = event.timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
|
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
|
||||||
if (![AppDelegate sharedInstance].emulatorRunning) return;
|
if (![AppDelegate sharedEmulator].running) return;
|
||||||
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
||||||
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
||||||
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
|
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
|
||||||
[currentTouches minusSet:touches];
|
[currentTouches minusSet:touches];
|
||||||
if (![AppDelegate sharedInstance].emulatorRunning) return;
|
if (![AppDelegate sharedEmulator].running) return;
|
||||||
if (currentTouches.count > 0) return;
|
if (currentTouches.count > 0) return;
|
||||||
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
|
||||||
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
|
||||||
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
|
||||||
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:mouseButtonDelay];
|
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:mouseButtonDelay];
|
||||||
previousTouchLoc = touchLoc;
|
previousTouchLoc = touchLoc;
|
||||||
previousTouchTime = event.timestamp;
|
previousTouchTime = event.timestamp;
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
fabs(previousTouchLoc.x - touchLoc.x) < touchDistanceThreshold &&
|
fabs(previousTouchLoc.x - touchLoc.x) < touchDistanceThreshold &&
|
||||||
fabs(previousTouchLoc.y - touchLoc.y) < touchDistanceThreshold) {
|
fabs(previousTouchLoc.y - touchLoc.y) < touchDistanceThreshold) {
|
||||||
drag = YES;
|
drag = YES;
|
||||||
[[AppDelegate sharedInstance] setMouseButton:YES];
|
[[AppDelegate sharedEmulator] setMouseButton:YES];
|
||||||
}
|
}
|
||||||
previousTouchTime = event.timestamp;
|
previousTouchTime = event.timestamp;
|
||||||
previousTouchLoc = touchLoc;
|
previousTouchLoc = touchLoc;
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
locDiff.x *= accel;
|
locDiff.x *= accel;
|
||||||
locDiff.y *= accel;
|
locDiff.y *= accel;
|
||||||
click = NO;
|
click = NO;
|
||||||
[[AppDelegate sharedInstance] moveMouseX:locDiff.x Y:locDiff.y];
|
[[AppDelegate sharedEmulator] moveMouseX:locDiff.x Y:locDiff.y];
|
||||||
previousTouchTime = event.timestamp;
|
previousTouchTime = event.timestamp;
|
||||||
previousTouchLoc = touchLoc;
|
previousTouchLoc = touchLoc;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
}
|
}
|
||||||
click = NO;
|
click = NO;
|
||||||
if (drag) {
|
if (drag) {
|
||||||
[[AppDelegate sharedInstance] setMouseButton:NO];
|
[[AppDelegate sharedEmulator] setMouseButton:NO];
|
||||||
drag = NO;
|
drag = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,12 +82,12 @@
|
||||||
if (drag) {
|
if (drag) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[[AppDelegate sharedInstance] setMouseButton:YES];
|
[[AppDelegate sharedEmulator] setMouseButton:YES];
|
||||||
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:2.0/60.0];
|
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:2.0/60.0];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)mouseUp {
|
- (void)mouseUp {
|
||||||
[[AppDelegate sharedInstance] setMouseButton:NO];
|
[[AppDelegate sharedEmulator] setMouseButton:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -32,7 +32,7 @@ static NSCache<NSString*,UIImage*> *diskImageIconCache = nil;
|
||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
diskImageIconCache = [NSCache new];
|
diskImageIconCache = [NSCache new];
|
||||||
diskImageIconCache.name = @"net.namedfork.minivmac.icon-cache";
|
diskImageIconCache.name = @"net.namedfork.minivmac.icon-cache";
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEjectDisk:) name:MNVMDidEjectDiskNotification object:nil];
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEjectDisk:) name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
|
||||||
});
|
});
|
||||||
return diskImageIconCache;
|
return diskImageIconCache;
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,11 +192,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)keyDown:(int)scancode {
|
- (void)keyDown:(int)scancode {
|
||||||
[[AppDelegate sharedInstance] keyDown:scancode];
|
[[AppDelegate sharedEmulator] keyDown:scancode];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)keyUp:(int)scancode {
|
- (void)keyUp:(int)scancode {
|
||||||
[[AppDelegate sharedInstance] keyUp:scancode];
|
[[AppDelegate sharedEmulator] keyUp:scancode];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -12,17 +12,11 @@
|
||||||
<key>detailText</key>
|
<key>detailText</key>
|
||||||
<string>$version</string>
|
<string>$version</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
|
||||||
<key>text</key>
|
|
||||||
<string>Core</string>
|
|
||||||
<key>detailText</key>
|
|
||||||
<string>kAppVariationStr</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
<dict>
|
||||||
<key>text</key>
|
<key>text</key>
|
||||||
<string>Maintainer</string>
|
<string>Maintainer</string>
|
||||||
<key>detailText</key>
|
<key>detailText</key>
|
||||||
<string>kMaintainerName</string>
|
<string>Jesús A. Álvarez</string>
|
||||||
<key>link</key>
|
<key>link</key>
|
||||||
<string>https://twitter.com/maczydeco</string>
|
<string>https://twitter.com/maczydeco</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user