11 Commits

Author SHA1 Message Date
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
5 changed files with 86 additions and 27 deletions
+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>
+6 -5
View File
@@ -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 */ = {
@@ -409,6 +408,7 @@
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 0.225.0;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
@@ -435,6 +435,7 @@
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 0.225.0;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
+65 -7
View File
@@ -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],
}];
}
Vendored
+1 -1
Submodule deps/mame updated: 822ae8c825...c5b276e865