diff --git a/iOS/GBBackgroundView.h b/iOS/GBBackgroundView.h index c36260f..9659588 100644 --- a/iOS/GBBackgroundView.h +++ b/iOS/GBBackgroundView.h @@ -11,4 +11,5 @@ - (void)enterPreviewMode:(bool)showLabel; - (void)reloadThemeImages; +- (void)fadeOverlayOut; @end diff --git a/iOS/GBViewController.h b/iOS/GBViewController.h index 096a6b5..3dd1b85 100644 --- a/iOS/GBViewController.h +++ b/iOS/GBViewController.h @@ -7,6 +7,7 @@ typedef enum { GBRunModeTurbo, GBRunModeRewind, GBRunModePaused, + GBRunModeUnderclock, } GBRunMode; @interface GBViewController : UIViewController analogThreshold) { + [self setRunMode:GBRunModeUnderclock ignoreDynamicSpeed:!button.isAnalog]; if (button.isAnalog && [[NSUserDefaults standardUserDefaults] boolForKey:@"GBDynamicSpeed"]) { GB_set_clock_multiplier(&_gb, 1 - ((button.value - analogThreshold) / (1 - analogThreshold) * 0.75)); } - else { - GB_set_clock_multiplier(&_gb, 0.5); - } + _runModeFromController = true; + [_backgroundView fadeOverlayOut]; } else { - GB_set_clock_multiplier(&_gb, 1.0); + if (self.runMode == GBRunModeUnderclock && _runModeFromController) { + [self setRunMode:GBRunModeNormal]; + _runModeFromController = false; + } } break; default: break; @@ -1030,6 +1045,10 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response [_audioLock signal]; [_audioLock unlock]; } + dispatch_async(dispatch_get_main_queue(), ^{ + self.runMode = GBRunModeNormal; + [_backgroundView fadeOverlayOut]; + }); } @@ -1161,16 +1180,19 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response [_audioClient stop]; } - if (_runMode == GBRunModeNormal || _runMode == GBRunModeTurbo) { + if (_runMode == GBRunModeNormal || _runMode == GBRunModeTurbo || _runMode == GBRunModeUnderclock) { _rewindOver = false; } - if (_runMode == GBRunModeNormal || !([[NSUserDefaults standardUserDefaults] boolForKey:@"GBDynamicSpeed"] && !ignoreDynamicSpeed)) { + if (_runMode == GBRunModeNormal || _runMode == GBRunModeUnderclock || !([[NSUserDefaults standardUserDefaults] boolForKey:@"GBDynamicSpeed"] && !ignoreDynamicSpeed)) { if (_runMode == GBRunModeTurbo) { double multiplier = [[NSUserDefaults standardUserDefaults] doubleForKey:@"GBTurboSpeed"]; GB_set_turbo_mode(&_gb, multiplier == 1, false); GB_set_clock_multiplier(&_gb, multiplier); } + else if (_runMode == GBRunModeUnderclock) { + GB_set_clock_multiplier(&_gb, 0.5); + } else { GB_set_turbo_mode(&_gb, false, false); GB_set_clock_multiplier(&_gb, 1.0);