mirror of
https://github.com/ksherlock/ample.git
synced 2026-04-23 19:19:24 +00:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c1d9a03175 | |||
| 8b2f4c762b | |||
| ebdf8b9395 | |||
| 26dbdae365 | |||
| fef59d29cf | |||
| 152197cae7 | |||
| e73ff01c00 | |||
| b262c8bf2f | |||
| fe7c71e7c7 | |||
| 8264aa1515 | |||
| cfe0e950c4 | |||
| e512fb982a | |||
| 90be56f96d | |||
| 076af87f91 | |||
| 13529d130c | |||
| b0ff495fd3 | |||
| 8c282596d6 | |||
| fde5b664b4 | |||
| a653ca575b | |||
| 48513422f5 | |||
| 598e95a6ca | |||
| 348353199f | |||
| 1f47c7be88 | |||
| 931488ac4c | |||
| 337b3eb1f2 | |||
| 3cbc69bf38 | |||
| e003aea884 | |||
| 24ff2471a0 |
@@ -0,0 +1,6 @@
|
||||
dist
|
||||
embedded/mame64
|
||||
embedded/SDL2.framework
|
||||
build
|
||||
embedded/mame-data.tgz
|
||||
__pycache__
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
language: objective-c
|
||||
|
||||
osx_image:
|
||||
- xcode12
|
||||
- xcode11.3
|
||||
- xcode10.1
|
||||
xcode_project: Ample.xcodeproj
|
||||
xcode_scheme: Ample Lite
|
||||
|
||||
script:
|
||||
- set -o pipefail
|
||||
- xcodebuild -project "${TRAVIS_XCODE_PROJECT}" -target "Ample Lite" | xcpretty
|
||||
@@ -57,10 +57,33 @@
|
||||
B6109A4124F5F377005CB652 /* apple2cp.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1424F5F376005CB652 /* apple2cp.plist */; };
|
||||
B6109A4224F5F377005CB652 /* apple2p.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1524F5F376005CB652 /* apple2p.plist */; };
|
||||
B6109A4324F5F377005CB652 /* agat7.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1624F5F376005CB652 /* agat7.plist */; };
|
||||
B63C1B8B24FF4BF700511A71 /* Ample.m in Sources */ = {isa = PBXBuildFile; fileRef = B63C1B8A24FF4BF700511A71 /* Ample.m */; };
|
||||
B63C1B8C24FF4BF700511A71 /* Ample.m in Sources */ = {isa = PBXBuildFile; fileRef = B63C1B8A24FF4BF700511A71 /* Ample.m */; };
|
||||
B63C1B8E25004C6D00511A71 /* mame-data.tgz in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B8D25004C6D00511A71 /* mame-data.tgz */; };
|
||||
B63C1B90250088DD00511A71 /* roms.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B8F250088DC00511A71 /* roms.plist */; };
|
||||
B63C1B9425008A2700511A71 /* DownloadWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B63C1B9225008A2700511A71 /* DownloadWindowController.m */; };
|
||||
B63C1B9525008A2700511A71 /* DownloadWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B63C1B9225008A2700511A71 /* DownloadWindowController.m */; };
|
||||
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9325008A2700511A71 /* DownloadWindow.xib */; };
|
||||
B63C1B9725008A2700511A71 /* DownloadWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9325008A2700511A71 /* DownloadWindow.xib */; };
|
||||
B63C1B9D250192D800511A71 /* cece.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B98250192D700511A71 /* cece.plist */; };
|
||||
B63C1B9E250192D800511A71 /* cece.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B98250192D700511A71 /* cece.plist */; };
|
||||
B63C1B9F250192D800511A71 /* ceci.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B99250192D700511A71 /* ceci.plist */; };
|
||||
B63C1BA0250192D800511A71 /* ceci.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B99250192D700511A71 /* ceci.plist */; };
|
||||
B63C1BA1250192D800511A71 /* cecg.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9A250192D700511A71 /* cecg.plist */; };
|
||||
B63C1BA2250192D800511A71 /* cecg.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9A250192D700511A71 /* cecg.plist */; };
|
||||
B63C1BA3250192D800511A71 /* cec2000.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9B250192D800511A71 /* cec2000.plist */; };
|
||||
B63C1BA4250192D800511A71 /* cec2000.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9B250192D800511A71 /* cec2000.plist */; };
|
||||
B63C1BA5250192D800511A71 /* cecm.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9C250192D800511A71 /* cecm.plist */; };
|
||||
B63C1BA6250192D800511A71 /* cecm.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1B9C250192D800511A71 /* cecm.plist */; };
|
||||
B63C1BA8250192E600511A71 /* zijini.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1BA7250192E600511A71 /* zijini.plist */; };
|
||||
B63C1BA9250192E600511A71 /* zijini.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63C1BA7250192E600511A71 /* zijini.plist */; };
|
||||
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64979C124EF6703008ABD20 /* MediaViewController.m */; };
|
||||
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
|
||||
B65593B124ECB61800722E0C /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B65593B024ECB61800722E0C /* SlotViewController.m */; };
|
||||
B658DBF324FB58EC0063AB5F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6BA258624E99BEB005FB8FF /* Info.plist */; };
|
||||
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */; };
|
||||
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B66236B224FDA522006CABD7 /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B66236BC24FDA72E006CABD7 /* mame64 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B66236B724FDA686006CABD7 /* mame64 */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
B66236C124FDB7A6006CABD7 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B66236BF24FDB7A6006CABD7 /* Credits.rtf */; };
|
||||
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA257F24E99BE9005FB8FF /* AppDelegate.m */; };
|
||||
B6BA258224E99BEB005FB8FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B6BA258124E99BEB005FB8FF /* Assets.xcassets */; };
|
||||
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6BA258324E99BEB005FB8FF /* MainMenu.xib */; };
|
||||
@@ -69,12 +92,109 @@
|
||||
B6D6DE3B24FACF4F00661A5F /* Defaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3A24FACF4F00661A5F /* Defaults.plist */; };
|
||||
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */; };
|
||||
B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */; };
|
||||
B6E4B5B024FDE2670094A35C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA258724E99BEB005FB8FF /* main.m */; };
|
||||
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */; };
|
||||
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
|
||||
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64979C124EF6703008ABD20 /* MediaViewController.m */; };
|
||||
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */ = {isa = PBXBuildFile; fileRef = B60A6E1324EE0AE2004B7EEF /* FlippedView.m */; };
|
||||
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA257F24E99BE9005FB8FF /* AppDelegate.m */; };
|
||||
B6E4B5B624FDE2670094A35C /* LogWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6004DEE24FB05D600D38596 /* LogWindowController.m */; };
|
||||
B6E4B5B724FDE2670094A35C /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */; };
|
||||
B6E4B5B824FDE2670094A35C /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B65593B024ECB61800722E0C /* SlotViewController.m */; };
|
||||
B6E4B5BC24FDE2670094A35C /* apple2eeuk.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0624F5F372005CB652 /* apple2eeuk.plist */; };
|
||||
B6E4B5BD24FDE2670094A35C /* las128ex.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F724F5F36F005CB652 /* las128ex.plist */; };
|
||||
B6E4B5BE24FDE2670094A35C /* space84.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F024F5F36E005CB652 /* space84.plist */; };
|
||||
B6E4B5BF24FDE2670094A35C /* agat9.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1224F5F375005CB652 /* agat9.plist */; };
|
||||
B6E4B5C024FDE2670094A35C /* LaunchWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */; };
|
||||
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0424F5F372005CB652 /* apple1.plist */; };
|
||||
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0824F5F373005CB652 /* ace100.plist */; };
|
||||
B6E4B5C324FDE2670094A35C /* am64.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0724F5F372005CB652 /* am64.plist */; };
|
||||
B6E4B5C424FDE2670094A35C /* LogWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6004DEF24FB05D600D38596 /* LogWindow.xib */; };
|
||||
B6E4B5C524FDE2670094A35C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B6BA258124E99BEB005FB8FF /* Assets.xcassets */; };
|
||||
B6E4B5C624FDE2670094A35C /* apple2e.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099EA24F5F36E005CB652 /* apple2e.plist */; };
|
||||
B6E4B5C724FDE2670094A35C /* am100.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0F24F5F374005CB652 /* am100.plist */; };
|
||||
B6E4B5C824FDE2670094A35C /* laser2c.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F824F5F36F005CB652 /* laser2c.plist */; };
|
||||
B6E4B5C924FDE2670094A35C /* laser128.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1024F5F375005CB652 /* laser128.plist */; };
|
||||
B6E4B5CA24FDE2670094A35C /* apple2ep.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FB24F5F370005CB652 /* apple2ep.plist */; };
|
||||
B6E4B5CB24FDE2670094A35C /* apple2ees.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099EC24F5F36E005CB652 /* apple2ees.plist */; };
|
||||
B6E4B5CC24FDE2670094A35C /* prav8c.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0C24F5F374005CB652 /* prav8c.plist */; };
|
||||
B6E4B5CD24FDE2670094A35C /* ivelultr.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099EF24F5F36E005CB652 /* ivelultr.plist */; };
|
||||
B6E4B5CE24FDE2670094A35C /* maxxi.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0B24F5F373005CB652 /* maxxi.plist */; };
|
||||
B6E4B5CF24FDE2670094A35C /* apple2eefr.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0124F5F371005CB652 /* apple2eefr.plist */; };
|
||||
B6E4B5D124FDE2670094A35C /* spectred.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FF24F5F371005CB652 /* spectred.plist */; };
|
||||
B6E4B5D224FDE2670094A35C /* apple2cp.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1424F5F376005CB652 /* apple2cp.plist */; };
|
||||
B6E4B5D324FDE2670094A35C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6BA258324E99BEB005FB8FF /* MainMenu.xib */; };
|
||||
B6E4B5D424FDE2670094A35C /* prav82.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0D24F5F374005CB652 /* prav82.plist */; };
|
||||
B6E4B5D524FDE2670094A35C /* apple2euk.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F324F5F36F005CB652 /* apple2euk.plist */; };
|
||||
B6E4B5D624FDE2670094A35C /* uniap2ti.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0224F5F371005CB652 /* uniap2ti.plist */; };
|
||||
B6E4B5D724FDE2670094A35C /* apple2c.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F124F5F36F005CB652 /* apple2c.plist */; };
|
||||
B6E4B5D824FDE2670094A35C /* microeng.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099ED24F5F36E005CB652 /* microeng.plist */; };
|
||||
B6E4B5D924FDE2670094A35C /* albert.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1124F5F375005CB652 /* albert.plist */; };
|
||||
B6E4B5DA24FDE2670094A35C /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B66236BF24FDB7A6006CABD7 /* Credits.rtf */; };
|
||||
B6E4B5DB24FDE2670094A35C /* apple2p.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1524F5F376005CB652 /* apple2p.plist */; };
|
||||
B6E4B5DC24FDE2670094A35C /* hkc8800a.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099EB24F5F36E005CB652 /* hkc8800a.plist */; };
|
||||
B6E4B5DD24FDE2670094A35C /* apple2gsr0.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F624F5F36F005CB652 /* apple2gsr0.plist */; };
|
||||
B6E4B5DE24FDE2670094A35C /* mprof3.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F924F5F370005CB652 /* mprof3.plist */; };
|
||||
B6E4B5DF24FDE2670094A35C /* basis108.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0524F5F372005CB652 /* basis108.plist */; };
|
||||
B6E4B5E024FDE2670094A35C /* agat7.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1624F5F376005CB652 /* agat7.plist */; };
|
||||
B6E4B5E124FDE2670094A35C /* elppa.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FE24F5F370005CB652 /* elppa.plist */; };
|
||||
B6E4B5E224FDE2670094A35C /* apple2gsr1.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0E24F5F374005CB652 /* apple2gsr1.plist */; };
|
||||
B6E4B5E324FDE2670094A35C /* Defaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3A24FACF4F00661A5F /* Defaults.plist */; };
|
||||
B6E4B5E424FDE2670094A35C /* models.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F524F5F36F005CB652 /* models.plist */; };
|
||||
B6E4B5E524FDE2670094A35C /* craft2p.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A1324F5F375005CB652 /* craft2p.plist */; };
|
||||
B6E4B5E624FDE2670094A35C /* uniap2pt.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099EE24F5F36E005CB652 /* uniap2pt.plist */; };
|
||||
B6E4B5E724FDE2670094A35C /* las128e2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0A24F5F373005CB652 /* las128e2.plist */; };
|
||||
B6E4B5E824FDE2670094A35C /* MediaView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B61099E524F5F230005CB652 /* MediaView.xib */; };
|
||||
B6E4B5E924FDE2670094A35C /* uniap2en.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FA24F5F370005CB652 /* uniap2en.plist */; };
|
||||
B6E4B5EA24FDE2670094A35C /* apple3.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FD24F5F370005CB652 /* apple3.plist */; };
|
||||
B6E4B5EB24FDE2670094A35C /* apple2ee.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F424F5F36F005CB652 /* apple2ee.plist */; };
|
||||
B6E4B5EC24FDE2670094A35C /* dodo.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0924F5F373005CB652 /* dodo.plist */; };
|
||||
B6E4B5ED24FDE2670094A35C /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3724FAC8B500661A5F /* Preferences.xib */; };
|
||||
B6E4B5EE24FDE2670094A35C /* SlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B61099E324F5F230005CB652 /* SlotView.xib */; };
|
||||
B6E4B5EF24FDE2670094A35C /* apple2gs.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099FC24F5F370005CB652 /* apple2gs.plist */; };
|
||||
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F224F5F36F005CB652 /* apple2jp.plist */; };
|
||||
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0324F5F371005CB652 /* apple2.plist */; };
|
||||
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0024F5F371005CB652 /* prav8m.plist */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
B66236B124FDA443006CABD7 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B66236BB24FDA71D006CABD7 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 6;
|
||||
files = (
|
||||
B66236BC24FDA72E006CABD7 /* mame64 in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B6E4B5F324FDE2670094A35C /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
B6004DED24FB05D600D38596 /* LogWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogWindowController.h; sourceTree = "<group>"; };
|
||||
B6004DEE24FB05D600D38596 /* LogWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LogWindowController.m; sourceTree = "<group>"; };
|
||||
B6004DEF24FB05D600D38596 /* LogWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LogWindow.xib; sourceTree = "<group>"; };
|
||||
B6004DEF24FB05D600D38596 /* LogWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = LogWindow.xib; path = Base.lproj/LogWindow.xib; sourceTree = "<group>"; };
|
||||
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2gs.plist; sourceTree = "<group>"; };
|
||||
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlippedView.h; sourceTree = "<group>"; };
|
||||
B60A6E1324EE0AE2004B7EEF /* FlippedView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlippedView.m; sourceTree = "<group>"; };
|
||||
@@ -125,12 +245,31 @@
|
||||
B6109A1424F5F376005CB652 /* apple2cp.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2cp.plist; sourceTree = "<group>"; };
|
||||
B6109A1524F5F376005CB652 /* apple2p.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2p.plist; sourceTree = "<group>"; };
|
||||
B6109A1624F5F376005CB652 /* agat7.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = agat7.plist; sourceTree = "<group>"; };
|
||||
B63C1B8924FF4B7100511A71 /* Ample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ample.h; sourceTree = "<group>"; };
|
||||
B63C1B8A24FF4BF700511A71 /* Ample.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Ample.m; sourceTree = "<group>"; };
|
||||
B63C1B8D25004C6D00511A71 /* mame-data.tgz */ = {isa = PBXFileReference; lastKnownFileType = file; name = "mame-data.tgz"; path = "embedded/mame-data.tgz"; sourceTree = "<group>"; };
|
||||
B63C1B8F250088DC00511A71 /* roms.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = roms.plist; sourceTree = "<group>"; };
|
||||
B63C1B9125008A2700511A71 /* DownloadWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DownloadWindowController.h; sourceTree = "<group>"; };
|
||||
B63C1B9225008A2700511A71 /* DownloadWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DownloadWindowController.m; sourceTree = "<group>"; };
|
||||
B63C1B9325008A2700511A71 /* DownloadWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = DownloadWindow.xib; path = Base.lproj/DownloadWindow.xib; sourceTree = "<group>"; };
|
||||
B63C1B98250192D700511A71 /* cece.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = cece.plist; sourceTree = "<group>"; };
|
||||
B63C1B99250192D700511A71 /* ceci.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ceci.plist; sourceTree = "<group>"; };
|
||||
B63C1B9A250192D700511A71 /* cecg.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = cecg.plist; sourceTree = "<group>"; };
|
||||
B63C1B9B250192D800511A71 /* cec2000.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = cec2000.plist; sourceTree = "<group>"; };
|
||||
B63C1B9C250192D800511A71 /* cecm.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = cecm.plist; sourceTree = "<group>"; };
|
||||
B63C1BA7250192E600511A71 /* zijini.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = zijini.plist; sourceTree = "<group>"; };
|
||||
B64979C024EF6703008ABD20 /* MediaViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaViewController.h; sourceTree = "<group>"; };
|
||||
B64979C124EF6703008ABD20 /* MediaViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MediaViewController.m; sourceTree = "<group>"; };
|
||||
B64E15A724EA1D5300E8AD3D /* MachineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MachineViewController.h; sourceTree = "<group>"; };
|
||||
B64E15A824EA1D5300E8AD3D /* MachineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MachineViewController.m; sourceTree = "<group>"; };
|
||||
B65593AF24ECB61800722E0C /* SlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotViewController.h; sourceTree = "<group>"; };
|
||||
B65593B024ECB61800722E0C /* SlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlotViewController.m; sourceTree = "<group>"; };
|
||||
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreferencesWindowController.h; sourceTree = "<group>"; };
|
||||
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindowController.m; sourceTree = "<group>"; };
|
||||
B66236B224FDA522006CABD7 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = embedded/SDL2.framework; sourceTree = "<group>"; };
|
||||
B66236B724FDA686006CABD7 /* mame64 */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = mame64; path = embedded/mame64; sourceTree = "<group>"; };
|
||||
B66236B824FDA698006CABD7 /* mame64 */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = mame64; path = embedded/mame64; sourceTree = "<group>"; };
|
||||
B66236C024FDB7A6006CABD7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = "<group>"; };
|
||||
B67BD48424EE249D0073E334 /* apple1.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple1.plist; sourceTree = "<group>"; };
|
||||
B6BA257B24E99BE9005FB8FF /* Ample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
@@ -145,6 +284,7 @@
|
||||
B6D6DE3D24FADF8B00661A5F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchWindow.xib; sourceTree = "<group>"; };
|
||||
B6D6DE3F24FADFAC00661A5F /* LaunchWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LaunchWindowController.h; sourceTree = "<group>"; };
|
||||
B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LaunchWindowController.m; sourceTree = "<group>"; };
|
||||
B6E4B5FA24FDE2670094A35C /* Ample Lite.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Ample Lite.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -155,6 +295,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B6E4B5B924FDE2670094A35C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
@@ -170,6 +317,13 @@
|
||||
B64E15AF24EA365E00E8AD3D /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B63C1B8F250088DC00511A71 /* roms.plist */,
|
||||
B63C1B9B250192D800511A71 /* cec2000.plist */,
|
||||
B63C1B98250192D700511A71 /* cece.plist */,
|
||||
B63C1B9A250192D700511A71 /* cecg.plist */,
|
||||
B63C1B99250192D700511A71 /* ceci.plist */,
|
||||
B63C1B9C250192D800511A71 /* cecm.plist */,
|
||||
B63C1BA7250192E600511A71 /* zijini.plist */,
|
||||
B6109A0824F5F373005CB652 /* ace100.plist */,
|
||||
B6109A1624F5F376005CB652 /* agat7.plist */,
|
||||
B6109A1224F5F375005CB652 /* agat9.plist */,
|
||||
@@ -219,12 +373,32 @@
|
||||
path = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B66236B624FDA686006CABD7 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B66236B724FDA686006CABD7 /* mame64 */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B66236BD24FDA7EA006CABD7 /* Embedded Content */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B63C1B8D25004C6D00511A71 /* mame-data.tgz */,
|
||||
B66236B824FDA698006CABD7 /* mame64 */,
|
||||
B66236B224FDA522006CABD7 /* SDL2.framework */,
|
||||
);
|
||||
name = "Embedded Content";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6BA257224E99BE9005FB8FF = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6BA257D24E99BE9005FB8FF /* Ample */,
|
||||
B66236BD24FDA7EA006CABD7 /* Embedded Content */,
|
||||
B6BA257C24E99BE9005FB8FF /* Products */,
|
||||
B649798C24EEC165008ABD20 /* Recovered References */,
|
||||
B66236B624FDA686006CABD7 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -232,6 +406,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6BA257B24E99BE9005FB8FF /* Ample.app */,
|
||||
B6E4B5FA24FDE2670094A35C /* Ample Lite.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -239,8 +414,12 @@
|
||||
B6BA257D24E99BE9005FB8FF /* Ample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B63C1B9125008A2700511A71 /* DownloadWindowController.h */,
|
||||
B63C1B9225008A2700511A71 /* DownloadWindowController.m */,
|
||||
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
|
||||
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
|
||||
B63C1B8924FF4B7100511A71 /* Ample.h */,
|
||||
B63C1B8A24FF4BF700511A71 /* Ample.m */,
|
||||
B6D6DE3F24FADFAC00661A5F /* LaunchWindowController.h */,
|
||||
B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */,
|
||||
B65593B024ECB61800722E0C /* SlotViewController.m */,
|
||||
@@ -253,6 +432,8 @@
|
||||
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */,
|
||||
B6004DED24FB05D600D38596 /* LogWindowController.h */,
|
||||
B6004DEE24FB05D600D38596 /* LogWindowController.m */,
|
||||
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */,
|
||||
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */,
|
||||
B6BA258124E99BEB005FB8FF /* Assets.xcassets */,
|
||||
B64E15AF24EA365E00E8AD3D /* Resources */,
|
||||
B6BA258624E99BEB005FB8FF /* Info.plist */,
|
||||
@@ -267,11 +448,13 @@
|
||||
B6D6DE4224FAEE8900661A5F /* Nibs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */,
|
||||
B63C1B9325008A2700511A71 /* DownloadWindow.xib */,
|
||||
B66236BF24FDB7A6006CABD7 /* Credits.rtf */,
|
||||
B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */,
|
||||
B6004DEF24FB05D600D38596 /* LogWindow.xib */,
|
||||
B6D6DE3724FAC8B500661A5F /* Preferences.xib */,
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */,
|
||||
B61099E524F5F230005CB652 /* MediaView.xib */,
|
||||
B6D6DE3724FAC8B500661A5F /* Preferences.xib */,
|
||||
B61099E324F5F230005CB652 /* SlotView.xib */,
|
||||
);
|
||||
name = Nibs;
|
||||
@@ -287,6 +470,8 @@
|
||||
B6BA257724E99BE9005FB8FF /* Sources */,
|
||||
B6BA257824E99BE9005FB8FF /* Frameworks */,
|
||||
B6BA257924E99BE9005FB8FF /* Resources */,
|
||||
B66236B124FDA443006CABD7 /* Embed Frameworks */,
|
||||
B66236BB24FDA71D006CABD7 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -297,6 +482,24 @@
|
||||
productReference = B6BA257B24E99BE9005FB8FF /* Ample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
B6E4B5AE24FDE2670094A35C /* Ample Lite */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = B6E4B5F724FDE2670094A35C /* Build configuration list for PBXNativeTarget "Ample Lite" */;
|
||||
buildPhases = (
|
||||
B6E4B5AF24FDE2670094A35C /* Sources */,
|
||||
B6E4B5B924FDE2670094A35C /* Frameworks */,
|
||||
B6E4B5BB24FDE2670094A35C /* Resources */,
|
||||
B6E4B5F324FDE2670094A35C /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Ample Lite";
|
||||
productName = MA2ME;
|
||||
productReference = B6E4B5FA24FDE2670094A35C /* Ample Lite.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
@@ -325,6 +528,7 @@
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
B6BA257A24E99BE9005FB8FF /* Ample */,
|
||||
B6E4B5AE24FDE2670094A35C /* Ample Lite */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -336,8 +540,10 @@
|
||||
files = (
|
||||
B6109A3324F5F377005CB652 /* apple2eeuk.plist in Resources */,
|
||||
B6109A2424F5F377005CB652 /* las128ex.plist in Resources */,
|
||||
B63C1BA8250192E600511A71 /* zijini.plist in Resources */,
|
||||
B6109A1D24F5F377005CB652 /* space84.plist in Resources */,
|
||||
B6109A3F24F5F377005CB652 /* agat9.plist in Resources */,
|
||||
B63C1B9D250192D800511A71 /* cece.plist in Resources */,
|
||||
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */,
|
||||
B6109A3124F5F377005CB652 /* apple1.plist in Resources */,
|
||||
B6109A3524F5F377005CB652 /* ace100.plist in Resources */,
|
||||
@@ -354,7 +560,6 @@
|
||||
B6109A1C24F5F377005CB652 /* ivelultr.plist in Resources */,
|
||||
B6109A3824F5F377005CB652 /* maxxi.plist in Resources */,
|
||||
B6109A2E24F5F377005CB652 /* apple2eefr.plist in Resources */,
|
||||
B658DBF324FB58EC0063AB5F /* Info.plist in Resources */,
|
||||
B6109A2C24F5F377005CB652 /* spectred.plist in Resources */,
|
||||
B6109A4124F5F377005CB652 /* apple2cp.plist in Resources */,
|
||||
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */,
|
||||
@@ -364,23 +569,31 @@
|
||||
B6109A1E24F5F377005CB652 /* apple2c.plist in Resources */,
|
||||
B6109A1A24F5F377005CB652 /* microeng.plist in Resources */,
|
||||
B6109A3E24F5F377005CB652 /* albert.plist in Resources */,
|
||||
B66236C124FDB7A6006CABD7 /* Credits.rtf in Resources */,
|
||||
B6109A4224F5F377005CB652 /* apple2p.plist in Resources */,
|
||||
B6109A1824F5F377005CB652 /* hkc8800a.plist in Resources */,
|
||||
B6109A2324F5F377005CB652 /* apple2gsr0.plist in Resources */,
|
||||
B63C1BA1250192D800511A71 /* cecg.plist in Resources */,
|
||||
B63C1BA3250192D800511A71 /* cec2000.plist in Resources */,
|
||||
B6109A2624F5F377005CB652 /* mprof3.plist in Resources */,
|
||||
B63C1B9F250192D800511A71 /* ceci.plist in Resources */,
|
||||
B6109A3224F5F377005CB652 /* basis108.plist in Resources */,
|
||||
B6109A4324F5F377005CB652 /* agat7.plist in Resources */,
|
||||
B6109A2B24F5F377005CB652 /* elppa.plist in Resources */,
|
||||
B63C1B8E25004C6D00511A71 /* mame-data.tgz in Resources */,
|
||||
B6109A3B24F5F377005CB652 /* apple2gsr1.plist in Resources */,
|
||||
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
B6D6DE3B24FACF4F00661A5F /* Defaults.plist in Resources */,
|
||||
B6109A2224F5F377005CB652 /* models.plist in Resources */,
|
||||
B6109A4024F5F377005CB652 /* craft2p.plist in Resources */,
|
||||
B6109A1B24F5F377005CB652 /* uniap2pt.plist in Resources */,
|
||||
B6109A3724F5F377005CB652 /* las128e2.plist in Resources */,
|
||||
B61099E824F5F231005CB652 /* MediaView.xib in Resources */,
|
||||
B63C1B90250088DD00511A71 /* roms.plist in Resources */,
|
||||
B6109A2724F5F377005CB652 /* uniap2en.plist in Resources */,
|
||||
B6109A2A24F5F377005CB652 /* apple3.plist in Resources */,
|
||||
B6109A2124F5F377005CB652 /* apple2ee.plist in Resources */,
|
||||
B63C1BA5250192D800511A71 /* cecm.plist in Resources */,
|
||||
B6109A3624F5F377005CB652 /* dodo.plist in Resources */,
|
||||
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
|
||||
B61099E724F5F231005CB652 /* SlotView.xib in Resources */,
|
||||
@@ -391,6 +604,74 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B6E4B5BB24FDE2670094A35C /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B6E4B5BC24FDE2670094A35C /* apple2eeuk.plist in Resources */,
|
||||
B63C1BA0250192D800511A71 /* ceci.plist in Resources */,
|
||||
B6E4B5BD24FDE2670094A35C /* las128ex.plist in Resources */,
|
||||
B6E4B5BE24FDE2670094A35C /* space84.plist in Resources */,
|
||||
B63C1BA6250192D800511A71 /* cecm.plist in Resources */,
|
||||
B6E4B5BF24FDE2670094A35C /* agat9.plist in Resources */,
|
||||
B6E4B5C024FDE2670094A35C /* LaunchWindow.xib in Resources */,
|
||||
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */,
|
||||
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */,
|
||||
B6E4B5C324FDE2670094A35C /* am64.plist in Resources */,
|
||||
B6E4B5C424FDE2670094A35C /* LogWindow.xib in Resources */,
|
||||
B6E4B5C524FDE2670094A35C /* Assets.xcassets in Resources */,
|
||||
B6E4B5C624FDE2670094A35C /* apple2e.plist in Resources */,
|
||||
B63C1BA2250192D800511A71 /* cecg.plist in Resources */,
|
||||
B6E4B5C724FDE2670094A35C /* am100.plist in Resources */,
|
||||
B6E4B5C824FDE2670094A35C /* laser2c.plist in Resources */,
|
||||
B6E4B5C924FDE2670094A35C /* laser128.plist in Resources */,
|
||||
B6E4B5CA24FDE2670094A35C /* apple2ep.plist in Resources */,
|
||||
B6E4B5CB24FDE2670094A35C /* apple2ees.plist in Resources */,
|
||||
B6E4B5CC24FDE2670094A35C /* prav8c.plist in Resources */,
|
||||
B6E4B5CD24FDE2670094A35C /* ivelultr.plist in Resources */,
|
||||
B6E4B5CE24FDE2670094A35C /* maxxi.plist in Resources */,
|
||||
B6E4B5CF24FDE2670094A35C /* apple2eefr.plist in Resources */,
|
||||
B6E4B5D124FDE2670094A35C /* spectred.plist in Resources */,
|
||||
B63C1B9725008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
B6E4B5D224FDE2670094A35C /* apple2cp.plist in Resources */,
|
||||
B6E4B5D324FDE2670094A35C /* MainMenu.xib in Resources */,
|
||||
B6E4B5D424FDE2670094A35C /* prav82.plist in Resources */,
|
||||
B6E4B5D524FDE2670094A35C /* apple2euk.plist in Resources */,
|
||||
B6E4B5D624FDE2670094A35C /* uniap2ti.plist in Resources */,
|
||||
B6E4B5D724FDE2670094A35C /* apple2c.plist in Resources */,
|
||||
B6E4B5D824FDE2670094A35C /* microeng.plist in Resources */,
|
||||
B6E4B5D924FDE2670094A35C /* albert.plist in Resources */,
|
||||
B6E4B5DA24FDE2670094A35C /* Credits.rtf in Resources */,
|
||||
B6E4B5DB24FDE2670094A35C /* apple2p.plist in Resources */,
|
||||
B63C1BA4250192D800511A71 /* cec2000.plist in Resources */,
|
||||
B6E4B5DC24FDE2670094A35C /* hkc8800a.plist in Resources */,
|
||||
B6E4B5DD24FDE2670094A35C /* apple2gsr0.plist in Resources */,
|
||||
B6E4B5DE24FDE2670094A35C /* mprof3.plist in Resources */,
|
||||
B6E4B5DF24FDE2670094A35C /* basis108.plist in Resources */,
|
||||
B6E4B5E024FDE2670094A35C /* agat7.plist in Resources */,
|
||||
B6E4B5E124FDE2670094A35C /* elppa.plist in Resources */,
|
||||
B6E4B5E224FDE2670094A35C /* apple2gsr1.plist in Resources */,
|
||||
B6E4B5E324FDE2670094A35C /* Defaults.plist in Resources */,
|
||||
B6E4B5E424FDE2670094A35C /* models.plist in Resources */,
|
||||
B63C1BA9250192E600511A71 /* zijini.plist in Resources */,
|
||||
B6E4B5E524FDE2670094A35C /* craft2p.plist in Resources */,
|
||||
B6E4B5E624FDE2670094A35C /* uniap2pt.plist in Resources */,
|
||||
B6E4B5E724FDE2670094A35C /* las128e2.plist in Resources */,
|
||||
B63C1B9E250192D800511A71 /* cece.plist in Resources */,
|
||||
B6E4B5E824FDE2670094A35C /* MediaView.xib in Resources */,
|
||||
B6E4B5E924FDE2670094A35C /* uniap2en.plist in Resources */,
|
||||
B6E4B5EA24FDE2670094A35C /* apple3.plist in Resources */,
|
||||
B6E4B5EB24FDE2670094A35C /* apple2ee.plist in Resources */,
|
||||
B6E4B5EC24FDE2670094A35C /* dodo.plist in Resources */,
|
||||
B6E4B5ED24FDE2670094A35C /* Preferences.xib in Resources */,
|
||||
B6E4B5EE24FDE2670094A35C /* SlotView.xib in Resources */,
|
||||
B6E4B5EF24FDE2670094A35C /* apple2gs.plist in Resources */,
|
||||
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */,
|
||||
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */,
|
||||
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -399,13 +680,34 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B6BA258824E99BEB005FB8FF /* main.m in Sources */,
|
||||
B63C1B8B24FF4BF700511A71 /* Ample.m in Sources */,
|
||||
B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */,
|
||||
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */,
|
||||
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */,
|
||||
B60A6E1424EE0AE2004B7EEF /* FlippedView.m in Sources */,
|
||||
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */,
|
||||
B6004DF024FB05D600D38596 /* LogWindowController.m in Sources */,
|
||||
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */,
|
||||
B65593B124ECB61800722E0C /* SlotViewController.m in Sources */,
|
||||
B63C1B9425008A2700511A71 /* DownloadWindowController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B6E4B5AF24FDE2670094A35C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B6E4B5B024FDE2670094A35C /* main.m in Sources */,
|
||||
B63C1B8C24FF4BF700511A71 /* Ample.m in Sources */,
|
||||
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */,
|
||||
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */,
|
||||
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */,
|
||||
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */,
|
||||
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */,
|
||||
B6E4B5B624FDE2670094A35C /* LogWindowController.m in Sources */,
|
||||
B6E4B5B724FDE2670094A35C /* PreferencesWindowController.m in Sources */,
|
||||
B6E4B5B824FDE2670094A35C /* SlotViewController.m in Sources */,
|
||||
B63C1B9525008A2700511A71 /* DownloadWindowController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -428,6 +730,14 @@
|
||||
name = MediaView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B66236BF24FDB7A6006CABD7 /* Credits.rtf */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B66236C024FDB7A6006CABD7 /* Base */,
|
||||
);
|
||||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@@ -571,6 +881,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -588,6 +899,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -598,6 +910,42 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B6E4B5F824FDE2670094A35C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ksherlock.ample-lite";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B6E4B5F924FDE2670094A35C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ksherlock.ample-lite";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
@@ -619,6 +967,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
B6E4B5F724FDE2670094A35C /* Build configuration list for PBXNativeTarget "Ample Lite" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B6E4B5F824FDE2670094A35C /* Debug */,
|
||||
B6E4B5F924FDE2670094A35C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = B6BA257324E99BE9005FB8FF /* Project object */;
|
||||
|
||||
@@ -4,6 +4,16 @@
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Ample Lite.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>Ample copy.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>Ample.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// Ample.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/1/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef Ample_h
|
||||
#define Ample_h
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NSURL *SupportDirectory(void);
|
||||
NSString *SupportDirectoryPath(void);
|
||||
|
||||
/* NSUserDefaults keys */
|
||||
extern NSString *kUseCustomMame;
|
||||
extern NSString *kMamePath;
|
||||
extern NSString *kAutoCloseLogWindow;
|
||||
extern NSString *kMameComponentsDate;
|
||||
|
||||
#endif /* Ample_h */
|
||||
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// Ample.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/1/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#include "Ample.h"
|
||||
|
||||
NSURL *SupportDirectory(void) {
|
||||
static NSURL *cached = nil;
|
||||
|
||||
if (!cached) {
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSError *error = nil;
|
||||
|
||||
NSURL *url = [fm URLForDirectory: NSApplicationSupportDirectory inDomain: NSUserDomainMask appropriateForURL: nil create: YES error: &error];
|
||||
cached = [url URLByAppendingPathComponent: @"Ample"];
|
||||
|
||||
[fm createDirectoryAtURL: cached withIntermediateDirectories: YES attributes: nil error: &error];
|
||||
}
|
||||
return cached;
|
||||
|
||||
}
|
||||
|
||||
NSString *SupportDirectoryPath(void) {
|
||||
static NSString *cached = nil;
|
||||
|
||||
if (!cached) {
|
||||
NSURL *url = SupportDirectory();
|
||||
cached = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
|
||||
NSString *kUseCustomMame = @"UseCustomMame";
|
||||
NSString *kMamePath = @"MamePath";
|
||||
NSString *kAutoCloseLogWindow = @"AutoCloseLogWindow";
|
||||
NSString *kMameComponentsDate = @"MameComponentsDate";
|
||||
+92
-5
@@ -5,19 +5,21 @@
|
||||
// Created by Kelvin Sherlock on 8/16/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Ample.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "SlotViewController.h"
|
||||
#import "MediaViewController.h"
|
||||
#import "LaunchWindowController.h"
|
||||
#import "PreferencesWindowController.h"
|
||||
#import "DownloadWindowController.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
@property (weak) IBOutlet NSWindow *installWindow;
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate {
|
||||
NSWindowController *_prefs;
|
||||
NSWindowController *_launcher;
|
||||
NSWindowController *_downloader;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,10 +39,87 @@
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults: dict];
|
||||
}
|
||||
|
||||
_launcher = [LaunchWindowController new];
|
||||
|
||||
|
||||
if ([self installMameComponents]) {
|
||||
[self displayLaunchWindow];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(void)displayLaunchWindow {
|
||||
|
||||
if (!_launcher) {
|
||||
_launcher = [LaunchWindowController new];
|
||||
}
|
||||
[_launcher showWindow: nil];
|
||||
}
|
||||
|
||||
-(BOOL)installMameComponents {
|
||||
|
||||
/* install the mame data components. */
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSURL *sd = SupportDirectory();
|
||||
|
||||
NSURL *ample_url = [sd URLByAppendingPathComponent: @"Ample.plist"];
|
||||
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithContentsOfURL: ample_url];
|
||||
|
||||
NSDate *oldDate = [d objectForKey: kMameComponentsDate];
|
||||
NSDate *newDate = [defaults objectForKey: kMameComponentsDate];
|
||||
if (![newDate isKindOfClass: [NSDate class]])
|
||||
newDate = nil;
|
||||
|
||||
if (!newDate) return YES; //????
|
||||
if (oldDate && [oldDate compare: newDate] >= 0) return YES;
|
||||
|
||||
NSString *path = [bundle pathForResource: @"mame-data" ofType: @"tgz"];
|
||||
if (!path) return YES; // Ample Lite?
|
||||
|
||||
|
||||
NSWindow *win = _installWindow;
|
||||
[win makeKeyAndOrderFront: nil];
|
||||
NSTask *task = [NSTask new];
|
||||
NSArray *argv = @[
|
||||
@"xfz",
|
||||
path
|
||||
];
|
||||
[task setExecutableURL: [NSURL fileURLWithPath: @"/usr/bin/tar"]];
|
||||
[task setArguments: argv];
|
||||
[task setCurrentDirectoryURL: sd];
|
||||
|
||||
|
||||
dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC));
|
||||
[task setTerminationHandler: ^(NSTask *task){
|
||||
|
||||
dispatch_after(when, dispatch_get_main_queue(), ^{
|
||||
|
||||
int st = [task terminationStatus];
|
||||
|
||||
if (st) {
|
||||
NSAlert *alert = [NSAlert new];
|
||||
[alert setMessageText: @"An error occurred extracting MAME components"];
|
||||
[alert runModal];
|
||||
[win close];
|
||||
return;
|
||||
}
|
||||
|
||||
if (d) {
|
||||
[d setObject: newDate forKey: kMameComponentsDate];
|
||||
[d writeToURL: ample_url atomically: YES];
|
||||
} else {
|
||||
[@{ kMameComponentsDate: newDate } writeToURL: ample_url atomically: YES];
|
||||
}
|
||||
[win close];
|
||||
[self displayLaunchWindow];
|
||||
});
|
||||
|
||||
}];
|
||||
[task launch];
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)aNotification {
|
||||
// Insert code here to tear down your application
|
||||
@@ -58,10 +137,18 @@
|
||||
|
||||
- (IBAction)displayPreferences:(id)sender {
|
||||
if (!_prefs) {
|
||||
_prefs = [[NSWindowController alloc] initWithWindowNibName: @"Preferences"];
|
||||
_prefs = [PreferencesWindowController new];
|
||||
}
|
||||
[_prefs showWindow: sender];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)downloadROMS:(id)sender {
|
||||
|
||||
if (!_downloader) {
|
||||
_downloader = [DownloadWindowController new];
|
||||
}
|
||||
[_downloader showWindow: sender];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;}
|
||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;\cssrgb\c100000\c100000\c100000;}
|
||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f0\b\fs36 \cf2 Ample\cf0
|
||||
\f1\b0\fs28 would like to thank\'85\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\pardeftab720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://www.mamedev.org"}}{\fldrslt
|
||||
\f0\b\fs36 \cf0 \cb3 \expnd0\expndtw0\kerning0
|
||||
MAME}}\cb3 \expnd0\expndtw0\kerning0
|
||||
\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qj\partightenfactor0
|
||||
\cf0 \cb1 \kerning1\expnd0\expndtw0 The MAME project as a whole is distributed under the terms of the {\field{\*\fldinst{HYPERLINK "https://opensource.org/licenses/GPL-2.0"}}{\fldrslt GNU General Public License, 2}} (GPL-2.0), since it contains code made available under multiple GPL-compatible licenses. A great majority of files (over 90% including core files) are under the {\field{\*\fldinst{HYPERLINK "https://opensource.org/licenses/BSD-3-Clause"}}{\fldrslt BSD-3-Clause License}} and we would encourage new contributors to distribute files under this license.\
|
||||
\
|
||||
Please note that MAME is a registered trademark of Gregory Ember, and permission is required to use the "MAME" name, logo or wordmark.\cb3 \expnd0\expndtw0\kerning0
|
||||
\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\pardeftab720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://libsdl.org"}}{\fldrslt
|
||||
\f0\b\fs36 \cf0 SDL}}\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qj\partightenfactor0
|
||||
\cf0 \cb1 \kerning1\expnd0\expndtw0 SDL 2.0 is distributed under the {\field{\*\fldinst{HYPERLINK "https://libsdl.org/license.php"}}{\fldrslt zlib license}}. This license allows you to use SDL freely in any software.\
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="DownloadWindowController">
|
||||
<connections>
|
||||
<outlet property="tableView" destination="FLX-Wt-y53" id="a4O-pk-EAt"/>
|
||||
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="ROMs" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="400" height="500"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="300" height="300"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="500"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rg5-Qf-4Mw">
|
||||
<rect key="frame" x="324" y="19" width="56" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="i6Z-OM-lqE">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent">.</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<connections>
|
||||
<binding destination="-2" name="enabled" keyPath="self.active" id="mBP-8S-yGB"/>
|
||||
</connections>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancelAll:" target="-2" id="ycl-eJ-ByB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CMD-nT-mEa">
|
||||
<rect key="frame" x="0.0" y="58" width="402" height="443"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" ambiguous="YES" drawsBackground="NO" id="Igp-aH-flp">
|
||||
<rect key="frame" x="1" y="1" width="400" height="441"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="FLX-Wt-y53">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="441"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableViewGridLines key="gridStyleMask" dashed="YES"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="397" minWidth="40" maxWidth="1000" id="5jP-bY-fhI">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="VZP-ti-Ti8">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="Cell" focusRingType="none" id="aBv-F5-XWo">
|
||||
<rect key="frame" x="1" y="1" width="397" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pWm-hb-BXB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="397" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="p71-gJ-vFV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="pWm-hb-BXB" id="NNG-rj-AAQ"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="DownloadCell" focusRingType="none" id="onK-6l-2iV" customClass="DownloadTableCellView">
|
||||
<rect key="frame" x="1" y="20" width="397" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A44-us-TEl">
|
||||
<rect key="frame" x="25" y="28" width="371" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="NSU-6I-nsG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<progressIndicator wantsLayer="YES" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="jBN-UJ-tWi">
|
||||
<rect key="frame" x="3" y="29" width="16" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hfu-hP-QAH">
|
||||
<rect key="frame" x="25" y="3" width="371" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="1cQ-Zh-q0o">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="activity" destination="jBN-UJ-tWi" id="ZwD-yU-Vne"/>
|
||||
<outlet property="statusTextField" destination="hfu-hP-QAH" id="8Hv-BB-kYA"/>
|
||||
<outlet property="textField" destination="A44-us-TEl" id="Ta5-nd-ed1"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="Ghf-k9-bRK"/>
|
||||
<outlet property="delegate" destination="-2" id="rpR-0W-4Nu"/>
|
||||
<outlet property="menu" destination="RJM-21-hjO" id="xpL-0n-1jm"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="pcd-MD-gho">
|
||||
<rect key="frame" x="1" y="314" width="480" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="jGc-PE-vaF">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fhd-vr-Q2G">
|
||||
<rect key="frame" x="20" y="19" width="124" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Download Missing" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="AKx-eg-iLS">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="downloadMissing:" target="-2" id="azE-F0-5wx"/>
|
||||
<binding destination="-2" name="enabled" keyPath="self.active" id="NOL-Db-hgp">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="142" y="179"/>
|
||||
</window>
|
||||
<menu id="RJM-21-hjO">
|
||||
<items>
|
||||
<menuItem title="Show in Finder" tag="1" id="hDp-fh-9nU">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showInFinder:" target="-2" id="ltL-yL-7EP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Download" tag="2" id="ree-Zg-jYB">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="download:" target="-2" id="2ua-nq-Zy1"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Cancel" tag="3" id="7fY-83-Ads">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="cancel:" target="-2" id="cHE-Wq-jwc"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="fC3-h6-xe2"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-348" y="164"/>
|
||||
</menu>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -13,7 +13,7 @@
|
||||
<outlet property="mediaController" destination="t7c-zy-czN" id="a7d-HC-TWx"/>
|
||||
<outlet property="mediaView" destination="J9O-xI-P5J" id="PmZ-VC-4SN"/>
|
||||
<outlet property="slotController" destination="lyS-mc-3Tf" id="LXo-Ii-fDX"/>
|
||||
<outlet property="slotView" destination="P9d-sS-qEb" id="T2q-ON-owm"/>
|
||||
<outlet property="slotView" destination="P9d-sS-qEb" id="qlH-u0-hzq"/>
|
||||
<outlet property="window" destination="Vze-YF-m6e" id="JUs-Eb-MW8"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
@@ -21,20 +21,19 @@
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Ample" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="Vze-YF-m6e">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="335" y="390" width="718" height="947"/>
|
||||
<rect key="contentRect" x="335" y="390" width="718" height="763"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="Ssv-Jw-EE0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="947"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="763"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oVt-eD-aaj">
|
||||
<rect key="frame" x="0.0" y="747" width="718" height="200"/>
|
||||
<rect key="frame" x="0.0" y="563" width="718" height="200"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zVI-uU-muo">
|
||||
<rect key="frame" x="18" y="102" width="71" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Window" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="vx1-I7-8kN">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -45,7 +44,7 @@
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZUp-ni-Rr6">
|
||||
<rect key="frame" x="18" y="82" width="62" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Debug" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="6is-QN-JEc">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -67,11 +66,15 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nKp-px-nHg">
|
||||
<rect key="frame" x="595" y="53" width="111" height="32"/>
|
||||
<rect key="frame" x="587" y="58" width="111" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Launch" bezelStyle="rounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
|
||||
<buttonCell key="cell" type="roundTextured" title="Launch" bezelStyle="texturedRounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="launchAction:" target="-2" id="a4d-zv-1CU"/>
|
||||
@@ -79,7 +82,7 @@
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rLP-n2-0eY">
|
||||
<rect key="frame" x="18" y="62" width="91" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="No Throttle" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="NyE-jT-WqC">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -90,7 +93,7 @@
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D5h-dm-fuZ">
|
||||
<rect key="frame" x="131" y="102" width="104" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Square Pixels" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yWK-BP-7Z9">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -99,17 +102,9 @@
|
||||
<binding destination="-2" name="value" keyPath="self.mameSquarePixels" id="BiP-wC-Hpn"/>
|
||||
</connections>
|
||||
</button>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P9d-sS-qEb" customClass="FlippedView">
|
||||
<rect key="frame" x="20" y="169" width="306" height="570"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J9O-xI-P5J" customClass="FlippedView">
|
||||
<rect key="frame" x="392" y="169" width="306" height="570"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zoQ-mU-ARl">
|
||||
<rect key="frame" x="261" y="102" width="67" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="No Blur" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="r3s-5h-Xv5">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -119,19 +114,29 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nNO-3T-OAy">
|
||||
<rect key="frame" x="595" y="77" width="109" height="32"/>
|
||||
<rect key="frame" x="470" y="58" width="109" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Reset Slots" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uii-5h-2R2">
|
||||
<buttonCell key="cell" type="roundTextured" title="Reset Slots" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uii-5h-2R2">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent">r</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="resetSlots:" target="lyS-mc-3Tf" id="1qi-N0-Q8B"/>
|
||||
</connections>
|
||||
</button>
|
||||
<customView id="P9d-sS-qEb" customClass="FlippedView">
|
||||
<rect key="frame" x="20" y="155" width="306" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J9O-xI-P5J" customClass="FlippedView">
|
||||
<rect key="frame" x="392" y="155" width="306" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="769" y="196.5"/>
|
||||
<point key="canvasLocation" x="769" y="104.5"/>
|
||||
</window>
|
||||
<viewController title="Media View" nibName="MediaView" id="t7c-zy-czN" customClass="MediaViewController"/>
|
||||
<viewController title="Slot View" nibName="SlotView" id="lyS-mc-3Tf" customClass="SlotViewController"/>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<window title="Ample Log" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="800" height="270"/>
|
||||
@@ -36,7 +36,7 @@
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="785" height="270"/>
|
||||
<size key="maxSize" width="788" height="10000000"/>
|
||||
<size key="maxSize" width="800" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
@@ -3,6 +3,7 @@
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -12,7 +13,11 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate">
|
||||
<connections>
|
||||
<outlet property="installWindow" destination="jWX-pY-Zpb" id="xAj-Vj-Vxn"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
@@ -26,6 +31,12 @@
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Manage ROMs…" id="St3-qR-2Y8">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="downloadROMS:" target="Voe-Tx-rLC" id="jFm-nv-kRC"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
|
||||
<connections>
|
||||
@@ -680,5 +691,25 @@
|
||||
</items>
|
||||
<point key="canvasLocation" x="132" y="154"/>
|
||||
</menu>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="jWX-pY-Zpb">
|
||||
<rect key="contentRect" x="283" y="305" width="226" height="56"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="L7W-DF-UXe">
|
||||
<rect key="frame" x="0.0" y="0.0" width="226" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iC1-A6-a6T">
|
||||
<rect key="frame" x="18" y="20" width="190" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Installing MAME components…" id="ura-rh-zmZ">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="13" y="-182"/>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="20" horizontalPageScroll="10" verticalLineScroll="20" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="nVT-kT-bWl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="500"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="IBD-wb-pch">
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="500"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" selectionHighlightStyle="none" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" outlineTableColumn="pBj-py-R6a" id="sIz-DD-PZQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="500"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="2" height="3"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
@@ -131,6 +131,6 @@
|
||||
</scrollView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSNavEjectButton.normalSelected" width="128" height="128"/>
|
||||
<image name="NSNavEjectButton.normalSelected" width="16" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSWindowController">
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="PreferencesWindowController">
|
||||
<connections>
|
||||
<outlet property="window" destination="QvC-M9-y7g" id="SHw-b5-d6g"/>
|
||||
<outlet property="pathField" destination="Oz5-Xb-btk" id="EnV-kr-0XI"/>
|
||||
<outlet property="window" destination="QvC-M9-y7g" id="xJa-tx-X62"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
@@ -23,7 +24,7 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oz5-Xb-btk">
|
||||
<rect key="frame" x="98" y="229" width="362" height="21"/>
|
||||
<rect key="frame" x="98" y="181" width="362" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="vDR-2V-qxd">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
@@ -31,11 +32,13 @@
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<action selector="pathChanged:" target="-2" id="RRj-dC-q2y"/>
|
||||
<binding destination="yvB-HG-64y" name="enabled" keyPath="values.UseCustomMame" id="iex-A9-Db6"/>
|
||||
<binding destination="yvB-HG-64y" name="value" keyPath="values.MamePath" id="H3O-1l-peo"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qmb-Ag-Xyr">
|
||||
<rect key="frame" x="18" y="232" width="74" height="16"/>
|
||||
<rect key="frame" x="18" y="184" width="74" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="MAME Path" id="Xcq-4g-Wlw">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -44,7 +47,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KAN-P2-ydI">
|
||||
<rect key="frame" x="96" y="205" width="217" height="18"/>
|
||||
<rect key="frame" x="96" y="234" width="217" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Close log window on normal exit" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QMz-O0-06U">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
@@ -54,6 +57,17 @@
|
||||
<binding destination="yvB-HG-64y" name="value" keyPath="values.AutoCloseLogWindow" id="q0L-GA-wM2"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="j7D-jC-17Q">
|
||||
<rect key="frame" x="96" y="208" width="139" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Use Custom MAME" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="V61-mz-QFo">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="yvB-HG-64y" name="value" keyPath="values.UseCustomMame" id="lH4-dm-kQC"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="140" y="147"/>
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>MameComponentsDate</key>
|
||||
<date>2020-09-02T16:00:00Z</date>
|
||||
<key>UseCustomMame</key>
|
||||
<false/>
|
||||
<key>AutoCloseLogWindow</key>
|
||||
<true/>
|
||||
<key>MamePath</key>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// DownloadWindowController.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/2/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface DownloadWindowController : NSWindowController
|
||||
|
||||
@property NSString *currentROM;
|
||||
@property NSInteger currentCount;
|
||||
@property NSInteger totalCount;
|
||||
@property NSInteger errorCount;
|
||||
@property BOOL active;
|
||||
|
||||
@end
|
||||
|
||||
@interface DownloadWindowController (URL) <NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate>
|
||||
@end
|
||||
|
||||
@interface DownloadWindowController (Table) <NSTableViewDelegate, NSTableViewDataSource>
|
||||
@end
|
||||
|
||||
@interface DownloadWindowController (Menu) <NSMenuDelegate, NSMenuItemValidation>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface DownloadTableCellView : NSTableCellView
|
||||
@property (weak) IBOutlet NSTextField *statusTextField;
|
||||
@property (weak) IBOutlet NSProgressIndicator *activity;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,434 @@
|
||||
//
|
||||
// DownloadWindowController.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/2/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Ample.h"
|
||||
#import "DownloadWindowController.h"
|
||||
|
||||
enum {
|
||||
ItemMissing = 0,
|
||||
ItemFound,
|
||||
ItemDownloading,
|
||||
ItemDownloaded,
|
||||
ItemCanceled,
|
||||
ItemError
|
||||
};
|
||||
|
||||
@interface DownloadItem : NSObject
|
||||
|
||||
@property NSString *name;
|
||||
@property NSError *error;
|
||||
@property NSString *pathName;
|
||||
@property NSURLSessionDownloadTask *task;
|
||||
@property NSURL *localURL;
|
||||
|
||||
@property NSUInteger status;
|
||||
@property NSUInteger index;
|
||||
|
||||
|
||||
-(void)cancelDownload;
|
||||
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task;
|
||||
-(void)completeWithError: (NSError *)error;
|
||||
-(NSString *)statusDescription;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@interface DownloadWindowController ()
|
||||
@property (weak) IBOutlet NSTableView *tableView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadWindowController {
|
||||
|
||||
NSArray *_items;
|
||||
NSURL *_romFolder;
|
||||
NSURL *_sourceURL;
|
||||
NSURLSession *_session;
|
||||
NSMutableDictionary *_taskIndex;
|
||||
}
|
||||
|
||||
-(NSString *)windowNibName {
|
||||
return @"DownloadWindow";
|
||||
}
|
||||
|
||||
- (void)windowDidLoad {
|
||||
[super windowDidLoad];
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
|
||||
NSError *error = nil;
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
|
||||
NSURL *url = [bundle URLForResource: @"roms" withExtension: @"plist"];
|
||||
|
||||
NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url];
|
||||
|
||||
NSURL *sd = SupportDirectory();
|
||||
NSString *romdir = [SupportDirectoryPath() stringByAppendingPathComponent: @"roms"];
|
||||
|
||||
_romFolder = [sd URLByAppendingPathComponent: @"roms"];
|
||||
|
||||
[fm createDirectoryAtURL: _romFolder withIntermediateDirectories: YES attributes: nil error: &error];
|
||||
|
||||
|
||||
NSArray *roms = [d objectForKey: @"roms"];
|
||||
[self setCurrentROM: @""];
|
||||
[self setCurrentCount: 0];
|
||||
[self setTotalCount: [roms count]];
|
||||
[self setErrorCount: 0];
|
||||
_sourceURL = [NSURL URLWithString: @"https://archive.org/download/mame0224_rom"]; // hardcoded....
|
||||
|
||||
|
||||
NSMutableArray *tmp = [NSMutableArray arrayWithCapacity: [roms count]];
|
||||
unsigned ix = 0;
|
||||
for (NSString *name in roms) {
|
||||
|
||||
DownloadItem *item = [DownloadItem new];
|
||||
[item setName: name];
|
||||
[item setIndex: ix++];
|
||||
|
||||
[tmp addObject: item];
|
||||
|
||||
// check if the file exists.
|
||||
NSString *s = [romdir stringByAppendingPathComponent: name];
|
||||
NSString *path;
|
||||
|
||||
path = [s stringByAppendingPathExtension: @"zip"];
|
||||
if ([fm fileExistsAtPath: path]) {
|
||||
[item setStatus: ItemFound];
|
||||
[item setLocalURL: [NSURL fileURLWithPath: path]];
|
||||
continue;
|
||||
}
|
||||
path = [s stringByAppendingPathExtension: @"7z"];
|
||||
if ([fm fileExistsAtPath: path]) {
|
||||
[item setStatus: ItemFound];
|
||||
[item setLocalURL: [NSURL fileURLWithPath: path]];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
_items = tmp;
|
||||
|
||||
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
_session = [NSURLSession sessionWithConfiguration: config delegate: self delegateQueue: nil];
|
||||
_taskIndex = [NSMutableDictionary dictionaryWithCapacity: [_items count]];
|
||||
|
||||
//[self download];
|
||||
}
|
||||
|
||||
-(void)downloadItem: (DownloadItem *)item {
|
||||
|
||||
if (!_session) {
|
||||
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
_session = [NSURLSession sessionWithConfiguration: config delegate: self delegateQueue: nil];
|
||||
}
|
||||
|
||||
NSURLSessionDownloadTask *task;
|
||||
NSString *s = [item name];
|
||||
NSString *path = [s stringByAppendingString: @".7z"]; // hardcoded.
|
||||
NSURL *url = [_sourceURL URLByAppendingPathComponent: path];
|
||||
|
||||
task = [_session downloadTaskWithURL: url];
|
||||
|
||||
[item beginDownloadWithTask: task];
|
||||
[_taskIndex setObject: item forKey: task];
|
||||
|
||||
[task resume];
|
||||
|
||||
}
|
||||
|
||||
-(void)download {
|
||||
|
||||
|
||||
|
||||
// run in thread?
|
||||
//unsigned count = 0;
|
||||
for (DownloadItem *item in _items) {
|
||||
|
||||
NSURLSessionDownloadTask *task;
|
||||
NSString *s = [item name];
|
||||
NSString *path = [s stringByAppendingString: @".7z"]; // hardcoded.
|
||||
NSURL *url = [_sourceURL URLByAppendingPathComponent: path];
|
||||
|
||||
task = [_session downloadTaskWithURL: url];
|
||||
[_taskIndex setObject: item forKey: task];
|
||||
|
||||
[item setTask: task];
|
||||
|
||||
[task resume];
|
||||
|
||||
//++count;
|
||||
//if (count >= 2) break;
|
||||
}
|
||||
[self setActive: YES];
|
||||
|
||||
}
|
||||
|
||||
-(DownloadItem *)clickedItem {
|
||||
NSInteger row = [_tableView clickedRow];
|
||||
if (row < 0 || row >= [_items count]) return nil;
|
||||
return [_items objectAtIndex: row];
|
||||
}
|
||||
-(void)redrawRow: (NSUInteger)row {
|
||||
|
||||
//NSRect r = [_tableView rectOfRow: row];
|
||||
//[_tableView setNeedsDisplayInRect: r];
|
||||
|
||||
NSIndexSet *rIx = [NSIndexSet indexSetWithIndex: row];
|
||||
NSIndexSet *cIx = [NSIndexSet indexSetWithIndex: 0];
|
||||
|
||||
[_tableView reloadDataForRowIndexes: rIx columnIndexes: cIx];
|
||||
}
|
||||
#pragma mark - IBActions
|
||||
|
||||
-(IBAction)cancelAll:(id)sender {
|
||||
|
||||
for (DownloadItem *item in _items) {
|
||||
[item cancelDownload];
|
||||
}
|
||||
|
||||
[_session invalidateAndCancel];
|
||||
_session = nil;
|
||||
[_taskIndex removeAllObjects];
|
||||
[self setCurrentCount: 0];
|
||||
[self setActive: NO];
|
||||
|
||||
[_tableView reloadData];
|
||||
//[_tableView setNeedsDisplay: YES]; // doesn't work...
|
||||
}
|
||||
|
||||
- (IBAction)downloadMissing:(id)sender {
|
||||
|
||||
BOOL delta = NO;
|
||||
for (DownloadItem *item in _items) {
|
||||
NSURL *url = [item localURL];
|
||||
id task = [item task];
|
||||
if (!url && !task) {
|
||||
[self downloadItem: item];
|
||||
delta = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (delta) {
|
||||
[self setActive: YES];
|
||||
[_tableView reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)showInFinder:(id)sender {
|
||||
DownloadItem *item = [self clickedItem];
|
||||
if (!item) return;
|
||||
NSURL *url = [item localURL];
|
||||
if (!url) return;
|
||||
|
||||
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
|
||||
[ws activateFileViewerSelectingURLs: @[url]];
|
||||
}
|
||||
|
||||
- (IBAction)download:(id)sender {
|
||||
DownloadItem *item = [self clickedItem];
|
||||
if (!item) return;
|
||||
|
||||
[self downloadItem: item];
|
||||
[self setActive: YES];
|
||||
[self redrawRow: [item index]];
|
||||
}
|
||||
- (IBAction)cancel:(id)sender {
|
||||
DownloadItem *item = [self clickedItem];
|
||||
if (!item) return;
|
||||
|
||||
[item cancelDownload];
|
||||
[self redrawRow: [item index]];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - NSURLSessionDelegate
|
||||
|
||||
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
|
||||
|
||||
|
||||
// not sure if strictly necessary but this happens in a background thread
|
||||
// and these are used in KVO binding. Also, main thread only
|
||||
// means no race conditions.
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void){
|
||||
if (error)
|
||||
[self setErrorCount: self->_errorCount + 1];
|
||||
else
|
||||
[self setCurrentCount: self->_currentCount + 1];
|
||||
|
||||
NSMutableDictionary *taskIndex = self->_taskIndex;
|
||||
DownloadItem *item = [taskIndex objectForKey: task];
|
||||
[taskIndex removeObjectForKey: task];
|
||||
|
||||
if ([taskIndex count] == 0) {
|
||||
[self setActive: NO];
|
||||
}
|
||||
|
||||
if (item) {
|
||||
[item completeWithError: error];
|
||||
NSUInteger row = [item index];
|
||||
|
||||
[self redrawRow: row];
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
- (void)URLSession:(NSURLSession *)session downloadTask:(nonnull NSURLSessionDownloadTask *)task didFinishDownloadingToURL:(nonnull NSURL *)location {
|
||||
|
||||
|
||||
// need to move to the destination directory...
|
||||
// file deleted after this function returns, so can't move asynchronously.
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSURL *src = [[task originalRequest] URL];
|
||||
NSURL *dest = [_romFolder URLByAppendingPathComponent: [src lastPathComponent]];
|
||||
NSError *error = nil;
|
||||
|
||||
[fm moveItemAtURL: location toURL: dest error: &error];
|
||||
|
||||
DownloadItem *item = [_taskIndex objectForKey: task];
|
||||
[item setLocalURL: dest];
|
||||
|
||||
/*
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void){
|
||||
|
||||
|
||||
[item setLocalURL: dest];
|
||||
}
|
||||
*/
|
||||
NSLog(@"%@", src);
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation DownloadWindowController (Table)
|
||||
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||
return [_items count];
|
||||
}
|
||||
|
||||
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
|
||||
return [_items objectAtIndex: row];
|
||||
}
|
||||
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
|
||||
DownloadItem *item = [_items objectAtIndex: row];
|
||||
DownloadTableCellView *v = [tableView makeViewWithIdentifier: @"DownloadCell" owner: self];
|
||||
|
||||
[[v textField] setObjectValue: [item name]];
|
||||
|
||||
NSTextField *tf = [v statusTextField];
|
||||
|
||||
[tf setObjectValue: [item statusDescription]];
|
||||
if ([item error]) {
|
||||
[tf setTextColor: [NSColor redColor]];
|
||||
} else {
|
||||
[tf setTextColor: [NSColor blackColor]];
|
||||
//if ([tableView isRowSelected: row]){
|
||||
//[tf setTextColor: [NSColor whiteColor]];
|
||||
//}
|
||||
}
|
||||
|
||||
if ([item task]) {
|
||||
[[v activity] startAnimation: nil];
|
||||
} else {
|
||||
[[v activity] stopAnimation: nil];
|
||||
}
|
||||
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation DownloadTableCellView
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadItem
|
||||
|
||||
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task {
|
||||
_task = task;
|
||||
_error = nil;
|
||||
if (task) _status = ItemDownloading;
|
||||
}
|
||||
|
||||
-(void)cancelDownload {
|
||||
if (!_task) return;
|
||||
[_task cancel];
|
||||
_task = nil;
|
||||
_status = ItemCanceled;
|
||||
}
|
||||
|
||||
-(void)completeWithError: (NSError *)error {
|
||||
_task = nil;
|
||||
if (error) {
|
||||
_error = error;
|
||||
_status = ItemError;
|
||||
} else {
|
||||
// what if there was an error moving it?
|
||||
_error = nil;
|
||||
_status = ItemDownloaded;
|
||||
}
|
||||
}
|
||||
|
||||
-(NSString *)statusDescription {
|
||||
|
||||
static NSString *Names[] = {
|
||||
@"ROM missing",
|
||||
@"ROM found",
|
||||
@"Downloading…",
|
||||
@"Downloaded",
|
||||
@"Canceled",
|
||||
@"Error"
|
||||
};
|
||||
if (_error) return [_error description];
|
||||
|
||||
if (_status > sizeof(Names)/sizeof(Names[0])) return @"Unknown";
|
||||
return Names[_status];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@implementation DownloadWindowController (Menu)
|
||||
|
||||
enum {
|
||||
kOpenInFinder = 1,
|
||||
kDownload,
|
||||
kCancel,
|
||||
};
|
||||
|
||||
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
||||
NSInteger row = [_tableView clickedRow];
|
||||
if (row < 0) return NO;
|
||||
DownloadItem *item = [_items objectAtIndex: row];
|
||||
|
||||
NSUInteger status = [item status];
|
||||
switch([menuItem tag]) {
|
||||
case kOpenInFinder:
|
||||
return status == ItemFound || status == ItemDownloaded;
|
||||
break;
|
||||
case kDownload:
|
||||
return YES;
|
||||
//return status == ItemMissing || status == ItemError || status == ItemCanceled;
|
||||
break;
|
||||
case kCancel:
|
||||
return status == ItemDownloading;
|
||||
break;
|
||||
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
+2
-2
@@ -17,9 +17,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>release 1</string>
|
||||
<string>release 4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<string>4</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Ample.h"
|
||||
#import "LaunchWindowController.h"
|
||||
#import "MediaViewController.h"
|
||||
#import "SlotViewController.h"
|
||||
@@ -91,6 +92,39 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static NSURL *MameURL(void) {
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
|
||||
if ([defaults boolForKey: kUseCustomMame]) {
|
||||
NSString *path = [defaults stringForKey: kMamePath];
|
||||
if (![path length]) return [NSURL fileURLWithPath: path];
|
||||
}
|
||||
|
||||
return [bundle URLForAuxiliaryExecutable: @"mame64"];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
static NSString *MamePath(void) {
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
|
||||
NSString *path;
|
||||
|
||||
if ([defaults boolForKey: kUseCustomMame]) {
|
||||
path = [defaults stringForKey: kMamePath];
|
||||
if ([path length]) return path;
|
||||
}
|
||||
path = [bundle pathForAuxiliaryExecutable: @"mame64"];
|
||||
if ([path length]) return path;
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
static NSString * JoinArguments(NSArray *argv) {
|
||||
|
||||
static NSCharacterSet *safe = nil;
|
||||
@@ -110,7 +144,10 @@ static NSString * JoinArguments(NSArray *argv) {
|
||||
|
||||
|
||||
//unsigned ix = 0;
|
||||
[rv appendString: @"mame"];
|
||||
//[rv appendString: @"mame"];
|
||||
NSString *path = MamePath();
|
||||
path = path ? [path lastPathComponent] : @"mame";
|
||||
[rv appendString: path];
|
||||
for (NSString *s in argv) {
|
||||
[rv appendString: @" "];
|
||||
NSUInteger l = [s length];
|
||||
@@ -161,7 +198,6 @@ static NSString * JoinArguments(NSArray *argv) {
|
||||
|
||||
-(void)buildCommandLine {
|
||||
|
||||
|
||||
if (!_mameMachine) {
|
||||
[self setCommandLine: @""];
|
||||
return;
|
||||
@@ -216,7 +252,7 @@ static NSString * JoinArguments(NSArray *argv) {
|
||||
if (_mameNoThrottle) [argv addObject: @"-nothrottle"];
|
||||
|
||||
|
||||
[self setCommandLine: JoinArguments(argv)]; //[argv componentsJoinedByString:@" "]];
|
||||
[self setCommandLine: JoinArguments(argv)];
|
||||
[self setArgs: argv];
|
||||
}
|
||||
|
||||
@@ -224,27 +260,31 @@ static NSString * JoinArguments(NSArray *argv) {
|
||||
|
||||
|
||||
|
||||
|
||||
- (IBAction)launchAction:(id)sender {
|
||||
|
||||
if (![_args count]) return;
|
||||
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSURL *url = MameURL();
|
||||
|
||||
|
||||
NSString *path = [defaults stringForKey: @"MamePath"];
|
||||
if (![path length]) path = @"/usr/local/bin/mame";
|
||||
|
||||
NSURL *url = [NSURL fileURLWithPath: path];
|
||||
if (!url) {
|
||||
NSAlert *alert = [NSAlert new];
|
||||
|
||||
[alert setMessageText: @"Unable to find MAME executable path"];
|
||||
[alert runModal];
|
||||
return;
|
||||
}
|
||||
|
||||
NSTask *task = [NSTask new];
|
||||
[task setExecutableURL: url];
|
||||
[task setArguments: _args];
|
||||
#if 0
|
||||
// interferes w/ termination notification.
|
||||
[task setTerminationHandler: ^(NSTask *t){
|
||||
|
||||
}];
|
||||
#endif
|
||||
|
||||
if (![defaults boolForKey: kUseCustomMame]) {
|
||||
// run in Application Support/Ample.
|
||||
[task setCurrentDirectoryURL: SupportDirectory()];
|
||||
}
|
||||
|
||||
[LogWindowController controllerForTask: task];
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Ample.h"
|
||||
#import "LogWindowController.h"
|
||||
|
||||
static NSMutableSet *LogWindows;
|
||||
@@ -65,12 +66,15 @@ static NSMutableSet *LogWindows;
|
||||
|
||||
|
||||
if (error) {
|
||||
NSLog(@"launchAction: %@", error);
|
||||
NSURL *url = [task executableURL];
|
||||
NSString *path = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
|
||||
NSLog(@"NSTask error. Path = %@ error = %@", path, error);
|
||||
[self appendString: path];
|
||||
[self appendString: [error description]];
|
||||
return error;
|
||||
}
|
||||
_task = task;
|
||||
NSString *title = [NSString stringWithFormat: @"Log Window - %u", [task processIdentifier]];
|
||||
NSString *title = [NSString stringWithFormat: @"Ample Log - %u", [task processIdentifier]];
|
||||
[[self window] setTitle: title];
|
||||
_handle = [pipe fileHandleForReading];
|
||||
|
||||
@@ -145,7 +149,7 @@ static NSMutableSet *LogWindows;
|
||||
|
||||
[[self window] setDocumentEdited: NO];
|
||||
|
||||
if (ok && [[NSUserDefaults standardUserDefaults] boolForKey: @"AutoCloseLogWindow"]) {
|
||||
if (ok && [[NSUserDefaults standardUserDefaults] boolForKey: kAutoCloseLogWindow]) {
|
||||
|
||||
[[self window] close];
|
||||
//[LogWindows removeObject: self]; // close sends WindowWillClose notification.
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// PreferencesWindowController.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 8/31/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface PreferencesWindowController : NSWindowController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,52 @@
|
||||
//
|
||||
// PreferencesWindowController.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 8/31/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Ample.h"
|
||||
#import "PreferencesWindowController.h"
|
||||
|
||||
@interface PreferencesWindowController ()
|
||||
@property (weak) IBOutlet NSTextField *pathField;
|
||||
|
||||
@end
|
||||
|
||||
@implementation PreferencesWindowController
|
||||
|
||||
-(NSString *)windowNibName {
|
||||
return @"Preferences";
|
||||
}
|
||||
|
||||
- (void)windowDidLoad {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
[super windowDidLoad];
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
|
||||
[self validateMamePath: [defaults stringForKey: kMamePath]];
|
||||
|
||||
}
|
||||
|
||||
-(void)validateMamePath: (NSString *)path {
|
||||
NSFileManager * fm = [NSFileManager defaultManager];
|
||||
|
||||
if ([path length] == 0 || [fm isExecutableFileAtPath: path]) {
|
||||
[_pathField setTextColor: [NSColor blackColor]];
|
||||
} else {
|
||||
[_pathField setTextColor: [NSColor redColor]];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)pathChanged:(id)sender {
|
||||
|
||||
NSString *path = [sender stringValue];
|
||||
|
||||
[self validateMamePath: path];
|
||||
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -173,6 +173,43 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer</string>
|
||||
<key>children</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer 2000</string>
|
||||
<key>value</key>
|
||||
<string>cec2000</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer E</string>
|
||||
<key>value</key>
|
||||
<string>cece</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer G</string>
|
||||
<key>value</key>
|
||||
<string>cecg</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer I</string>
|
||||
<key>value</key>
|
||||
<string>ceci</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>China Education Computer M</string>
|
||||
<key>value</key>
|
||||
<string>cecm</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>II Clones</string>
|
||||
@@ -323,6 +360,12 @@
|
||||
<key>value</key>
|
||||
<string>spectred</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>description</key>
|
||||
<string>Zi Jin I</string>
|
||||
<key>value</key>
|
||||
<string>zijini</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
<?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>source</key>
|
||||
<string>https://archive.org/download/mame0224_rom</string>
|
||||
<key>type</key>
|
||||
<string>7z</string>
|
||||
<key>version</key>
|
||||
<string>0.224</string>
|
||||
<key>roms</key>
|
||||
<array>
|
||||
<string>a1cass</string>
|
||||
<string>a2aevm80</string>
|
||||
<string>a2ap16</string>
|
||||
<string>a2ap16a</string>
|
||||
<string>a2aplcrd</string>
|
||||
<string>a2cffa02</string>
|
||||
<string>a2cffa2</string>
|
||||
<string>a2corvus</string>
|
||||
<string>a2diskii</string>
|
||||
<string>a2diskiing</string>
|
||||
<string>a2focdrv</string>
|
||||
<string>a2hsscsi</string>
|
||||
<string>a2iwm</string>
|
||||
<string>a2memexp</string>
|
||||
<string>a2mouse</string>
|
||||
<string>a2pic</string>
|
||||
<string>a2ramfac</string>
|
||||
<string>a2scsi</string>
|
||||
<string>a2ssc</string>
|
||||
<string>a2surance</string>
|
||||
<string>a2swyft</string>
|
||||
<string>a2thunpl</string>
|
||||
<string>a2tmstho</string>
|
||||
<string>a2twarp</string>
|
||||
<string>a2ultrme</string>
|
||||
<string>a2ulttrm</string>
|
||||
<string>a2vidtrm</string>
|
||||
<string>a2vtc1</string>
|
||||
<string>a2vulcan</string>
|
||||
<string>a2vulgld</string>
|
||||
<string>a2vuliie</string>
|
||||
<string>a2zipdrv</string>
|
||||
<string>a3fdc</string>
|
||||
<string>apple1</string>
|
||||
<string>apple2</string>
|
||||
<string>apple2c</string>
|
||||
<string>apple2e</string>
|
||||
<string>apple2gs</string>
|
||||
<string>apple3</string>
|
||||
<string>cec2000</string>
|
||||
<string>cece</string>
|
||||
<string>cecg</string>
|
||||
<string>ceci</string>
|
||||
<string>cecm</string>
|
||||
<string>cga</string>
|
||||
<string>cmsscsi</string>
|
||||
<string>d2fdc</string>
|
||||
<string>diskii13</string>
|
||||
<string>keytronic_pc3270</string>
|
||||
<string>m68705p3</string>
|
||||
<string>votrax</string>
|
||||
<string>zijini</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
|
||||
This folder should contain SDL2.framework and a mame64 executable. These will be included in the build.
|
||||
|
||||
* [SDL2](http://libsdl.org/download-2.0.php)
|
||||
* [MAME](https://github.com/mamedev/mame) (requires building from source)
|
||||
|
||||
Not tested, but perhaps you could also download a [pre-built MAME](https://wiki.mamedev.org/index.php/SDL_Supported_Platforms) and use `install_name_tool` to fix the rpath.
|
||||
|
||||
Alternatively, adjust the xcode project to not embed them.
|
||||
|
||||
|
||||
Building MAME:
|
||||
|
||||
This will build a subset of MAME which only includes apple2 support.
|
||||
|
||||
git clone mame ...
|
||||
cd mame
|
||||
make SOURCES=src/mame/drivers/apple1.cpp,src/mame/drivers/apple2.cpp,src/mame/drivers/apple2e.cpp,src/mame/drivers/apple2gs.cpp,src/mame/drivers/apple3.cpp SDL_FRAMEWORK_PATH=`pwd`/..
|
||||
|
||||
you can use `$LDFLAGS` to set the rpath (`LDFLAGS="-rpath @executable_path/../Frameworks" make ...`) or set it after with the `install_name_tool` tool - ``install_name_tool -add_rpath @executable_path/../Frameworks mame64`
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ MACHINES = (
|
||||
"dodo", "elppa", "hkc8800a", "ivelultr",
|
||||
"maxxi", "microeng", "prav82", "prav8m",
|
||||
"space84", "uniap2en", "uniap2pt", "uniap2ti",
|
||||
"zijini",
|
||||
# China Education Computer
|
||||
"cec2000", "cece", "cecg", "ceci", "cecm",
|
||||
)
|
||||
|
||||
|
||||
@@ -30,4 +33,4 @@ SLOTS = (
|
||||
"gameio",
|
||||
"printer",
|
||||
"modem"
|
||||
)
|
||||
)
|
||||
@@ -34,5 +34,5 @@ for m in MACHINES:
|
||||
devices[name] = tmp
|
||||
|
||||
|
||||
with open("Resources/devices.plist", "w") as f:
|
||||
f.write(to_plist(devices))
|
||||
with open("../Ample/Resources/devices.plist", "w") as f:
|
||||
f.write(to_plist(devices))
|
||||
@@ -14,9 +14,10 @@ DISABLED = set((
|
||||
'hsscsi', # doesn't work
|
||||
'corvus', # these apparently don't use normal disk images.
|
||||
'zipdrive',
|
||||
'vulcan',
|
||||
'focusdrive',
|
||||
'vulcangold'
|
||||
'vulcan',
|
||||
'vulcangold',
|
||||
'vulcaniie',
|
||||
))
|
||||
|
||||
|
||||
@@ -165,7 +166,7 @@ for m in MACHINES:
|
||||
data[s] = tmp
|
||||
|
||||
|
||||
path = "Resources/{}.plist".format(m)
|
||||
path = "../Ample/Resources/{}.plist".format(m)
|
||||
with open(path, "w") as f:
|
||||
f.write(to_plist(data))
|
||||
|
||||
@@ -20,7 +20,8 @@ ii_clones_children = ["ace100", "agat7", "agat9", "albert",
|
||||
"dodo", "elppa", "hkc8800a", "ivelultr",
|
||||
"maxxi", "microeng", "prav82", "prav8m",
|
||||
"space84", "uniap2en", "uniap2pt", "uniap2ti"]
|
||||
iie_clones_children = ["mprof3", "prav8c", "spectred"]
|
||||
iie_clones_children = ["mprof3", "prav8c", "spectred", "zijini"]
|
||||
cec_children = ["cec2000", "cece", "cecg", "ceci", "cecm"]
|
||||
|
||||
tree = [
|
||||
("Apple I", "apple1", apple1_children),
|
||||
@@ -30,6 +31,7 @@ tree = [
|
||||
("Apple IIgs", "apple2gs", apple2gs_children),
|
||||
("Apple ///", "apple3", apple3_children),
|
||||
("Laser", "laser128", laser_children),
|
||||
("China Education Computer", None, cec_children),
|
||||
("II Clones", None, ii_clones_children),
|
||||
("IIe Clones", None, iie_clones_children),
|
||||
]
|
||||
@@ -74,7 +76,7 @@ for x in tree:
|
||||
|
||||
data.append(tmp)
|
||||
|
||||
path = "Resources/models.plist"
|
||||
path = "../Ample/Resources/models.plist"
|
||||
with open(path, "w") as f:
|
||||
f.write(to_plist(data))
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
from plist import to_plist
|
||||
|
||||
ROMS = """
|
||||
a1cass
|
||||
a2aevm80
|
||||
a2ap16
|
||||
a2ap16a
|
||||
a2aplcrd
|
||||
a2cffa02
|
||||
a2cffa2
|
||||
a2corvus
|
||||
a2diskii
|
||||
a2diskiing
|
||||
a2focdrv
|
||||
a2hsscsi
|
||||
a2iwm
|
||||
a2memexp
|
||||
a2mouse
|
||||
a2pic
|
||||
a2ramfac
|
||||
a2scsi
|
||||
a2ssc
|
||||
a2surance
|
||||
a2swyft
|
||||
a2thunpl
|
||||
a2tmstho
|
||||
a2twarp
|
||||
a2ultrme
|
||||
a2ulttrm
|
||||
a2vidtrm
|
||||
a2vtc1
|
||||
a2vulcan
|
||||
a2vulgld
|
||||
a2vuliie
|
||||
a2zipdrv
|
||||
a3fdc
|
||||
apple1
|
||||
apple2
|
||||
apple2c
|
||||
apple2e
|
||||
apple2gs
|
||||
apple3
|
||||
cec2000
|
||||
cece
|
||||
cecg
|
||||
ceci
|
||||
cecm
|
||||
cga
|
||||
cmsscsi
|
||||
d2fdc
|
||||
diskii13
|
||||
keytronic_pc3270
|
||||
m68705p3
|
||||
votrax
|
||||
zijini
|
||||
""".splitlines()
|
||||
#
|
||||
# others
|
||||
# mprof3
|
||||
# spectred
|
||||
# tk3000
|
||||
# prav8c
|
||||
#
|
||||
|
||||
ROMS.remove("")
|
||||
ROMS.sort()
|
||||
|
||||
data = {}
|
||||
data["source"] = "https://archive.org/download/mame0224_rom"
|
||||
data["type"] = "7z"
|
||||
data["version"] = "0.224"
|
||||
data["roms"] = ROMS
|
||||
|
||||
# print(ROMS)
|
||||
with open("../Ample/Resources/roms.plist", "w") as f:
|
||||
f.write(to_plist(data))
|
||||
Reference in New Issue
Block a user