diff --git a/desmume/src/frontend/cocoa/openemu/NDSGameCore.mm b/desmume/src/frontend/cocoa/openemu/NDSGameCore.mm index 26cff12cc..2fe103db0 100644 --- a/desmume/src/frontend/cocoa/openemu/NDSGameCore.mm +++ b/desmume/src/frontend/cocoa/openemu/NDSGameCore.mm @@ -88,7 +88,6 @@ volatile bool execute = true; // Set up the DS controller cdsController = [[[[CocoaDSController alloc] init] retain] autorelease]; - [cdsController startHardwareMicDevice]; // Set up the cheat system cdsCheats = [[[[CocoaDSCheatManager alloc] init] retain] autorelease]; @@ -424,16 +423,61 @@ volatile bool execute = true; } } +#pragma mark - Internal + +- (void)startEmulation +{ + [cdsController startHardwareMicDevice]; + [cdsController setHardwareMicMute:NO]; + [cdsController setHardwareMicPause:NO]; + + [super startEmulation]; +} + +- (void)setPauseEmulation:(BOOL)pauseEmulation +{ + [cdsController setHardwareMicPause:pauseEmulation]; + + [super setPauseEmulation:pauseEmulation]; +} + #pragma mark - Input - (oneway void)didPushNDSButton:(OENDSButton)button forPlayer:(NSUInteger)player { - [cdsController setControllerState:YES controlID:inputID[button]]; + switch (inputID[button]) + { + case NDSInputID_Microphone: + [cdsController setSoftwareMicState:YES mode:MicrophoneMode_InternalNoise]; + break; + + case NDSInputID_Paddle: + // Do nothing for now. OpenEmu doesn't currently support the Taito Paddle Controller. + //[cdsController setPaddleAdjust:0]; + break; + + default: + [cdsController setControllerState:YES controlID:inputID[button]]; + break; + } } - (oneway void)didReleaseNDSButton:(OENDSButton)button forPlayer:(NSUInteger)player { - [cdsController setControllerState:NO controlID:inputID[button]]; + switch (inputID[button]) + { + case NDSInputID_Microphone: + [cdsController setSoftwareMicState:NO mode:MicrophoneMode_InternalNoise]; + break; + + case NDSInputID_Paddle: + [cdsController setPaddleAdjust:0]; + break; + + default: + [cdsController setControllerState:NO controlID:inputID[button]]; + break; + } } - (oneway void)didTouchScreenPoint:(OEIntPoint)aPoint diff --git a/desmume/src/frontend/cocoa/openemu/OESoundInterface.mm b/desmume/src/frontend/cocoa/openemu/OESoundInterface.mm index ab72af569..5bed65d27 100644 --- a/desmume/src/frontend/cocoa/openemu/OESoundInterface.mm +++ b/desmume/src/frontend/cocoa/openemu/OESoundInterface.mm @@ -83,17 +83,8 @@ void SNDOpenEmuUpdateAudio(s16 *buffer, u32 num_samples) u32 SNDOpenEmuGetAudioSpace() { - // The latest version of the OpenEmu API (as of 11/11/2017) renames [OERingBuffer usedBytes] - // to [OERingBuffer freeBytes]. Due to poor planning on their part, using [OERingBuffer freeBytes] - // on the current release version of OpenEmu.app, v2.0.5, will cause the plug-in to fail due to - // [OERingBuffer freeBytes] not being available in that version. - // - // Therefore, let's make a note of the problem here and revert OpenEmuBase.framework back to a - // version before the method renaming broke things, then use the older-named method instead. - // - // TODO: Use the newer-named method, [OERingBuffer freeBytes], when a newer version of OpenEmu.app - // is finally released. Or maybe wait for the OpenEmu Team to bring back [OERingBuffer usedBytes] - // and let them deprecate it correctly. + // TODO: Use the newer-named method, [OERingBuffer freeBytes], when a newer version of OpenEmu.app released. + // But for now, use the older-named method, [OERingBuffer usedBytes]. //return (u32)[openEmuSoundInterfaceBuffer freeBytes] / SPU_SAMPLE_SIZE; return (u32)[openEmuSoundInterfaceBuffer usedBytes] / SPU_SAMPLE_SIZE;