Compare commits

..

No commits in common. "881eeaed9a0d7b6ce9b16b094f25101785f0e39e" and "18096d9f682cf1cb22c90fac349838a226a8cb1d" have entirely different histories.

6 changed files with 9 additions and 49 deletions

View file

@ -45,6 +45,7 @@ NSWindowFrameAutosaveName const kCheatFinderWindowIdentifier = @"s9xCheatFinderW
gameWindow.contentView.layer.backgroundColor = NSColor.blackColor.CGColor; gameWindow.contentView.layer.backgroundColor = NSColor.blackColor.CGColor;
gameWindow.title = @"Snes9x"; gameWindow.title = @"Snes9x";
gameWindow.restorationClass = [self class];
gameWindow.frameAutosaveName = kMainWindowIdentifier; gameWindow.frameAutosaveName = kMainWindowIdentifier;
gameWindow.releasedWhenClosed = NO; gameWindow.releasedWhenClosed = NO;
gameWindow.backgroundColor = NSColor.clearColor; gameWindow.backgroundColor = NSColor.clearColor;
@ -659,6 +660,7 @@ NSWindowFrameAutosaveName const kCheatFinderWindowIdentifier = @"s9xCheatFinderW
window = self.cheatsWindowController.window; window = self.cheatsWindowController.window;
window.title = NSLocalizedString(@"Cheats", nil); window.title = NSLocalizedString(@"Cheats", nil);
window.restorationClass = self.class;
window.frameAutosaveName = kCheatsWindowIdentifier; window.frameAutosaveName = kCheatsWindowIdentifier;
window.releasedWhenClosed = NO; window.releasedWhenClosed = NO;
@ -693,6 +695,7 @@ NSWindowFrameAutosaveName const kCheatFinderWindowIdentifier = @"s9xCheatFinderW
window = self.cheatFinderWindowController.window; window = self.cheatFinderWindowController.window;
window.title = NSLocalizedString(@"Cheat Finder", nil); window.title = NSLocalizedString(@"Cheat Finder", nil);
window.restorationClass = self.class;
window.frameAutosaveName = kCheatFinderWindowIdentifier; window.frameAutosaveName = kCheatFinderWindowIdentifier;
window.releasedWhenClosed = NO; window.releasedWhenClosed = NO;

View file

