22 Commits

Author SHA1 Message Date
clobber 5b9f56f708 Only build x86_64 for now. 2022-12-11 20:01:24 -07:00
clobber a10a8925f5 Update deployment target 2022-12-11 16:02:30 -07:00
clobber 77dc525a88 Update readme 2022-12-11 15:40:09 -07:00
Stuart Carnie e473aede19 update MAME to 0250 2022-12-11 08:50:12 +11:00
Stuart Carnie 944046bb60 update MAME to 0240 2022-02-06 08:53:03 +11:00
clobber 2d0805aa3f Update readme 2021-09-16 16:26:21 -06:00
Stuart Carnie de6fb8dd22 update mame dependency 2021-09-17 08:19:20 +10:00
Stuart Carnie b122f3d3cc chore: Update to MAME 0235 2021-08-30 06:45:42 +10:00
Stuart Carnie 57c375d9e6 feat: MAME 0.231 release 2021-05-02 09:56:49 +10:00
clobber 5091dab464 Bump version for sparkle updater (still MAME 0.277)
This is build fix for 10.14 compat.
2021-01-03 18:49:06 -07:00
Stuart Carnie a5ed7abb1f feat: Update to MAME 0.227 🎉 2021-01-02 10:01:27 +11:00
Stuart Carnie 4a3079c7b5 feat: Upgrade to MAME 0.225 🎉 2020-10-01 08:12:36 -07:00
C.W. Betts 0487d834b0 Merge branch 'master' of github.com:OpenEmu/UME-Core into master 2020-10-01 01:30:54 -06:00
C.W. Betts 619e01001e Fix locations of the system plugin headers.
Minor Xcode maintenance.
2020-10-01 01:26:45 -06:00
Stuart Carnie baec92eba7 feat: Upgrade to MAME 0.224 🎉 2020-09-26 22:31:04 -07:00
Stuart Carnie a023f2d7a3 feat: Upgrade to MAME 0.219 🎉 2020-02-29 08:53:50 -07:00
Stuart Carnie cf1d704910 feat: MAME 0217 2020-01-06 17:07:14 -07:00
Stuart Carnie e1ab96e4a5 fix: Updated dep with fix for R/W CHDs 2019-11-25 18:06:37 -07:00
Stuart Carnie 3b5d9b3b98 feat: Update deps/mame with APIs to improve error handling 2019-11-25 17:19:53 -07:00
Stuart Carnie 2e13867b45 fix: use correct constant 2019-11-17 09:56:13 -07:00
Stuart Carnie 0550075d97 feat: Check for unsupported games and notify user 2019-11-16 11:34:31 -07:00
Stuart Carnie 138d4349ef fix: Update MAME dependency 2019-11-14 23:48:29 -07:00
7 changed files with 100 additions and 36 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ build
xcuserdata
profile
*.moved-aside
DerivedData
DerivedData/
.idea/
*.hmap
+1 -1
View File
@@ -1,4 +1,4 @@
[submodule "deps/mame"]
path = deps/mame
url = https://github.com/stuartcarnie/mame.git
branch = mame0209-headless
branch = mame0225-headless
+13 -13
View File
@@ -19,23 +19,11 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.215.0</string>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string>OEGameCoreController</string>
<key>OEGameCoreClass</key>
<string>MAMEGameCore</string>
<key>OEGameCorePlayerCount</key>
<string>8</string>
<key>OEProjectURL</key>
<string>http://mamedev.org</string>
<key>OESystemIdentifiers</key>
<array>
<string>openemu.system.arcade</string>
</array>
<key>SUEnableAutomaticChecks</key>
<string>1</string>
<key>SUFeedURL</key>
<string>https://raw.github.com/OpenEmu/OpenEmu-Update/master/mame_appcast.xml</string>
<key>OEGameCoreOptions</key>
<dict>
<key>openemu.system.arcade</key>
@@ -50,5 +38,17 @@
<true/>
</dict>
</dict>
<key>OEGameCorePlayerCount</key>
<string>8</string>
<key>OEProjectURL</key>
<string>http://mamedev.org</string>
<key>OESystemIdentifiers</key>
<array>
<string>openemu.system.arcade</string>
</array>
<key>SUEnableAutomaticChecks</key>
<string>1</string>
<key>SUFeedURL</key>
<string>https://raw.github.com/OpenEmu/OpenEmu-Update/master/mame_appcast.xml</string>
</dict>
</plist>
+16 -10
View File
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 53;
objects = {
/* Begin PBXAggregateTarget section */
@@ -70,7 +70,7 @@
D00A069F17637AB600C99008 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
D00A06A417637E9100C99008 /* MAMEGameCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAMEGameCore.h; sourceTree = "<group>"; };
D00A06A517637E9100C99008 /* MAMEGameCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MAMEGameCore.m; sourceTree = "<group>"; };
D00A06A717637EB500C99008 /* OEArcadeSystemResponderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OEArcadeSystemResponderClient.h; path = ../OpenEmu/Arcade/OEArcadeSystemResponderClient.h; sourceTree = "<group>"; };
D00A06A717637EB500C99008 /* OEArcadeSystemResponderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OEArcadeSystemResponderClient.h; path = ../OpenEmu/SystemPlugins/Arcade/OEArcadeSystemResponderClient.h; sourceTree = "<group>"; };
D0AADE2F176381FB00759E26 /* MAME_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAME_Prefix.pch; sourceTree = "<group>"; };
D0AADE30176382F900759E26 /* OpenEmuBase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OpenEmuBase.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0AADE331763838A00759E26 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -97,7 +97,7 @@
D00A06A317637BDD00C99008 /* Classes */,
D0AADE2E176381E900759E26 /* Other Sources */,
D00A06931763763000C99008 /* Resources */,
D00A068C1763763000C99008 /* Frameworks and Libraries */,
D00A068C1763763000C99008 /* Frameworks */,
D00A068B1763763000C99008 /* Products */,
);
sourceTree = "<group>";
@@ -110,7 +110,7 @@
name = Products;
sourceTree = "<group>";
};
D00A068C1763763000C99008 /* Frameworks and Libraries */ = {
D00A068C1763763000C99008 /* Frameworks */ = {
isa = PBXGroup;
children = (
0510AA1D2300825D002028C1 /* mamearcade_headless.dylib */,
@@ -118,7 +118,7 @@
D00A068F1763763000C99008 /* Linked Frameworks */,
D0AADE321763833600759E26 /* Other Frameworks */,
);
name = "Frameworks and Libraries";
name = Frameworks;
sourceTree = "<group>";
};
D00A068F1763763000C99008 /* Linked Frameworks */ = {
@@ -138,7 +138,6 @@
D00A069F17637AB600C99008 /* Info.plist */,
);
name = Resources;
path = MAME;
sourceTree = "<group>";
};
D00A06A317637BDD00C99008 /* Classes */ = {
@@ -211,7 +210,8 @@
D00A06821763762F00C99008 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1100;
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1330;
ORGANIZATIONNAME = OpenEmu;
};
buildConfigurationList = D00A06851763762F00C99008 /* Build configuration list for PBXProject "MAME" */;
@@ -299,6 +299,7 @@
D00A069A1763763000C99008 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = x86_64;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "compiler-default";
@@ -317,6 +318,7 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -326,7 +328,7 @@
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = NO;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu89;
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
GCC_INPUT_FILETYPE = sourcecode.cpp.cpp;
@@ -346,7 +348,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 12.4;
ONLY_ACTIVE_ARCH = YES;
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
SDKROOT = macosx;
@@ -356,6 +358,7 @@
D00A069B1763763000C99008 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = x86_64;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "compiler-default";
@@ -374,6 +377,7 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -399,7 +403,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 12.4;
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
SDKROOT = macosx;
};
@@ -409,6 +413,7 @@
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 0.250.0;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
@@ -435,6 +440,7 @@
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 0.250.0;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
+67 -9
View File
@@ -67,9 +67,9 @@
@end
static uint32_t joystick_get_state(void *device_internal, void *item_internal)
static int32_t joystick_get_state(void *device_internal, void *item_internal)
{
return *(uint32_t *)item_internal;
return *(int32_t *)item_internal;
}
static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
@@ -174,6 +174,49 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
#pragma mark - Execution
BOOL driverIsNotWorking(GameDriverOptions o)
{
if ((o & GameDriverMachineNotWorking) == GameDriverMachineNotWorking) {
return YES;
}
if ((o & GameDriverMachineIsSkeleton) == GameDriverMachineIsSkeleton) {
return YES;
}
return NO;
}
- (BOOL)validateGameDriver:(GameDriver *)driver error:(NSError **)error
{
GameDriverOptions o = driver.flags;
if (o & (GameDriverMachineClickableArtwork | GameDriverMachineRequiresArtwork | GameDriverMachineMechanical))
{
if (error != nil)
{
*error = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{
NSLocalizedDescriptionKey : @"Unable to load ROM.",
NSLocalizedRecoverySuggestionErrorKey: [NSString stringWithFormat:@"\"%@\" (%@).\n\nMechanical systems or systems which require artwork to operate are not supported.", driver.fullName, driver.name],
}];
}
return NO;
}
if (driverIsNotWorking(o)) {
if (error != nil)
{
*error = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{
NSLocalizedDescriptionKey : @"Unable to load ROM.",
NSLocalizedRecoverySuggestionErrorKey: [NSString stringWithFormat:@"\"%@\" (%@).\n\nThis machine does not work and the emulation is not yet complete. There is nothing you can do to fix this problem except wait for the MAME developers to improve the emulation.", driver.fullName, driver.name],
}];
}
return NO;
}
return YES;
}
- (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error
{
NSString *romDir = [path stringByDeletingLastPathComponent];
@@ -195,14 +238,28 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
NSString *rom = [[path lastPathComponent] stringByDeletingPathExtension];
AuditResult *ar;
BOOL success = [_osd loadGame:rom withAuditResult:&ar error:error];
BOOL success = [_osd setDriver:rom withAuditResult:&ar error:error];
if (!success)
{
if (error != nil && ar != nil)
return NO;
}
if (![self validateGameDriver:_osd.driver error:error])
{
return NO;
}
if (ar.summary == AuditSummaryIncorrect || ar.summary == AuditSummaryNotFound)
{
if (error != nil)
{
*error = [self processAuditResult:ar forRomDir:romDir];
}
return NO;
}
if (![_osd initializeWithError:error])
{
return NO;
}
@@ -217,7 +274,8 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
- (NSError *)processAuditResult:(AuditResult *)ar forRomDir:(NSString *)romDir
{
NSString *gameDriverName = _osd.driverName;
GameDriver *driver = _osd.driver;
NSString *gameDriverName = driver.name;
NSMutableOrderedSet<MAMEAuditResult *> *results = [NSMutableOrderedSet new];
for (AuditRecord *rec in ar.records) {
@@ -281,7 +339,7 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
}
// Give an audit report to the user
NSString *game = [NSString stringWithFormat:@"%@ (%@.zip)", _osd.driverFullName, _osd.driverName];
NSString *game = [NSString stringWithFormat:@"%@ (%@.zip)", driver.fullName, gameDriverName];
NSString *versionRequired = [[[[[self owner] bundle] infoDictionary] objectForKey:@"CFBundleVersion"] substringToIndex:5];
NSError *outErr = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{
@@ -394,7 +452,7 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
else
{
err = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotSaveStateError userInfo:@{
NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Game \"%@\" does not not support save states.", _osd.driverFullName],
NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Game \"%@\" does not not support save states.", _osd.driver.fullName],
}];
}
@@ -413,7 +471,7 @@ static os_log_t OE_CORE_LOG, OE_CORE_AUDIT_LOG;
else
{
err = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotSaveStateError userInfo:@{
NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Game \"%@\" does not not support save states.", _osd.driverFullName],
NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Game \"%@\" does not not support save states.", _osd.driver.fullName],
}];
}
+1 -1
View File
@@ -10,7 +10,7 @@ You must build the `mamearcade_headless.dylib` dynamic library before building t
```sh
$ cd deps/mame
$ make macosx_x64_clang OSD="headless" verbose=1 TARGETOS="macosx" CONFIG="headless-rel" TARGET=mame SUBTARGET=arcade -j8
$ make macosx_x64_clang OSD="headless" verbose=1 TARGETOS="macosx" CONFIG="release" TARGET=mame SUBTARGET=arcade MACOSX_DEPLOYMENT_TARGET=12.4 -j8
```
Depending on your hardware, this could take a _long_ time, but if successful, you will have a file named `mamearcade_headless.dylib` in the current directory.
Vendored
+1 -1
Submodule deps/mame updated: 822ae8c825...4fc1f9f16b