diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 41ea85be..4bc5e655 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -3084,9 +3084,11 @@ void consoleWin_t::emuSetFrameAdvDelay(void) void consoleWin_t::setAutoFireOnFrames(void) { - int ret; + int ret, autoFireOnFrames, autoFireOffFrames; QInputDialog dialog(this); + GetAutoFirePattern( &autoFireOnFrames, &autoFireOffFrames ); + dialog.setWindowTitle( tr("AutoFire Pattern ON Frames") ); dialog.setLabelText( tr("Specify desired number of ON frames in autofire pattern:") ); dialog.setOkButtonText( tr("Ok") ); @@ -3098,15 +3100,19 @@ void consoleWin_t::setAutoFireOnFrames(void) if ( QDialog::Accepted == ret ) { - autoFireOnFrames = dialog.intValue(); + autoFireOnFrames = dialog.intValue(); + + SetAutoFirePattern( autoFireOnFrames, autoFireOffFrames ); } } void consoleWin_t::setAutoFireOffFrames(void) { - int ret; + int ret, autoFireOnFrames, autoFireOffFrames; QInputDialog dialog(this); + GetAutoFirePattern( &autoFireOnFrames, &autoFireOffFrames ); + dialog.setWindowTitle( tr("AutoFire Pattern OFF Frames") ); dialog.setLabelText( tr("Specify desired number of OFF frames in autofire pattern:") ); dialog.setOkButtonText( tr("Ok") ); @@ -3118,7 +3124,9 @@ void consoleWin_t::setAutoFireOffFrames(void) if ( QDialog::Accepted == ret ) { - autoFireOffFrames = dialog.intValue(); + autoFireOffFrames = dialog.intValue(); + + SetAutoFirePattern( autoFireOnFrames, autoFireOffFrames ); } } diff --git a/src/drivers/Qt/input.cpp b/src/drivers/Qt/input.cpp index 8be568c1..0e26a101 100644 --- a/src/drivers/Qt/input.cpp +++ b/src/drivers/Qt/input.cpp @@ -49,8 +49,6 @@ /** GLOBALS **/ int NoWaiting = 0; -int autoFireOnFrames = 1; -int autoFireOffFrames = 1; extern Config *g_config; extern bool bindSavestate, frameAdvanceLagSkip, lagCounterDisplay; @@ -1377,29 +1375,10 @@ UpdateGamepad(void) return; } - static int rapid[4][2] = { 0 }; uint32 JS = 0; int x; int wg; - int onFrames; - int offFrames; - int totalFrames; - bool fire, emuUpdated = false; - static unsigned int emuCount = 0; - - if ( emulatorCycleCount != emuCount) - { - emuUpdated = true; - emuCount = emulatorCycleCount; - } - - onFrames = autoFireOnFrames; - offFrames = autoFireOffFrames; - - if ( onFrames < 1 ) onFrames = 1; - if ( offFrames < 1 ) offFrames = 1; - - totalFrames = onFrames + offFrames; + bool fire; int opposite_dirs; g_config->getOption("SDL.Input.EnableOppositeDirectionals", &opposite_dirs); @@ -1451,22 +1430,12 @@ UpdateGamepad(void) { if (DTestButton (&GamePad[wg].bmap[8 + x])) { - fire = (rapid[wg][x] < onFrames); - - //printf("wg:%i x:%i %i Fire:%i \n", wg, x, rapid[wg][x], fire ); + fire = GetAutoFireState(x); if ( fire ) { JS |= (1 << x) << (wg << 3); } - if ( emuUpdated ) - { - rapid[wg][x] = (rapid[wg][x] + 1) % totalFrames; - } - } - else - { - rapid[wg][x] = 0; } } } diff --git a/src/drivers/Qt/input.h b/src/drivers/Qt/input.h index e2d92d77..8de2416d 100644 --- a/src/drivers/Qt/input.h +++ b/src/drivers/Qt/input.h @@ -27,8 +27,6 @@ struct ButtConfig }; extern int NoWaiting; -extern int autoFireOnFrames; -extern int autoFireOffFrames; extern CFGSTRUCT InputConfig[]; extern ARGPSTRUCT InputArgs[]; void ParseGIInput(FCEUGI *GI);