@ -131,7 +131,7 @@ bool SetButtonCodeForJoypadControl(uint32 vendorID, uint32 productID, uint32 ind
void ClearButtonCodeForJoypad(uint32 vendorID, uint32 productID, uint32 index, S9xButtonCode buttonCode); void ClearButtonCodeForJoypad(uint32 vendorID, uint32 productID, uint32 index, S9xButtonCode buttonCode);
void ClearJoypad(uint32 vendorID, uint32 productID, uint32 index); void ClearJoypad(uint32 vendorID, uint32 productID, uint32 index);
std::unordered_map<struct JoypadInput, S9xButtonCode> GetJoypadButtons(uint32 vendorID, uint32 productID, uint32 index); std::unordered_map<struct JoypadInput, S9xButtonCode> GetJuypadButtons(uint32 vendorID, uint32 productID, uint32 index);
std::string LabelForInput(uint32 vendorID, uint32 productID, uint32 cookie, int32 value); std::string LabelForInput(uint32 vendorID, uint32 productID, uint32 cookie, int32 value);

View file

@ -684,7 +684,7 @@ void ClearJoypad(uint32 vendorID, uint32 productID, uint32 index)
} }
} }
std::unordered_map<struct JoypadInput, S9xButtonCode> GetJoypadButtons(uint32 vendorID, uint32 productID, uint32 index) std::unordered_map<struct JoypadInput, S9xButtonCode> GetJuypadButtons(uint32 vendorID, uint32 productID, uint32 index)
{ {
struct JoypadDevice device; struct JoypadDevice device;
device.vendorID = vendorID; device.vendorID = vendorID;
@ -712,50 +712,7 @@ void SetUpHID (void)
{ {
IOHIDManagerRegisterInputValueCallback(hidManager, gamepadAction, NULL); IOHIDManagerRegisterInputValueCallback(hidManager, gamepadAction, NULL);
IOHIDManagerScheduleWithRunLoop(hidManager, CFRunLoopGetMain(), kCFRunLoopDefaultMode); IOHIDManagerScheduleWithRunLoop(hidManager, CFRunLoopGetMain(), kCFRunLoopDefaultMode);
IOHIDManagerSetDeviceMatching(hidManager, NULL);
CFMutableArrayRef matching = CFArrayCreateMutable(kCFAllocatorDefault, 4, &kCFTypeArrayCallBacks);
uint32 page = kHIDPage_GenericDesktop;
uint32 usage = kHIDUsage_GD_Joystick;
CFNumberRef pageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page);
CFNumberRef usageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage);
CFMutableDictionaryRef entry = CFDictionaryCreateMutable(kCFAllocatorDefault, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsagePageKey), (void *)pageRef);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsageKey), (void *)usageRef);
CFArrayAppendValue(matching, entry);
CFRelease(usageRef);
CFRelease(entry);
usage = kHIDUsage_GD_GamePad;
usageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage);
entry = CFDictionaryCreateMutable(kCFAllocatorDefault, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsagePageKey), (void *)pageRef);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsageKey), (void *)usageRef);
CFArrayAppendValue(matching, entry);
CFRelease(usageRef);
CFRelease(entry);
usage = kHIDUsage_GD_MultiAxisController;
usageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage);
entry = CFDictionaryCreateMutable(kCFAllocatorDefault, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsagePageKey), (void *)pageRef);
CFDictionarySetValue(entry, CFSTR(kIOHIDDeviceUsageKey), (void *)usageRef);
CFArrayAppendValue(matching, entry);
CFRelease(usageRef);
CFRelease(pageRef);
CFRelease(entry);
uint32 vendor = 0x28DE; // Valve, apparently
CFNumberRef vendorRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &vendor);
entry = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(entry, CFSTR(kIOHIDVendorIDKey), (void *)pageRef);
CFArrayAppendValue(matching, entry);
CFRelease(vendorRef);
CFRelease(entry);
IOHIDManagerSetDeviceMatchingMultiple(hidManager, matching);
CFRelease(matching);
ParseDefaults(); ParseDefaults();

View file

@ -3286,7 +3286,7 @@ void QuitWithFatalError ( NSString *message)
{ {
pthread_mutex_lock(&keyLock); pthread_mutex_lock(&keyLock);
NSMutableArray<S9xJoypadInput *> *inputs = [NSMutableArray new]; NSMutableArray<S9xJoypadInput *> *inputs = [NSMutableArray new];
std::unordered_map<struct JoypadInput, S9xButtonCode> buttonCodeMap = GetJoypadButtons(vendorID, productID, index); std::unordered_map<struct JoypadInput, S9xButtonCode> buttonCodeMap = GetJuypadButtons(vendorID, productID, index);
for (auto it = buttonCodeMap.begin(); it != buttonCodeMap.end(); ++it) for (auto it = buttonCodeMap.begin(); it != buttonCodeMap.end(); ++it)
{ {
S9xJoypadInput *input = [S9xJoypadInput new]; S9xJoypadInput *input = [S9xJoypadInput new];

View file

@ -7,7 +7,7 @@ Files included in the Snes9x archive:
changes.txt changes.txt
snes9x-license.txt snes9x-license.txt
This document was last updated for version 1.63 in July 2024 version 1.62.3 March, 2023
Home page: http://www.snes9x.com/ Home page: http://www.snes9x.com/
Source code: https://github.com/snes9xgit/snes9x/ Source code: https://github.com/snes9xgit/snes9x/

View file

@ -885,7 +885,7 @@ BEGIN
VALUE "FileDescription", "Snes9x" VALUE "FileDescription", "Snes9x"
VALUE "FileVersion", "1.63" VALUE "FileVersion", "1.63"
VALUE "InternalName", "Snes9x" VALUE "InternalName", "Snes9x"
VALUE "LegalCopyright", "Copyright 1996-2024" VALUE "LegalCopyright", "Copyright 1996-2023"
VALUE "OriginalFilename", "Snes9x.exe" VALUE "OriginalFilename", "Snes9x.exe"
VALUE "ProductName", "Snes9x SNES Emulator" VALUE "ProductName", "Snes9x SNES Emulator"
VALUE "ProductVersion", "1.63" VALUE "ProductVersion", "1.63"