diff --git a/CubeGotchi.ino b/CubeGotchi.ino index c9f233b..4e2c206 100644 --- a/CubeGotchi.ino +++ b/CubeGotchi.ino @@ -34,7 +34,7 @@ // If game time is going faster than it should, increase this value by 1 to slow it down. // fixed microsecond sleep between each cycle used to fine tune the emulator time drift even more -#define FINE_TUNING_DELAY 22 +#define FINE_TUNING_DELAY 16 // If game time is going faster than it should, increase this value /**************************************************************************/ @@ -380,37 +380,45 @@ void setup() { uint32_t middle_long_press_started = 0; uint32_t right_long_press_started = 0; bool is_display_off = false; +const uint32_t AUTO_SAVE_INTERVAL = AUTO_SAVE_MINUTES * 60 * 1000; void loop() { tamalib_mainloop_step_by_step(); -#ifdef AUTO_SAVE_MINUTES - if ((millis() - lastSaveTimestamp) > (AUTO_SAVE_MINUTES * 60 * 1000)) { - lastSaveTimestamp = millis(); + + unsigned long currentMillis = millis(); + + #ifdef AUTO_SAVE_MINUTES + if ((currentMillis - lastSaveTimestamp) > AUTO_SAVE_INTERVAL) { + lastSaveTimestamp = currentMillis; saveStateToEEPROM(&cpuState); } -#endif - if (digitalRead(PIN_BTN_M) == HIGH && digitalRead(PIN_BTN_L) == HIGH) { - if (millis() - middle_long_press_started > 2000) { + #endif + + bool middleLeftPressed = (digitalRead(PIN_BTN_M) == HIGH) && (digitalRead(PIN_BTN_L) == HIGH); + bool rightPressed = (digitalRead(PIN_BTN_R) == HIGH); + + if (middleLeftPressed) { + if ((currentMillis - middle_long_press_started) > 2000) { eraseStateFromEEPROM(); #if defined(ESP8266) || defined(ESP32) ESP.restart(); #endif } - } - else { - middle_long_press_started = millis(); + } else { + middle_long_press_started = currentMillis; } - if (digitalRead(PIN_BTN_R) == HIGH) { - if (millis() - right_long_press_started > 2000) { - display.sleepOn(); - is_display_off = true; - } - else if (is_display_off) { + + if (rightPressed) { + if ((currentMillis - right_long_press_started) > 2000) { + if (!is_display_off) { + display.sleepOn(); + is_display_off = true; + } + } else if (is_display_off) { display.sleepOff(); is_display_off = false; } - } - else { - right_long_press_started = millis(); + } else { + right_long_press_started = currentMillis; } }