#ifndef DEFS_H #define DEFS_H #include #include #include "defs/background_data.h" #include "defs/sprite_data.h" #include "defs/file_chara.h" #define VERSION "Alpha v0.1" // SCREEN PINOUT // BUTTONS PINOUT #ifdef DEV_UNIT #define K1_PIN 1 #define K2_PIN 2 #define K3_PIN 3 #define K4_PIN 4 #define BUTTON_MODE INPUT_PULLDOWN #define BL_PIN 10 #endif #ifdef ANDREW_UNIT #define K1_PIN 39 #define K2_PIN 8 #define K3_PIN 9 #define K4_PIN 38 #define BUTTON_MODE INPUT_PULLUP #define BL_PIN 42 #endif // SPEAKER PINOUT #define SPK_PIN 7 // I2C PINOUT #define I2C_SCL_PIN 9 #define I2C_SDA_PIN 8 // SPECIAL SCREEN THAT OPENS WHEN TIMERS ARE DONE // RECEIVES AN EXTRA PARAMETER (INTERRUPTKEY) #define TIMER_FINISHED_SCREEN 999 // ANIMATION FRAMERATE DEFINITION IN µS #define ANIMATION_THRESHOLD_TIME_US 500000 #define ANIMATION_SLEEPY_THRESHOLD_TIME_US 2500000 // INACTIVITY TIMERS (LAST TIME A BUTTON WAS PRESSED) #define LAST_PRESSED_BUTTON_THRESHOLD_TIME_US 10000000 #define INACTIVITY_THRESHOLD_TIME_US 30000000 // RTC TIMEOUT WHEN TIME NOT DEFINED #define RTC_TIMEOUT_THRESHOLD_TIME_MS 100 // STANDARD BEEP WHEN PRESSING BUTTON #define BEEP_FREQ_HZ 4100 #define BEEP_LEN_MS 35 // MENU ENTRIES #define STATUS_SCREEN_MENU 0 #define FOOD_SCREEN_MENU 1 #define TRAIN_SCREEN_MENU 2 #define BATTLE_SCREEN_MENU 3 #define POOP_SCREEN_MENU 4 #define MEDICAL_SCREEN_MENU 5 #define SLEEP_SCREEN_MENU 6 #define CHANGE_SCREEN_MENU 7 #define SETTINGS_SCREEN_MENU 8 #define FREEZE_SCREEN_MENU 9 // SCREENS THAT OPEN AFTER CLICKING ON A MENU ENTRY #define STATUS_SCREEN 10 #define FOOD_SCREEN 11 #define TRAIN_SCREEN 12 #define BATTLE_SCREEN 13 #define CLEAR_POOP_SCREEN 14 #define MEDICAL_SCREEN 15 #define SLEEP_SCREEN 16 #define CHANGE_SCREEN 17 #define SETTINGS_SCREEN 18 // ICONS FOR EACH MENU ENTRY (MENU.BIN) #define STATUS_SCREEN_ICON 0 #define FOOD_SCREEN_ICON 1 #define TRAIN_SCREEN_ICON 2 #define BATTLE_SCREEN_ICON 3 #define CLEAR_POOP_ICON 4 #define MEDICAL_SCREEN_ICON 5 #define SLEEP_SCREEN_ICON 6 #define SETTINGS_SCREEN_ICON 8 #define FRIDGE_DOOR 9 #define BED_SPRITE 10 #define EMPTY_EGG 11 #define CARE_MISTAKE_CALL_LIGHT 12 // SCREENS #define OFF_SCREEN -1 #define TITLE_SCREEN 0 #define CLOCK_EDIT_SCREEN 1 #define CLOCK_SCREEN 2 #define IDLE_SCREEN 3 #define MENU_SCREEN 4 #define EGG_SELECT_SCREEN 5 #define EGG_HATCH_SCREEN 6 #define EGG_EMPTY_SCREEN 7 #define EVOLUTION_SCREEN 8 #define FEEDING_SCREEN 20 #define REFUSING_SCREEN 21 #define SLEEPY_SCREEN 22 #define FROZEN_SCREEN 28 #define CARE_MISTAKE_SCREEN 23 #define POOPING_SCREEN 24 #define HAPPY_SCREEN 25 #define ANGRY_SCREEN 26 #define MAIN_SCREEN 27 // TRAINING MODES #define TRAINING_SCREEN_1 30 // SMALL UI ICONS (UI.BIN) #define POOP_ICON 0 #define FOOD_ICON 1 #define PILL_ICON 2 #define ZZZ_ICON 3 #define AGE_ICON 4 #define SCALE_ICON 5 #define ARROW_ICON 6 #define FIREWORKS_ICON 7 #define COMPLAIN_ICON 8 #define FULL_HEART_ICON 9 #define EMPTY_HEART_ICON 10 #define CLEANER_ICON 11 #define SECONDS_IN_DAY 86400 // STANDARD VPET PARAMETER (CARE MISTAKES) #define CARE_MISTAKE_COUNTER_MAX 60 #define SLEEP_CARE_MISTAKE_COUNTER_MAX 60 #define SLEEP_COUNTER_MAX 120 // ATTACK PATTERNS #define ATTACK_PATTERN_MEDIOCRE 0 #define ATTACK_PATTERN_BAD 1 #define ATTACK_PATTERN_GOOD 2 #define ATTACK_PATTERN_GREAT 3 #define ATTACK_PATTERN_EXCELLENT 4 // BUTTON PRESSES DEFINITIONS #define K1_PRESSED 8 #define K2_PRESSED 4 #define K3_PRESSED 2 #define K4_PRESSED 1 #define NONE_PRESSED 0 #define SCALE_FACTOR 3 #define CHARA_COUNT_IN_DEVICE 5 #define SPRITE_SCALE 6 extern int screenKey; extern int menuKey; extern int submenuKey; extern int interruptKey; extern bool k1_prev; extern bool k2_prev; extern bool k3_prev; extern bool k4_prev; extern bool inactive; extern bool screenOff; extern uint64_t lastPressedButtonTime; extern uint64_t lastUpdateTime; extern uint64_t lastBeepTime; extern struct tm timeInfo; extern uint32_t dayUnixTime; extern ESP32Time rtc; extern MPU6050 mpu; extern hw_timer_t *actionTimerDelta; extern TaskHandle_t secondLoop; extern bool runVpetTasks; extern uint8_t beepCounter; extern uint16_t stepCounter; extern bool timeSet; extern uint8_t eggNumber; extern Egg_t* eggSelection; extern uint8_t currentCharacter; // Rescatar extern Egg_t* currentEgg; extern LineCare_t** currentLineCareInstr; extern Line_t** currentLine; extern struct CharacterData* charaData; extern struct SpriteData mainCharacterSprites; extern bool isSamplingSteps; extern uint64_t sampleStartTime; extern uint16_t initialSteps; #endif