diff --git a/README.md b/README.md
index 3dbb441..4f71e1c 100644
--- a/README.md
+++ b/README.md
@@ -7,9 +7,9 @@
[](https://www.freertos.org/)
[](#roadmap--milestones)
-A custom, high-performance handheld remote controller engineered from scratch for dual-role applications: **long-range, low-latency RC vehicle control** and **USB/Bluetooth HID gaming**.
+A custom, high-performance handheld remote controller engineered from scratch for dual-role applications: **long-range, low-latency RC vehicle control** and **USB/Bluetooth HID gaming**.
-Built around the **ESP32-S3 (Xtensa® 32-bit LX7 dual-core @ 240 MHz)**, this project bridges hardware and software engineering—combining magnetic Hall-effect sensing, RF telemetry, hardware pulse-counted rotary inputs, hardware PWM audio synthesis, and an SPI graphics pipeline into a unified, battery-powered embedded platform.
+Built around the **ESP32-S3-N16R8 (Xtensa® 32-bit LX7 dual-core @ 240 MHz)**, this project bridges hardware and software engineering—combining analog/Hall-effect sensing on `ADC1`, 2.4 GHz nRF24L01+ RF telemetry, hardware pulse-counted (`pulse_cnt`) rotary inputs, and a shared high-speed `SPI2_HOST` (FSPI) bus driving both the 1.3" SH1106 OLED display and radio transceiver without bus collisions.
---
@@ -18,64 +18,69 @@ Built around the **ESP32-S3 (Xtensa® 32-bit LX7 dual-core @ 240 MHz)**, this pr
- Figure 1: Top assembly layout — Dual Hall-effect joysticks, rotary encoder, tactile buttons, 1.3" SPI OLED display, NeoPixel telemetry bar, and audio transducers.
+ Figure 1: Top assembly layout — ESP32-S3-N16R8 module, analog joystick, quadrature rotary encoder, 1.3" SH1106 SPI OLED display, and nRF24L01+ RF transceiver.
- Figure 2: Ergonomic profile — 2.4 GHz high-gain dipole antenna connected to the NRF24L01+ RF transceiver, rotary dial, and dual USB-C ports.
+ Figure 2: Ergonomic profile — 2.4 GHz external dipole antenna connected to the nRF24L01+ transceiver, rotary dial, and dual USB-C ports.
- Figure 3: Underbody point-to-point bus routing — 6×9 cm perfboard with dedicated decoupled power rails (100 µF smoothing capacitor) and direct GPIO signal lines.
+ Figure 3: Underbody point-to-point bus routing — 6×9 cm perfboard with dedicated decoupled power rails (100 µF smoothing capacitor across nRF24L01+ VCC/GND) and direct FSPI signal lines.
---
-## Key Hardware & Architectural Features
+## Key Hardware & Firmware Architecture
-- **Microcontroller Core:** Espressif ESP32-S3-N16R8 (16 MB Quad SPI Flash, 8 MB Octal PSRAM) running FreeRTOS preemptive multitasking.
-- **Dual Wireless Pipelines:**
- - **2.4 GHz RF (NRF24L01+):** Dedicated SPI radio module with external SMA antenna for low-latency, deterministic RC telemetry.
- - **Bluetooth 5.0 LE & Wi-Fi:** Native wireless stacks for PC/gamepad HID modes and wireless telemetry streaming.
-- **Precision Analog & Digital Controls:**
- - **Dual Hall-Effect Joysticks:** Contactless magnetic sensing for zero stick drift and extended durability.
- - **Hardware Pulse-Counted Rotary Encoder:** Quadrature decoding handled in hardware via the ESP32-S3 `pulse_cnt` peripheral to guarantee zero missed ticks during high-load processing loops.
- - **Dedicated Navigation Buttons:** Tactile push-buttons configured with internal pull-ups for UI interaction and control toggling.
-- **Multi-Sensor Audio & Visual Telemetry:**
- - **1.3" SPI OLED Display (SH1106 / SSD1306):** Driven via hardware DMA SPI (`SPI2_HOST`) with custom frame buffering for menus, telemetry, and live status readouts.
- - **Polyphonic Melodic Synthesis:** Passive buzzer modulated via hardware LEDC PWM timer (`LEDC_TIMER_0`, 13-bit duty resolution).
- - **Percussive Acoustic Alerts:** Dual active buzzers for instant tactile/auditory feedback and warning signals.
- - **Visual Beat & Metric Indicators:** Dedicated Kick (GPIO 21) and Hi-Hat (GPIO 22) LEDs alongside an 8-LED WS2812B NeoPixel RGB strip driven via RMT.
+- **Microcontroller Core:** Espressif **ESP32-S3-N16R8** (16 MB Quad SPI Flash, 8 MB Octal PSRAM) running FreeRTOS.
+- **Collision-Free Shared FSPI (`SPI2_HOST`) Bus:**
+ - Shares `MOSI` (`GPIO 11`), `MISO` (`GPIO 13`), and `SCK` (`GPIO 12`) between the **1.3" SH1106 OLED** (10 MHz clock) and the **nRF24L01+ 2.4 GHz Transceiver** (1 MHz clock) via independent hardware Chip Select lines (`GPIO 10` and `GPIO 14`).
+- **Bare-Metal 5×8 OLED Graphics Engine & Multi-Screen UI State Machine:**
+ - Direct register-level driver for the 1.3" SH1106 controller (handling the 132×64 internal RAM 2-pixel column offset) with a complete 5×8 bitmap font table (`A–Z`, `0–9`, `<`, `>`, `[`, `]`, `(`, `)`, `/`, `-`, `:`, `.`).
+ - **4 Interactive Screens:**
+ 1. `DRIVE VEHICLE`: Real-time One-Shot `ADC1` joystick acquisition (`VRx` / `VRy`) and live 2.4 GHz packet broadcasting (`rc_packet_t`).
+ 2. `RADIO CONFIG`: Verifies physical nRF24L01+ SPI link (`SETUP_AW` register `0x03`) and tunes `RF_CH` (register `0x05`) live across channels `0–125` (`2.400–2.525 GHz`) using the rotary dial.
+ 3. `CALIBRATE`: Live raw `ADC1` readout (`0–4095`) with one-click neutral center-point capture.
+ 4. `SYSTEM INFO`: Displays target silicon (`ESP32-S3`) and real-time free RTOS heap memory (`esp_get_free_heap_size()`).
+- **Hardware Quadrature Rotary Decoder (`pulse_cnt`):**
+ - Uses the ESP32-S3 hardware Pulse Counter peripheral on `GPIO 15` (`CLK`) and `GPIO 16` (`DT`) with a `1000 ns` hardware glitch filter and full 4× quadrature edge/level state decoding, paired with a `300 ms` debounced push-switch (`GPIO 17`).
+- **Wi-Fi-Safe Analog Joystick Acquisition (`ADC1`):**
+ - Routes `VRx` (`GPIO 4`, `ADC1_CH3`) and `VRy` (`GPIO 5`, `ADC1_CH4`) with `12 dB` attenuation (`0–3.3V` full-scale) on `ADC_UNIT_1` to avoid `ADC2` Wi-Fi/RF arbitration conflicts.
- **Power Subsystem:**
- Dual parallel 18650 Li-ion cells delivering **4800 mAh** combined capacity.
- - Dual USB-C ports: one dedicated for high-efficiency battery charging and one for USB-UART flashing, debugging, and wired HID gamepad control.
- - 100 µF low-ESR electrolytic capacitor buffering transient current spikes from RF transmission bursts and buzzer pulses.
+ - 100 µF low-ESR electrolytic bulk decoupling capacitor suppressing nRF24L01+ TX current spikes.
---
## GPIO Pinout & Peripheral Mapping (ESP32-S3 Hardware Specification)
-The physical controller uses a shared high-speed **SPI2_HOST** bus for both the 1.3" OLED and the NRF24L01+ RF transceiver, alongside dedicated ADC1 channels and hardware pulse-counter inputs:
+The physical controller uses a shared high-speed **SPI2_HOST** (FSPI) bus for both the 1.3" SH1106 OLED and the nRF24L01+ RF transceiver, alongside dedicated `ADC1` channels and hardware pulse-counter inputs:
| Peripheral / Signal | GPIO | Hardware Interface | Description |
| :--- | :---: | :--- | :--- |
-| **SPI Bus: MOSI** | `GPIO 11` | SPI Master Output (`SPI2_HOST`) | Shared data line for NRF24L01+ and OLED (`SDA` / `D1`) |
-| **SPI Bus: MISO** | `GPIO 13` | SPI Master Input (`SPI2_HOST`) | Data line from NRF24L01+ radio module |
-| **SPI Bus: SCK (Clock)** | `GPIO 12` | SPI Master Clock (`SPI2_HOST`) | Shared clock line for NRF24L01+ and OLED (`CLK` / `D0`) |
-| **NRF24L01+ Chip Select (CSN)** | `GPIO 14` | Dedicated SPI Device Select | Radio bus enable / frame delimiter |
-| **NRF24L01+ Chip Enable (CE)** | `GPIO 21` | Digital Output | Radio RX/TX state activation and power line |
-| **OLED Chip Select (CS)** | `GPIO 10` | Dedicated SPI Device Select | Display bus enable |
-| **OLED Data/Command (DC)** | `GPIO 9` | Digital Output | 1.3" OLED command vs. graphic data selection |
+| **SPI Bus: MOSI** | `GPIO 11` | SPI Master Output (`SPI2_HOST`) | Shared data line for nRF24L01+ and OLED (`SDA` / `D1`) |
+| **SPI Bus: MISO** | `GPIO 13` | SPI Master Input (`SPI2_HOST`) | Data line from nRF24L01+ radio module |
+| **SPI Bus: SCK (Clock)** | `GPIO 12` | SPI Master Clock (`SPI2_HOST`) | Shared clock line for nRF24L01+ and OLED (`CLK` / `D0`) |
+| **nRF24L01+ Chip Select (CS)** | `GPIO 14` | SPI Device Select | Dedicated radio bus enable |
+| **nRF24L01+ Chip Enable (CE)** | `GPIO 21` | Digital Output | Radio TX/RX power state activation line |
+| **OLED Chip Select (CS)** | `GPIO 10` | SPI Device Select | Display SPI bus enable |
+| **OLED Data/Command (DC)** | `GPIO 9` | Digital Output | 1.3" OLED command vs. data selection |
| **OLED Reset (RES)** | `GPIO 8` | Digital Output | Hardware display reset line |
-| **Joystick VRx (X-Axis)** | `GPIO 4` | ADC1 Channel 3 (12 dB Attenuation) | Analog X-axis potentiometer (0–3.3V range, Wi-Fi safe) |
-| **Joystick VRy (Y-Axis)** | `GPIO 5` | ADC1 Channel 4 (12 dB Attenuation) | Analog Y-axis potentiometer (0–3.3V range, Wi-Fi safe) |
+| **Joystick VRx (X-Axis)** | `GPIO 4` | `ADC1` Channel 3 (`12 dB` Atten) | Analog X-axis potentiometer input (`0–3.3V` safe) |
+| **Joystick VRy (Y-Axis)** | `GPIO 5` | `ADC1` Channel 4 (`12 dB` Atten) | Analog Y-axis potentiometer input (`0–3.3V` safe) |
| **Rotary Encoder CLK** | `GPIO 15` | ESP-IDF `pulse_cnt` Unit | Quadrature channel A (hardware edge counter) |
-| **Rotary Encoder DT** | `GPIO 16` | ESP-IDF `pulse_cnt` Unit | Quadrature channel B (hardware direction sensing) |
-| **Rotary Encoder Switch (SW)**| `GPIO 17` | Digital Input (`PULLUP`) | Rotary push-button (menu select / enter) |
+| **Rotary Encoder DT** | `GPIO 16` | ESP-IDF `pulse_cnt` Unit | Quadrature channel B (direction sensing) |
+| **Rotary Encoder Switch (SW)**| `GPIO 17` | Digital Input (`PULLUP`) | Push-button (menu enter/select mode) |
+
+### Silicon Multiplexing Notes (ESP32-S3-N16R8 vs. Classic ESP32)
+1. **Octal PSRAM & Flash Reservation (`GPIO 26 – GPIO 37`):** On the **ESP32-S3-N16R8** (8 MB Octal PSRAM), `GPIO 26` through `GPIO 37` are wired internally to the Octal SPI Flash/PSRAM bus. Accessing `GPIO 26, 27, 32, 33` triggers an immediate *Guru Meditation Error / Cache Disabled Panic* on boot.
+2. **Unbonded Silicon Pins (`GPIO 22 – GPIO 25`):** `GPIO 22, 23, 24, 25` do not exist on the ESP32-S3 pin multiplexing matrix.
+3. **FSPI (`SPI2_HOST`) Default Matrix:** Uses native ESP32-S3 FSPI pins (`GPIO 10, 11, 12, 13`) for zero-penalty IOMUX/GPIO matrix routing rather than legacy 2016 ESP32 VSPI defaults (`GPIO 5, 18, 23`).
---
@@ -83,13 +88,12 @@ The physical controller uses a shared high-speed **SPI2_HOST** bus for both the
```text
multi-functional-controller/
-├── firmware/ # ESP-IDF C99/C++ Firmware Project
+├── firmware/ # ESP-IDF C99 Firmware Project (ESP32-S3)
│ ├── CMakeLists.txt # Top-level CMake project configuration
-│ ├── sdkconfig # ESP32-S3 configuration (PSRAM, Flash, FreeRTOS)
+│ ├── sdkconfig # ESP32-S3 target configuration
│ └── main/
│ ├── CMakeLists.txt # Component registration
-│ ├── idf_component.yml # Espressif component dependencies (led_strip)
-│ └── mmcontroller.c # Core firmware: FreeRTOS tasks, pulse counter, SPI OLED, LEDC PWM
+│ └── mmcontroller.c # Master firmware: Shared SPI2, SH1106 5x8 UI, nRF24L01+, PCNT, ADC1
├── hardware/ # KiCad 10 Electronic Design Automation (EDA)
│ ├── mfc-1.kicad_pro # KiCad project file
│ ├── mfc-1.kicad_sch # Complete schematic design & component symbols
@@ -99,6 +103,7 @@ multi-functional-controller/
│ ├── SIDE_VIEW_WITH_ANTENNA.png # RF antenna and profile perspective
│ └── BOTTOM_VIEW.png # Perfboard underside bus wiring
├── .gitignore # Clean repository filter (builds, caches, local configs)
+├── LICENSE # MIT License
└── README.md # Master engineering documentation
```
@@ -131,9 +136,8 @@ multi-functional-controller/
4. Flash to the controller and open serial monitoring:
```bash
- idf.py -p /dev/ttyUSB0 flash monitor
+ idf.py -p /dev/ttyACM0 flash monitor
```
- *(Replace `/dev/ttyUSB0` with your serial device node, e.g. `/dev/ttyACM0`)*.
---
@@ -154,15 +158,14 @@ The electronic schematic is developed in **KiCad 10**:
## Roadmap & Milestones
- [x] Initial hardware breadboard and perfboard prototype (6×9 cm assembly).
-- [x] Dual-core ESP-IDF firmware setup with FreeRTOS task scheduling.
-- [x] Hardware pulse-counter integration for quadrature rotary encoder (`driver/pulse_cnt.h`).
-- [x] Hardware LEDC PWM audio synthesis & percussive buzzer drivers.
-- [x] High-speed SPI OLED graphics driver with DMA channel support.
-- [x] Addressable WS2812B NeoPixel telemetry integration.
+- [x] Shared `SPI2_HOST` bus driving both 1.3" SH1106 OLED and nRF24L01+ without bus collisions.
+- [x] Full 5×8 bare-metal font renderer (`A–Z`, `0–9`, and UI punctuation/symbols).
+- [x] Hardware pulse-counter (`pulse_cnt`) quadrature decoder with 1000 ns glitch filter & 300 ms debounced state machine.
+- [x] Live nRF24L01+ SPI register verification (`0x03`) and channel tuning (`0–125`) with `ADC1` joystick packet transmission.
- [ ] Custom multi-layer printed circuit board (PCB) design in KiCad.
- [ ] 3D-printable ergonomic handheld enclosure (PETG / Resin).
-- [ ] Low-latency NRF24L01+ bidirectional packet protocol with ACK-payload telemetry.
-- [ ] Standard USB Gamepad HID descriptor integration for plug-and-play PC gaming.
+- [ ] Bidirectional ACK-payload telemetry from target RC vehicle.
+- [ ] Native USB Gamepad HID descriptor integration on ESP32-S3 USB-OTG port.
---
diff --git a/firmware/main/idf_component.yml b/firmware/main/idf_component.yml
deleted file mode 100644
index 0069167..0000000
--- a/firmware/main/idf_component.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- espressif/led_strip: "==2.4.1"
diff --git a/firmware/main/mmcontroller.c b/firmware/main/mmcontroller.c
index 9de3603..42a2065 100644
--- a/firmware/main/mmcontroller.c
+++ b/firmware/main/mmcontroller.c
@@ -1,2614 +1,485 @@
-#include "led_strip.h"
#include
#include
-#include
#include
#include
-#include
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
-#include "driver/gpio.h"
-#include "driver/ledc.h"
-#include "driver/pulse_cnt.h"
#include "driver/spi_master.h"
+#include "driver/gpio.h"
+#include "driver/pulse_cnt.h"
+#include "esp_adc/adc_oneshot.h"
+#include "esp_system.h"
+#include "esp_log.h"
// ==========================================
-// 1. HARDWARE DEFINITIONS
+// VERIFIED HARDWARE PIN MAPPINGS (ESP32-S3)
// ==========================================
-#define ROTARY_SW_PIN 16
-#define PASSIVE_BUZZER_PIN 25
-#define ACTIVE_BUZZER_1_PIN 26
-#define ACTIVE_BUZZER_2_PIN 27
-#define LED_KICK_PIN 21
-#define LED_HAT_PIN 22
-#define ROTARY_CLK_PIN 32
-#define ROTARY_DT_PIN 33
+#define PIN_NUM_MOSI 11
+#define PIN_NUM_MISO 13
+#define PIN_NUM_CLK 12
-#define BTN_PAUSE_PIN 13
-#define BTN_NEXT_PIN 14
+#define NRF_PIN_CS 14
+#define NRF_PIN_CE 21
-#define OLED_CS_PIN 5
-#define OLED_DC_PIN 2
-#define OLED_RES_PIN 4
-#define OLED_MOSI_PIN 23
-#define OLED_CLK_PIN 18
+#define OLED_PIN_CS 10
+#define OLED_PIN_DC 9
+#define OLED_PIN_RES 8
-#define BUZZER_LEDC_TIMER LEDC_TIMER_0
-#define BUZZER_LEDC_MODE LEDC_LOW_SPEED_MODE
-#define BUZZER_LEDC_CHANNEL LEDC_CHANNEL_0
-#define BUZZER_LEDC_DUTY (4095)
+#define PIN_JOY_VRX 4 // ADC1 Channel 3 (GPIO 4)
+#define PIN_JOY_VRY 5 // ADC1 Channel 4 (GPIO 5)
+#define JOY_ADC_CH_X ADC_CHANNEL_3
+#define JOY_ADC_CH_Y ADC_CHANNEL_4
-pcnt_unit_handle_t pcnt_unit = NULL;
-spi_device_handle_t spi = NULL;
+#define PIN_ENCODER_CLK 15
+#define PIN_ENCODER_DT 16
+#define PIN_ENCODER_SW 17
+
+#define NUM_MENU_ITEMS 4
+
+static const char *TAG = "MFC_CORE";
+spi_device_handle_t oled_spi;
+spi_device_handle_t nrf_spi;
+adc_oneshot_unit_handle_t adc1_handle;
+
+// Global Radio & Calibration State
+int current_radio_channel = 76;
+int joy_center_x = 2048;
+int joy_center_y = 2048;
+
+typedef struct __attribute__((packed)) {
+ uint16_t joy_x;
+ uint16_t joy_y;
+ uint8_t flags;
+ uint8_t channel;
+} rc_packet_t;
+
+typedef enum {
+ SCREEN_MAIN_MENU = 0,
+ SCREEN_DRIVE,
+ SCREEN_RADIO_CONFIG,
+ SCREEN_CALIBRATE,
+ SCREEN_SYSTEM_INFO
+} screen_state_t;
// ==========================================
-// 2. INTER-PROCESS COMMUNICATION (IPC)
+// 5x8 BARE-METAL FONT LIBRARY
// ==========================================
-volatile bool encoder_mode_volume = false;
-volatile float current_volume = 1.0;
-volatile uint32_t current_freq = 0;
-volatile bool current_kick = false;
-volatile bool current_hat = false;
-volatile float current_speed = 1.0;
-
-volatile bool is_paused = false;
-volatile int current_song_idx = 0;
-volatile bool trigger_song_change = false;
-
-// ==========================================
-// 3. GRAPHICS ENGINE & 1.3" OLED DRIVER
-// ==========================================
-uint8_t oled_buffer[1024];
-
-const uint8_t font5x7[59][5] = {
- {0x00,0x00,0x00,0x00,0x00}, {0x00,0x00,0x5f,0x00,0x00}, {0x00,0x07,0x00,0x07,0x00}, {0x14,0x7f,0x14,0x7f,0x14},
- {0x24,0x2a,0x7f,0x2a,0x12}, {0x23,0x13,0x08,0x64,0x62}, {0x36,0x49,0x55,0x22,0x50}, {0x00,0x05,0x03,0x00,0x00},
- {0x00,0x1c,0x22,0x41,0x00}, {0x00,0x41,0x22,0x1c,0x00}, {0x14,0x08,0x3e,0x08,0x14}, {0x08,0x08,0x3e,0x08,0x08},
- {0x00,0x50,0x30,0x00,0x00}, {0x08,0x08,0x08,0x08,0x08}, {0x00,0x60,0x60,0x00,0x00}, {0x20,0x10,0x08,0x04,0x02},
- {0x3e,0x51,0x49,0x45,0x3e}, {0x00,0x42,0x7f,0x40,0x00}, {0x42,0x61,0x51,0x49,0x46}, {0x21,0x41,0x45,0x4b,0x31},
- {0x18,0x14,0x12,0x7f,0x10}, {0x27,0x45,0x45,0x45,0x39}, {0x3c,0x4a,0x49,0x49,0x30}, {0x01,0x71,0x09,0x05,0x03},
- {0x36,0x49,0x49,0x49,0x36}, {0x06,0x49,0x49,0x29,0x1e}, {0x00,0x36,0x36,0x00,0x00}, {0x00,0x56,0x36,0x00,0x00},
- {0x08,0x14,0x22,0x41,0x00}, {0x14,0x14,0x14,0x14,0x14}, {0x00,0x41,0x22,0x14,0x08}, {0x02,0x01,0x51,0x09,0x06},
- {0x32,0x49,0x79,0x41,0x3e}, {0x7e,0x11,0x11,0x11,0x7e}, {0x7f,0x49,0x49,0x49,0x36}, {0x3e,0x41,0x41,0x41,0x22},
- {0x7f,0x41,0x41,0x22,0x1c}, {0x7f,0x49,0x49,0x49,0x41}, {0x7f,0x09,0x09,0x09,0x01}, {0x3e,0x41,0x49,0x49,0x7a},
- {0x7f,0x08,0x08,0x08,0x7f}, {0x00,0x41,0x7f,0x41,0x00}, {0x20,0x40,0x41,0x3f,0x01}, {0x7f,0x08,0x14,0x22,0x41},
- {0x7f,0x40,0x40,0x40,0x40}, {0x7f,0x02,0x0c,0x02,0x7f}, {0x7f,0x04,0x08,0x10,0x7f}, {0x3e,0x41,0x41,0x41,0x3e},
- {0x7f,0x09,0x09,0x09,0x06}, {0x3e,0x41,0x51,0x21,0x5e}, {0x7f,0x09,0x19,0x29,0x46}, {0x46,0x49,0x49,0x49,0x31},
- {0x01,0x01,0x7f,0x01,0x01}, {0x3f,0x40,0x40,0x40,0x3f}, {0x1f,0x20,0x40,0x20,0x1f}, {0x3f,0x40,0x38,0x40,0x3f},
- {0x63,0x14,0x08,0x14,0x63}, {0x07,0x08,0x70,0x08,0x07}, {0x61,0x51,0x49,0x45,0x43}
+const uint8_t font_AZ[26][5] = {
+ {0x7E, 0x11, 0x11, 0x11, 0x7E}, {0x7F, 0x49, 0x49, 0x49, 0x36}, {0x3E, 0x41, 0x41, 0x41, 0x22},
+ {0x7F, 0x41, 0x41, 0x22, 0x1C}, {0x7F, 0x49, 0x49, 0x49, 0x41}, {0x7F, 0x09, 0x09, 0x09, 0x01},
+ {0x3E, 0x41, 0x49, 0x49, 0x7A}, {0x7F, 0x08, 0x08, 0x08, 0x7F}, {0x00, 0x41, 0x7F, 0x41, 0x00},
+ {0x20, 0x40, 0x41, 0x3F, 0x01}, {0x7F, 0x08, 0x14, 0x22, 0x41}, {0x7F, 0x40, 0x40, 0x40, 0x40},
+ {0x7F, 0x02, 0x0C, 0x02, 0x7F}, {0x7F, 0x04, 0x08, 0x10, 0x7F}, {0x3E, 0x41, 0x41, 0x41, 0x3E},
+ {0x7F, 0x09, 0x09, 0x09, 0x06}, {0x3E, 0x41, 0x51, 0x21, 0x5E}, {0x7F, 0x09, 0x19, 0x29, 0x46},
+ {0x46, 0x49, 0x49, 0x49, 0x31}, {0x01, 0x01, 0x7F, 0x01, 0x01}, {0x3F, 0x40, 0x40, 0x40, 0x3F},
+ {0x1F, 0x20, 0x40, 0x20, 0x1F}, {0x3F, 0x40, 0x38, 0x40, 0x3F}, {0x63, 0x14, 0x08, 0x14, 0x63},
+ {0x03, 0x04, 0x78, 0x04, 0x03}, {0x61, 0x51, 0x49, 0x45, 0x43}
};
-void oled_send_cmd(uint8_t cmd) {
- gpio_set_level(OLED_DC_PIN, 0); spi_transaction_t t; memset(&t, 0, sizeof(t));
- uint8_t cmd_ram = cmd; t.length = 8; t.tx_buffer = &cmd_ram; spi_device_polling_transmit(spi, &t);
+const uint8_t font_nums[10][5] = {
+ {0x3E, 0x51, 0x49, 0x45, 0x3E}, {0x00, 0x42, 0x7F, 0x40, 0x00}, {0x42, 0x61, 0x51, 0x49, 0x46},
+ {0x21, 0x41, 0x45, 0x4B, 0x31}, {0x18, 0x14, 0x12, 0x7F, 0x10}, {0x27, 0x45, 0x45, 0x45, 0x39},
+ {0x3C, 0x4A, 0x49, 0x49, 0x30}, {0x01, 0x71, 0x09, 0x05, 0x03}, {0x36, 0x49, 0x49, 0x49, 0x36},
+ {0x06, 0x49, 0x49, 0x29, 0x1E}
+};
+
+const uint8_t* get_font_data(char c) {
+ static const uint8_t f_spc[5] = {0x00, 0x00, 0x00, 0x00, 0x00};
+ static const uint8_t f_gt[5] = {0x08, 0x04, 0x7E, 0x04, 0x08}; // '>'
+ static const uint8_t f_lt[5] = {0x08, 0x14, 0x22, 0x41, 0x00}; // '<'
+ static const uint8_t f_lbr[5] = {0x00, 0x7F, 0x41, 0x41, 0x00}; // '['
+ static const uint8_t f_rbr[5] = {0x00, 0x41, 0x41, 0x7F, 0x00}; // ']'
+ static const uint8_t f_lpar[5] = {0x00, 0x1C, 0x22, 0x41, 0x00}; // '('
+ static const uint8_t f_rpar[5] = {0x00, 0x41, 0x22, 0x1C, 0x00}; // ')'
+ static const uint8_t f_slash[5] = {0x20, 0x10, 0x08, 0x04, 0x02}; // '/'
+ static const uint8_t f_dash[5] = {0x08, 0x08, 0x08, 0x08, 0x08}; // '-'
+ static const uint8_t f_col[5] = {0x00, 0x36, 0x36, 0x00, 0x00}; // ':'
+ static const uint8_t f_dot[5] = {0x00, 0x60, 0x60, 0x00, 0x00}; // '.'
+
+ if (c >= 'A' && c <= 'Z') { return font_AZ[c - 'A']; }
+ if (c >= 'a' && c <= 'z') { return font_AZ[c - 'a']; }
+ if (c >= '0' && c <= '9') { return font_nums[c - '0']; }
+ if (c == '>') { return f_gt; }
+ if (c == '<') { return f_lt; }
+ if (c == '[') { return f_lbr; }
+ if (c == ']') { return f_rbr; }
+ if (c == '(') { return f_lpar; }
+ if (c == ')') { return f_rpar; }
+ if (c == '/') { return f_slash; }
+ if (c == '-') { return f_dash; }
+ if (c == ':') { return f_col; }
+ if (c == '.') { return f_dot; }
+ return f_spc;
}
-void oled_send_data(const uint8_t *data, int len) {
- gpio_set_level(OLED_DC_PIN, 1); spi_transaction_t t; memset(&t, 0, sizeof(t));
- t.length = len * 8; t.tx_buffer = data; spi_device_polling_transmit(spi, &t);
+// ==========================================
+// OLED & NRF SPI DRIVERS
+// ==========================================
+void oled_cmd(uint8_t cmd) {
+ gpio_set_level(OLED_PIN_DC, 0);
+ spi_transaction_t t = { .length = 8, .tx_buffer = &cmd };
+ spi_device_polling_transmit(oled_spi, &t);
}
-void draw_pixel(int x, int y, int color) {
- if (x < 0 || x >= 128 || y < 0 || y >= 64) return;
- if (color) oled_buffer[x + (y / 8) * 128] |= (1 << (y % 8));
- else oled_buffer[x + (y / 8) * 128] &= ~(1 << (y % 8));
+void oled_data(uint8_t data) {
+ gpio_set_level(OLED_PIN_DC, 1);
+ spi_transaction_t t = { .length = 8, .tx_buffer = &data };
+ spi_device_polling_transmit(oled_spi, &t);
}
-void draw_filled_rect(int x, int y, int w, int h, int color) {
- for (int i = x; i < x + w; i++) for (int j = y; j < y + h; j++) draw_pixel(i, j, color);
-}
-
-void draw_rect(int x, int y, int w, int h, int color) {
- for (int i = x; i < x + w; i++) { draw_pixel(i, y, color); draw_pixel(i, y + h - 1, color); }
- for (int j = y; j < y + h; j++) { draw_pixel(x, j, color); draw_pixel(x + w - 1, j, color); }
-}
-
-void draw_string(int x, int y, const char* str) {
- while(*str) {
- char c = *str;
- if (c >= 32 && c <= 90) {
- for(int i=0; i<5; i++) for(int j=0; j<8; j++) if((font5x7[c-32][i] >> j) & 1) draw_pixel(x+i, y+j, 1);
- } else if (c >= 97 && c <= 122) {
- for(int i=0; i<5; i++) for(int j=0; j<8; j++) if((font5x7[c-64][i] >> j) & 1) draw_pixel(x+i, y+j, 1);
- }
- x += 6; str++;
+void oled_draw_string(uint8_t page, uint8_t col, const char* str) {
+ oled_cmd(0xB0 + page);
+ uint8_t phys_col = col + 2; // SH1106 132x64 internal RAM 2-px offset
+ oled_cmd(0x00 | (phys_col & 0x0F));
+ oled_cmd(0x10 | ((phys_col >> 4) & 0x0F));
+ while (*str) {
+ const uint8_t* pixels = get_font_data(*str++);
+ for (int i = 0; i < 5; i++) { oled_data(pixels[i]); }
+ oled_data(0x00);
}
}
-void oled_push_framebuffer(void) {
- for(int page = 0; page < 8; page++) {
- oled_send_cmd(0xB0 + page); oled_send_cmd(0x02); oled_send_cmd(0x10);
- oled_send_data(&oled_buffer[page * 128], 128);
+void oled_clear(void) {
+ for (uint8_t p = 0; p < 8; p++) {
+ oled_cmd(0xB0 + p); oled_cmd(0x02); oled_cmd(0x10);
+ for (uint8_t c = 0; c < 128; c++) { oled_data(0x00); }
}
}
-// ==========================================
-// 4. THE ULTIMATE 8-TRACK PLAYLIST (FLASH MEMORY STORAGE)
-// ==========================================
-typedef struct { uint32_t frequency; uint32_t duration; bool kick_drum; bool hi_hat; } SequenceStep;
-
-#define REST 0
-#define NOTE_G3 196
-#define NOTE_GS3 208
-#define NOTE_A3 220
-#define NOTE_AS3 233
-#define NOTE_B3 247
-#define NOTE_C4 262
-#define NOTE_CS4 277
-#define NOTE_D4 294
-#define NOTE_DS4 311
-#define NOTE_E4 330
-#define NOTE_F4 349
-#define NOTE_FS4 370
-#define NOTE_G4 392
-#define NOTE_GS4 415
-#define NOTE_A4 440
-#define NOTE_AS4 466
-#define NOTE_B4 494
-#define NOTE_C5 523
-#define NOTE_CS5 554
-#define NOTE_D5 587
-#define NOTE_DS5 622
-#define NOTE_E5 659
-#define NOTE_F5 698
-#define NOTE_FS5 740
-#define NOTE_G5 784
-#define NOTE_GS5 831
-#define NOTE_A5 880
-#define NOTE_AS5 932
-#define NOTE_B5 988
-#define NOTE_C6 1047
-#define NOTE_CS6 1109
-#define NOTE_D6 1175
-#define NOTE_DS6 1245
-#define NOTE_E6 1319
-
-
-// Converted from: mario.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_mario[] = {
- {659, 209, true, false}, {659, 214, true, false}, {0, 218, false, false}, {659, 209, true, false},
- {0, 218, false, false}, {523, 209, true, false}, {659, 361, true, false}, {0, 71, false, false},
- {783, 357, true, false}, {0, 500, false, false}, {391, 357, true, false}, {0, 500, false, false},
- {391, 146, true, false}, {587, 150, false, false}, {587, 150, false, false}, {440, 150, false, false},
- {0, 153, false, false}, {587, 146, false, false}, {493, 553, false, false}, {0, 200, false, false},
- {587, 75, false, false}, {587, 71, false, false}, {493, 150, false, false}, {523, 150, false, false},
- {587, 253, false, false}, {0, 50, false, false}, {391, 146, true, false}, {587, 150, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {0, 153, false, false}, {587, 146, false, false},
- {493, 553, false, false}, {0, 275, false, false}, {0, 675, false, false}, {391, 146, true, false},
- {587, 150, false, false}, {587, 150, false, false}, {440, 150, false, false}, {0, 153, false, false},
- {587, 146, false, false}, {493, 553, false, false}, {0, 200, false, false}, {587, 75, false, false},
- {587, 71, false, false}, {493, 150, false, false}, {523, 150, false, false}, {587, 253, false, false},
- {0, 50, false, false}, {391, 146, true, false}, {587, 150, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {0, 153, false, false}, {587, 146, false, false}, {493, 553, false, false},
- {0, 275, false, false}, {0, 675, false, false}, {587, 146, true, false}, {523, 150, false, false},
- {587, 150, false, false}, {493, 150, false, false}, {0, 153, false, false}, {587, 146, false, false},
- {783, 828, false, false}, {0, 675, false, false}, {587, 146, true, false}, {523, 150, false, false},
- {587, 150, false, false}, {493, 150, false, false}, {0, 153, false, false}, {587, 146, false, false},
- {523, 828, false, false}, {0, 675, false, false}, {587, 146, true, false}, {523, 150, false, false},
- {587, 150, false, false}, {493, 150, false, false}, {0, 153, false, false}, {587, 146, false, false},
- {783, 828, false, false}, {0, 675, false, false}, {880, 146, false, true}, {783, 150, false, false},
- {880, 150, false, false}, {783, 150, false, false}, {0, 153, false, false}, {987, 146, false, false},
- {783, 828, false, false}, {0, 675, false, false}, {0, 2000, true, false}, {329, 244, false, false},
- {329, 250, false, false}, {0, 755, false, false}, {329, 244, false, false}, {329, 250, false, false},
- {329, 125, false, false}, {329, 125, false, false}, {349, 250, true, false}, {349, 250, false, false},
- {0, 755, false, false}, {349, 244, false, false}, {349, 250, false, false}, {349, 125, false, false},
- {349, 125, false, false}, {391, 250, true, false}, {391, 250, false, false}, {0, 755, false, false},
- {391, 244, false, false}, {391, 250, false, false}, {391, 125, false, false}, {391, 125, false, false},
- {349, 250, true, false}, {349, 250, false, false}, {0, 755, false, false}, {349, 244, false, false},
- {349, 250, false, false}, {349, 125, false, false}, {349, 125, false, false}, {329, 672, true, false},
- {0, 83, false, false}, {329, 494, false, false}, {391, 250, false, false}, {440, 250, false, false},
- {391, 130, false, false}, {391, 119, false, false}, {261, 1881, true, false}, {0, 125, false, false},
- {349, 666, true, true}, {0, 83, false, false}, {349, 494, false, false}, {440, 250, false, false},
- {493, 250, false, false}, {440, 130, false, false}, {440, 119, false, false}, {311, 1881, true, true},
- {0, 125, false, false}, {391, 666, true, true}, {0, 83, false, false}, {391, 494, false, false},
- {523, 250, false, false}, {587, 250, false, false}, {523, 130, false, false}, {523, 119, false, false},
- {783, 672, true, true}, {0, 83, false, false}, {698, 494, false, false}, {523, 250, false, false},
- {391, 250, false, false}, {349, 130, false, false}, {349, 119, false, false}, {659, 672, true, true},
- {0, 83, false, false}, {523, 494, false, false}, {440, 250, false, false}, {349, 250, false, false},
- {329, 130, false, false}, {329, 119, false, false}, {311, 1380, true, false}, {0, 125, false, false},
- {277, 2376, false, false}, {0, 125, false, false}, {261, 244, true, false}, {0, 250, true, true},
- {261, 250, true, false}, {293, 62, false, false}, {0, 62, false, true}, {261, 125, true, false},
- {0, 130, false, false}, {0, 369, true, true}, {0, 250, true, true}, {0, 250, true, true},
- {0, 422, true, true}, {0, 83, false, false}, {0, 119, true, true}, {0, 250, true, true},
- {0, 125, true, true}, {0, 755, false, false}, {293, 182, false, false}, {0, 67, false, false},
- {329, 119, false, true}, {311, 125, false, false}, {329, 125, false, false}, {391, 46, false, false},
- {391, 83, false, false}, {391, 119, false, true}, {440, 125, false, false}, {391, 250, false, true},
- {261, 255, false, false}, {261, 166, false, true}, {0, 78, false, false}, {0, 255, false, true},
- {0, 119, false, true}, {0, 46, false, true}, {0, 78, false, false}, {0, 125, false, true},
- {0, 125, false, true}, {0, 125, false, true}, {261, 46, false, false}, {261, 83, false, false},
- {261, 119, false, true}, {293, 125, false, false}, {261, 125, false, false}, {261, 125, false, true},
- {0, 255, false, true}, {0, 166, false, true}, {0, 333, false, false}, {0, 166, false, true},
- {0, 78, false, false}, {0, 125, false, true}, {0, 125, false, true}, {0, 125, false, true},
- {391, 46, false, false}, {391, 83, false, false}, {391, 244, false, true}, {0, 125, false, true},
- {0, 125, false, true}, {0, 125, false, true}, {391, 130, false, false}, {391, 244, false, true},
- {0, 313, false, true}, {391, 108, false, false}, {391, 78, false, false}, {349, 250, false, true},
- {391, 171, false, false}, {391, 78, false, false}, {440, 125, false, true}, {391, 250, false, false},
- {293, 125, false, true}, {293, 255, false, false}, {293, 166, false, true}, {0, 328, false, false},
- {293, 187, false, true}, {0, 62, false, false}, {329, 125, false, true}, {311, 125, false, false},
- {329, 125, false, false}, {391, 46, false, false}, {391, 83, false, false}, {391, 119, false, true},
- {440, 125, false, false}, {391, 250, false, true}, {466, 255, false, false}, {466, 166, false, true},
- {0, 78, false, false}, {0, 255, false, true}, {415, 166, false, false}, {415, 78, false, false},
- {440, 125, false, true}, {415, 125, false, false}, {440, 125, false, false}, {523, 46, false, false},
- {523, 83, false, false}, {523, 119, false, true}, {587, 125, false, false}, {523, 125, false, false},
- {523, 125, false, true}, {440, 255, false, false}, {440, 166, false, true}, {0, 78, false, false},
- {0, 255, false, true}, {440, 166, false, false}, {440, 78, false, false}, {391, 125, false, true},
- {369, 125, false, false}, {391, 125, false, false}, {0, 46, false, true}, {0, 83, false, false},
- {0, 244, false, true}, {391, 125, false, true}, {369, 125, false, false}, {391, 125, false, false},
- {0, 130, false, true}, {0, 119, false, true}, {0, 125, false, true}, {349, 250, false, true},
- {329, 171, false, false}, {329, 78, false, false}, {261, 422, true, true}, {261, 83, false, false},
- {261, 119, false, true}, {261, 250, false, true}, {261, 125, false, false}, {0, 380, false, false},
- {0, 375, false, false}, {293, 119, false, false}, {311, 125, false, false}, {329, 125, false, true},
- {311, 125, false, false}, {329, 125, false, true}, {391, 125, false, false}, {391, 125, false, false},
- {440, 125, false, false}, {391, 130, false, false}, {391, 119, false, true}, {261, 255, false, false},
- {261, 166, false, true}, {0, 78, false, false}, {391, 250, false, false}, {349, 62, false, true},
- {329, 62, false, false}, {293, 62, false, true}, {0, 62, false, false}, {0, 62, false, true},
- {0, 62, false, true}, {0, 62, false, true}, {0, 62, false, true}, {0, 125, false, true},
- {261, 125, false, false}, {261, 125, false, false}, {293, 125, false, false}, {261, 130, false, false},
- {261, 119, false, true}, {0, 255, false, true}, {0, 166, false, true}, {0, 78, false, false},
- {349, 250, false, false}, {329, 62, false, true}, {293, 62, false, false}, {261, 62, false, false},
- {0, 62, false, false}, {0, 62, false, true}, {0, 62, false, true}, {0, 62, false, true},
- {0, 62, false, true}, {0, 125, false, true}, {391, 125, false, true}, {391, 255, false, false},
- {391, 57, false, true}, {0, 62, false, true}, {0, 125, false, true}, {0, 125, false, true},
- {0, 375, false, true}, {0, 313, false, true}, {391, 67, false, false}, {391, 119, false, false},
- {349, 250, false, true}, {391, 125, false, false}, {391, 62, false, false}, {391, 62, false, true},
- {440, 125, false, false}, {391, 130, false, false}, {391, 119, false, true}, {293, 437, false, false},
- {261, 62, false, false}, {0, 46, false, true}, {0, 15, false, false}, {0, 62, false, true},
- {0, 62, false, true}, {0, 62, false, true}, {0, 125, false, true}, {293, 187, true, true},
- {0, 62, false, false}, {329, 125, false, true}, {311, 125, false, false}, {329, 125, false, false},
- {391, 125, false, true}, {391, 125, false, false}, {440, 125, false, false}, {391, 250, false, true},
- {466, 255, false, false}, {466, 166, false, true}, {261, 78, false, false}, {293, 125, false, false},
- {329, 130, false, false}, {415, 119, false, false}, {415, 125, false, false}, {440, 125, false, true},
- {415, 125, false, false}, {440, 125, false, false}, {523, 46, false, false}, {523, 78, false, false},
- {0, 130, false, true}, {587, 119, false, false}, {523, 125, false, false}, {523, 125, false, true},
- {440, 255, false, false}, {440, 166, false, true}, {261, 78, false, false}, {311, 125, false, false},
- {293, 130, false, false}, {440, 119, false, false}, {440, 125, false, true}, {391, 125, false, false},
- {369, 125, false, false}, {391, 125, false, true}, {0, 125, false, true}, {0, 250, false, false},
- {391, 125, false, false}, {369, 125, false, true}, {391, 125, false, false}, {0, 130, false, true},
- {0, 119, false, true}, {0, 125, false, true}, {349, 250, false, false}, {329, 250, false, true},
- {261, 422, false, true}, {261, 83, false, false}, {261, 119, false, true}, {261, 250, false, true},
- {261, 547, false, false}, {0, 83, false, false}, {329, 182, false, false}, {349, 62, false, false},
- {391, 125, false, false}, {415, 125, false, false}, {880, 672, false, false}, {0, 83, false, false},
- {698, 244, false, false}, {783, 672, false, false}, {0, 83, false, false}, {659, 244, false, false},
- {698, 375, false, false}, {783, 125, false, false}, {0, 318, false, false}, {659, 103, false, false},
- {0, 83, false, false}, {659, 182, false, false}, {698, 62, false, false}, {783, 125, false, false},
- {830, 125, false, false}, {0, 505, false, false}, {880, 666, false, false}, {0, 83, false, false},
- {830, 244, false, false}, {783, 672, false, false}, {0, 83, false, false}, {739, 244, false, false},
- {698, 375, false, false}, {659, 375, false, false}, {523, 672, false, false}, {0, 583, false, false},
- {880, 244, false, false}, {880, 250, false, false}, {830, 250, false, false}, {830, 250, false, false},
- {783, 250, false, false}, {783, 250, false, false}, {739, 250, false, false}, {739, 250, false, false},
- {698, 375, false, false}, {783, 125, false, false}, {0, 255, false, false}, {659, 1125, false, false},
- {0, 125, false, false}, {880, 244, false, false}, {880, 250, false, false}, {830, 250, false, false},
- {830, 250, false, false}, {783, 250, false, false}, {783, 250, false, false}, {739, 250, false, false},
- {739, 250, false, false}, {698, 375, false, false}, {659, 125, false, false}, {0, 255, false, false},
- {523, 1125, false, true}, {0, 125, false, false}, {523, 119, false, false}, {329, 250, false, true},
- {466, 125, false, true}, {0, 505, false, false}, {523, 119, false, false}, {329, 250, false, true},
- {466, 125, false, true}, {0, 505, false, false}, {440, 119, false, true}, {261, 250, true, false},
- {311, 125, false, true}, {0, 505, false, false}, {440, 119, false, true}, {261, 250, true, false},
- {311, 125, false, true}, {0, 505, false, false}, {523, 119, false, false}, {329, 250, false, true},
- {466, 125, false, true}, {0, 505, false, false}, {523, 119, false, false}, {329, 250, false, true},
- {466, 125, false, true}, {0, 505, false, false}, {440, 244, false, true}, {440, 250, false, true},
- {440, 250, false, true}, {440, 250, false, true}, {415, 422, false, true}, {0, 83, false, false},
- {391, 57, false, true}, {349, 62, false, true}, {329, 62, false, true}, {293, 62, false, true},
- {261, 62, true, false}, {0, 62, true, true}, {0, 125, true, true}, {523, 125, false, false},
- {329, 250, false, true}, {466, 125, false, true}, {0, 505, false, false}, {523, 119, false, false},
- {329, 250, false, true}, {466, 125, false, true}, {0, 505, false, false}, {440, 119, false, true},
- {261, 250, true, false}, {311, 125, false, true}, {0, 505, false, false}, {440, 119, false, true},
- {261, 250, true, false}, {311, 125, false, true}, {0, 505, false, false}, {523, 119, false, false},
- {329, 250, false, true}, {466, 125, false, true}, {0, 505, false, false}, {523, 119, false, false},
- {329, 250, false, true}, {466, 125, false, true}, {0, 505, false, false}, {783, 357, false, true},
- {0, 285, false, false}, {880, 209, false, true}, {0, 218, false, false}, {783, 209, false, true},
- {0, 218, false, false}, {739, 209, false, true}, {783, 214, false, true}, {1046, 214, false, true},
- {1318, 361, false, false}, {0, 500, false, false}, {391, 209, false, false}, {523, 214, false, false},
- {698, 361, false, true}, {0, 285, false, false}, {783, 209, false, true}, {0, 218, false, false},
- {698, 209, false, true}, {0, 218, false, false}, {659, 209, true, true}, {698, 214, false, true},
- {987, 214, false, true}, {1174, 361, false, true}, {0, 500, false, false}, {391, 209, false, false},
- {493, 214, false, false}, {659, 361, true, true}, {0, 285, false, false}, {698, 209, false, true},
- {0, 218, false, false}, {659, 209, true, true}, {0, 218, false, false}, {622, 209, true, true},
- {659, 214, true, true}, {880, 214, false, true}, {1046, 361, false, true}, {0, 285, false, false},
- {880, 209, true, true}, {987, 214, false, true}, {1046, 214, false, true}, {1174, 214, false, true},
- {1046, 214, false, true}, {1174, 214, false, true}, {1046, 428, false, true}, {880, 214, false, true},
- {739, 214, true, true}, {587, 214, true, true}, {523, 214, true, true}, {440, 214, true, true},
- {0, 214, true, true}, {0, 969, false, true}, {0, 107, false, false}, {0, 209, true, false},
- {0, 214, false, true}, {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false},
- {0, 218, false, false}, {0, 209, false, true}, {0, 218, false, false}, {293, 209, false, false},
- {391, 214, true, false}, {391, 147, false, true}, {0, 66, false, false}, {0, 218, false, true},
- {783, 142, false, false}, {783, 66, false, false}, {0, 862, false, false}, {0, 209, true, false},
- {0, 214, true, false}, {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false},
- {0, 218, false, false}, {0, 209, false, true}, {0, 218, false, false}, {293, 209, false, false},
- {391, 214, true, false}, {391, 147, true, false}, {0, 66, false, false}, {0, 218, false, true},
- {783, 142, false, false}, {783, 66, false, false}, {0, 433, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 209, true, false}, {0, 214, false, true}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 218, false, false}, {0, 209, false, true},
- {0, 218, false, false}, {293, 209, false, false}, {391, 214, true, false}, {391, 147, false, true},
- {0, 66, false, false}, {0, 218, false, true}, {783, 142, false, false}, {783, 66, false, false},
- {0, 862, false, false}, {0, 209, true, false}, {0, 214, true, false}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 218, false, false}, {0, 209, false, true},
- {0, 218, false, false}, {293, 209, false, false}, {391, 214, true, false}, {391, 147, true, false},
- {0, 66, false, false}, {0, 218, false, true}, {783, 142, false, false}, {783, 66, false, false},
- {0, 862, false, false}, {0, 209, true, false}, {0, 214, true, false}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 218, false, false}, {0, 209, false, true},
- {0, 218, false, false}, {293, 209, false, false}, {391, 214, true, false}, {391, 147, true, false},
- {0, 66, false, false}, {0, 218, false, true}, {783, 142, false, false}, {783, 66, false, false},
- {0, 862, false, false}, {0, 209, true, false}, {0, 214, true, false}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 218, false, false}, {0, 209, false, true},
- {0, 218, false, false}, {293, 209, false, false}, {391, 214, true, false}, {391, 147, true, false},
- {0, 66, false, false}, {0, 218, false, true}, {783, 142, false, false}, {783, 66, false, false},
- {0, 433, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 209, true, false},
- {293, 214, false, true}, {391, 214, false, false}, {440, 214, false, false}, {493, 214, false, false},
- {523, 214, false, false}, {493, 214, false, true}, {440, 214, false, true}, {391, 214, true, false},
- {391, 147, true, false}, {0, 66, false, false}, {293, 361, false, true}, {0, 71, false, false},
- {261, 357, false, false}, {0, 71, false, false}, {391, 357, false, false}, {0, 71, false, false},
- {293, 209, true, false}, {293, 147, true, false}, {0, 66, false, false}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 433, false, false}, {0, 214, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 214, true, false}, {0, 214, true, false},
- {0, 361, false, true}, {0, 285, false, false}, {261, 209, false, false}, {0, 214, true, false},
- {261, 214, false, true}, {0, 214, true, true}, {293, 214, false, true}, {391, 361, false, true},
- {0, 285, false, false}, {0, 209, false, true}, {0, 218, false, false}, {0, 209, false, true},
- {0, 214, true, false}, {0, 214, false, true}, {0, 218, false, true}, {293, 142, false, false},
- {293, 66, false, false}, {0, 218, false, false}, {391, 209, false, false}, {0, 433, false, false},
- {0, 209, true, false}, {293, 214, false, true}, {391, 214, false, false}, {440, 214, false, false},
- {493, 214, false, false}, {523, 214, false, false}, {493, 214, false, true}, {440, 214, false, true},
- {391, 214, true, false}, {391, 147, true, false}, {0, 66, false, false}, {293, 361, false, true},
- {0, 71, false, false}, {261, 357, false, false}, {0, 71, false, false}, {391, 357, false, false},
- {0, 71, false, false}, {293, 209, true, false}, {293, 147, true, false}, {0, 66, false, false},
- {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false}, {0, 218, false, false},
- {0, 209, false, true}, {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false},
- {0, 214, true, false}, {0, 214, true, false}, {0, 218, false, false}, {261, 209, false, true},
- {0, 218, false, false}, {261, 209, false, false}, {0, 218, true, false}, {261, 142, false, false},
- {261, 66, false, false}, {0, 214, true, true}, {293, 214, false, true}, {391, 218, false, false},
- {391, 142, false, true}, {0, 66, false, false}, {0, 218, false, false}, {0, 209, false, true},
- {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false}, {0, 214, true, false},
- {0, 214, false, true}, {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false},
- {0, 862, false, false}, {0, 209, true, false}, {0, 214, false, true}, {261, 218, false, false},
- {391, 142, false, false}, {391, 66, false, false}, {659, 214, false, false}, {587, 214, false, false},
- {523, 214, false, false}, {659, 214, false, false}, {587, 214, true, false}, {587, 147, false, true},
- {0, 66, false, false}, {0, 218, false, true}, {391, 142, false, false}, {391, 66, false, false},
- {0, 218, false, false}, {0, 209, false, true}, {0, 361, false, true}, {0, 71, false, false},
- {0, 209, true, false}, {0, 214, false, true}, {0, 218, false, true}, {329, 142, false, false},
- {329, 66, false, false}, {587, 214, false, false}, {523, 214, false, false}, {493, 214, false, true},
- {523, 147, false, false}, {523, 66, false, false}, {493, 214, true, false}, {493, 147, false, true},
- {0, 66, false, false}, {0, 218, false, true}, {391, 142, false, false}, {391, 66, false, false},
- {0, 433, false, false}, {0, 357, false, true}, {0, 71, false, false}, {0, 209, true, false},
- {0, 214, false, true}, {261, 218, false, false}, {391, 142, false, false}, {391, 66, false, false},
- {659, 214, false, false}, {587, 214, false, false}, {523, 214, false, false}, {659, 214, false, false},
- {587, 214, true, false}, {587, 147, false, true}, {0, 66, false, false}, {0, 218, false, true},
- {391, 142, false, false}, {391, 66, false, false}, {0, 433, false, false}, {0, 357, false, true},
- {0, 71, false, false}, {0, 209, true, false}, {0, 214, false, true}, {0, 361, false, true},
- {0, 71, false, false}, {523, 209, false, false}, {587, 214, false, false}, {523, 214, false, true},
- {493, 147, false, false}, {493, 66, false, false}, {0, 214, true, false}, {0, 214, false, true},
- {391, 361, false, false}, {0, 71, false, false}, {329, 209, false, true}, {329, 147, false, true},
- {0, 66, false, false}, {0, 433, false, false}, {0, 209, true, false}, {293, 214, false, true},
- {391, 214, false, false}, {440, 214, false, false}, {493, 214, false, false}, {523, 214, false, false},
- {493, 214, false, true}, {440, 147, false, false}, {440, 66, false, false}, {391, 214, true, false},
- {391, 147, true, false}, {0, 66, false, false}, {293, 361, false, true}, {0, 71, false, false},
- {261, 214, false, false}, {261, 142, true, false}, {0, 66, false, false}, {391, 361, false, true},
- {0, 71, false, false}, {293, 209, true, false}, {293, 147, true, false}, {0, 66, false, false},
- {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false}, {0, 433, false, false},
- {0, 214, true, false}, {0, 142, false, true}, {0, 66, false, false}, {0, 214, true, false},
- {0, 214, true, false}, {0, 361, false, true}, {0, 500, false, false}, {0, 214, true, false},
- {261, 142, false, false}, {261, 66, false, false}, {0, 214, true, true}, {293, 214, false, true},
- {391, 361, false, true}, {0, 285, false, false}, {0, 209, false, true}, {0, 218, false, true},
- {0, 142, false, true}, {0, 66, false, false}, {0, 361, true, false}, {0, 71, false, false},
- {0, 214, false, true}, {293, 142, false, false}, {293, 66, false, false}, {0, 862, false, false},
- {0, 209, true, false}, {293, 214, false, true}, {391, 214, false, false}, {440, 214, false, false},
- {493, 214, false, false}, {523, 214, false, false}, {493, 214, false, true}, {440, 214, false, true},
- {391, 214, true, false}, {391, 147, true, false}, {0, 66, false, false}, {293, 361, false, true},
- {0, 71, false, false}, {261, 214, false, false}, {261, 142, true, false}, {0, 66, false, false},
- {391, 361, false, false}, {0, 71, false, false}, {293, 209, true, false}, {293, 147, true, false},
- {0, 66, false, false}, {0, 218, false, true}, {0, 142, false, true}, {0, 66, false, false},
- {0, 218, false, false}, {261, 209, false, false}, {0, 218, false, true}, {0, 142, false, true},
- {0, 66, false, false}, {0, 214, true, false}, {0, 214, true, false}, {0, 361, false, true},
- {0, 285, false, false}, {261, 209, false, false}, {0, 218, true, false}, {261, 142, false, false},
- {261, 66, false, false}, {0, 214, true, true}, {293, 214, false, true}, {391, 361, false, true},
- {0, 285, false, false}, {0, 209, false, true}, {0, 218, false, true}, {0, 142, false, true},
- {0, 66, false, false}, {0, 214, true, false}, {0, 214, false, true}, {0, 361, false, true},
- {0, 285, false, false}, {391, 209, false, true}, {0, 433, false, false}, {0, 209, true, false},
- {0, 214, true, false}, {0, 218, false, true}, {349, 142, false, true}, {349, 66, false, false},
- {0, 218, false, false}, {349, 209, false, true}, {349, 214, false, true}, {349, 214, false, true},
- {0, 218, true, false}, {349, 142, false, true}, {349, 66, false, false}, {349, 214, false, true},
- {349, 214, false, true}, {0, 218, true, false}, {349, 142, false, true}, {349, 66, false, false},
- {349, 214, false, true}, {349, 147, false, true}, {349, 66, false, false}, {0, 214, true, false},
- {0, 214, true, false}, {0, 218, false, true}, {391, 142, false, true}, {391, 66, false, false},
- {0, 218, false, false}, {391, 209, false, true}, {0, 218, false, true}, {391, 142, false, true},
- {391, 66, false, false}, {0, 218, true, false}, {391, 142, false, true}, {391, 66, false, false},
- {0, 214, false, true}, {391, 111, false, true}, {391, 102, false, true}, {391, 214, false, true},
- {391, 214, false, true}, {391, 214, false, true}, {391, 214, false, true}, {0, 214, true, false},
- {0, 214, true, false}, {0, 218, false, true}, {391, 142, false, false}, {391, 66, false, false},
- {0, 218, false, false}, {391, 209, false, false}, {0, 218, false, true}, {391, 142, false, false},
- {391, 66, false, false}, {0, 218, true, false}, {440, 142, false, false}, {440, 66, false, false},
- {0, 218, false, true}, {440, 142, false, false}, {440, 66, false, false}, {0, 218, false, false},
- {440, 209, false, true}, {0, 218, false, false}, {0, 209, false, true}, {0, 371, true, true},
- {0, 375, true, true}, {0, 375, true, true}, {0, 1133, true, true}, {293, 625, false, true},
- {0, 125, false, false}, {587, 156, false, false}, {523, 160, false, false}, {391, 107, false, true},
- {293, 160, false, true}, {261, 160, true, false}, {0, 107, true, true}, {0, 361, true, true},
- {0, 2108, false, false}, {0, 107, false, false}, {293, 1607, true, true}, {0, 107, false, false},
- {329, 1607, false, true}, {0, 107, false, false}, {349, 1607, false, false}, {0, 107, false, false},
- {391, 1607, false, false}, {0, 107, false, false}, {293, 1607, true, true}, {0, 107, false, false},
- {329, 1607, false, true}, {0, 107, false, false}, {349, 1607, false, false}, {0, 107, false, false},
- {391, 750, false, false}, {0, 964, false, false}, {293, 357, false, true}, {0, 71, false, false},
- {293, 357, false, true}, {0, 281, false, false}, {293, 214, false, true}, {293, 107, false, true},
- {293, 107, false, true}, {523, 107, false, true}, {523, 107, false, true}, {493, 214, false, true},
- {391, 147, false, false}, {391, 66, false, false}, {329, 361, false, true}, {293, 285, false, false},
- {329, 209, false, true}, {329, 107, false, true}, {329, 107, false, true}, {329, 107, false, true},
- {329, 107, false, true}, {349, 361, false, true}, {293, 71, false, false}, {349, 142, false, true},
- {349, 71, false, false}, {349, 142, false, false}, {0, 281, false, false}, {349, 214, false, true},
- {391, 107, false, true}, {391, 107, false, true}, {349, 107, false, true}, {349, 107, false, true},
- {391, 361, false, true}, {0, 71, false, false}, {391, 357, false, true}, {0, 285, false, false},
- {391, 209, false, true}, {391, 107, false, true}, {391, 107, false, true}, {391, 107, false, true},
- {391, 107, false, true}, {293, 361, false, true}, {0, 71, false, false}, {293, 357, false, true},
- {0, 281, false, false}, {293, 214, false, true}, {293, 107, false, true}, {293, 107, false, true},
- {523, 107, false, true}, {523, 107, false, true}, {493, 214, false, true}, {391, 147, false, false},
- {391, 66, false, false}, {329, 361, false, true}, {293, 214, false, false}, {0, 71, false, false},
- {329, 209, false, true}, {329, 107, false, true}, {329, 107, false, true}, {587, 107, false, true},
- {587, 107, false, true}, {523, 361, false, true}, {0, 71, false, false}, {493, 357, false, true},
- {493, 285, false, false}, {493, 209, false, true}, {493, 107, false, true}, {493, 107, false, true},
- {440, 107, false, true}, {440, 107, false, true}, {493, 361, false, true}, {493, 71, false, false},
- {493, 357, false, true}, {493, 285, false, false}, {493, 209, false, true}, {493, 107, false, true},
- {493, 107, false, true}, {493, 107, false, true}, {391, 107, false, true}, {349, 361, false, true},
- {311, 71, false, false}, {349, 357, false, true}, {311, 281, false, false}, {349, 214, false, true},
- {349, 107, false, true}, {349, 107, false, true}, {622, 107, false, true}, {622, 107, false, true},
- {587, 214, false, true}, {466, 147, false, false}, {466, 66, false, false}, {391, 361, false, true},
- {349, 285, false, false}, {391, 209, false, true}, {391, 107, false, true}, {391, 107, false, true},
- {391, 107, false, true}, {391, 107, false, true}, {415, 214, false, true}, {415, 147, false, false},
- {349, 71, false, false}, {415, 357, false, true}, {349, 285, false, false}, {415, 209, false, true},
- {415, 107, false, true}, {415, 107, false, true}, {415, 107, false, true}, {415, 107, false, true},
- {466, 361, false, true}, {0, 71, false, false}, {466, 357, false, true}, {0, 285, false, false},
- {466, 209, false, true}, {466, 107, false, true}, {466, 107, false, true}, {466, 107, false, true},
- {466, 107, false, true}, {293, 361, false, true}, {0, 71, false, false}, {293, 357, false, true},
- {0, 281, false, false}, {293, 214, false, true}, {293, 107, false, true}, {293, 107, false, true},
- {523, 107, false, true}, {523, 107, false, true}, {493, 214, false, true}, {391, 147, false, false},
- {391, 66, false, false}, {329, 361, false, true}, {293, 285, false, false}, {329, 209, false, true},
- {329, 107, false, true}, {329, 107, false, true}, {329, 107, false, true}, {329, 107, false, true},
- {391, 361, false, true}, {391, 71, false, false}, {391, 357, false, true}, {391, 285, false, false},
- {391, 209, false, true}, {391, 107, false, true}, {391, 107, false, true}, {391, 107, false, true},
- {349, 107, false, true}, {391, 361, false, true}, {349, 71, false, false}, {391, 357, false, true},
- {349, 285, false, false}, {391, 209, false, true}, {391, 107, false, true}, {391, 107, false, true},
- {391, 107, false, true}, {391, 107, false, true}, {523, 754, false, false}, {0, 107, false, false},
- {783, 750, false, false}, {0, 107, false, false}, {698, 357, false, false}, {0, 71, false, false},
- {587, 1179, false, false}, {0, 107, false, false}, {523, 750, false, false}, {0, 107, false, false},
- {783, 750, false, false}, {0, 107, false, false}, {698, 357, false, false}, {0, 71, false, false},
- {587, 750, false, false}, {0, 107, false, false}, {987, 357, false, false}, {0, 71, false, false},
- {523, 750, false, false}, {0, 107, false, false}, {783, 750, false, false}, {0, 107, false, false},
- {698, 750, false, false}, {0, 107, false, false}, {587, 750, false, false}, {0, 107, false, false},
- {622, 2465, false, false}, {0, 107, false, false}, {523, 750, false, false}, {0, 107, false, false},
- {587, 3322, false, false}, {0, 107, false, false}, {622, 1607, false, false}, {0, 107, false, false},
- {830, 750, false, false}, {0, 107, false, false}, {622, 750, false, false}, {0, 107, false, false},
- {587, 1607, false, false}, {0, 107, false, false}, {783, 1067, false, false}, {391, 53, false, false},
- {349, 53, false, false}, {329, 53, false, false}, {293, 53, false, false}, {391, 53, false, false},
- {349, 53, false, false}, {329, 53, false, false}, {293, 53, false, false}, {391, 53, false, false},
- {349, 53, false, false}, {329, 53, false, false}, {0, 58, false, false}, {0, 244, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 1130, true, false}, {0, 125, false, false},
- {0, 244, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 1130, true, false},
- {0, 125, false, false}, {0, 244, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 500, true, false}, {0, 500, true, false}, {0, 500, true, false}, {0, 1631, true, false},
- {0, 125, false, false}, {880, 244, true, false}, {880, 250, true, false}, {880, 171, true, false},
- {0, 78, false, false}, {830, 1130, true, false}, {0, 125, false, false}, {783, 244, true, false},
- {783, 250, true, false}, {783, 171, true, false}, {0, 78, false, false}, {698, 1130, true, false},
- {0, 125, false, false}, {880, 244, true, false}, {880, 250, true, false}, {880, 171, true, false},
- {0, 78, false, false}, {830, 500, true, false}, {783, 500, true, false}, {698, 500, true, false},
- {587, 1631, true, false}, {0, 125, false, false}, {880, 244, true, false}, {880, 250, true, false},
- {880, 171, true, false}, {0, 78, false, false}, {830, 1130, true, false}, {0, 125, false, false},
- {783, 244, true, false}, {783, 250, true, false}, {783, 171, true, false}, {0, 78, false, false},
- {698, 1130, true, false}, {0, 125, false, false}, {880, 244, true, false}, {880, 250, true, false},
- {880, 171, true, false}, {0, 78, false, false}, {830, 500, true, false}, {783, 500, true, false},
- {698, 500, true, false}, {587, 1631, true, false}, {0, 125, false, false}, {587, 244, true, false},
- {587, 250, true, false}, {587, 171, true, false}, {0, 78, false, false}, {554, 1130, true, false},
- {0, 125, false, false}, {523, 244, true, false}, {523, 250, true, false}, {523, 171, true, false},
- {0, 78, false, false}, {493, 1130, true, false}, {0, 125, false, false}, {587, 244, true, false},
- {587, 250, true, false}, {587, 171, true, false}, {0, 78, false, false}, {554, 1130, true, false},
- {0, 125, false, false}, {523, 244, true, false}, {523, 250, true, false}, {523, 171, true, false},
- {0, 78, false, false}, {493, 1130, true, false}, {0, 125, false, false}, {587, 244, true, false},
- {587, 250, true, false}, {587, 171, true, false}, {0, 78, false, false}, {554, 500, true, false},
- {554, 630, true, false}, {0, 41, false, false}, {0, 83, false, false}, {587, 244, true, false},
- {587, 250, true, false}, {587, 171, true, false}, {0, 78, false, false}, {554, 1130, true, false},
- {0, 125, false, false}, {587, 244, true, false}, {587, 250, true, false}, {587, 171, true, false},
- {0, 78, false, false}, {554, 1130, true, false}, {0, 125, false, false}, {523, 244, true, false},
- {523, 250, true, false}, {523, 171, true, false}, {0, 78, false, false}, {493, 1130, true, false},
- {0, 125, false, false}, {0, 244, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 672, true, false}, {0, 83, false, false},
- {0, 244, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false}, {0, 250, true, false},
- {0, 250, true, false}, {0, 672, true, false}, {0, 83, false, false}, {0, 357, true, false},
- {0, 500, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 357, true, false},
- {0, 500, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 214, true, false}, {523, 142, false, false}, {523, 71, false, false},
- {523, 209, true, false}, {523, 147, false, false}, {523, 66, false, false}, {440, 214, false, false},
- {440, 214, false, false}, {466, 214, true, false}, {466, 147, false, false}, {466, 66, false, false},
- {0, 361, true, false}, {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false},
- {0, 357, true, false}, {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false},
- {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false}, {0, 71, false, false},
- {0, 214, true, false}, {523, 142, false, false}, {523, 71, false, false}, {523, 209, true, false},
- {523, 147, false, false}, {523, 66, false, false}, {440, 214, false, false}, {440, 214, false, false},
- {466, 214, true, false}, {466, 147, false, false}, {466, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 214, true, false}, {349, 142, false, false}, {349, 71, false, false},
- {349, 209, true, false}, {349, 147, false, false}, {349, 66, false, false}, {293, 214, false, false},
- {293, 214, false, false}, {311, 214, true, false}, {311, 147, false, false}, {311, 66, false, false},
- {0, 361, true, false}, {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false},
- {0, 357, true, false}, {0, 71, false, false}, {0, 214, true, false}, {349, 142, false, false},
- {349, 71, false, false}, {349, 209, true, false}, {349, 147, false, false}, {349, 66, false, false},
- {293, 214, false, false}, {293, 214, false, false}, {311, 214, true, false}, {311, 147, false, false},
- {311, 66, false, false}, {0, 361, true, false}, {0, 71, false, false}, {0, 357, true, false},
- {0, 500, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {261, 209, true, false},
- {523, 147, false, false}, {523, 66, false, false}, {0, 214, false, true}, {440, 214, false, false},
- {0, 214, true, true}, {466, 147, false, false}, {466, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {261, 209, true, false},
- {523, 147, false, false}, {523, 66, false, false}, {0, 214, false, true}, {440, 214, false, false},
- {0, 214, true, true}, {466, 147, false, false}, {466, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 209, true, true},
- {349, 147, false, false}, {349, 66, false, false}, {0, 214, false, true}, {293, 214, false, false},
- {0, 214, true, true}, {311, 147, false, false}, {311, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 209, true, true},
- {349, 147, false, false}, {349, 66, false, false}, {0, 214, false, true}, {293, 214, false, false},
- {0, 214, true, true}, {311, 147, false, false}, {311, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 107, true, false}, {311, 102, false, false}, {293, 107, false, false},
- {277, 40, false, false}, {277, 66, false, false}, {261, 361, true, false}, {0, 71, false, false},
- {311, 357, false, false}, {0, 71, false, false}, {293, 357, true, false}, {0, 71, false, false},
- {0, 357, true, true}, {0, 71, false, false}, {0, 357, true, true}, {0, 71, false, false},
- {277, 357, false, false}, {0, 71, false, false}, {261, 156, true, false}, {369, 160, false, false},
- {349, 40, false, false}, {349, 66, false, false}, {329, 160, true, false}, {493, 160, false, false},
- {466, 40, false, false}, {466, 66, false, false}, {440, 321, true, false}, {311, 40, false, false},
- {311, 66, false, false}, {0, 111, false, false}, {0, 316, false, true}, {0, 321, true, true},
- {0, 40, false, true}, {0, 66, false, false}, {0, 218, true, false}, {0, 142, false, true},
- {0, 66, false, false}, {0, 361, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {261, 209, true, false},
- {523, 147, false, false}, {523, 66, false, false}, {0, 214, false, true}, {440, 214, false, false},
- {0, 214, true, true}, {466, 147, false, false}, {466, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {261, 209, true, false},
- {523, 147, false, false}, {523, 66, false, false}, {0, 214, false, true}, {440, 214, false, false},
- {0, 214, true, true}, {466, 147, false, false}, {466, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 209, true, true},
- {349, 147, false, false}, {349, 66, false, false}, {0, 214, false, true}, {293, 214, false, false},
- {0, 214, true, true}, {311, 147, false, false}, {311, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {0, 209, true, true},
- {349, 147, false, false}, {349, 66, false, false}, {0, 214, false, true}, {293, 214, false, false},
- {0, 214, true, true}, {311, 147, false, false}, {311, 66, false, false}, {0, 361, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 107, true, false}, {311, 102, false, false}, {293, 107, false, false},
- {277, 40, false, false}, {277, 66, false, false}, {261, 361, true, false}, {0, 71, false, false},
- {311, 357, false, false}, {0, 71, false, false}, {293, 357, true, false}, {0, 71, false, false},
- {0, 357, true, true}, {0, 71, false, false}, {0, 357, true, true}, {0, 71, false, false},
- {277, 357, false, false}, {0, 71, false, false}, {261, 156, true, false}, {369, 160, false, false},
- {349, 40, false, false}, {349, 66, false, false}, {329, 160, true, false}, {493, 160, false, false},
- {466, 40, false, false}, {466, 66, false, false}, {440, 321, true, false}, {311, 40, false, false},
- {311, 66, false, false}, {0, 111, false, false}, {0, 316, false, true}, {0, 321, true, true},
- {0, 40, false, true}, {0, 66, false, false}, {0, 218, true, false}, {0, 142, false, true},
- {0, 66, false, false}, {0, 361, true, false}, {0, 500, false, false}, {0, 357, true, false},
- {0, 71, false, false}, {0, 357, true, false}, {0, 71, false, false}, {783, 357, false, true},
- {0, 285, false, false}, {880, 209, false, true}, {0, 218, false, false}, {783, 209, false, true},
- {0, 218, false, false}, {739, 209, false, true}, {783, 214, false, true}, {1046, 214, false, true},
- {1318, 361, false, false}, {0, 500, false, false}, {391, 209, false, false}, {523, 214, false, false},
- {698, 361, false, true}, {0, 285, false, false}, {783, 209, false, true}, {0, 218, false, false},
- {698, 209, false, true}, {0, 218, false, false}, {659, 209, true, true}, {698, 214, false, true},
- {987, 214, false, true}, {1174, 361, false, true}, {0, 500, false, false}, {391, 209, false, false},
- {493, 214, false, false}, {659, 361, true, true}, {0, 285, false, false}, {698, 209, false, true},
- {0, 218, false, false}, {659, 209, true, true}, {0, 218, false, false}, {622, 209, true, true},
- {659, 214, true, true}, {880, 214, false, true}, {1046, 361, false, true}, {0, 285, false, false},
- {880, 209, true, true}, {987, 214, false, true}, {1046, 214, false, true}, {1174, 214, false, true},
- {1046, 214, false, true}, {1174, 214, false, true}, {1046, 428, false, true}, {880, 214, false, true},
- {739, 214, true, true}, {587, 214, true, true}, {523, 214, true, true}, {440, 214, true, true},
- {0, 214, true, true}, {0, 969, false, true}, {0, 107, false, false}, {659, 308, false, false},
- {0, 61, false, false}, {0, 308, false, true}, {0, 61, false, false}, {659, 308, false, false},
- {0, 61, false, false}, {0, 308, false, true}, {0, 61, false, false}, {659, 308, false, false},
- {0, 61, false, false}, {554, 181, false, true}, {0, 127, false, true}, {0, 57, false, false},
- {493, 185, false, true}, {493, 127, false, true}, {0, 57, false, false}, {466, 185, false, false},
- {466, 127, false, false}, {261, 57, false, false}, {440, 185, false, true}, {440, 185, false, true},
- {440, 185, false, true}, {440, 96, false, true}, {0, 88, false, false}, {493, 312, false, true},
- {0, 61, false, false}, {440, 181, false, true}, {440, 127, false, true}, {0, 57, false, false},
- {293, 185, false, true}, {293, 185, false, true}, {293, 185, false, true}, {293, 185, false, true},
- {293, 281, false, true}, {0, 30, false, false}, {0, 61, false, false}, {0, 181, false, true},
- {0, 185, true, false}, {0, 185, true, true}, {0, 127, false, true}, {0, 57, false, false},
- {0, 92, true, true}, {0, 220, false, true}, {0, 57, false, false}, {329, 277, true, true},
- {329, 34, false, true}, {0, 57, false, false}, {293, 185, true, false}, {293, 127, false, true},
- {0, 57, false, false}, {0, 185, true, true}, {0, 185, false, true}, {0, 185, true, false},
- {0, 185, false, true}, {0, 281, true, true}, {0, 30, false, false}, {0, 61, false, false},
- {0, 308, true, true}, {0, 61, false, false}, {0, 181, true, true}, {0, 185, false, true},
- {0, 127, true, false}, {0, 57, false, false}, {0, 185, false, true}, {0, 185, true, false},
- {0, 127, false, true}, {0, 57, false, false}, {440, 185, true, false}, {440, 185, false, true},
- {440, 185, true, false}, {0, 185, false, true}, {0, 185, true, false}, {0, 127, false, true},
- {0, 57, false, false}, {0, 185, true, true}, {0, 127, false, true}, {0, 57, false, false},
- {440, 185, true, false}, {440, 127, false, true}, {0, 57, false, false}, {0, 185, true, true},
- {0, 185, false, true}, {0, 185, true, false}, {0, 96, false, true}, {0, 88, false, false},
- {0, 185, true, false}, {0, 185, false, true}, {440, 185, true, false}, {440, 127, false, true},
- {0, 57, false, false}, {329, 185, false, true}, {329, 185, true, true}, {329, 185, true, false},
- {329, 185, true, true}, {329, 281, true, true}, {0, 30, false, false}, {0, 61, false, false},
- {0, 181, true, true}, {0, 185, true, true}, {369, 92, false, true}, {369, 92, false, true},
- {369, 92, false, true}, {369, 92, false, true}, {369, 185, false, true}, {369, 96, false, true},
- {0, 88, false, false}, {493, 185, false, true}, {493, 127, false, true}, {0, 57, false, false},
- {440, 185, false, true}, {440, 127, false, true}, {0, 57, false, false}, {523, 92, false, true},
- {523, 92, false, true}, {523, 92, false, true}, {523, 92, false, true}, {523, 185, false, true},
- {523, 185, false, true}, {523, 185, false, true}, {523, 96, false, true}, {0, 88, false, false},
- {0, 185, false, true}, {0, 185, false, true}, {493, 92, false, true}, {493, 92, false, true},
- {493, 92, false, true}, {493, 34, false, true}, {0, 57, false, false}, {493, 185, false, true},
- {493, 127, false, true}, {0, 57, false, false}, {659, 185, false, true}, {659, 127, false, true},
- {0, 57, false, false}, {587, 185, false, true}, {587, 127, false, true}, {0, 57, false, false},
- {493, 92, false, true}, {493, 92, false, true}, {493, 92, false, true}, {493, 92, false, true},
- {493, 185, false, true}, {493, 185, false, true}, {493, 185, false, false}, {493, 96, false, true},
- {293, 88, false, false}, {0, 185, false, true}, {293, 185, false, true}, {440, 312, false, true},
- {440, 61, false, false}, {440, 123, false, true}, {0, 61, false, false}, {440, 123, false, false},
- {440, 61, false, false}, {440, 181, false, true}, {440, 127, false, true}, {0, 57, false, false},
- {0, 185, false, true}, {0, 185, false, true}, {0, 185, false, true}, {440, 185, false, true},
- {440, 185, false, true}, {440, 127, false, true}, {0, 57, false, false}, {0, 185, false, true},
- {0, 127, false, true}, {0, 57, false, false}, {329, 312, false, true}, {0, 61, false, false},
- {293, 308, false, true}, {293, 61, false, false}, {293, 308, false, true}, {293, 61, false, false},
- {293, 181, true, false}, {293, 185, false, true}, {293, 185, true, false}, {293, 185, false, true},
- {293, 185, true, false}, {293, 185, false, true}, {293, 185, true, false}, {293, 96, false, true},
- {0, 88, false, false}, {0, 185, false, true}, {0, 185, false, true}, {0, 312, false, true},
- {0, 61, false, false}, {440, 181, false, true}, {440, 185, false, true}, {440, 185, false, true},
- {440, 96, false, true}, {0, 88, false, false}, {493, 312, false, true}, {0, 61, false, false},
- {440, 181, false, true}, {440, 127, false, true}, {0, 57, false, false}, {293, 185, false, true},
- {293, 185, false, true}, {293, 185, false, true}, {293, 185, false, true}, {293, 281, false, true},
- {0, 30, false, false}, {0, 61, false, false}, {0, 181, false, true}, {0, 185, true, false},
- {0, 185, true, true}, {0, 127, false, true}, {0, 57, false, false}, {0, 92, true, true},
- {0, 220, false, true}, {0, 57, false, false}, {329, 277, true, true}, {329, 34, false, true},
- {0, 57, false, false}, {293, 185, true, false}, {293, 127, false, true}, {0, 57, false, false},
- {0, 185, true, true}, {0, 185, false, true}, {0, 185, true, false}, {0, 185, false, true},
- {0, 281, true, true}, {0, 30, false, false}, {0, 61, false, false}, {0, 308, true, true},
- {0, 61, false, false}, {0, 181, true, true}, {0, 185, false, true}, {0, 127, true, false},
- {0, 57, false, false}, {0, 185, false, true}, {0, 185, true, false}, {0, 127, false, true},
- {0, 57, false, false}, {440, 185, true, false}, {440, 185, false, true}, {440, 185, true, false},
- {0, 185, false, true}, {0, 185, true, false}, {0, 127, false, true}, {0, 57, false, false},
- {0, 185, true, true}, {0, 127, false, true}, {0, 57, false, false}, {440, 185, true, false},
- {440, 127, false, true}, {0, 57, false, false}, {0, 185, true, true}, {0, 185, false, true},
- {0, 185, true, false}, {0, 96, false, true}, {0, 88, false, false}, {0, 185, true, false},
- {0, 185, false, true}, {440, 185, true, false}, {440, 127, false, true}, {0, 57, false, false},
- {329, 185, false, true}, {329, 185, true, true}, {329, 185, true, false}, {329, 185, true, true},
- {329, 281, true, true}, {0, 30, false, false}, {0, 61, false, false}, {0, 181, true, true},
- {0, 185, true, true}, {369, 92, false, true}, {369, 92, false, true}, {369, 92, false, true},
- {369, 92, false, true}, {369, 185, false, true}, {369, 96, false, true}, {0, 88, false, false},
- {493, 185, false, true}, {493, 127, false, true}, {0, 57, false, false}, {440, 185, false, true},
- {440, 127, false, true}, {0, 57, false, false}, {523, 92, false, true}, {523, 92, false, true},
- {523, 92, false, true}, {523, 92, false, true}, {523, 185, false, true}, {523, 185, false, true},
- {523, 185, false, true}, {523, 96, false, true}, {0, 88, false, false}, {0, 185, false, true},
- {0, 185, false, true}, {493, 92, false, true}, {493, 92, false, true}, {493, 92, false, true},
- {493, 34, false, true}, {0, 57, false, false}, {493, 185, false, true}, {493, 127, false, true},
- {0, 57, false, false}, {659, 185, false, true}, {659, 127, false, true}, {0, 57, false, false},
- {587, 185, false, true}, {587, 127, false, true}, {0, 57, false, false}, {493, 92, false, true},
- {493, 92, false, true}, {493, 92, false, true}, {493, 92, false, true}, {493, 185, false, true},
- {493, 185, false, true}, {493, 185, false, false}, {493, 96, false, true}, {293, 88, false, false},
- {0, 185, false, true}, {293, 185, false, true}, {440, 312, false, true}, {440, 61, false, false},
- {440, 123, false, true}, {0, 61, false, false}, {440, 123, false, false}, {440, 61, false, false},
- {440, 181, false, true}, {440, 127, false, true}, {0, 57, false, false}, {0, 185, false, true},
- {0, 185, false, true}, {0, 185, false, true}, {440, 185, false, true}, {440, 185, false, true},
- {440, 127, false, true}, {0, 57, false, false}, {0, 185, false, true}, {0, 127, false, true},
- {0, 57, false, false}, {329, 312, false, true}, {0, 61, false, false}, {293, 308, false, true},
- {293, 61, false, false}, {293, 181, true, true}, {293, 185, true, false}, {293, 185, false, true},
- {293, 185, false, true}, {293, 185, true, false}, {293, 96, false, true}, {0, 88, false, false},
- {0, 185, false, true}, {587, 185, false, true}, {554, 185, true, false}, {587, 185, true, true},
- {659, 185, false, true}, {739, 185, false, true}, {783, 185, false, true}, {880, 185, false, true},
- {987, 277, false, true}, {987, 92, false, true}, {987, 185, false, true}, {987, 96, false, true},
- {0, 88, false, false}, {932, 312, false, true}, {932, 61, false, false}, {932, 277, false, true},
- {0, 30, false, false}, {0, 61, false, false}, {880, 273, false, true}, {880, 92, false, true},
- {880, 185, false, true}, {880, 96, false, true}, {0, 88, false, false}, {987, 185, false, true},
- {987, 127, false, true}, {0, 57, false, false}, {739, 92, false, true}, {739, 220, false, true},
- {0, 57, false, false}, {783, 277, false, true}, {783, 92, true, true}, {783, 185, false, true},
- {783, 96, true, true}, {0, 88, false, false}, {880, 312, true, true}, {880, 61, false, false},
- {880, 277, false, true}, {0, 30, false, false}, {0, 61, false, false}, {739, 181, false, true},
- {739, 185, true, true}, {739, 185, true, false}, {739, 96, true, true}, {0, 88, false, false},
- {0, 185, false, true}, {880, 185, true, true}, {987, 185, false, true}, {1108, 185, true, true},
- {1174, 312, true, true}, {1174, 61, false, false}, {1174, 277, false, true}, {0, 30, false, false},
- {0, 61, false, false}, {0, 185, true, true}, {1108, 123, false, false}, {1108, 57, false, false},
- {1174, 185, true, true}, {1318, 127, false, false}, {1318, 57, false, false}, {1479, 185, false, true},
- {1479, 185, true, true}, {1479, 185, true, false}, {1479, 96, false, true}, {0, 88, false, false},
- {880, 312, true, true}, {0, 61, false, false}, {1479, 308, true, true}, {0, 61, false, false},
- {1318, 181, false, true}, {1318, 185, true, true}, {1318, 185, false, true}, {1318, 96, true, true},
- {0, 88, false, false}, {1174, 185, false, true}, {1174, 127, true, true}, {0, 57, false, false},
- {1108, 185, false, true}, {1108, 127, true, true}, {0, 57, false, false}, {1174, 312, true, true},
- {1174, 61, false, false}, {1174, 308, true, false}, {1174, 61, false, false}, {1174, 181, false, true},
- {1174, 185, true, true}, {1174, 92, true, false}, {1174, 189, true, true}, {0, 88, false, false},
- {277, 92, false, true}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {329, 92, true, false}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {277, 92, true, false}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {329, 92, true, false}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {277, 92, false, true}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {391, 92, true, false}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {440, 92, false, true}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {391, 92, false, true}, {293, 92, false, false}, {277, 92, true, true}, {293, 92, false, false},
- {277, 92, true, true}, {293, 92, false, false}, {277, 92, false, false}, {293, 34, false, false},
- {293, 57, false, false}, {329, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {277, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {329, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {277, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {391, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {440, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, true}, {391, 92, false, true}, {293, 92, false, false}, {277, 92, true, true},
- {293, 92, false, false}, {880, 277, true, true}, {880, 34, true, true}, {0, 57, false, false},
- {0, 185, true, false}, {0, 185, true, true}, {880, 185, true, false}, {880, 127, true, true},
- {0, 57, false, false}, {0, 185, true, false}, {0, 185, true, true}, {880, 312, true, true},
- {0, 61, false, false}, {739, 181, true, false}, {739, 127, true, true}, {0, 57, false, false},
- {659, 185, false, true}, {659, 127, true, true}, {0, 57, false, false}, {622, 185, false, true},
- {622, 127, true, true}, {0, 57, false, false}, {587, 277, true, true}, {587, 34, true, true},
- {0, 57, false, false}, {0, 185, false, true}, {0, 185, true, true}, {587, 185, false, true},
- {587, 127, true, true}, {0, 57, false, false}, {0, 185, false, true}, {0, 185, true, true},
- {587, 185, false, true}, {587, 127, true, true}, {0, 57, false, false}, {0, 185, false, true},
- {493, 92, true, true}, {523, 92, false, false}, {587, 185, false, true}, {587, 127, true, true},
- {0, 57, false, false}, {659, 185, false, true}, {659, 127, true, true}, {0, 57, false, false},
- {587, 312, true, true}, {0, 61, false, false}, {0, 185, true, false}, {587, 123, false, false},
- {587, 57, false, false}, {739, 185, false, true}, {739, 127, true, true}, {0, 57, false, false},
- {880, 92, true, false}, {880, 220, true, true}, {0, 57, false, false}, {830, 312, true, true},
- {0, 61, false, false}, {880, 181, true, false}, {880, 127, true, true}, {0, 57, false, false},
- {830, 92, false, true}, {880, 92, false, false}, {830, 92, true, true}, {739, 92, false, false},
- {587, 185, false, true}, {440, 185, true, true}, {493, 277, true, true}, {554, 34, false, false},
- {554, 57, false, false}, {587, 185, false, true}, {587, 92, true, true}, {659, 92, false, false},
- {739, 92, true, true}, {698, 92, false, false}, {739, 92, false, false}, {783, 34, false, false},
- {783, 57, false, false}, {880, 92, true, true}, {783, 92, false, false}, {739, 92, false, false},
- {659, 34, false, false}, {659, 57, false, false}, {587, 92, false, true}, {554, 92, false, false},
- {587, 92, true, true}, {880, 92, false, false}, {554, 92, false, true}, {523, 92, false, false},
- {554, 92, true, true}, {880, 92, false, false}, {554, 92, false, true}, {523, 92, false, false},
- {493, 92, true, true}, {466, 92, false, false}, {440, 92, false, true}, {415, 92, false, false},
- {391, 92, true, true}, {329, 92, false, false}, {0, 2405, true, true}, {440, 293, false, false},
- {1174, 300, false, false}, {880, 300, false, false}, {830, 2557, false, false}, {0, 4251, false, false},
- {0, 100, false, false}, {0, 1800, true, true}, {440, 293, false, false}, {1174, 300, false, false},
- {880, 300, false, false}, {830, 2007, false, false}, {0, 100, false, false}, {1975, 500, false, false},
- {0, 3551, false, false}, {0, 150, false, false}, {0, 2401, true, true}, {440, 293, false, false},
- {1174, 300, false, false}, {880, 300, false, false}, {830, 1357, false, false}, {0, 150, false, false},
- {0, 150, true, true}, {440, 143, false, false}, {587, 150, false, false}, {880, 150, false, false},
- {830, 150, false, false}, {440, 150, false, false}, {587, 150, false, false}, {783, 150, false, false},
- {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {659, 150, false, false}, {391, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {587, 300, false, false}, {440, 150, false, false}, {587, 56, false, false}, {587, 93, false, false},
- {554, 300, true, true}, {391, 150, false, false}, {466, 56, false, false}, {466, 93, false, false},
- {440, 300, true, true}, {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false}, {466, 150, true, false},
- {391, 150, false, false}, {466, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {466, 150, false, false}, {554, 150, false, false}, {659, 150, false, false}, {698, 150, true, false},
- {880, 150, false, false}, {1174, 150, false, false}, {880, 150, false, false}, {698, 150, false, false},
- {1174, 150, false, false}, {880, 150, false, false}, {698, 150, false, false}, {659, 150, true, false},
- {783, 150, false, false}, {1108, 150, false, false}, {783, 150, false, false}, {659, 150, false, false},
- {1108, 150, false, false}, {783, 150, false, false}, {659, 150, false, false}, {587, 150, true, true},
- {698, 150, false, false}, {880, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {880, 150, false, false}, {698, 150, false, false}, {587, 150, false, false}, {554, 300, true, true},
- {783, 300, true, false}, {932, 300, true, false}, {880, 300, true, false}, {783, 1056, true, false},
- {0, 150, false, false}, {0, 150, true, true}, {1174, 143, false, false}, {1108, 150, false, false},
- {1174, 150, false, false}, {1244, 150, false, false}, {1174, 150, false, false}, {1108, 150, false, false},
- {830, 150, false, false}, {880, 150, false, false}, {698, 150, false, false}, {659, 150, false, false},
- {698, 150, false, false}, {783, 150, false, false}, {698, 150, false, false}, {659, 150, false, false},
- {554, 150, false, false}, {587, 506, false, false}, {0, 543, false, false}, {0, 150, false, true},
- {0, 150, false, true}, {0, 150, false, true}, {0, 150, true, false}, {0, 150, false, true},
- {0, 150, false, true}, {0, 150, false, true}, {0, 150, true, false}, {0, 150, true, false},
- {0, 300, true, true}, {0, 300, false, true}, {0, 300, true, true}, {391, 300, false, true},
- {0, 300, true, true}, {466, 300, false, true}, {440, 300, true, false}, {554, 300, false, true},
- {587, 150, true, false}, {440, 150, false, false}, {587, 150, false, false}, {880, 56, false, false},
- {880, 93, false, false}, {830, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {783, 150, false, false}, {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {659, 150, false, false}, {391, 150, false, false}, {554, 150, false, false},
- {659, 150, false, false}, {587, 300, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {554, 300, false, false}, {391, 150, false, false}, {466, 150, false, false}, {440, 300, false, false},
- {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {698, 150, false, false}, {659, 150, false, false}, {391, 150, false, false},
- {466, 150, false, false}, {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false},
- {659, 150, false, false}, {783, 150, false, false}, {698, 150, false, false}, {880, 150, false, false},
- {1174, 150, false, false}, {880, 150, false, false}, {698, 150, false, false}, {1174, 150, false, false},
- {880, 150, false, false}, {698, 150, false, false}, {659, 150, false, false}, {783, 150, false, false},
- {1108, 150, false, false}, {783, 150, false, false}, {659, 150, false, false}, {1108, 150, false, false},
- {783, 150, false, false}, {659, 150, false, false}, {0, 156, true, true}, {440, 143, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {698, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {622, 150, true, true}, {391, 150, false, false},
- {587, 150, true, true}, {440, 150, false, false}, {622, 150, true, false}, {440, 150, false, false},
- {587, 150, true, false}, {440, 150, false, false}, {0, 156, true, false}, {391, 143, false, false},
- {554, 150, false, false}, {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false},
- {554, 150, false, false}, {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false},
- {554, 150, false, false}, {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false},
- {554, 150, false, false}, {391, 150, false, false}, {0, 156, true, false}, {415, 143, false, false},
- {493, 150, false, false}, {415, 150, false, false}, {587, 150, false, false}, {415, 150, false, false},
- {493, 150, false, false}, {415, 150, false, false}, {0, 156, true, false}, {415, 143, false, false},
- {493, 150, true, false}, {415, 150, false, false}, {554, 150, true, false}, {391, 150, false, false},
- {466, 150, true, false}, {391, 150, false, false}, {0, 156, true, true}, {440, 143, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {698, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {0, 156, false, false}, {440, 143, false, false},
- {587, 150, false, false}, {440, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {880, 150, false, false}, {1174, 150, true, true}, {587, 150, false, false},
- {698, 150, false, false}, {587, 150, false, false}, {880, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {587, 150, false, false}, {880, 150, false, true}, {587, 150, false, false},
- {698, 300, false, true}, {880, 150, true, false}, {587, 150, false, false}, {698, 150, true, false},
- {587, 150, false, false}, {440, 150, true, true}, {554, 150, false, false}, {659, 150, false, false},
- {554, 150, false, false}, {783, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {554, 150, false, false}, {440, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {554, 150, false, false}, {783, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {554, 150, false, false}, {493, 150, true, true}, {587, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {830, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {493, 150, true, false}, {587, 150, false, false}, {698, 150, true, false},
- {587, 150, false, false}, {783, 150, true, true}, {466, 150, false, false}, {554, 150, true, false},
- {466, 150, false, false}, {440, 150, true, true}, {587, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {880, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {880, 300, false, false}, {880, 300, false, false}, {880, 300, false, false},
- {880, 156, false, false}, {880, 143, false, false}, {0, 156, false, false}, {349, 143, false, true},
- {349, 150, false, true}, {349, 150, false, true}, {329, 150, false, true}, {329, 150, false, true},
- {277, 150, false, true}, {277, 150, false, true}, {293, 150, false, true}, {293, 150, false, true},
- {349, 150, false, true}, {349, 150, false, true}, {329, 150, false, true}, {329, 150, false, true},
- {261, 150, false, true}, {261, 150, false, true}, {0, 156, false, false}, {466, 143, false, false},
- {466, 150, false, false}, {466, 150, false, false}, {587, 150, false, false}, {587, 150, false, false},
- {466, 150, false, false}, {466, 150, false, false}, {932, 150, false, false}, {932, 150, false, false},
- {783, 150, false, false}, {783, 150, false, false}, {1108, 150, false, false}, {1108, 150, false, false},
- {932, 150, false, false}, {932, 150, false, false}, {0, 156, true, true}, {440, 143, false, false},
- {587, 150, false, false}, {880, 150, false, false}, {830, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {783, 150, false, false}, {698, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {698, 150, false, false}, {659, 150, false, false}, {391, 150, false, false},
- {554, 150, false, false}, {659, 150, false, false}, {587, 300, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {554, 300, true, true}, {391, 150, false, false}, {466, 56, false, false},
- {466, 93, false, false}, {440, 300, true, true}, {440, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {466, 150, true, false}, {391, 150, false, false}, {466, 150, false, false}, {554, 150, false, false},
- {659, 150, false, false}, {466, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {698, 150, true, false}, {880, 150, false, false}, {1174, 150, false, false}, {880, 150, false, false},
- {698, 150, false, false}, {1174, 150, false, false}, {880, 150, false, false}, {698, 150, false, false},
- {659, 150, true, false}, {783, 150, false, false}, {1108, 150, false, false}, {783, 150, false, false},
- {659, 150, false, false}, {1108, 150, false, false}, {783, 150, false, false}, {659, 150, false, false},
- {587, 150, true, true}, {698, 150, false, false}, {880, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {880, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {554, 300, true, true}, {783, 300, true, false}, {932, 300, true, false}, {880, 300, true, false},
- {783, 1056, true, false}, {0, 150, false, false}, {0, 150, true, true}, {1174, 143, false, false},
- {1046, 150, false, false}, {1174, 150, false, false}, {1244, 150, false, false}, {1174, 150, false, false},
- {1046, 150, false, false}, {830, 150, false, false}, {880, 150, false, false}, {698, 150, false, false},
- {659, 150, false, false}, {698, 150, false, false}, {783, 150, false, false}, {698, 150, false, false},
- {659, 150, false, false}, {554, 150, false, false}, {587, 506, false, false}, {0, 543, false, false},
- {0, 150, false, true}, {0, 150, false, true}, {0, 150, false, true}, {0, 150, true, false},
- {0, 150, false, true}, {0, 150, false, true}, {0, 150, false, true}, {0, 150, true, false},
- {0, 150, true, false}, {0, 300, true, true}, {0, 300, false, true}, {0, 300, true, true},
- {391, 300, false, true}, {0, 300, true, true}, {466, 300, false, true}, {440, 300, true, false},
- {554, 300, false, true}, {587, 150, true, false}, {440, 150, false, false}, {587, 150, false, false},
- {880, 56, false, false}, {880, 93, false, false}, {830, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {783, 150, false, false}, {698, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {698, 150, false, false}, {659, 150, false, false}, {391, 150, false, false},
- {554, 150, false, false}, {659, 150, false, false}, {587, 150, false, false}, {349, 150, false, false},
- {440, 150, false, false}, {587, 150, false, false}, {554, 300, false, false}, {391, 150, false, false},
- {466, 150, false, false}, {440, 150, false, false}, {349, 150, false, false}, {440, 150, false, false},
- {587, 150, false, false}, {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {698, 150, false, false}, {659, 150, false, false}, {391, 150, false, false}, {466, 150, false, false},
- {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false}, {659, 150, false, false},
- {783, 150, false, false}, {698, 150, false, false}, {880, 150, false, false}, {1174, 150, false, false},
- {880, 150, false, false}, {698, 150, false, false}, {1174, 150, false, false}, {880, 150, false, false},
- {698, 150, false, false}, {659, 150, false, false}, {783, 150, false, false}, {1108, 150, false, false},
- {783, 150, false, false}, {659, 150, false, false}, {1108, 150, false, false}, {783, 150, false, false},
- {659, 150, false, false}, {0, 156, true, true}, {440, 143, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {622, 150, true, true}, {391, 150, false, false}, {587, 150, true, true},
- {440, 150, false, false}, {622, 150, true, false}, {440, 150, false, false}, {587, 150, true, false},
- {440, 150, false, false}, {0, 156, true, false}, {391, 143, false, false}, {554, 150, false, false},
- {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false}, {554, 150, false, false},
- {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false}, {554, 150, false, false},
- {391, 150, false, false}, {0, 156, false, false}, {391, 143, false, false}, {554, 150, false, false},
- {391, 150, false, false}, {0, 156, true, false}, {415, 143, false, false}, {493, 150, false, false},
- {415, 150, false, false}, {587, 150, false, false}, {415, 150, false, false}, {493, 150, false, false},
- {415, 150, false, false}, {0, 156, true, false}, {415, 143, false, false}, {493, 150, true, false},
- {415, 150, false, false}, {554, 150, true, false}, {391, 150, false, false}, {466, 150, true, false},
- {391, 150, false, false}, {0, 156, true, true}, {440, 143, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {698, 150, false, false}, {440, 150, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {0, 156, false, false}, {440, 143, false, false}, {587, 150, false, false},
- {440, 150, false, false}, {698, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {880, 150, false, false}, {1174, 150, true, true}, {587, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {880, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {587, 150, false, false}, {880, 150, false, true}, {587, 150, false, false}, {698, 300, false, true},
- {880, 150, true, false}, {587, 150, false, false}, {698, 150, true, false}, {587, 150, false, false},
- {440, 150, true, true}, {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false},
- {783, 150, false, false}, {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false},
- {440, 150, false, false}, {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false},
- {783, 150, false, false}, {554, 150, false, false}, {659, 150, false, false}, {554, 150, false, false},
- {493, 150, true, true}, {587, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {830, 150, false, false}, {587, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {493, 150, true, false}, {587, 150, false, false}, {698, 150, true, false}, {587, 150, false, false},
- {783, 150, true, true}, {466, 150, false, false}, {554, 150, true, false}, {466, 150, false, false},
- {440, 150, true, true}, {587, 150, false, false}, {698, 150, false, false}, {587, 150, false, false},
- {880, 150, false, false}, {440, 150, false, false}, {587, 150, false, false}, {698, 150, false, false},
- {880, 300, false, false}, {880, 300, false, false}, {880, 300, false, false}, {880, 156, false, false},
- {880, 143, false, false}, {0, 156, false, false}, {349, 143, false, true}, {349, 150, false, true},
- {349, 150, false, true}, {329, 150, false, true}, {329, 150, false, true}, {277, 150, false, true},
- {277, 150, false, true}, {293, 150, false, true}, {293, 150, false, true}, {349, 150, false, true},
- {349, 150, false, true}, {329, 150, false, true}, {329, 150, false, true}, {277, 150, false, true},
- {277, 150, false, true}, {0, 156, false, false}, {440, 143, false, false}, {440, 150, false, false},
- {440, 150, false, false}, {587, 150, false, false}, {587, 150, false, false}, {440, 150, false, false},
- {440, 150, false, false}, {932, 150, false, false}, {932, 150, false, false}, {783, 150, false, false},
- {783, 150, false, false}, {1108, 150, false, false}, {1108, 150, false, false}, {932, 150, false, false},
- {932, 150, false, false}, {0, 906, false, false}, {293, 195, false, false}, {349, 200, false, false},
- {369, 100, false, false}, {391, 200, false, false}, {261, 200, false, true}, {261, 200, false, true},
- {261, 200, false, true}, {0, 100, false, true}, {261, 100, false, true}, {0, 104, false, false},
- {261, 195, false, true}, {0, 100, false, true}, {261, 100, false, true}, {0, 100, false, true},
- {261, 200, false, true}, {0, 200, false, true}, {0, 200, false, true}, {0, 200, false, true},
- {0, 100, false, true}, {0, 100, false, true}, {0, 104, false, false}, {0, 195, false, true},
- {0, 100, false, true}, {0, 100, false, true}, {0, 100, false, true}, {0, 200, false, true},
- {261, 200, false, true}, {261, 200, false, true}, {261, 200, false, true}, {0, 100, false, true},
- {261, 100, false, true}, {0, 104, false, false}, {261, 195, false, true}, {0, 100, false, true},
- {261, 100, false, true}, {0, 100, false, true}, {261, 200, false, true}, {0, 200, false, true},
- {0, 200, false, true}, {0, 200, false, true}, {0, 100, false, true}, {0, 100, false, true},
- {0, 104, false, false}, {0, 195, false, true}, {0, 100, false, true}, {0, 100, false, true},
- {0, 100, false, true}, {0, 200, false, true}, {261, 1504, false, true}, {0, 100, false, false},
- {329, 954, true, true}, {0, 409, false, false}, {329, 266, false, false}, {349, 204, false, false},
- {391, 210, false, false}, {391, 130, false, false}, {440, 960, true, false}, {0, 409, false, false},
- {440, 266, false, false}, {391, 204, false, false}, {349, 210, false, false}, {349, 130, false, false},
- {329, 960, true, true}, {0, 409, false, false}, {329, 266, false, false}, {349, 204, false, false},
- {391, 210, false, false}, {391, 130, false, false}, {440, 960, true, false}, {0, 136, false, false},
- {0, 272, true, false}, {493, 266, false, false}, {523, 204, false, false}, {587, 210, false, false},
- {587, 130, false, false}, {329, 960, true, true}, {0, 409, false, false}, {329, 266, false, false},
- {349, 204, false, false}, {391, 210, false, false}, {391, 130, false, false}, {440, 960, true, false},
- {0, 136, false, false}, {493, 266, true, false}, {493, 272, true, false}, {0, 210, false, false},
- {493, 335, true, false}, {329, 272, true, false}, {329, 272, true, false}, {329, 187, true, false},
- {0, 85, false, false}, {329, 272, true, false}, {349, 272, true, false}, {329, 272, true, false},
- {349, 272, true, false}, {391, 272, true, false}, {329, 272, true, false}, {329, 272, true, false},
- {329, 272, true, false}, {329, 142, true, false}, {0, 130, false, false}, {261, 272, true, false},
- {261, 187, true, false}, {0, 85, false, false}, {329, 272, true, false}, {391, 272, true, false},
- {440, 272, true, false}, {440, 187, true, false}, {0, 85, false, false}, {440, 272, true, false},
- {440, 272, true, false}, {493, 272, true, false}, {493, 187, true, false}, {0, 85, false, false},
- {587, 272, true, false}, {523, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false}, {391, 142, true, false},
- {0, 130, false, false}, {0, 136, true, false}, {0, 409, true, false}, {440, 272, true, false},
- {440, 272, true, false}, {440, 187, true, false}, {0, 85, false, false}, {440, 272, true, false},
- {493, 272, true, false}, {493, 187, true, false}, {0, 85, false, false}, {587, 272, true, false},
- {523, 272, true, false}, {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 142, true, false}, {0, 130, false, false}, {523, 272, true, false}, {523, 187, true, false},
- {0, 85, false, false}, {261, 272, true, false}, {293, 272, true, false}, {349, 272, true, false},
- {349, 272, true, false}, {349, 187, true, false}, {0, 85, false, false}, {391, 272, true, false},
- {391, 68, true, false}, {349, 204, false, false}, {349, 68, true, false}, {329, 204, false, false},
- {293, 272, true, false}, {261, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 142, true, false}, {0, 130, false, false}, {329, 272, true, false},
- {329, 272, true, false}, {329, 187, true, false}, {0, 85, false, false}, {329, 272, true, false},
- {349, 272, true, false}, {329, 272, true, false}, {349, 272, true, false}, {391, 272, true, false},
- {329, 272, true, false}, {329, 272, true, false}, {329, 272, true, false}, {329, 142, true, false},
- {0, 130, false, false}, {261, 272, true, false}, {261, 187, true, false}, {0, 85, false, false},
- {329, 272, true, false}, {391, 272, true, false}, {440, 272, true, false}, {440, 187, true, false},
- {0, 85, false, false}, {440, 272, true, false}, {440, 272, true, false}, {493, 272, true, false},
- {493, 187, true, false}, {0, 85, false, false}, {587, 272, true, false}, {523, 272, true, false},
- {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 142, true, false}, {0, 130, false, false}, {0, 136, true, false},
- {0, 409, true, false}, {440, 272, true, false}, {440, 272, true, false}, {440, 187, true, false},
- {0, 85, false, false}, {440, 272, true, false}, {493, 272, true, false}, {493, 187, true, false},
- {0, 85, false, false}, {587, 272, true, false}, {523, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 272, true, false}, {391, 142, true, false}, {0, 130, false, false},
- {523, 272, true, false}, {523, 187, true, false}, {0, 85, false, false}, {523, 272, true, false},
- {587, 272, true, false}, {698, 272, true, false}, {698, 187, true, false}, {0, 85, false, false},
- {659, 272, true, false}, {659, 187, true, false}, {0, 85, false, false}, {493, 272, true, false},
- {493, 187, true, false}, {0, 85, false, false}, {0, 272, true, false}, {523, 272, true, false},
- {523, 272, true, false}, {523, 272, true, false}, {523, 272, true, false}, {523, 142, true, false},
- {0, 130, false, false}, {0, 272, true, false}, {0, 272, true, false}, {0, 272, true, false},
- {0, 272, true, false}, {523, 460, true, false}, {0, 272, false, false}, {0, 91, false, false},
- {587, 266, true, false}, {0, 551, false, false}, {659, 409, false, false}, {659, 45, false, false},
- {0, 91, false, false}, {493, 454, true, false}, {0, 272, false, false}, {0, 91, false, false},
- {391, 266, true, false}, {0, 551, false, false}, {329, 409, false, false}, {329, 45, false, false},
- {0, 91, false, false}, {440, 454, true, false}, {0, 272, false, false}, {0, 91, false, false},
- {493, 266, true, false}, {0, 551, false, false}, {523, 409, false, false}, {523, 45, false, false},
- {0, 91, false, false}, {391, 454, true, false}, {0, 272, false, false}, {0, 91, false, false},
- {0, 1227, true, false}, {0, 136, false, false}, {349, 454, true, false}, {0, 363, false, false},
- {391, 266, false, false}, {0, 415, false, false}, {0, 136, false, false}, {440, 454, true, false},
- {0, 91, false, false}, {391, 454, true, false}, {0, 363, false, false}, {493, 266, false, false},
- {0, 415, false, false}, {0, 136, false, false}, {523, 454, true, false}, {0, 91, false, false},
- {440, 454, true, false}, {0, 1046, false, false}, {0, 136, false, false}, {523, 454, true, false},
- {0, 91, false, false}, {587, 454, true, false}, {0, 1591, false, false}, {0, 136, false, false},
- {659, 266, true, false}, {587, 272, true, false}, {659, 272, true, false}, {698, 272, true, false},
- {783, 272, true, false}, {783, 187, true, false}, {0, 85, false, false}, {659, 272, true, false},
- {587, 272, true, false}, {587, 272, true, false}, {587, 272, true, false}, {587, 187, true, false},
- {0, 85, false, false}, {523, 272, true, false}, {523, 272, true, false}, {523, 187, true, false},
- {0, 85, false, false}, {659, 272, true, false}, {783, 272, true, false}, {880, 272, true, false},
- {783, 272, true, false}, {880, 272, true, false}, {987, 272, true, false}, {1046, 272, true, false},
- {1046, 187, true, false}, {0, 85, false, false}, {783, 272, true, false}, {698, 272, true, false},
- {659, 272, true, false}, {659, 187, true, false}, {0, 85, false, false}, {659, 272, true, false},
- {698, 272, true, false}, {587, 272, true, false}, {587, 272, true, false}, {587, 272, true, false},
- {587, 142, true, false}, {0, 130, false, false}, {659, 272, true, false}, {587, 272, true, false},
- {659, 272, true, false}, {698, 272, true, false}, {783, 272, true, false}, {783, 187, true, false},
- {0, 85, false, false}, {659, 272, true, false}, {587, 272, true, false}, {587, 272, true, false},
- {587, 272, true, false}, {587, 187, true, false}, {0, 85, false, false}, {523, 272, true, false},
- {523, 272, true, false}, {523, 187, true, false}, {0, 85, false, false}, {659, 272, true, false},
- {783, 272, true, false}, {880, 272, true, false}, {783, 272, true, false}, {880, 272, true, false},
- {987, 272, true, false}, {1046, 272, true, false}, {1046, 187, true, false}, {0, 85, false, false},
- {783, 272, true, false}, {698, 272, true, false}, {698, 272, true, false}, {659, 272, true, false},
- {587, 272, true, false}, {523, 272, true, false}, {783, 272, true, false}, {783, 187, true, false},
- {0, 85, false, false}, {391, 272, true, false}, {391, 187, true, false}, {0, 85, false, false},
- {659, 272, true, false}, {659, 272, true, false}, {659, 187, true, false}, {0, 85, false, false},
- {659, 272, true, false}, {698, 272, true, false}, {659, 272, true, false}, {698, 272, true, false},
- {783, 272, true, false}, {659, 272, true, false}, {659, 272, true, false}, {659, 272, true, false},
- {659, 142, true, false}, {0, 130, false, false}, {523, 272, true, false}, {523, 187, true, false},
- {0, 85, false, false}, {659, 272, true, false}, {783, 272, true, false}, {880, 272, true, false},
- {880, 187, true, false}, {0, 85, false, false}, {880, 272, true, false}, {880, 272, true, false},
- {987, 272, true, false}, {987, 187, true, false}, {0, 85, false, false}, {1174, 272, true, false},
- {1046, 272, true, false}, {783, 272, true, false}, {783, 272, true, false}, {783, 272, true, false},
- {783, 272, true, false}, {783, 272, true, false}, {783, 142, true, false}, {0, 130, false, false},
- {0, 136, true, false}, {0, 409, true, false}, {880, 272, true, false}, {880, 272, true, false},
- {880, 187, true, false}, {0, 85, false, false}, {880, 272, true, false}, {987, 272, true, false},
- {987, 187, true, false}, {0, 85, false, false}, {1174, 272, true, false}, {1046, 272, true, false},
- {783, 272, true, false}, {783, 272, true, false}, {783, 272, true, false}, {783, 142, true, false},
- {0, 130, false, false}, {1046, 272, true, false}, {1046, 187, true, false}, {0, 85, false, false},
- {523, 272, true, false}, {587, 272, true, false}, {698, 272, true, false}, {698, 272, true, false},
- {698, 187, true, false}, {0, 85, false, false}, {783, 272, true, false}, {783, 68, true, false},
- {698, 204, false, false}, {698, 68, true, false}, {659, 204, false, false}, {587, 272, true, false},
- {523, 272, true, false}, {783, 272, true, false}, {783, 272, true, false}, {783, 272, true, false},
- {783, 272, true, false}, {783, 272, true, false}, {783, 272, true, false}, {783, 272, true, false},
- {783, 142, true, false}, {0, 130, false, false}, {329, 272, true, false}, {329, 272, true, false},
- {329, 187, true, false}, {0, 85, false, false}, {329, 272, true, false}, {349, 272, true, false},
- {329, 272, true, false}, {349, 272, true, false}, {391, 272, true, false}, {329, 272, true, false},
- {329, 272, true, false}, {329, 272, true, false}, {329, 142, true, false}, {0, 130, false, false},
- {261, 272, true, false}, {261, 187, true, false}, {0, 85, false, false}, {329, 272, true, false},
- {391, 272, true, false}, {440, 272, true, false}, {440, 187, true, false}, {0, 85, false, false},
- {440, 272, true, false}, {440, 272, true, false}, {493, 272, true, false}, {493, 187, true, false},
- {0, 85, false, false}, {587, 272, true, false}, {523, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 142, true, false}, {0, 130, false, false}, {0, 136, true, false}, {0, 409, true, false},
- {440, 272, true, false}, {440, 272, true, false}, {440, 187, true, false}, {0, 85, false, false},
- {440, 272, true, false}, {493, 272, true, false}, {493, 187, true, false}, {0, 85, false, false},
- {587, 272, true, false}, {523, 272, true, false}, {391, 272, true, false}, {391, 272, true, false},
- {391, 272, true, false}, {391, 142, true, false}, {0, 130, false, false}, {523, 272, true, false},
- {523, 187, true, false}, {0, 85, false, false}, {523, 272, true, false}, {587, 272, true, false},
- {698, 272, true, false}, {698, 187, true, false}, {0, 85, false, false}, {659, 272, true, false},
- {659, 187, true, false}, {0, 85, false, false}, {493, 272, true, false}, {493, 187, true, false},
- {0, 85, false, false}, {0, 272, true, false}, {523, 272, true, false}, {523, 272, true, false},
- {523, 272, true, false}, {523, 272, true, false}, {523, 142, true, false}, {0, 130, false, false},
- {0, 272, true, false}, {0, 272, true, false}, {0, 272, true, false}, {0, 272, true, false},
- {523, 460, true, false}, {0, 272, false, false}, {0, 91, false, false}, {587, 266, true, false},
- {0, 551, false, false}, {659, 409, false, false}, {659, 45, false, false}, {0, 91, false, false},
- {493, 454, true, false}, {0, 272, false, false}, {0, 91, false, false}, {391, 266, true, false},
- {0, 551, false, false}, {329, 409, false, false}, {329, 45, false, false}, {0, 91, false, false},
- {440, 454, true, false}, {0, 272, false, false}, {0, 91, false, false}, {493, 266, true, false},
- {0, 551, false, false}, {523, 409, false, false}, {523, 45, false, false}, {0, 91, false, false},
- {391, 454, true, false}, {0, 272, false, false}, {0, 91, false, false}, {0, 1227, true, false},
- {0, 136, false, false}, {349, 454, true, false}, {0, 363, false, false}, {391, 266, false, false},
- {0, 415, false, false}, {0, 136, false, false}, {440, 454, true, false}, {0, 91, false, false},
- {391, 454, true, false}, {0, 363, false, false}, {493, 266, false, false}, {0, 415, false, false},
- {0, 136, false, false}, {523, 454, true, false}, {0, 91, false, false}, {440, 454, true, false},
- {0, 1046, false, false}, {0, 136, false, false}, {523, 454, true, false}, {0, 91, false, false},
- {587, 454, true, false}, {0, 1591, false, false}, {0, 136, false, false}, {659, 266, true, false},
- {587, 272, true, false}, {659, 272, true, false}, {698, 272, true, false}, {783, 272, true, false},
- {783, 187, true, false}, {0, 85, false, false}, {659, 272, true, false}, {587, 272, true, false},
- {587, 272, true, false}, {587, 272, true, false}, {587, 187, true, false}, {0, 85, false, false},
- {523, 272, true, false}, {523, 272, true, false}, {523, 187, true, false}, {0, 85, false, false},
- {659, 272, true, false}, {783, 272, true, false}, {880, 272, true, false}, {783, 272, true, false},
- {880, 272, true, false}, {987, 272, true, false}, {1046, 272, true, false}, {1046, 187, true, false},
- {0, 85, false, false}, {783, 272, true, false}, {698, 272, true, false}, {659, 272, true, false},
- {659, 187, true, false}, {0, 85, false, false}, {659, 272, true, false}, {698, 272, true, false},
- {587, 272, true, false}, {587, 272, true, false}, {587, 272, true, false}, {587, 142, true, false},
- {0, 130, false, false}, {659, 272, true, false}, {587, 272, true, false}, {659, 272, true, false},
- {698, 272, true, false}, {783, 272, true, false}, {783, 187, true, false}, {0, 85, false, false},
- {659, 272, true, false}, {587, 272, true, false}, {587, 272, true, false}, {587, 272, true, false},
- {587, 187, true, false}, {0, 85, false, false}, {523, 272, true, false}, {523, 272, true, false},
- {523, 187, true, false}, {0, 85, false, false}, {659, 272, true, false}, {783, 272, true, false},
- {880, 272, true, false}, {783, 272, true, false}, {880, 272, true, false}, {987, 272, true, false},
- {1046, 272, true, false}, {1046, 187, true, false}, {0, 85, false, false}, {783, 272, true, false},
- {698, 272, true, false}, {698, 272, true, false}, {659, 272, true, false}, {587, 272, true, false},
- {523, 272, true, false}, {783, 272, true, false}, {783, 187, true, false}, {0, 85, false, false},
- {391, 272, true, false}, {391, 187, true, false}, {0, 85, false, false}, {698, 272, true, false},
- {622, 272, true, false}, {698, 272, true, false}, {739, 272, true, false}, {830, 272, true, false},
- {830, 187, true, false}, {0, 85, false, false}, {698, 272, true, false}, {622, 272, true, false},
- {622, 272, true, false}, {622, 272, true, false}, {622, 187, true, false}, {0, 85, false, false},
- {554, 272, true, false}, {554, 272, true, false}, {554, 187, true, false}, {0, 85, false, false},
- {698, 272, true, false}, {830, 272, true, false}, {932, 272, true, false}, {830, 272, true, false},
- {932, 272, true, false}, {1046, 272, true, false}, {1108, 272, true, false}, {1108, 187, true, false},
- {0, 85, false, false}, {830, 272, true, false}, {739, 272, true, false}, {698, 272, true, false},
- {698, 187, true, false}, {0, 85, false, false}, {698, 272, true, false}, {739, 272, true, false},
- {622, 272, true, false}, {622, 272, true, false}, {622, 272, true, false}, {622, 142, true, false},
- {0, 130, false, false}, {698, 272, true, false}, {622, 272, true, false}, {698, 272, true, false},
- {739, 272, true, false}, {830, 272, true, false}, {830, 187, true, false}, {0, 85, false, false},
- {698, 272, true, false}, {622, 272, true, false}, {622, 272, true, false}, {622, 272, true, false},
- {622, 187, true, false}, {0, 85, false, false}, {554, 272, true, false}, {554, 272, true, false},
- {554, 187, true, false}, {0, 85, false, false}, {698, 272, true, false}, {830, 272, true, false},
- {932, 272, true, false}, {830, 272, true, false}, {932, 272, true, false}, {1046, 272, true, false},
- {1108, 272, true, false}, {1108, 187, true, false}, {0, 85, false, false}, {830, 272, true, false},
- {739, 272, true, false}, {739, 272, true, false}, {698, 272, true, false}, {622, 272, true, false},
- {554, 272, true, false}, {830, 272, true, false}, {830, 187, true, false}, {0, 85, false, false},
- {523, 272, true, false}, {523, 187, true, false}, {0, 85, false, false}, {349, 960, true, true},
- {0, 409, false, false}, {349, 266, false, false}, {369, 204, false, false}, {415, 210, false, false},
- {415, 130, false, false}, {466, 960, true, false}, {0, 409, false, false}, {466, 266, false, false},
- {415, 204, false, false}, {369, 210, false, false}, {369, 130, false, false}, {349, 960, true, true},
- {0, 409, false, false}, {349, 266, false, false}, {369, 204, false, false}, {415, 210, false, false},
- {415, 130, false, false}, {466, 960, true, false}, {0, 409, false, false}, {466, 266, false, false},
- {415, 204, false, false}, {369, 210, false, false}, {369, 130, false, false}, {349, 960, true, true},
- {0, 409, false, false}, {349, 266, false, false}, {369, 204, false, false}, {415, 210, false, false},
- {415, 130, false, false}, {466, 960, true, false}, {0, 136, false, false}, {554, 954, false, false},
- {554, 341, false, false}, {554, 62, true, false}, {415, 68, false, false}, {554, 210, false, false},
- {554, 954, false, false}, {0, 682, false, false}, {0, 454, true, false},
- {0, 2000, false, false}
-};
-
-// Converted from: potc_3.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_potc_3[] = {
- {293, 249, false, false}, {0, 49, false, false}, {293, 146, false, false}, {293, 253, false, false},
- {0, 49, false, false}, {293, 146, false, false}, {293, 253, false, false}, {0, 49, false, false},
- {293, 146, false, false}, {293, 149, false, false}, {293, 149, false, false}, {293, 149, false, false},
- {293, 253, false, false}, {0, 49, false, false}, {293, 146, false, false}, {293, 253, false, false},
- {0, 49, false, false}, {293, 146, false, false}, {293, 253, false, false}, {0, 49, false, false},
- {293, 146, false, false}, {293, 149, false, false}, {293, 149, false, false}, {293, 149, false, false},
- {293, 253, true, false}, {0, 49, false, false}, {293, 146, false, false}, {293, 253, false, false},
- {0, 49, false, false}, {293, 75, false, false}, {293, 71, false, false}, {293, 253, true, false},
- {0, 49, false, false}, {293, 99, false, false}, {293, 46, false, false}, {293, 149, true, false},
- {0, 149, false, true}, {261, 103, false, false}, {261, 46, false, false}, {293, 253, true, true},
- {0, 49, false, false}, {293, 146, true, true}, {293, 103, true, true}, {0, 49, false, false},
- {293, 99, false, true}, {293, 46, false, false}, {329, 149, true, true}, {349, 253, true, true},
- {0, 49, false, false}, {349, 146, true, true}, {349, 103, true, false}, {0, 49, false, false},
- {349, 99, false, true}, {349, 46, false, false}, {391, 149, true, false}, {329, 253, true, true},
- {0, 49, false, false}, {329, 146, true, true}, {329, 103, true, false}, {0, 49, false, false},
- {293, 99, false, true}, {293, 46, false, false}, {261, 149, true, true}, {261, 149, true, true},
- {293, 103, false, true}, {293, 49, false, false}, {293, 99, true, true}, {0, 46, false, false},
- {0, 153, true, true}, {0, 99, false, true}, {0, 46, false, false}, {261, 149, true, true},
- {293, 253, true, true}, {0, 49, false, false}, {293, 146, true, true}, {293, 103, true, false},
- {0, 49, false, false}, {293, 99, false, true}, {293, 46, false, false}, {329, 149, true, true},
- {349, 253, true, true}, {0, 49, false, false}, {349, 146, true, true}, {349, 103, true, false},
- {0, 49, false, false}, {349, 99, false, false}, {349, 46, false, false}, {391, 149, true, false},
- {329, 253, true, false}, {0, 49, false, false}, {329, 146, true, false}, {329, 103, true, false},
- {0, 49, false, false}, {293, 99, false, true}, {293, 46, false, false}, {261, 149, true, false},
- {293, 253, true, true}, {0, 49, false, false}, {0, 146, true, true}, {0, 153, true, true},
- {0, 99, false, true}, {0, 46, false, false}, {261, 149, true, true}, {293, 253, true, true},
- {0, 49, false, false}, {293, 146, true, true}, {293, 103, true, true}, {0, 49, false, false},
- {293, 99, false, true}, {293, 46, false, false}, {349, 149, true, true}, {391, 253, true, true},
- {0, 49, false, false}, {391, 146, true, true}, {391, 103, true, false}, {0, 49, false, false},
- {391, 99, false, false}, {391, 46, false, false}, {440, 149, true, false}, {466, 253, true, false},
- {0, 49, false, false}, {466, 146, true, false}, {466, 103, true, false}, {0, 49, false, false},
- {440, 99, false, false}, {440, 46, false, false}, {391, 149, true, false}, {440, 149, true, true},
- {293, 103, false, false}, {293, 49, false, false}, {293, 99, true, true}, {0, 46, false, false},
- {0, 153, true, true}, {293, 99, false, false}, {293, 46, false, false}, {329, 149, true, true},
- {349, 253, true, true}, {0, 49, false, false}, {349, 146, true, true}, {349, 103, true, false},
- {0, 49, false, false}, {391, 99, false, true}, {391, 49, false, false}, {391, 99, true, false},
- {0, 46, false, false}, {440, 149, true, true}, {293, 103, false, false}, {293, 49, false, false},
- {293, 99, true, true}, {0, 46, false, false}, {0, 153, true, true}, {293, 99, false, false},
- {293, 46, false, false}, {349, 149, true, true}, {329, 253, true, true}, {0, 49, false, false},
- {329, 146, true, true}, {329, 103, true, false}, {0, 49, false, false}, {349, 99, false, false},
- {349, 46, false, false}, {293, 149, true, true}, {329, 149, true, true}, {0, 103, false, false},
- {0, 49, false, false}, {0, 146, true, false}, {0, 153, true, false}, {440, 99, false, false},
- {440, 46, false, false}, {523, 149, true, false}, {587, 253, true, true}, {0, 49, false, false},
- {587, 146, true, true}, {587, 103, true, true}, {0, 49, false, false}, {587, 99, false, false},
- {587, 46, false, false}, {659, 149, true, false}, {698, 253, true, false}, {0, 49, false, false},
- {698, 146, true, false}, {698, 103, true, false}, {0, 49, false, false}, {698, 99, false, false},
- {698, 46, false, false}, {783, 149, true, false}, {659, 253, true, false}, {0, 49, false, false},
- {659, 146, true, false}, {659, 103, true, false}, {0, 49, false, false}, {587, 99, false, false},
- {587, 46, false, false}, {523, 149, true, false}, {523, 149, true, true}, {587, 103, false, false},
- {587, 49, false, false}, {587, 99, true, true}, {0, 46, false, false}, {0, 153, true, true},
- {440, 99, false, false}, {440, 46, false, false}, {523, 149, true, true}, {587, 253, true, false},
- {0, 49, false, false}, {587, 146, true, false}, {587, 103, true, false}, {0, 49, false, false},
- {587, 99, false, false}, {587, 46, false, false}, {659, 149, true, false}, {698, 253, true, false},
- {0, 49, false, false}, {698, 146, true, false}, {698, 103, true, false}, {0, 49, false, false},
- {698, 99, false, false}, {698, 46, false, false}, {783, 149, true, false}, {659, 253, true, false},
- {0, 49, false, false}, {659, 146, true, false}, {659, 103, true, false}, {0, 49, false, false},
- {587, 99, false, false}, {587, 46, false, false}, {523, 149, true, false}, {587, 253, true, true},
- {0, 49, false, false}, {0, 146, true, true}, {0, 153, true, true}, {440, 99, false, false},
- {440, 46, false, false}, {523, 149, true, true}, {587, 253, true, true}, {0, 49, false, false},
- {587, 146, true, true}, {587, 103, true, true}, {0, 49, false, false}, {587, 99, false, false},
- {587, 46, false, false}, {698, 149, true, true}, {783, 253, true, false}, {0, 49, false, false},
- {783, 146, true, false}, {783, 103, true, false}, {0, 49, false, false}, {783, 99, false, false},
- {783, 46, false, false}, {880, 149, true, false}, {932, 253, true, false}, {0, 49, false, false},
- {932, 146, true, false}, {932, 103, true, false}, {0, 49, false, false}, {880, 99, false, false},
- {880, 46, false, false}, {783, 149, true, false}, {880, 149, true, true}, {587, 103, false, false},
- {587, 49, false, false}, {587, 99, true, true}, {0, 46, false, false}, {0, 153, true, true},
- {587, 99, false, false}, {587, 46, false, false}, {659, 149, true, true}, {698, 253, true, false},
- {0, 49, false, false}, {698, 146, true, false}, {698, 103, true, false}, {0, 49, false, false},
- {783, 99, false, false}, {783, 49, false, false}, {783, 99, true, false}, {0, 46, false, false},
- {880, 149, true, true}, {587, 103, false, false}, {587, 49, false, false}, {587, 99, true, true},
- {0, 46, false, false}, {0, 153, true, true}, {587, 99, false, false}, {587, 46, false, false},
- {698, 149, true, true}, {659, 253, true, false}, {0, 49, false, false}, {659, 146, true, false},
- {659, 103, true, false}, {0, 49, false, false}, {587, 99, false, false}, {587, 46, false, false},
- {554, 149, true, false}, {587, 253, true, true}, {0, 49, false, false}, {587, 249, true, true},
- {0, 49, false, false}, {659, 249, true, false}, {0, 49, false, false}, {698, 249, true, false},
- {0, 49, false, false}, {698, 146, true, false}, {698, 103, false, false}, {698, 46, false, false},
- {783, 253, true, false}, {0, 49, false, false}, {880, 146, true, false}, {698, 103, false, false},
- {698, 46, false, false}, {0, 149, true, false}, {0, 153, true, false}, {698, 99, false, false},
- {698, 46, false, false}, {587, 149, true, false}, {440, 149, true, false}, {0, 103, false, false},
- {0, 49, false, false}, {0, 146, true, false}, {0, 253, true, false}, {0, 49, false, false},
- {0, 146, true, false}, {932, 149, true, false}, {0, 103, false, false}, {0, 49, false, false},
- {0, 146, true, false}, {0, 153, true, false}, {783, 99, false, false}, {783, 46, false, false},
- {587, 149, true, false}, {466, 149, true, false}, {0, 103, false, false}, {0, 49, false, false},
- {0, 146, true, false}, {0, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {329, 149, true, false}, {329, 103, false, false}, {329, 49, false, false}, {329, 99, true, false},
- {0, 46, false, false}, {293, 253, true, true}, {293, 49, false, false}, {293, 99, true, false},
- {0, 46, false, false}, {349, 253, true, true}, {349, 49, false, false}, {349, 99, true, false},
- {0, 46, false, false}, {0, 153, true, false}, {349, 99, false, false}, {349, 46, false, false},
- {391, 149, true, false}, {440, 253, true, true}, {0, 49, false, false}, {440, 146, true, true},
- {440, 103, true, true}, {0, 49, false, false}, {440, 99, false, false}, {440, 49, false, false},
- {440, 99, true, true}, {0, 46, false, false}, {466, 149, true, true}, {440, 103, false, false},
- {440, 46, false, false}, {0, 149, true, true}, {0, 149, true, true}, {0, 149, true, true},
- {0, 149, true, true}, {391, 253, true, false}, {0, 49, false, false}, {391, 146, true, false},
- {391, 103, true, false}, {0, 49, false, false}, {391, 99, false, false}, {391, 49, false, false},
- {391, 99, true, false}, {0, 46, false, false}, {391, 149, true, true}, {440, 103, false, false},
- {440, 46, false, false}, {0, 149, true, true}, {0, 149, true, true}, {0, 149, true, true},
- {0, 149, true, true}, {440, 253, true, true}, {0, 49, false, false}, {440, 146, true, true},
- {440, 103, true, true}, {0, 49, false, false}, {440, 99, false, false}, {440, 49, false, false},
- {440, 99, true, true}, {0, 46, false, false}, {466, 149, true, true}, {440, 103, false, false},
- {440, 46, false, false}, {0, 149, true, true}, {0, 149, true, true}, {0, 149, true, true},
- {0, 149, true, true}, {391, 253, true, false}, {0, 49, false, false}, {349, 146, true, false},
- {349, 103, true, false}, {0, 49, false, false}, {329, 99, false, true}, {329, 49, false, false},
- {329, 99, true, false}, {0, 46, false, false}, {293, 253, true, true}, {0, 49, false, false},
- {0, 146, true, true}, {0, 153, true, true}, {293, 99, false, false}, {293, 46, false, false},
- {329, 149, true, true}, {349, 253, true, true}, {349, 49, false, false}, {349, 146, true, true},
- {349, 78, true, true}, {0, 75, false, false}, {391, 99, false, false}, {391, 46, false, false},
- {440, 149, true, true}, {391, 253, true, false}, {0, 49, false, false}, {349, 146, true, false},
- {349, 103, true, false}, {0, 46, false, false}, {329, 149, true, false}, {329, 103, true, false},
- {0, 46, false, false}, {349, 253, true, true}, {0, 49, false, false}, {391, 146, true, true},
- {391, 103, true, true}, {0, 46, false, false}, {440, 149, true, true}, {440, 103, true, true},
- {0, 46, false, false}, {391, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {349, 149, true, false}, {391, 149, true, false}, {440, 253, true, true},
- {0, 49, false, false}, {0, 146, true, true}, {0, 149, true, true}, {391, 149, true, true},
- {349, 149, true, true}, {329, 253, true, false}, {0, 49, false, false}, {349, 146, true, false},
- {349, 103, true, false}, {0, 46, false, false}, {329, 149, true, false}, {329, 103, true, false},
- {0, 46, false, false}, {293, 253, true, true}, {0, 49, false, false}, {0, 146, true, true},
- {0, 153, true, true}, {329, 99, false, false}, {329, 46, false, false}, {261, 149, true, true},
- {293, 149, true, true}, {0, 103, false, false}, {0, 49, false, false}, {0, 146, true, true},
- {0, 149, true, true}, {587, 149, true, true}, {659, 149, true, true}, {698, 253, true, true},
- {0, 49, false, false}, {0, 146, true, true}, {0, 149, true, true}, {659, 149, true, true},
- {698, 149, true, true}, {783, 253, true, false}, {0, 49, false, false}, {698, 146, true, false},
- {698, 103, true, false}, {0, 46, false, false}, {783, 149, true, false}, {783, 103, true, false},
- {0, 46, false, false}, {880, 253, true, true}, {0, 49, false, false}, {783, 146, true, true},
- {783, 103, true, true}, {0, 46, false, false}, {698, 149, true, true}, {698, 103, true, true},
- {0, 46, false, false}, {587, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {587, 149, true, false}, {659, 149, true, false}, {698, 253, true, true},
- {0, 49, false, false}, {783, 146, true, true}, {783, 103, true, true}, {0, 46, false, false},
- {880, 149, true, true}, {880, 103, true, true}, {0, 46, false, false}, {932, 253, true, false},
- {0, 49, false, false}, {587, 146, true, false}, {587, 103, true, false}, {0, 46, false, false},
- {783, 149, true, false}, {783, 103, true, false}, {0, 46, false, false}, {698, 253, true, false},
- {0, 49, false, false}, {0, 146, true, false}, {0, 149, true, false}, {783, 149, true, false},
- {659, 149, true, false}, {587, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {659, 149, true, false}, {554, 149, true, false}, {880, 253, true, true},
- {0, 49, false, false}, {0, 146, true, true}, {0, 149, true, true}, {0, 149, true, true},
- {0, 149, true, true}, {932, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {0, 149, true, false}, {0, 149, true, false}, {880, 253, true, true},
- {0, 49, false, false}, {880, 146, true, true}, {880, 103, true, true}, {0, 49, false, false},
- {880, 99, false, false}, {880, 49, false, false}, {880, 99, true, true}, {0, 46, false, false},
- {880, 149, true, false}, {783, 103, false, false}, {783, 46, false, false}, {0, 149, true, false},
- {0, 149, true, false}, {0, 149, true, false}, {0, 149, true, false}, {783, 253, true, false},
- {0, 49, false, false}, {0, 146, true, false}, {0, 149, true, false}, {0, 149, true, false},
- {0, 149, true, false}, {698, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {0, 149, true, false}, {0, 149, true, false}, {698, 253, true, false},
- {0, 49, false, false}, {783, 146, true, false}, {783, 103, true, false}, {0, 46, false, false},
- {659, 149, true, false}, {659, 103, true, false}, {0, 46, false, false}, {587, 253, true, true},
- {587, 49, false, false}, {587, 99, true, true}, {0, 46, false, false}, {587, 149, true, true},
- {659, 149, true, true}, {698, 149, true, true}, {880, 253, true, true}, {880, 49, false, false},
- {880, 99, true, true}, {0, 46, false, false}, {587, 149, true, true}, {659, 149, true, true},
- {698, 149, true, true}, {932, 253, true, false}, {932, 49, false, false}, {932, 99, true, false},
- {0, 46, false, false}, {587, 149, true, false}, {659, 149, true, false}, {698, 149, true, false},
- {880, 253, true, true}, {0, 49, false, false}, {880, 146, true, true}, {880, 103, true, true},
- {0, 46, false, false}, {1046, 149, true, true}, {1046, 103, true, true}, {0, 46, false, false},
- {880, 149, true, false}, {783, 103, false, false}, {783, 46, false, false}, {0, 149, true, false},
- {0, 149, true, false}, {0, 149, true, false}, {0, 149, true, false}, {783, 253, true, false},
- {0, 49, false, false}, {0, 146, true, false}, {0, 149, true, false}, {0, 149, true, false},
- {0, 149, true, false}, {698, 253, true, false}, {0, 49, false, false}, {0, 146, true, false},
- {0, 149, true, false}, {0, 149, true, false}, {0, 149, true, false}, {698, 253, true, false},
- {0, 49, false, false}, {783, 146, true, false}, {783, 103, true, false}, {0, 46, false, false},
- {659, 149, true, false}, {659, 103, true, false}, {0, 46, false, false}, {587, 403, true, true},
- {0, 49, false, false}, {0, 146, true, true}, {0, 149, true, true}, {0, 149, true, true},
- {293, 1128, true, false},
- {0, 2000, false, false}
-};
-
-
-// Converted from: potc_2.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_potc_2[] = {
- {0, 296, false, true}, {0, 149, false, true}, {0, 300, false, true}, {0, 149, false, true},
- {0, 300, false, true}, {0, 149, false, true}, {0, 149, false, true}, {0, 149, false, true},
- {0, 149, false, true}, {0, 300, false, true}, {0, 149, false, true}, {0, 300, false, true},
- {0, 149, false, true}, {0, 300, false, true}, {0, 149, false, true}, {0, 149, false, true},
- {0, 149, false, true}, {0, 149, false, true}, {293, 300, false, true}, {293, 149, false, true},
- {293, 300, false, true}, {293, 149, false, true}, {293, 300, false, true}, {293, 149, false, true},
- {293, 149, false, true}, {293, 149, false, true}, {293, 149, false, true}, {293, 300, false, true},
- {293, 149, false, true}, {293, 300, false, true}, {293, 149, false, true}, {293, 300, false, true},
- {293, 149, true, true}, {293, 149, true, true}, {293, 149, false, true}, {293, 149, false, true},
- {293, 149, true, true}, {293, 149, true, false}, {293, 149, true, true}, {293, 149, true, true},
- {293, 149, true, false}, {329, 149, true, false}, {349, 149, true, true}, {349, 149, true, false},
- {349, 149, true, true}, {349, 149, true, true}, {391, 149, true, false}, {391, 149, true, true},
- {329, 149, true, true}, {329, 149, true, false}, {329, 149, true, true}, {329, 149, true, true},
- {293, 149, true, false}, {261, 149, true, true}, {293, 149, true, true}, {587, 149, true, true},
- {523, 149, true, true}, {587, 149, true, true}, {0, 149, true, true}, {293, 149, true, true},
- {293, 149, true, true}, {293, 149, true, false}, {293, 149, true, true}, {293, 149, true, true},
- {293, 149, true, false}, {329, 149, true, true}, {349, 149, true, true}, {349, 149, true, false},
- {349, 149, true, true}, {349, 149, true, true}, {391, 149, true, false}, {391, 149, true, true},
- {329, 149, true, true}, {329, 149, true, false}, {329, 149, true, false}, {329, 149, true, true},
- {293, 149, true, false}, {261, 149, true, true}, {293, 149, true, true}, {587, 149, true, true},
- {523, 149, true, true}, {587, 149, true, true}, {0, 149, true, true}, {293, 149, true, true},
- {293, 149, true, true}, {293, 149, true, false}, {293, 149, true, true}, {293, 149, true, true},
- {293, 149, true, false}, {349, 149, true, true}, {391, 149, true, true}, {391, 149, true, false},
- {391, 149, true, true}, {391, 149, true, true}, {440, 149, true, false}, {466, 149, true, true},
- {466, 149, true, true}, {466, 149, true, false}, {466, 149, true, true}, {440, 149, true, true},
- {440, 149, true, false}, {391, 149, true, true}, {440, 149, true, true}, {293, 149, true, true},
- {293, 149, true, true}, {293, 149, true, true}, {293, 149, true, false}, {329, 149, true, true},
- {349, 149, true, true}, {349, 149, true, false}, {391, 149, true, true}, {391, 149, true, true},
- {440, 149, true, false}, {440, 149, true, true}, {293, 149, true, true}, {293, 149, true, false},
- {293, 149, true, true}, {293, 149, true, true}, {349, 149, true, false}, {329, 149, true, true},
- {329, 149, true, true}, {329, 149, true, false}, {329, 149, true, true}, {349, 149, true, true},
- {293, 149, true, true}, {329, 149, true, true}, {329, 149, true, true}, {329, 149, true, true},
- {329, 149, true, true}, {329, 149, true, true}, {440, 149, true, true}, {523, 149, true, true},
- {587, 149, true, true}, {587, 149, true, false}, {587, 149, true, true}, {587, 149, true, true},
- {587, 149, true, false}, {659, 149, true, false}, {698, 149, true, true}, {698, 149, true, false},
- {698, 149, true, true}, {698, 149, true, true}, {783, 149, true, false}, {783, 149, true, true},
- {659, 149, true, true}, {659, 149, true, false}, {659, 149, true, true}, {659, 149, true, true},
- {587, 149, true, false}, {523, 149, true, true}, {587, 149, true, true}, {1174, 149, true, true},
- {1046, 149, true, true}, {1174, 149, true, true}, {440, 149, true, false}, {523, 149, true, true},
- {587, 149, true, true}, {587, 149, true, false}, {587, 149, true, true}, {587, 149, true, true},
- {587, 149, true, false}, {659, 149, true, true}, {698, 149, true, true}, {698, 149, true, false},
- {698, 149, true, true}, {698, 149, true, true}, {783, 149, true, false}, {783, 149, true, true},
- {659, 149, true, true}, {659, 149, true, false}, {659, 149, true, false}, {659, 149, true, true},
- {587, 149, true, false}, {523, 149, true, true}, {587, 149, true, true}, {1174, 149, true, true},
- {1046, 149, true, true}, {1174, 149, true, true}, {440, 149, true, false}, {523, 149, true, true},
- {587, 149, true, true}, {587, 149, true, false}, {587, 149, true, true}, {587, 149, true, true},
- {587, 149, true, false}, {698, 149, true, true}, {783, 149, true, true}, {783, 149, true, false},
- {783, 149, true, true}, {783, 149, true, true}, {880, 149, true, false}, {932, 149, true, true},
- {932, 149, true, true}, {932, 149, true, false}, {932, 149, true, true}, {880, 149, true, true},
- {880, 149, true, false}, {783, 149, true, true}, {880, 149, true, true}, {587, 149, true, true},
- {587, 149, true, true}, {587, 149, true, true}, {587, 149, true, false}, {659, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {880, 149, true, false}, {880, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {698, 149, true, false}, {659, 149, true, true},
- {659, 149, true, true}, {659, 149, true, false}, {659, 149, true, true}, {659, 149, true, true},
- {587, 149, true, false}, {554, 149, true, true}, {587, 300, true, true}, {587, 300, true, true},
- {659, 300, true, false}, {698, 149, true, true}, {698, 149, true, true}, {698, 149, true, true},
- {698, 149, true, true}, {783, 149, true, true}, {783, 149, true, true}, {880, 149, true, true},
- {698, 149, false, false}, {698, 149, true, false}, {698, 149, true, false}, {698, 149, false, false},
- {587, 149, true, false}, {440, 300, true, false}, {440, 149, true, false}, {440, 300, true, false},
- {440, 149, true, false}, {932, 149, true, true}, {932, 150, false, false}, {932, 149, true, false},
- {932, 149, true, false}, {783, 149, false, false}, {587, 149, true, false}, {466, 300, true, false},
- {466, 149, true, false}, {466, 300, true, false}, {466, 149, true, false}, {329, 149, true, true},
- {329, 149, true, true}, {329, 149, true, true}, {293, 149, true, true}, {293, 149, true, true},
- {293, 149, true, true}, {349, 149, true, true}, {349, 149, true, false}, {349, 149, true, true},
- {349, 149, true, true}, {349, 149, true, false}, {391, 149, true, true}, {440, 149, true, true},
- {440, 149, true, false}, {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, false},
- {440, 149, true, true}, {466, 149, true, true}, {440, 149, true, false}, {440, 149, true, true},
- {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, true}, {391, 149, true, true},
- {391, 149, true, false}, {391, 149, true, false}, {391, 149, true, true}, {391, 149, true, false},
- {391, 149, true, false}, {440, 149, true, true}, {440, 149, true, false}, {440, 149, true, true},
- {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, true},
- {440, 149, true, false}, {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, false},
- {440, 149, true, true}, {466, 149, true, true}, {440, 149, true, false}, {440, 149, true, true},
- {440, 149, true, true}, {440, 149, true, true}, {440, 149, true, true}, {391, 149, true, true},
- {391, 149, true, false}, {349, 149, true, true}, {349, 149, true, true}, {329, 149, true, false},
- {329, 149, true, true}, {293, 149, true, true}, {293, 149, true, true}, {293, 149, true, true},
- {293, 149, true, true}, {293, 149, true, true}, {329, 149, true, true}, {349, 149, true, true},
- {349, 150, false, false}, {349, 149, false, true}, {349, 149, false, true}, {391, 149, false, false},
- {440, 149, false, true}, {391, 300, true, false}, {349, 149, true, false}, {349, 149, true, false},
- {329, 149, true, false}, {329, 149, true, false}, {349, 300, false, true}, {391, 149, false, true},
- {391, 149, false, true}, {440, 149, false, true}, {440, 149, false, true}, {391, 300, true, false},
- {391, 149, true, false}, {391, 149, true, false}, {349, 149, true, false}, {391, 149, true, false},
- {440, 149, true, true}, {440, 149, true, false}, {440, 149, true, true}, {440, 149, true, true},
- {391, 149, true, true}, {349, 149, true, true}, {329, 149, true, true}, {329, 149, true, false},
- {349, 149, true, true}, {349, 149, true, true}, {329, 149, true, true}, {329, 149, true, true},
- {293, 149, true, true}, {293, 149, true, false}, {293, 149, true, true}, {293, 149, true, true},
- {329, 149, true, false}, {293, 149, true, true}, {293, 149, true, true}, {293, 149, true, false},
- {293, 149, true, true}, {293, 149, true, true}, {587, 149, true, true}, {659, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {698, 149, true, true}, {698, 149, true, true},
- {659, 149, true, true}, {698, 149, true, true}, {783, 149, true, true}, {783, 149, true, false},
- {698, 149, true, false}, {698, 149, true, true}, {783, 149, true, false}, {783, 149, true, false},
- {880, 149, true, true}, {880, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {698, 149, true, true}, {698, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {587, 149, true, true}, {659, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {880, 149, true, true}, {880, 149, true, true}, {932, 149, true, true}, {932, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {783, 149, true, true}, {783, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {698, 149, true, true}, {698, 149, true, true},
- {783, 149, true, true}, {659, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {554, 149, true, true}, {554, 149, true, true}, {554, 149, true, true},
- {880, 149, true, true}, {880, 149, true, false}, {880, 149, true, true}, {880, 149, true, true},
- {880, 149, true, true}, {880, 149, true, true}, {932, 149, true, true}, {932, 149, true, false},
- {932, 149, true, true}, {932, 149, true, true}, {932, 149, true, true}, {932, 149, true, true},
- {880, 149, true, true}, {880, 149, true, false}, {880, 149, true, true}, {880, 149, true, false},
- {880, 149, true, true}, {880, 149, true, false}, {880, 149, true, true}, {783, 149, true, false},
- {783, 149, true, false}, {783, 149, true, true}, {783, 149, true, false}, {783, 149, true, false},
- {783, 149, true, true}, {783, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {783, 149, true, true}, {783, 149, true, true}, {698, 149, true, true}, {698, 149, true, false},
- {698, 149, true, true}, {698, 149, true, true}, {698, 149, true, true}, {698, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {659, 149, true, true}, {659, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {659, 149, true, true}, {698, 149, true, true},
- {880, 149, true, true}, {698, 149, true, false}, {659, 149, true, true}, {587, 149, true, true},
- {659, 149, true, true}, {698, 149, true, true}, {932, 149, true, true}, {698, 149, true, false},
- {659, 149, true, true}, {587, 149, true, true}, {659, 149, true, true}, {698, 149, true, true},
- {880, 149, true, true}, {880, 149, true, false}, {880, 149, true, true}, {880, 149, true, true},
- {1046, 149, true, true}, {1046, 149, true, true}, {880, 149, true, true}, {783, 149, true, false},
- {783, 149, true, false}, {783, 149, true, true}, {783, 149, true, false}, {783, 149, true, false},
- {783, 149, true, true}, {783, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {783, 149, true, true}, {783, 149, true, true}, {698, 149, true, true}, {698, 149, true, false},
- {698, 149, true, true}, {698, 149, true, true}, {698, 149, true, true}, {698, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {659, 149, true, true}, {659, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {293, 149, true, false}, {293, 149, true, true}, {587, 149, true, false}, {659, 149, true, true},
- {698, 149, true, true}, {698, 149, true, false}, {783, 149, true, true}, {783, 149, true, true},
- {880, 149, true, false}, {880, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {698, 149, true, false}, {659, 149, true, true},
- {659, 149, true, true}, {659, 149, true, false}, {659, 149, true, true}, {659, 149, true, true},
- {587, 149, true, false}, {554, 149, true, true}, {587, 149, true, true}, {587, 149, true, false},
- {587, 149, true, true}, {587, 149, true, true}, {0, 300, false, false},
- {0, 2000, false, false}
-};
-
-
-
-// Converted from: alla_turca_8.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_alla_turca[] = {
- {493, 136, false, false}, {440, 136, false, false}, {415, 136, false, false}, {440, 136, false, false},
- {523, 272, false, true}, {329, 272, false, false}, {587, 136, false, false}, {523, 136, false, false},
- {493, 136, false, false}, {523, 136, false, false}, {659, 272, false, true}, {329, 272, false, false},
- {698, 136, false, false}, {659, 136, false, false}, {622, 136, false, false}, {659, 136, false, false},
- {987, 136, false, true}, {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false},
- {987, 136, false, true}, {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false},
- {1046, 272, false, true}, {1046, 272, false, false}, {880, 272, false, false}, {1046, 272, false, false},
- {987, 272, false, true}, {880, 272, false, true}, {783, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {880, 272, false, true}, {783, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {880, 272, false, true}, {783, 272, true, false}, {739, 272, false, true},
- {659, 545, false, true}, {659, 272, false, false}, {698, 272, false, false}, {783, 272, true, false},
- {783, 272, false, false}, {880, 136, false, true}, {783, 136, false, false}, {698, 136, false, false},
- {659, 136, false, false}, {587, 272, false, true}, {391, 272, false, false}, {659, 272, false, false},
- {698, 272, false, false}, {783, 272, true, false}, {783, 272, false, false}, {880, 136, false, true},
- {783, 136, false, false}, {698, 136, false, false}, {659, 136, false, false}, {587, 545, false, true},
- {523, 272, false, false}, {587, 272, false, false}, {659, 272, true, false}, {659, 272, false, true},
- {698, 136, true, false}, {659, 136, false, false}, {587, 136, false, false}, {523, 136, false, false},
- {493, 272, false, true}, {329, 272, false, false}, {523, 272, false, false}, {587, 272, false, false},
- {659, 272, true, false}, {659, 272, false, true}, {698, 136, true, false}, {659, 136, false, false},
- {587, 136, false, false}, {523, 136, false, false}, {493, 545, false, true}, {493, 136, false, false},
- {440, 136, false, false}, {415, 136, false, false}, {440, 136, false, false}, {523, 272, false, true},
- {329, 272, false, false}, {587, 136, false, false}, {523, 136, false, false}, {493, 136, false, false},
- {523, 136, false, false}, {659, 272, false, true}, {329, 272, false, false}, {698, 136, false, false},
- {659, 136, false, false}, {622, 136, false, false}, {659, 136, false, false}, {987, 136, false, true},
- {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {987, 136, false, true},
- {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {1046, 272, false, true},
- {311, 272, false, true}, {880, 272, false, true}, {987, 272, false, true}, {1046, 272, false, true},
- {987, 272, false, true}, {880, 272, false, true}, {830, 272, false, true}, {880, 272, true, false},
- {659, 272, false, true}, {698, 272, false, true}, {587, 272, false, true}, {523, 272, false, true},
- {523, 272, false, true}, {493, 272, false, true}, {493, 136, false, true}, {440, 68, false, false},
- {493, 68, false, false}, {493, 68, true, true}, {440, 477, false, false}, {880, 272, false, false},
- {987, 272, false, false}, {1108, 272, false, true}, {1108, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true}, {880, 272, false, true},
- {830, 272, false, true}, {739, 272, false, true}, {830, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {830, 272, false, true}, {659, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true}, {880, 272, false, true},
- {987, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true}, {880, 272, false, true},
- {830, 272, false, true}, {739, 272, false, true}, {987, 272, false, true}, {830, 272, false, true},
- {659, 272, false, true}, {880, 545, true, false}, {1108, 136, false, false}, {1174, 136, false, false},
- {1108, 136, false, false}, {987, 136, false, false}, {880, 136, false, true}, {987, 136, false, false},
- {880, 136, false, true}, {830, 136, false, false}, {739, 136, false, true}, {880, 136, false, false},
- {830, 136, false, true}, {739, 136, false, false}, {698, 136, false, true}, {739, 136, false, false},
- {830, 136, false, true}, {698, 136, false, false}, {554, 136, false, true}, {622, 136, false, false},
- {698, 136, false, true}, {554, 136, false, false}, {739, 136, false, true}, {698, 136, false, false},
- {739, 136, false, true}, {830, 136, false, false}, {880, 136, false, true}, {830, 136, false, false},
- {880, 136, false, true}, {987, 136, false, false}, {1108, 136, false, true}, {1046, 136, false, false},
- {1108, 136, false, true}, {1046, 136, false, false}, {1108, 136, false, true}, {1174, 136, false, false},
- {1108, 136, false, true}, {987, 136, false, false}, {880, 136, false, true}, {987, 136, false, false},
- {880, 136, false, true}, {830, 136, false, false}, {739, 136, false, true}, {880, 136, false, false},
- {830, 136, false, true}, {739, 136, false, false}, {659, 136, false, true}, {739, 136, false, false},
- {830, 136, false, false}, {659, 136, false, false}, {554, 136, false, false}, {622, 136, false, false},
- {659, 136, false, false}, {554, 136, false, false}, {622, 136, false, true}, {659, 136, false, false},
- {739, 136, false, false}, {622, 136, false, false}, {523, 136, false, false}, {554, 136, false, false},
- {622, 136, false, false}, {523, 136, false, false}, {554, 545, false, false}, {659, 136, false, false},
- {587, 136, false, false}, {554, 136, false, false}, {493, 136, false, false}, {440, 136, false, true},
- {493, 136, false, false}, {554, 136, false, false}, {587, 136, false, false}, {659, 136, false, false},
- {739, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {880, 136, false, true},
- {830, 136, false, false}, {739, 136, false, false}, {659, 136, false, false}, {659, 136, false, true},
- {587, 136, false, false}, {554, 136, false, false}, {493, 136, false, false}, {440, 136, false, true},
- {493, 136, false, false}, {554, 136, false, false}, {587, 136, false, false}, {659, 136, false, false},
- {739, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {932, 272, false, true},
- {987, 272, false, true}, {659, 136, false, true}, {587, 136, false, false}, {554, 136, false, true},
- {493, 136, false, false}, {440, 136, false, true}, {493, 136, false, false}, {554, 136, false, false},
- {587, 136, false, false}, {659, 136, false, false}, {739, 136, false, false}, {830, 136, false, false},
- {880, 136, false, false}, {880, 136, false, true}, {830, 136, false, false}, {739, 136, false, false},
- {659, 136, false, false}, {659, 136, false, true}, {587, 136, false, false}, {554, 136, false, false},
- {493, 136, false, false}, {554, 136, false, true}, {659, 136, false, false}, {440, 136, false, true},
- {554, 136, false, false}, {493, 136, false, true}, {587, 136, false, false}, {415, 136, false, true},
- {493, 136, false, false}, {440, 272, true, false}, {440, 272, false, true}, {1108, 136, false, false},
- {1174, 136, false, false}, {1108, 136, false, false}, {987, 136, false, false}, {880, 136, false, true},
- {987, 136, false, false}, {880, 136, false, true}, {830, 136, false, false}, {739, 136, false, true},
- {880, 136, false, false}, {830, 136, false, true}, {739, 136, false, false}, {698, 136, false, true},
- {739, 136, false, false}, {830, 136, false, true}, {698, 136, false, false}, {554, 136, false, true},
- {622, 136, false, false}, {698, 136, false, true}, {554, 136, false, false}, {739, 136, false, true},
- {698, 136, false, false}, {739, 136, false, true}, {830, 136, false, false}, {880, 136, false, true},
- {830, 136, false, false}, {880, 136, false, true}, {987, 136, false, false}, {1108, 136, true, false},
- {1046, 136, false, false}, {1108, 136, false, true}, {1046, 136, false, false}, {1108, 136, false, true},
- {1046, 136, false, false}, {1108, 136, false, true}, {932, 136, false, false}, {1174, 136, true, false},
- {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false}, {1174, 136, false, true},
- {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false}, {1174, 136, true, false},
- {1108, 136, false, false}, {987, 136, false, true}, {880, 136, false, false}, {830, 136, false, true},
- {880, 136, false, false}, {987, 136, false, true}, {830, 136, false, false}, {880, 136, true, false},
- {987, 136, false, false}, {1108, 136, false, true}, {739, 136, false, false}, {698, 136, true, false},
- {739, 136, false, false}, {830, 136, false, true}, {698, 136, false, false}, {739, 545, false, true},
- {880, 272, false, false}, {987, 272, false, false}, {1108, 272, false, true}, {1108, 272, false, true},
- {880, 272, false, true}, {987, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true},
- {880, 272, false, true}, {830, 272, false, true}, {739, 272, false, true}, {830, 272, false, true},
- {880, 272, false, true}, {987, 272, false, true}, {830, 272, false, true}, {659, 272, false, true},
- {880, 272, false, true}, {987, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {880, 272, false, true}, {987, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true},
- {880, 272, false, true}, {830, 272, false, true}, {739, 272, false, true}, {987, 272, false, true},
- {830, 272, false, true}, {659, 272, false, true}, {880, 545, true, false}, {493, 136, false, false},
- {440, 136, false, false}, {415, 136, false, false}, {440, 136, false, false}, {523, 272, false, true},
- {329, 272, false, false}, {587, 136, false, false}, {523, 136, false, false}, {493, 136, false, false},
- {523, 136, false, false}, {659, 272, false, true}, {329, 272, false, false}, {698, 136, false, false},
- {659, 136, false, false}, {622, 136, false, false}, {659, 136, false, false}, {987, 136, false, true},
- {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {987, 136, false, true},
- {880, 136, false, false}, {830, 136, false, false}, {880, 136, false, false}, {1046, 272, false, true},
- {1046, 272, false, false}, {880, 272, false, false}, {1046, 272, false, false}, {987, 272, false, true},
- {880, 272, false, true}, {783, 272, false, true}, {880, 272, false, true}, {987, 272, false, true},
- {880, 272, false, true}, {783, 272, false, true}, {880, 272, false, true}, {987, 272, false, true},
- {880, 272, false, true}, {783, 272, true, false}, {739, 272, false, true}, {659, 545, false, true},
- {659, 272, false, false}, {698, 272, false, false}, {783, 272, true, false}, {783, 272, false, false},
- {880, 136, false, true}, {783, 136, false, false}, {698, 136, false, false}, {659, 136, false, false},
- {587, 272, false, true}, {391, 272, false, false}, {659, 272, false, false}, {698, 272, false, false},
- {783, 272, true, false}, {783, 272, false, false}, {880, 136, false, true}, {783, 136, false, false},
- {698, 136, false, false}, {659, 136, false, false}, {587, 545, false, true}, {523, 272, false, false},
- {587, 272, false, false}, {659, 272, true, false}, {659, 272, false, true}, {698, 136, true, false},
- {659, 136, false, false}, {587, 136, false, false}, {523, 136, false, false}, {493, 272, false, true},
- {493, 272, false, false}, {523, 272, false, false}, {587, 272, false, false}, {659, 272, true, false},
- {659, 272, false, true}, {698, 136, true, false}, {659, 136, false, false}, {587, 136, false, false},
- {523, 136, false, false}, {493, 545, false, true}, {493, 136, false, false}, {440, 136, false, false},
- {415, 136, false, false}, {440, 136, false, false}, {523, 272, false, true}, {329, 272, false, false},
- {587, 136, false, false}, {523, 136, false, false}, {493, 136, false, false}, {523, 136, false, false},
- {659, 272, false, true}, {329, 272, false, false}, {698, 136, false, false}, {659, 136, false, false},
- {622, 136, false, false}, {659, 136, false, false}, {987, 136, false, true}, {880, 136, false, false},
- {830, 136, false, false}, {880, 136, false, false}, {987, 136, false, true}, {880, 136, false, false},
- {830, 136, false, false}, {880, 136, false, false}, {1046, 272, false, true}, {311, 272, false, true},
- {880, 272, false, true}, {987, 272, false, true}, {1046, 272, false, true}, {987, 272, false, true},
- {880, 272, false, true}, {830, 272, false, true}, {880, 272, true, false}, {659, 272, false, true},
- {698, 272, false, true}, {587, 272, false, true}, {523, 272, false, true}, {523, 272, false, true},
- {493, 272, false, true}, {493, 136, false, true}, {440, 68, false, false}, {493, 68, false, false},
- {493, 68, true, true}, {440, 477, false, false}, {440, 136, false, false}, {880, 136, false, false},
- {493, 136, false, false}, {987, 136, false, false}, {554, 136, false, true}, {1108, 136, false, false},
- {0, 272, false, true}, {440, 136, false, true}, {880, 136, false, false}, {493, 136, false, true},
- {987, 136, false, false}, {554, 136, false, true}, {1108, 136, false, false}, {493, 136, false, true},
- {987, 136, false, false}, {440, 136, false, true}, {880, 136, false, false}, {415, 136, false, true},
- {830, 136, false, false}, {369, 136, false, true}, {739, 136, false, false}, {415, 136, false, true},
- {830, 136, false, false}, {440, 136, false, true}, {880, 136, false, false}, {493, 136, false, true},
- {987, 136, false, false}, {415, 136, false, true}, {830, 136, false, false}, {329, 136, false, true},
- {659, 136, false, false}, {440, 136, false, true}, {880, 136, false, false}, {493, 136, false, true},
- {987, 136, false, false}, {554, 136, false, true}, {1108, 136, false, false}, {0, 272, false, true},
- {440, 136, false, true}, {880, 136, false, false}, {493, 136, false, true}, {987, 136, false, false},
- {554, 136, false, true}, {1108, 136, false, false}, {493, 136, false, true}, {987, 136, false, false},
- {440, 136, false, true}, {880, 136, false, false}, {415, 136, false, true}, {830, 136, false, false},
- {369, 136, false, true}, {739, 136, false, false}, {493, 136, false, true}, {987, 136, false, false},
- {415, 136, false, true}, {830, 136, false, false}, {329, 136, false, true}, {659, 136, false, false},
- {880, 545, true, false}, {880, 272, false, true}, {880, 272, false, true}, {1108, 272, false, true},
- {1108, 136, false, true}, {1108, 136, false, false}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 272, false, true}, {1174, 272, false, true},
- {0, 272, false, true}, {0, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true}, {987, 272, false, true},
- {987, 272, false, true}, {1318, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 272, false, true}, {1174, 272, false, true},
- {1174, 272, false, true}, {1174, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true}, {987, 272, false, true},
- {987, 272, false, true}, {987, 272, false, true}, {880, 136, false, true}, {880, 136, false, false},
- {880, 136, false, false}, {880, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, false}, {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, false}, {1108, 136, false, false}, {1174, 136, false, true}, {1174, 136, false, false},
- {1174, 136, false, false}, {1174, 136, false, false}, {1174, 136, false, true}, {1174, 136, false, false},
- {1174, 136, false, false}, {1174, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {1108, 136, false, true}, {1108, 136, false, false},
- {1108, 136, false, false}, {1108, 136, false, false}, {987, 136, false, true}, {987, 136, false, false},
- {987, 136, false, true}, {987, 136, false, false}, {987, 136, false, true}, {987, 136, false, false},
- {1318, 136, false, true}, {1318, 136, false, false}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 136, false, true}, {1108, 136, false, false},
- {987, 136, false, true}, {1108, 136, false, false}, {1174, 272, false, true}, {1174, 272, false, true},
- {1174, 272, false, true}, {1174, 272, false, true}, {1108, 272, false, true}, {1108, 272, false, true},
- {1108, 272, false, true}, {1108, 272, false, true}, {987, 272, false, true}, {987, 272, false, true},
- {987, 272, false, true}, {987, 272, false, true}, {880, 272, false, true}, {880, 272, false, true},
- {880, 272, false, true}, {1108, 272, false, true}, {880, 272, false, true}, {880, 272, false, true},
- {880, 272, false, true}, {1318, 272, false, true}, {880, 272, false, true}, {880, 272, false, true},
- {880, 272, false, true}, {1108, 272, false, true}, {880, 272, false, true}, {1108, 272, false, true},
- {880, 272, false, true}, {1318, 272, false, true}, {880, 545, true, false}, {880, 545, true, true},
- {880, 545, true, true},
- {0, 2000, false, false}
-};
-
-
-// Converted from: tetris_1.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_tetris_1[] = {
- {659, 266, false, true}, {659, 14, false, false}, {659, 232, false, false}, {493, 15, false, true},
- {493, 216, false, false}, {0, 15, false, false}, {523, 14, false, false}, {523, 219, false, false},
- {329, 15, false, false}, {587, 14, false, true}, {587, 236, false, false}, {587, 14, false, false},
- {587, 236, false, false}, {523, 15, false, true}, {523, 223, false, false}, {0, 15, false, false},
- {493, 15, false, false}, {493, 226, false, false}, {329, 17, false, false}, {440, 13, true, false},
- {440, 256, false, false}, {440, 14, false, true}, {440, 232, false, false}, {440, 15, true, false},
- {440, 216, false, false}, {0, 15, false, false}, {523, 14, false, true}, {523, 219, false, false},
- {0, 15, false, false}, {659, 14, true, false}, {659, 234, false, false}, {659, 14, false, true},
- {659, 231, false, false}, {587, 15, true, false}, {587, 216, false, false}, {0, 15, false, false},
- {523, 14, false, true}, {523, 217, false, false}, {0, 17, false, false}, {493, 12, true, false},
- {493, 251, false, false}, {493, 14, false, true}, {493, 232, false, false}, {493, 15, true, false},
- {493, 216, false, false}, {0, 15, false, false}, {523, 14, false, true}, {523, 219, false, false},
- {0, 15, false, false}, {587, 14, true, false}, {587, 234, false, false}, {587, 14, false, true},
- {587, 231, false, false}, {659, 15, true, false}, {659, 231, false, false}, {659, 14, false, true},
- {659, 232, false, false}, {523, 15, true, false}, {523, 251, false, false}, {523, 14, false, true},
- {523, 232, false, false}, {440, 15, true, false}, {440, 231, false, false}, {440, 14, false, true},
- {440, 233, false, false}, {440, 15, true, false}, {440, 234, false, false}, {440, 14, false, true},
- {440, 231, false, false}, {0, 15, true, true}, {0, 201, false, false}, {0, 30, false, false},
- {261, 14, true, false}, {261, 202, false, false}, {0, 32, false, false}, {0, 12, false, true},
- {0, 251, false, false}, {293, 14, false, false}, {293, 233, false, false}, {587, 14, false, true},
- {587, 231, false, false}, {587, 14, false, false}, {587, 233, false, false}, {698, 15, false, true},
- {698, 219, false, false}, {0, 15, false, false}, {880, 14, false, false}, {880, 231, false, false},
- {880, 14, false, true}, {880, 216, false, false}, {0, 15, false, false}, {293, 14, false, false},
- {293, 234, false, false}, {783, 12, false, true}, {783, 236, false, false}, {0, 15, false, false},
- {698, 14, false, false}, {698, 218, false, false}, {293, 15, false, false}, {659, 14, true, false},
- {659, 231, false, false}, {659, 14, false, false}, {659, 234, false, false}, {659, 14, true, false},
- {659, 234, false, false}, {659, 14, false, false}, {659, 231, false, false}, {523, 15, true, false},
- {523, 216, false, false}, {0, 15, false, false}, {659, 14, false, false}, {659, 234, false, false},
- {659, 12, true, false}, {659, 251, false, false}, {659, 14, false, false}, {659, 232, false, false},
- {587, 15, true, false}, {587, 220, false, false}, {0, 11, false, false}, {523, 14, false, false},
- {523, 219, false, false}, {261, 15, false, false}, {493, 14, true, false}, {493, 234, false, false},
- {493, 14, false, true}, {493, 231, false, false}, {493, 14, true, false}, {493, 229, false, false},
- {523, 17, false, true}, {523, 217, false, false}, {0, 17, false, false}, {587, 12, true, false},
- {587, 251, false, false}, {587, 14, false, true}, {587, 218, false, false}, {0, 15, false, false},
- {659, 14, true, false}, {659, 231, false, false}, {659, 14, false, true}, {659, 233, false, false},
- {523, 15, true, false}, {523, 234, false, false}, {523, 14, false, true}, {523, 231, false, false},
- {440, 15, true, false}, {440, 231, false, false}, {440, 14, false, true}, {440, 232, false, false},
- {440, 15, true, false}, {440, 251, false, false}, {440, 14, false, true}, {440, 232, false, false},
- {0, 15, true, false}, {0, 231, false, false}, {0, 14, false, true}, {0, 249, false, false},
- {0, 977, false, false}, {659, 264, true, false}, {659, 14, false, true}, {659, 233, false, false},
- {659, 14, true, false}, {659, 231, false, false}, {659, 14, false, true}, {659, 233, false, false},
- {523, 15, true, false}, {523, 234, false, false}, {523, 14, false, true}, {523, 231, false, false},
- {523, 14, true, false}, {523, 231, false, false}, {523, 14, false, true}, {523, 232, false, false},
- {587, 15, true, false}, {587, 251, false, false}, {587, 14, false, true}, {587, 233, false, false},
- {587, 14, true, false}, {587, 231, false, false}, {587, 14, false, true}, {587, 233, false, false},
- {493, 15, true, false}, {493, 234, false, false}, {493, 14, false, true}, {493, 231, false, false},
- {493, 14, true, false}, {493, 231, false, false}, {493, 14, false, true}, {493, 232, false, false},
- {523, 15, true, false}, {523, 251, false, false}, {523, 14, false, true}, {523, 233, false, false},
- {523, 14, true, false}, {523, 231, false, false}, {523, 14, false, true}, {523, 233, false, false},
- {440, 15, true, false}, {440, 234, false, false}, {440, 14, false, true}, {440, 231, false, false},
- {440, 14, true, false}, {440, 231, false, false}, {440, 14, false, true}, {440, 232, false, false},
- {415, 15, true, false}, {415, 251, false, false}, {415, 14, false, true}, {415, 233, false, false},
- {415, 14, true, false}, {415, 231, false, false}, {415, 14, false, true}, {415, 233, false, false},
- {493, 15, true, false}, {493, 234, false, false}, {493, 14, false, true}, {493, 231, false, false},
- {493, 14, true, false}, {493, 231, false, false}, {493, 14, false, true}, {493, 232, false, false},
- {659, 15, true, false}, {659, 251, false, false}, {659, 14, false, true}, {659, 233, false, false},
- {659, 14, true, false}, {659, 231, false, false}, {659, 14, false, true}, {659, 233, false, false},
- {523, 15, true, false}, {523, 234, false, false}, {523, 14, false, true}, {523, 231, false, false},
- {523, 14, true, false}, {523, 231, false, false}, {523, 14, false, true}, {523, 232, false, false},
- {587, 15, true, false}, {587, 251, false, false}, {587, 14, false, true}, {587, 233, false, false},
- {587, 14, true, false}, {587, 231, false, false}, {587, 14, false, true}, {587, 233, false, false},
- {493, 15, true, false}, {493, 234, false, false}, {493, 14, false, true}, {493, 231, false, false},
- {493, 14, true, false}, {493, 231, false, false}, {493, 14, false, true}, {493, 232, false, false},
- {523, 15, true, false}, {523, 251, false, false}, {523, 14, false, true}, {523, 232, false, false},
- {659, 15, true, false}, {659, 231, false, false}, {659, 14, false, true}, {659, 233, false, false},
- {880, 15, true, false}, {880, 234, false, false}, {880, 14, false, true}, {880, 231, false, false},
- {880, 14, true, false}, {880, 231, false, false}, {880, 14, false, true}, {880, 232, false, false},
- {830, 15, true, false}, {830, 251, false, false}, {830, 14, false, true}, {830, 233, false, false},
- {830, 14, true, false}, {830, 231, false, false}, {830, 14, false, true}, {830, 234, false, false},
- {830, 14, true, false}, {830, 234, false, false}, {830, 14, false, true}, {830, 231, false, false},
- {830, 14, true, false}, {830, 231, false, false}, {830, 14, false, true}, {830, 232, false, false},
- {0, 15, false, false},
- {0, 2000, false, false}
-};
-
-// Converted from: sonic.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_sonic[] = {
- {880, 114, false, false}, {698, 95, false, false}, {880, 95, true, false}, {698, 87, false, false},
- {698, 11, false, false}, {987, 99, true, false}, {783, 83, false, false}, {783, 11, false, false},
- {987, 95, true, false}, {783, 89, false, false}, {783, 11, false, false}, {1046, 101, true, false},
- {880, 83, false, false}, {880, 11, false, false}, {1046, 95, true, false}, {880, 87, false, false},
- {880, 11, false, false}, {1174, 99, true, false}, {987, 83, false, false}, {987, 11, false, false},
- {1174, 95, true, false}, {987, 87, false, false}, {987, 13, false, false}, {493, 90, true, false},
- {493, 118, false, false}, {493, 77, true, false}, {493, 118, false, false}, {493, 75, true, false},
- {493, 118, false, false}, {440, 78, true, false}, {440, 118, false, false}, {440, 77, true, false},
- {440, 118, false, false}, {440, 75, true, false}, {440, 118, false, false}, {493, 76, true, false},
- {493, 118, false, false}, {493, 76, true, false}, {493, 120, false, false}, {493, 90, true, false},
- {493, 106, false, false}, {493, 11, false, false}, {440, 77, true, false}, {440, 118, false, false},
- {440, 75, true, false}, {440, 118, false, false}, {440, 77, true, false}, {440, 118, false, false},
- {493, 78, true, false}, {493, 118, false, false}, {493, 75, true, false}, {493, 118, false, false},
- {440, 76, true, false}, {440, 118, false, false}, {440, 76, true, false}, {440, 118, false, false},
- {523, 92, true, false}, {523, 118, false, false}, {523, 77, true, false}, {523, 118, false, false},
- {523, 75, true, false}, {523, 118, false, false}, {493, 78, true, false}, {493, 118, false, false},
- {493, 77, true, false}, {493, 118, false, false}, {493, 75, true, false}, {493, 118, false, false},
- {440, 76, true, false}, {440, 118, false, false}, {440, 76, true, false}, {440, 120, false, false},
- {440, 90, true, false}, {440, 118, false, false}, {440, 195, true, false}, {440, 23, true, false},
- {440, 52, false, false}, {440, 118, false, false}, {440, 196, true, false}, {440, 23, true, false},
- {440, 54, false, false}, {440, 118, false, false}, {440, 194, true, false}, {440, 23, true, false},
- {440, 52, false, false}, {440, 118, false, false}, {440, 76, true, false}, {440, 118, false, false},
- {440, 92, true, false}, {440, 118, false, false}, {440, 77, true, false}, {440, 118, false, false},
- {440, 75, true, false}, {440, 118, false, false}, {493, 78, true, false}, {493, 118, false, false},
- {493, 77, true, false}, {493, 118, false, false}, {493, 75, true, false}, {493, 118, false, false},
- {523, 76, true, false}, {523, 118, false, false}, {523, 76, true, false}, {523, 118, false, false},
- {440, 92, true, false}, {440, 118, false, false}, {440, 77, true, false}, {440, 118, false, false},
- {440, 75, true, false}, {440, 118, false, false}, {493, 78, true, false}, {493, 118, false, false},
- {493, 77, true, false}, {493, 118, false, false}, {493, 75, true, false}, {493, 118, false, false},
- {523, 76, true, false}, {523, 118, false, false}, {523, 76, true, false}, {523, 118, false, false},
- {523, 92, true, false}, {523, 118, false, false}, {523, 77, true, false}, {523, 118, false, false},
- {523, 75, true, false}, {523, 118, false, false}, {493, 78, true, false}, {493, 118, false, false},
- {493, 77, true, false}, {493, 118, false, false}, {493, 75, true, false}, {493, 118, false, false},
- {493, 75, true, false}, {493, 118, false, false}, {493, 76, true, false}, {493, 120, false, false},
- {493, 90, true, false}, {493, 118, false, false}, {493, 77, true, false}, {493, 118, false, false},
- {493, 75, true, false}, {493, 118, false, false}, {493, 77, true, false}, {493, 118, false, false},
- {0, 78, true, false}, {0, 118, false, false}, {0, 194, true, false}, {0, 23, true, false},
- {0, 171, false, false}, {0, 23, true, false}, {0, 173, false, false}, {0, 21, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false}, {880, 75, true, false},
- {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false}, {1046, 183, true, false},
- {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false}, {1046, 106, false, false},
- {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false}, {987, 77, true, false},
- {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false}, {783, 23, true, false},
- {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false}, {0, 23, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {783, 77, true, false}, {783, 118, false, false},
- {1318, 11, true, false}, {1318, 66, false, false}, {1318, 118, false, false}, {1318, 11, true, false},
- {1174, 64, false, false}, {1174, 118, false, false}, {1174, 75, true, false}, {1174, 118, false, false},
- {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false},
- {783, 23, true, false}, {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false},
- {880, 75, true, false}, {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false},
- {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false}, {783, 75, true, false},
- {783, 118, false, false}, {783, 75, true, false}, {783, 118, false, false}, {783, 195, true, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {880, 77, true, false},
- {880, 118, false, false}, {880, 78, true, false}, {880, 118, false, false}, {880, 11, true, false},
- {698, 64, false, false}, {698, 118, false, false}, {698, 75, true, false}, {698, 118, false, false},
- {880, 183, true, false}, {0, 13, false, false}, {783, 21, true, false}, {783, 68, false, false},
- {783, 118, false, false}, {783, 77, true, false}, {783, 118, false, false}, {880, 76, true, false},
- {880, 106, false, false}, {0, 11, false, false}, {783, 77, true, false}, {783, 118, false, false},
- {783, 77, true, false}, {783, 106, false, false}, {0, 11, false, false}, {523, 194, true, false},
- {523, 23, true, false}, {523, 171, false, false}, {523, 23, true, false}, {523, 171, false, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false},
- {880, 75, true, false}, {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false},
- {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false},
- {783, 23, true, false}, {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {783, 77, true, false},
- {783, 118, false, false}, {1318, 11, true, false}, {1318, 66, false, false}, {1318, 118, false, false},
- {1318, 11, true, false}, {1174, 64, false, false}, {1174, 118, false, false}, {1174, 75, true, false},
- {1174, 118, false, false}, {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false},
- {987, 68, false, false}, {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {1046, 76, true, false}, {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false},
- {783, 194, true, false}, {783, 23, true, false}, {783, 171, false, false}, {783, 23, true, false},
- {783, 171, false, false}, {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false},
- {0, 77, true, false}, {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false},
- {0, 77, true, false}, {0, 118, false, false}, {1046, 77, true, false}, {1046, 106, false, false},
- {0, 11, false, false}, {880, 75, true, false}, {880, 118, false, false}, {880, 75, true, false},
- {880, 118, false, false}, {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false},
- {987, 68, false, false}, {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {1046, 76, true, false}, {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false},
- {783, 75, true, false}, {783, 118, false, false}, {783, 75, true, false}, {783, 118, false, false},
- {783, 195, true, false}, {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false},
- {0, 77, true, false}, {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false},
- {880, 77, true, false}, {880, 118, false, false}, {880, 78, true, false}, {880, 118, false, false},
- {880, 11, true, false}, {698, 64, false, false}, {698, 118, false, false}, {698, 75, true, false},
- {698, 118, false, false}, {880, 183, true, false}, {0, 13, false, false}, {783, 21, true, false},
- {783, 68, false, false}, {783, 118, false, false}, {783, 77, true, false}, {783, 118, false, false},
- {880, 76, true, false}, {880, 106, false, false}, {0, 11, false, false}, {783, 77, true, false},
- {783, 118, false, false}, {783, 77, true, false}, {783, 107, false, false}, {0, 12, false, false},
- {523, 76, true, false}, {523, 120, false, false}, {523, 78, true, false}, {523, 109, false, false},
- {0, 12, false, false}, {659, 79, true, false}, {659, 110, false, false}, {0, 13, false, false},
- {587, 602, true, true}, {587, 587, true, true}, {587, 589, true, true}, {587, 11, false, false},
- {587, 587, true, true}, {587, 391, true, true}, {440, 183, true, true}, {349, 11, false, false},
- {523, 183, false, false}, {349, 11, false, false}, {659, 601, true, true}, {659, 591, true, true},
- {659, 604, true, true}, {659, 11, false, false}, {659, 587, false, true}, {659, 196, false, true},
- {659, 194, false, false}, {880, 183, false, true}, {880, 11, false, false}, {880, 183, false, false},
- {880, 11, false, false}, {830, 601, true, true}, {783, 587, true, true}, {698, 390, true, true},
- {698, 198, false, false}, {0, 11, false, false}, {622, 587, true, true}, {587, 391, true, true},
- {523, 183, true, false}, {0, 11, false, false}, {622, 183, false, false}, {0, 11, false, false},
- {587, 601, true, false}, {587, 587, true, true}, {587, 390, true, false}, {587, 198, true, false},
- {587, 11, false, false}, {587, 184, true, false}, {587, 11, false, false}, {587, 182, true, false},
- {587, 11, false, false}, {587, 184, true, false}, {587, 11, false, false}, {587, 185, true, false},
- {587, 11, false, false}, {587, 182, true, false}, {587, 11, false, false}, {587, 183, true, false},
- {587, 11, false, false}, {587, 183, true, false}, {587, 11, false, false}, {0, 92, true, false},
- {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false}, {0, 75, true, false},
- {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false}, {1046, 77, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {880, 75, true, false}, {880, 118, false, false},
- {880, 75, true, false}, {880, 118, false, false}, {1046, 183, true, false}, {0, 13, false, false},
- {987, 21, true, false}, {987, 68, false, false}, {987, 118, false, false}, {987, 77, true, false},
- {987, 118, false, false}, {1046, 76, true, false}, {1046, 106, false, false}, {0, 11, false, false},
- {987, 77, true, false}, {987, 118, false, false}, {987, 77, true, false}, {987, 106, false, false},
- {0, 11, false, false}, {783, 194, true, false}, {783, 23, true, false}, {783, 171, false, false},
- {783, 23, true, false}, {783, 171, false, false}, {0, 23, true, false}, {0, 68, false, false},
- {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false}, {0, 75, true, false},
- {0, 118, false, false}, {783, 77, true, false}, {783, 118, false, false}, {1318, 11, true, false},
- {1318, 66, false, false}, {1318, 118, false, false}, {1318, 11, true, false}, {1174, 64, false, false},
- {1174, 118, false, false}, {1174, 75, true, false}, {1174, 118, false, false}, {1046, 183, true, false},
- {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false}, {1046, 106, false, false},
- {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false}, {987, 77, true, false},
- {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false}, {783, 23, true, false},
- {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false}, {0, 23, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false}, {880, 75, true, false},
- {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false}, {1046, 183, true, false},
- {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false}, {1046, 106, false, false},
- {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false}, {987, 77, true, false},
- {987, 106, false, false}, {0, 11, false, false}, {783, 75, true, false}, {783, 118, false, false},
- {783, 75, true, false}, {783, 118, false, false}, {783, 195, true, false}, {0, 23, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {880, 77, true, false}, {880, 118, false, false},
- {880, 78, true, false}, {880, 118, false, false}, {880, 11, true, false}, {698, 64, false, false},
- {698, 118, false, false}, {698, 75, true, false}, {698, 118, false, false}, {880, 183, true, false},
- {0, 13, false, false}, {783, 21, true, false}, {783, 68, false, false}, {783, 118, false, false},
- {783, 77, true, false}, {783, 118, false, false}, {880, 76, true, false}, {880, 106, false, false},
- {0, 11, false, false}, {783, 77, true, false}, {783, 118, false, false}, {783, 77, true, false},
- {783, 106, false, false}, {0, 11, false, false}, {523, 194, true, false}, {523, 23, true, false},
- {523, 171, false, false}, {523, 23, true, false}, {523, 171, false, false}, {0, 23, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false}, {880, 75, true, false},
- {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false}, {1046, 183, true, false},
- {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false}, {1046, 106, false, false},
- {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false}, {987, 77, true, false},
- {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false}, {783, 23, true, false},
- {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false}, {0, 23, true, false},
- {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false}, {0, 118, false, false},
- {0, 75, true, false}, {0, 118, false, false}, {783, 77, true, false}, {783, 118, false, false},
- {1318, 11, true, false}, {1318, 66, false, false}, {1318, 118, false, false}, {1318, 11, true, false},
- {1174, 64, false, false}, {1174, 118, false, false}, {1174, 75, true, false}, {1174, 118, false, false},
- {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false}, {783, 194, true, false},
- {783, 23, true, false}, {783, 171, false, false}, {783, 23, true, false}, {783, 171, false, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {1046, 77, true, false}, {1046, 106, false, false}, {0, 11, false, false},
- {880, 75, true, false}, {880, 118, false, false}, {880, 75, true, false}, {880, 118, false, false},
- {1046, 183, true, false}, {0, 13, false, false}, {987, 21, true, false}, {987, 68, false, false},
- {987, 118, false, false}, {987, 77, true, false}, {987, 118, false, false}, {1046, 76, true, false},
- {1046, 106, false, false}, {0, 11, false, false}, {987, 77, true, false}, {987, 118, false, false},
- {987, 77, true, false}, {987, 106, false, false}, {0, 11, false, false}, {783, 75, true, false},
- {783, 118, false, false}, {783, 75, true, false}, {783, 118, false, false}, {783, 195, true, false},
- {0, 23, true, false}, {0, 68, false, false}, {0, 118, false, false}, {0, 77, true, false},
- {0, 118, false, false}, {0, 75, true, false}, {0, 118, false, false}, {880, 77, true, false},
- {880, 118, false, false}, {880, 78, true, false}, {880, 118, false, false}, {880, 11, true, false},
- {698, 64, false, false}, {698, 118, false, false}, {698, 75, true, false}, {698, 118, false, false},
- {880, 183, true, false}, {0, 13, false, false}, {783, 21, true, false}, {783, 68, false, false},
- {783, 118, false, false}, {783, 77, true, false}, {783, 118, false, false}, {880, 76, true, false},
- {880, 106, false, false}, {0, 11, false, false}, {783, 77, true, false}, {783, 118, false, false},
- {783, 77, true, false}, {783, 107, false, false}, {0, 12, false, false}, {523, 76, true, false},
- {523, 120, false, false}, {523, 78, true, false}, {523, 109, false, false}, {0, 12, false, false},
- {659, 79, true, false}, {659, 110, false, false}, {0, 13, false, false}, {587, 602, true, true},
- {587, 587, true, true}, {587, 589, true, true}, {587, 11, false, false}, {587, 587, true, true},
- {587, 391, true, true}, {440, 183, true, true}, {349, 11, false, false}, {523, 183, false, false},
- {349, 11, false, false}, {659, 601, true, true}, {659, 591, true, true}, {659, 604, true, true},
- {659, 11, false, false}, {659, 587, false, true}, {659, 196, false, true}, {659, 194, false, false},
- {880, 183, false, true}, {880, 11, false, false}, {880, 183, false, false}, {880, 11, false, false},
- {830, 601, true, true}, {783, 587, true, true}, {698, 390, true, true}, {698, 198, false, false},
- {0, 11, false, false}, {622, 587, true, true}, {587, 391, true, true}, {523, 183, true, false},
- {0, 11, false, false}, {622, 183, false, false}, {0, 11, false, false}, {587, 601, true, false},
- {587, 587, true, true}, {587, 390, true, false}, {587, 198, true, false}, {587, 11, false, false},
- {587, 184, true, false}, {587, 11, false, false}, {587, 182, true, false}, {587, 11, false, false},
- {587, 184, true, false}, {587, 11, false, false}, {587, 185, true, false}, {587, 11, false, false},
- {587, 182, true, false}, {587, 11, false, false}, {587, 183, true, false}, {587, 11, false, false},
- {587, 183, true, false}, {587, 11, false, false},
- {0, 2000, false, false}
-};
-
-// Converted from: cast.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_cast[] = {
- {587, 144, true, false}, {587, 228, true, false}, {587, 14, false, false}, {523, 119, true, false},
- {0, 133, true, false}, {493, 369, false, false}, {493, 249, true, false}, {493, 121, true, false},
- {391, 14, true, false}, {293, 110, false, false}, {293, 125, true, false}, {329, 113, true, false},
- {349, 128, true, false}, {391, 119, true, false}, {440, 14, true, false}, {440, 259, false, false},
- {440, 121, true, false}, {293, 126, true, true}, {293, 231, true, false}, {293, 14, false, false},
- {440, 234, false, false}, {440, 14, false, false}, {391, 121, true, false}, {523, 128, true, false},
- {523, 231, true, false}, {523, 15, false, false}, {523, 246, true, false}, {523, 232, true, false},
- {523, 14, false, false}, {587, 145, true, false}, {587, 228, true, false}, {587, 14, false, false},
- {523, 119, true, false}, {0, 133, true, false}, {493, 369, false, false}, {493, 249, true, false},
- {493, 121, true, false}, {391, 14, true, false}, {293, 110, false, false}, {293, 125, true, false},
- {329, 113, true, false}, {349, 128, true, false}, {391, 119, true, false}, {440, 14, true, false},
- {440, 259, false, false}, {440, 121, true, false}, {293, 126, true, true}, {293, 231, true, false},
- {293, 14, false, false}, {440, 234, false, false}, {440, 14, false, false}, {391, 128, true, false},
- {391, 121, true, false}, {391, 231, true, false}, {391, 15, false, false}, {391, 246, true, false},
- {391, 232, true, false}, {391, 14, false, false}, {0, 266, true, false}, {587, 121, true, false},
- {587, 111, true, false}, {587, 14, false, false}, {0, 126, true, false}, {880, 241, false, false},
- {880, 127, true, false}, {830, 121, true, false}, {880, 120, false, false}, {830, 121, true, false},
- {698, 125, true, false}, {0, 132, true, false}, {0, 121, true, false}, {0, 121, true, false},
- {0, 128, true, false}, {880, 264, true, false}, {880, 114, true, false}, {830, 126, true, false},
- {0, 125, true, false}, {830, 120, true, false}, {783, 121, false, false}, {0, 135, true, false},
- {880, 120, false, false}, {698, 120, true, false}, {880, 14, true, false}, {880, 106, false, false},
- {830, 125, false, false}, {587, 125, true, false}, {830, 121, false, false}, {783, 121, true, false},
- {698, 119, false, false}, {0, 17, false, false}, {0, 264, true, false}, {587, 121, true, false},
- {587, 111, true, false}, {587, 14, false, false}, {0, 126, true, false}, {880, 241, false, false},
- {880, 127, true, false}, {830, 121, true, false}, {880, 120, false, false}, {830, 121, true, false},
- {698, 125, true, false}, {0, 132, true, false}, {0, 121, true, false}, {0, 121, true, false},
- {0, 128, true, false}, {880, 264, true, false}, {880, 114, true, false}, {830, 126, true, false},
- {0, 125, true, false}, {830, 120, true, false}, {783, 121, false, false}, {0, 135, true, false},
- {880, 120, false, false}, {698, 120, true, false}, {880, 14, true, false}, {880, 106, false, false},
- {830, 125, false, false}, {587, 125, true, false}, {830, 121, false, false}, {783, 121, true, false},
- {698, 126, false, false}, {554, 22, true, false}, {554, 373, false, false}, {659, 358, false, false},
- {659, 14, false, false}, {932, 234, false, false}, {932, 14, false, false}, {880, 370, true, false},
- {698, 357, false, false}, {698, 14, false, false}, {587, 232, false, false}, {587, 14, false, false},
- {554, 388, true, false}, {659, 358, false, false}, {659, 14, false, false}, {932, 234, false, false},
- {932, 14, false, false}, {880, 370, true, false}, {587, 118, false, false}, {0, 501, false, false},
- {554, 388, true, false}, {659, 358, false, false}, {659, 14, false, false}, {932, 234, false, false},
- {932, 14, false, false}, {880, 370, true, false}, {698, 357, false, false}, {698, 14, false, false},
- {587, 232, false, false}, {587, 14, false, false}, {659, 388, true, false}, {783, 358, false, false},
- {783, 14, false, false}, {932, 234, false, false}, {932, 14, false, false}, {880, 370, true, false},
- {987, 357, false, false}, {987, 14, false, false}, {1108, 232, false, false}, {1108, 14, false, false},
- {1174, 145, true, false}, {1174, 114, false, false}, {587, 128, true, false}, {587, 141, false, false},
- {587, 111, false, false}, {587, 112, true, false}, {587, 241, true, false}, {587, 15, false, false},
- {587, 495, true, false}, {587, 494, false, false}, {0, 266, true, true}, {0, 248, true, true},
- {293, 15, false, true}, {293, 103, false, false}, {349, 376, false, false}, {261, 249, true, true},
- {261, 246, true, true}, {329, 15, false, false}, {329, 103, false, false}, {391, 375, false, false},
- {1174, 145, true, false}, {1174, 114, false, false}, {587, 128, true, false}, {587, 141, false, false},
- {587, 111, false, false}, {587, 112, true, false}, {587, 241, true, false}, {587, 15, false, false},
- {587, 495, true, false}, {587, 494, false, false}, {0, 266, true, true}, {0, 248, true, true},
- {293, 15, false, true}, {293, 103, false, false}, {349, 376, false, false}, {261, 249, true, true},
- {261, 246, true, false}, {0, 15, true, false}, {0, 103, false, false}, {0, 375, true, false},
- {587, 145, true, false}, {587, 228, true, false}, {587, 14, false, false}, {523, 119, true, false},
- {0, 133, true, false}, {493, 369, false, false}, {493, 249, true, false}, {493, 121, true, false},
- {391, 14, true, false}, {293, 110, false, false}, {293, 125, true, false}, {329, 113, true, false},
- {349, 128, true, false}, {391, 119, true, false}, {440, 14, true, false}, {440, 259, false, false},
- {440, 121, true, false}, {293, 126, true, true}, {293, 231, true, false}, {293, 14, false, false},
- {440, 234, false, false}, {440, 14, false, false}, {391, 121, true, false}, {523, 128, true, false},
- {523, 231, true, false}, {523, 15, false, false}, {523, 246, true, false}, {523, 232, true, false},
- {523, 14, false, false}, {587, 145, true, false}, {587, 228, true, false}, {587, 14, false, false},
- {523, 119, true, false}, {0, 133, true, false}, {493, 369, false, false}, {493, 249, true, false},
- {493, 121, true, false}, {391, 14, true, false}, {293, 110, false, false}, {293, 125, true, false},
- {329, 113, true, false}, {349, 128, true, false}, {391, 119, true, false}, {440, 14, true, false},
- {440, 259, false, false}, {440, 121, true, false}, {293, 126, true, true}, {293, 231, true, false},
- {293, 14, false, false}, {440, 234, false, false}, {440, 14, false, false}, {391, 128, true, false},
- {391, 121, true, false}, {391, 231, true, false}, {391, 15, false, false}, {391, 246, true, false},
- {391, 232, true, false}, {391, 14, false, false}, {0, 266, true, false}, {587, 121, true, false},
- {587, 111, true, false}, {587, 14, false, false}, {0, 126, true, false}, {880, 241, false, false},
- {880, 127, true, false}, {830, 121, true, false}, {880, 120, false, false}, {830, 121, true, false},
- {698, 125, true, false}, {0, 132, true, false}, {0, 121, true, false}, {0, 121, true, false},
- {0, 128, true, false}, {880, 264, true, false}, {880, 114, true, false}, {830, 126, true, false},
- {0, 125, true, false}, {830, 120, true, false}, {783, 121, false, false}, {0, 135, true, false},
- {880, 120, false, false}, {698, 120, true, false}, {880, 14, true, false}, {880, 106, false, false},
- {830, 125, false, false}, {587, 125, true, false}, {830, 121, false, false}, {783, 121, true, false},
- {698, 119, false, false}, {0, 17, false, false}, {0, 264, true, false}, {587, 121, true, false},
- {587, 111, true, false}, {587, 14, false, false}, {0, 126, true, false}, {880, 241, false, false},
- {880, 127, true, false}, {830, 121, true, false}, {880, 120, false, false}, {830, 121, true, false},
- {698, 125, true, false}, {0, 132, true, false}, {0, 121, true, false}, {0, 121, true, false},
- {0, 128, true, false}, {880, 264, true, false}, {880, 114, true, false}, {830, 126, true, false},
- {0, 125, true, false}, {830, 120, true, false}, {783, 121, false, false}, {0, 135, true, false},
- {880, 120, false, false}, {698, 120, true, false}, {880, 14, true, false}, {880, 106, false, false},
- {830, 125, false, false}, {587, 125, true, false}, {830, 121, false, false}, {783, 121, true, false},
- {698, 126, false, false}, {554, 22, true, false}, {554, 373, false, false}, {659, 358, false, false},
- {659, 14, false, false}, {932, 234, false, false}, {932, 14, false, false}, {880, 370, true, false},
- {698, 357, false, false}, {698, 14, false, false}, {587, 232, false, false}, {587, 14, false, false},
- {554, 388, true, false}, {659, 358, false, false}, {659, 14, false, false}, {932, 234, false, false},
- {932, 14, false, false}, {880, 370, true, false}, {587, 118, false, false}, {0, 501, false, false},
- {554, 388, true, false}, {659, 358, false, false}, {659, 14, false, false}, {932, 234, false, false},
- {932, 14, false, false}, {880, 370, true, false}, {698, 357, false, false}, {698, 14, false, false},
- {587, 232, false, false}, {587, 14, false, false}, {659, 388, true, false}, {783, 358, false, false},
- {783, 14, false, false}, {932, 234, false, false}, {932, 14, false, false}, {880, 370, true, false},
- {987, 357, false, false}, {987, 14, false, false}, {1108, 232, false, false}, {1108, 14, false, false},
- {1174, 145, true, false}, {1174, 114, false, false}, {587, 128, true, false}, {587, 141, false, false},
- {587, 111, false, false}, {587, 112, true, false}, {587, 241, true, false}, {587, 15, false, false},
- {587, 495, true, false}, {587, 494, false, false}, {0, 266, true, true}, {0, 248, true, true},
- {293, 15, false, true}, {293, 103, false, false}, {349, 376, false, false}, {261, 249, true, true},
- {261, 246, true, true}, {329, 15, false, false}, {329, 103, false, false}, {391, 375, false, false},
- {1174, 145, true, false}, {1174, 114, false, false}, {587, 128, true, false}, {587, 141, false, false},
- {587, 111, false, false}, {587, 112, true, false}, {587, 241, true, false}, {587, 15, false, false},
- {587, 495, true, false}, {587, 494, false, false}, {0, 266, true, true}, {0, 248, true, true},
- {293, 15, false, true}, {293, 103, false, false}, {349, 376, false, false}, {261, 249, true, true},
- {261, 246, true, false}, {0, 15, true, false}, {0, 103, false, false}, {0, 375, true, false},
- {0, 2000, false, false}
-};
-
-// Converted from: seven.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_seven[] = {
- {NOTE_E4, 750, true, false}, {NOTE_E4, 125, true, false}, {REST, 125, false, false}, {NOTE_G4, 125, true, false},
- {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, false, false}, {NOTE_B3, 250, true, false},
- {NOTE_E4, 1000, true, false}, {NOTE_E4, 1000, true, false}, {NOTE_E4, 750, true, false}, {NOTE_E4, 125, true, false},
- {REST, 125, false, false}, {NOTE_G4, 125, true, false}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false},
- {NOTE_C4, 250, false, false}, {NOTE_D4, 250, true, false}, {NOTE_C4, 1000, true, false}, {NOTE_B3, 1000, true, false},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false},
- {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true},
- {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false},
- {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false},
- {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true},
- {NOTE_E4, 125, true, false}, {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false},
- {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false}, {REST, 125, false, false}, {NOTE_G4, 125, true, true},
- {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false}, {REST, 125, false, false},
- {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true},
- {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false},
- {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false},
- {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true},
- {NOTE_E4, 125, true, false}, {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false},
- {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false}, {REST, 125, false, false}, {NOTE_G4, 125, true, true},
- {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false}, {REST, 125, false, false},
- {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false}, {NOTE_C4, 250, true, true},
- {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, false},
- {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_E4, 250, false, false}, {NOTE_D4, 125, true, false},
- {NOTE_C4, 250, true, true}, {NOTE_B3, 250, true, false}, {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true},
- {NOTE_E4, 500, true, true}, {NOTE_E4, 500, true, true}, {NOTE_E4, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {NOTE_CS4, 250, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 218, true, true}, {NOTE_E4, 30, true, true}, {NOTE_E4, 501, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, true}, {REST, 125, false, false}, {NOTE_G4, 125, true, true},
- {NOTE_G4, 125, false, false}, {REST, 125, false, false}, {NOTE_E4, 125, true, true}, {NOTE_E4, 125, true, true},
- {REST, 125, false, false}, {NOTE_D4, 250, true, true}, {NOTE_C4, 500, true, true}, {NOTE_C4, 500, true, true},
- {REST, 500, true, true}, {REST, 468, true, true}, {REST, 30, true, true}, {NOTE_E4, 501, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, true}, {REST, 125, false, false}, {NOTE_G4, 125, true, true},
- {NOTE_G4, 125, false, false}, {REST, 125, false, false}, {NOTE_E4, 125, true, true}, {NOTE_E4, 125, true, true},
- {REST, 125, false, false}, {NOTE_D4, 250, true, true}, {NOTE_C4, 375, true, true}, {NOTE_D4, 125, true, true},
- {NOTE_D4, 250, true, true}, {NOTE_C4, 250, true, true}, {REST, 500, true, true}, {REST, 468, true, true},
- {REST, 30, true, true}, {NOTE_E4, 501, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, true},
- {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_G4, 125, false, false}, {REST, 125, false, false},
- {NOTE_E4, 125, true, true}, {NOTE_E4, 125, true, true}, {REST, 125, false, false}, {NOTE_D4, 250, true, true},
- {NOTE_C4, 500, true, true}, {NOTE_C4, 500, true, true}, {REST, 500, true, true}, {REST, 468, true, true},
- {REST, 30, true, true}, {NOTE_E4, 501, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 125, true, true},
- {REST, 125, false, false}, {NOTE_G4, 125, true, true}, {NOTE_G4, 125, false, false}, {REST, 125, false, false},
- {NOTE_E4, 125, true, true}, {NOTE_E4, 125, true, true}, {REST, 125, false, false}, {NOTE_D4, 250, true, true},
- {NOTE_C4, 375, true, true}, {NOTE_D4, 125, true, true}, {NOTE_D4, 250, true, true}, {NOTE_C4, 250, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {NOTE_CS4, 250, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 250, true, true}, {REST, 750, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, false}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, false, false}, {REST, 250, true, false}, {REST, 1000, true, false}, {REST, 1000, true, false},
- {REST, 750, true, false}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, false},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, false, false}, {REST, 250, true, false},
- {REST, 1000, true, false}, {REST, 1000, true, false}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false},
- {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true},
- {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false},
- {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true},
- {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {NOTE_CS4, 250, true, true},
- {NOTE_E4, 250, true, true}, {NOTE_E4, 250, true, true}, {REST, 750, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, false}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, false, false}, {REST, 250, true, false}, {REST, 1000, true, false}, {REST, 1000, true, false},
- {REST, 750, true, false}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, false},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, false, false}, {REST, 250, true, false},
- {REST, 1000, true, false}, {REST, 1000, true, false}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false},
- {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true},
- {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {NOTE_CS4, 250, true, true}, {NOTE_E4, 250, true, true}, {NOTE_E4, 250, true, true},
- {REST, 750, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, false},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, false, false}, {REST, 250, true, false},
- {REST, 1000, true, false}, {REST, 1000, true, false}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false},
- {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true},
- {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true}, {REST, 125, true, false},
- {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false}, {REST, 125, true, false},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 250, true, true},
- {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true}, {REST, 250, false, false},
- {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false}, {REST, 500, true, true},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 125, true, false}, {REST, 125, false, false}, {REST, 125, true, true},
- {REST, 250, false, false}, {REST, 125, true, false}, {REST, 250, true, true}, {REST, 250, true, false},
- {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true}, {REST, 500, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {REST, 250, true, false}, {REST, 250, true, true}, {REST, 250, true, true},
- {REST, 250, true, true}, {NOTE_E4, 2000, true, true},
- {REST, 2000, false, false}
-};
-
-// Converted from: mega.mid (Clean Melody & Bass-Routed Edition)
-const SequenceStep midi_mega[] = {
- {659, 125, true, true}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, true}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {659, 125, true, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {440, 125, false, false}, {587, 125, false, false}, {659, 125, false, false}, {698, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {880, 125, true, true}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {587, 125, false, false}, {783, 125, false, false}, {880, 125, false, false}, {932, 125, false, false},
- {0, 2000, false, false}
-};
-
-
-
-// TRACK 1: Careless Whisper (Extended Club Edit)
-const SequenceStep careless_song[] = {
- // Phrase 1: Smooth Intro
- {NOTE_D5, 600, false, false}, {NOTE_C5, 300, false, false}, {NOTE_AS4, 300, false, false}, {NOTE_A4, 1200, false, true}, {REST, 200, false, false},
- {NOTE_F4, 300, false, false}, {NOTE_A4, 300, false, false}, {NOTE_D5, 600, false, false}, {NOTE_C5, 300, false, false}, {NOTE_AS4, 300, false, false}, {NOTE_A4, 1200, false, true}, {REST, 200, false, false},
- {NOTE_F4, 300, false, false}, {NOTE_A4, 300, false, false}, {NOTE_D5, 600, false, false}, {NOTE_C5, 300, false, false}, {NOTE_AS4, 300, false, false}, {NOTE_A4, 1200, false, false}, {REST, 200, false, false},
- {NOTE_E4, 300, false, false}, {NOTE_G4, 300, false, false}, {NOTE_C5, 600, false, false}, {NOTE_AS4, 300, false, false}, {NOTE_A4, 300, false, false}, {NOTE_G4, 1200, false, true}, {REST, 600, false, false},
- {NOTE_D4, 200, false, false}, {NOTE_F4, 200, false, false}, {NOTE_A4, 200, false, false}, {NOTE_D5, 400, false, false}, {NOTE_C5, 200, false, false}, {NOTE_A4, 200, false, false}, {NOTE_F4, 200, false, false}, {NOTE_D4, 400, false, false},
- {REST, 500, false, false},
- // Phrase 2: The Beat Drop (Heavy Kick + Hat)
- {NOTE_D5, 600, true, false}, {NOTE_C5, 300, false, true}, {NOTE_AS4, 300, true, false}, {NOTE_A4, 1200, true, true}, {REST, 200, false, false},
- {NOTE_F4, 300, true, false}, {NOTE_A4, 300, false, true}, {NOTE_D5, 600, true, false}, {NOTE_C5, 300, false, true}, {NOTE_AS4, 300, true, false}, {NOTE_A4, 1200, true, true}, {REST, 200, false, false},
- {NOTE_F4, 300, false, true}, {NOTE_A4, 300, true, false}, {NOTE_D5, 600, false, true}, {NOTE_C5, 300, true, false}, {NOTE_AS4, 300, false, true}, {NOTE_A4, 1200, true, false}, {REST, 200, false, false},
- {NOTE_E4, 300, false, true}, {NOTE_G4, 300, true, false}, {NOTE_C5, 600, false, true}, {NOTE_AS4, 300, true, false}, {NOTE_A4, 300, false, true}, {NOTE_G4, 1200, true, true}, {REST, 600, false, false},
- {NOTE_D4, 200, true, true}, {NOTE_F4, 200, false, false}, {NOTE_A4, 200, false, true}, {NOTE_D5, 400, true, false}, {NOTE_C5, 200, false, true}, {NOTE_A4, 200, true, false}, {NOTE_F4, 200, false, true}, {NOTE_D4, 400, true, true},
- {REST, 1000, false, false}
-};
-
-// TRACK 2: Take On Me (Extended Build-Up)
-const SequenceStep takeonme_song[] = {
- // Loop 1: Bass and Hat only
- {NOTE_FS5, 200, false, true}, {NOTE_FS5, 200, false, false}, {NOTE_E5, 200, false, true}, {NOTE_D5, 200, false, false},
- {NOTE_CS5, 200, false, false}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, false, false}, {NOTE_A4, 200, false, true},
- {NOTE_B4, 200, false, false}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, false, false}, {NOTE_D5, 200, false, true},
- {NOTE_E5, 200, false, true}, {NOTE_E5, 200, false, false}, {NOTE_E5, 200, false, true}, {NOTE_GS5, 200, false, false},
- {NOTE_GS5, 200, false, true}, {NOTE_A5, 200, false, false}, {NOTE_B5, 200, false, true}, {REST, 400, false, false},
- // Loop 2: Add the Kick Drum
- {NOTE_FS5, 200, true, true}, {NOTE_FS5, 200, false, false}, {NOTE_E5, 200, false, true}, {NOTE_D5, 200, true, false},
- {NOTE_CS5, 200, true, false}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, false, false}, {NOTE_A4, 200, true, true},
- {NOTE_B4, 200, true, false}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, true, false}, {NOTE_D5, 200, false, true},
- {NOTE_E5, 200, true, true}, {NOTE_E5, 200, false, false}, {NOTE_E5, 200, false, true}, {NOTE_GS5, 200, true, false},
- {NOTE_GS5, 200, false, true}, {NOTE_A5, 200, false, false}, {NOTE_B5, 200, true, true}, {REST, 400, false, false},
- // Loop 3: Full Rave
- {NOTE_FS5, 200, true, true}, {NOTE_FS5, 200, false, true}, {NOTE_E5, 200, true, true}, {NOTE_D5, 200, false, true},
- {NOTE_CS5, 200, true, true}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, true, true}, {NOTE_A4, 200, false, true},
- {NOTE_B4, 200, true, true}, {NOTE_CS5, 200, false, true}, {NOTE_CS5, 200, true, true}, {NOTE_D5, 200, false, true},
- {NOTE_E5, 200, true, true}, {NOTE_E5, 200, false, true}, {NOTE_E5, 200, true, true}, {NOTE_GS5, 200, false, true},
- {NOTE_GS5, 200, true, true}, {NOTE_A5, 200, false, true}, {NOTE_B5, 200, true, true}, {REST, 1000, false, false}
-};
-
-// TRACK 3: Rickroll (Extended Double Chorus)
-const SequenceStep rickroll_song[] = {
- // Chorus 1
- {NOTE_CS5, 300, true, false}, {NOTE_D5, 300, false, true}, {NOTE_CS5, 300, true, false}, {NOTE_B4, 300, false, true}, {NOTE_FS4, 600, true, true}, {REST, 600, false, false},
- {NOTE_A4, 150, true, false}, {NOTE_B4, 150, false, true}, {NOTE_D5, 150, false, false}, {NOTE_B4, 150, false, true}, {NOTE_FS5, 300, true, false}, {NOTE_FS5, 300, false, true}, {NOTE_E5, 600, true, false},
- {NOTE_A4, 150, false, true}, {NOTE_B4, 150, true, false}, {NOTE_D5, 150, false, true}, {NOTE_B4, 150, false, false}, {NOTE_E5, 300, true, true}, {NOTE_E5, 300, false, false}, {NOTE_D5, 300, true, false}, {NOTE_CS5, 150, false, true}, {NOTE_B4, 150, false, false},
- {NOTE_A4, 150, true, true}, {NOTE_B4, 150, false, false}, {NOTE_D5, 150, false, true}, {NOTE_B4, 150, false, false}, {NOTE_D5, 300, true, false}, {NOTE_E5, 300, false, true}, {NOTE_CS5, 300, true, false}, {NOTE_A4, 300, false, true}, {NOTE_A4, 300, true, false}, {NOTE_E5, 300, false, true}, {NOTE_D5, 900, true, true},
- {REST, 600, false, false},
- // Chorus 2 (Faster Hat)
- {NOTE_CS5, 300, true, true}, {NOTE_D5, 300, false, true}, {NOTE_CS5, 300, true, true}, {NOTE_B4, 300, false, true}, {NOTE_FS4, 600, true, true}, {REST, 600, false, false},
- {NOTE_A4, 150, true, true}, {NOTE_B4, 150, false, true}, {NOTE_D5, 150, false, true}, {NOTE_B4, 150, false, true}, {NOTE_FS5, 300, true, true}, {NOTE_FS5, 300, false, true}, {NOTE_E5, 600, true, true},
- {NOTE_A4, 150, false, true}, {NOTE_B4, 150, true, true}, {NOTE_D5, 150, false, true}, {NOTE_B4, 150, false, true}, {NOTE_E5, 300, true, true}, {NOTE_E5, 300, false, true}, {NOTE_D5, 300, true, true}, {NOTE_CS5, 150, false, true}, {NOTE_B4, 150, false, true},
- {NOTE_A4, 150, true, true}, {NOTE_B4, 150, false, true}, {NOTE_D5, 150, false, true}, {NOTE_B4, 150, false, true}, {NOTE_D5, 300, true, true}, {NOTE_E5, 300, false, true}, {NOTE_CS5, 300, true, true}, {NOTE_A4, 300, false, true}, {NOTE_A4, 300, true, true}, {NOTE_E5, 300, false, true}, {NOTE_D5, 900, true, true},
- {REST, 1000, false, false}
-};
-
-// TRACK 4: Can't Help Falling In Love (Extended Wedding Mix)
-const SequenceStep elvis_song[] = {
- // Verse 1
- {NOTE_C4, 400, true, false}, {NOTE_G4, 400, false, true}, {NOTE_C5, 800, true, false}, {NOTE_G4, 400, false, true}, {NOTE_E4, 400, true, false},
- {NOTE_A4, 400, true, true}, {NOTE_B4, 400, false, false}, {NOTE_C5, 400, true, false}, {NOTE_D5, 400, false, true}, {NOTE_E5, 400, true, false}, {NOTE_F5, 400, false, true}, {NOTE_E5, 800, true, true}, {NOTE_D5, 800, false, true},
- {NOTE_G4, 400, true, false}, {NOTE_A4, 400, false, true}, {NOTE_B4, 400, true, false}, {NOTE_C5, 800, true, true}, {NOTE_D5, 400, false, true},
- {NOTE_E5, 400, true, false}, {NOTE_F5, 400, false, true}, {NOTE_G5, 400, true, false}, {NOTE_F5, 400, true, true}, {NOTE_E5, 400, false, true}, {NOTE_D5, 400, true, false}, {NOTE_C5, 1200, true, true},
- {REST, 800, false, false},
- // Verse 2 (Double Drums)
- {NOTE_C4, 400, true, true}, {NOTE_G4, 400, false, true}, {NOTE_C5, 800, true, true}, {NOTE_G4, 400, false, true}, {NOTE_E4, 400, true, true},
- {NOTE_A4, 400, true, true}, {NOTE_B4, 400, false, true}, {NOTE_C5, 400, true, true}, {NOTE_D5, 400, false, true}, {NOTE_E5, 400, true, true}, {NOTE_F5, 400, false, true}, {NOTE_E5, 800, true, true}, {NOTE_D5, 800, false, true},
- {NOTE_G4, 400, true, true}, {NOTE_A4, 400, false, true}, {NOTE_B4, 400, true, true}, {NOTE_C5, 800, true, true}, {NOTE_D5, 400, false, true},
- {NOTE_E5, 400, true, true}, {NOTE_F5, 400, false, true}, {NOTE_G5, 400, true, true}, {NOTE_F5, 400, true, true}, {NOTE_E5, 400, false, true}, {NOTE_D5, 400, true, true}, {NOTE_C5, 1200, true, true},
- {REST, 1500, false, false}
-};
-
-// TRACK 5: Gimme! Gimme! Gimme! (Extended Midnight Rave)
-const SequenceStep abba_song[] = {
- // Loop 1
- {NOTE_D5, 200, true, true}, {NOTE_E5, 200, false, false}, {NOTE_F5, 400, true, false}, {NOTE_A5, 200, false, true}, {NOTE_G5, 400, true, true}, {NOTE_F5, 200, false, false}, {NOTE_E5, 200, true, false}, {NOTE_F5, 200, false, true}, {NOTE_D5, 600, true, true}, {REST, 200, false, false},
- {NOTE_D5, 200, true, true}, {NOTE_E5, 200, false, false}, {NOTE_F5, 400, true, false}, {NOTE_A5, 200, false, true}, {NOTE_G5, 400, true, true}, {NOTE_F5, 200, false, false}, {NOTE_E5, 200, true, false}, {NOTE_D5, 200, false, true}, {NOTE_CS5, 600, true, true}, {REST, 400, false, false},
- {NOTE_D4, 200, true, true}, {REST, 100, false, false}, {NOTE_D4, 200, false, true}, {NOTE_F4, 200, true, false}, {NOTE_A4, 200, false, true}, {NOTE_G4, 200, true, true}, {REST, 100, false, false}, {NOTE_E4, 200, false, true}, {NOTE_C4, 200, true, false}, {NOTE_D4, 400, true, true},
- {REST, 400, false, false},
- // Loop 2 (More High Hats)
- {NOTE_D5, 200, true, true}, {NOTE_E5, 200, false, true}, {NOTE_F5, 400, true, true}, {NOTE_A5, 200, false, true}, {NOTE_G5, 400, true, true}, {NOTE_F5, 200, false, true}, {NOTE_E5, 200, true, true}, {NOTE_F5, 200, false, true}, {NOTE_D5, 600, true, true}, {REST, 200, false, false},
- {NOTE_D5, 200, true, true}, {NOTE_E5, 200, false, true}, {NOTE_F5, 400, true, true}, {NOTE_A5, 200, false, true}, {NOTE_G5, 400, true, true}, {NOTE_F5, 200, false, true}, {NOTE_E5, 200, true, true}, {NOTE_D5, 200, false, true}, {NOTE_CS5, 600, true, true}, {REST, 400, false, false},
- {NOTE_D4, 200, true, true}, {REST, 100, false, true}, {NOTE_D4, 200, false, true}, {NOTE_F4, 200, true, true}, {NOTE_A4, 200, false, true}, {NOTE_G4, 200, true, true}, {REST, 100, false, true}, {NOTE_E4, 200, false, true}, {NOTE_C4, 200, true, true}, {NOTE_D4, 400, true, true},
- {REST, 1000, false, false}
-};
-
-
-// TRACK 7: Für Elise (Beethoven Extended Trance)
-const SequenceStep elise_song[] = {
- // Loop 1
- {NOTE_E5, 200, true, false}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, false, false}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, true, false},
- {NOTE_B4, 200, false, true}, {NOTE_D5, 200, false, false}, {NOTE_C5, 200, false, true}, {NOTE_A4, 600, true, true}, {REST, 200, false, false},
- {NOTE_C4, 200, false, true}, {NOTE_E4, 200, false, false}, {NOTE_A4, 200, false, true}, {NOTE_B4, 600, true, true}, {REST, 200, false, false},
- {NOTE_E4, 200, false, true}, {NOTE_GS4, 200, false, false}, {NOTE_B4, 200, false, true}, {NOTE_C5, 600, true, true}, {REST, 200, false, false},
- // Loop 2
- {NOTE_E5, 200, true, false}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, false, false}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, true, false},
- {NOTE_B4, 200, false, true}, {NOTE_D5, 200, false, false}, {NOTE_C5, 200, false, true}, {NOTE_A4, 600, true, true}, {REST, 200, false, false},
- {NOTE_C4, 200, false, true}, {NOTE_E4, 200, false, false}, {NOTE_A4, 200, false, true}, {NOTE_B4, 600, true, true}, {REST, 200, false, false},
- {NOTE_E4, 200, false, true}, {NOTE_C5, 200, false, false}, {NOTE_B4, 200, false, true}, {NOTE_A4, 800, true, true}, {REST, 200, false, false},
- // Loop 3 (Heavy Beat Drop)
- {NOTE_E5, 200, true, true}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, true, true}, {NOTE_DS5, 200, false, true}, {NOTE_E5, 200, true, true},
- {NOTE_B4, 200, false, true}, {NOTE_D5, 200, true, true}, {NOTE_C5, 200, false, true}, {NOTE_A4, 600, true, true}, {REST, 200, false, false},
- {NOTE_C4, 200, true, true}, {NOTE_E4, 200, false, true}, {NOTE_A4, 200, true, true}, {NOTE_B4, 600, true, true}, {REST, 200, false, false},
- {NOTE_E4, 200, true, true}, {NOTE_C5, 200, false, true}, {NOTE_B4, 200, true, true}, {NOTE_A4, 800, true, true},
- {REST, 1000, false, false}
-};
-
-// TRACK 8: Symphony No. 40 (Mozart Extended)
-const SequenceStep mozart_song[] = {
- // Loop 1
- {NOTE_DS5, 150, false, true}, {NOTE_D5, 150, false, false}, {NOTE_D5, 300, true, false},
- {NOTE_DS5, 150, false, true}, {NOTE_D5, 150, false, false}, {NOTE_D5, 300, true, false},
- {NOTE_DS5, 150, false, true}, {NOTE_D5, 150, false, false}, {NOTE_D5, 300, true, false},
- {NOTE_AS5, 600, true, true}, {REST, 300, false, false},
- {NOTE_D5, 150, false, true}, {NOTE_CS5, 150, false, false}, {NOTE_CS5, 300, true, false},
- {NOTE_D5, 150, false, true}, {NOTE_CS5, 150, false, false}, {NOTE_CS5, 300, true, false},
- {NOTE_D5, 150, false, true}, {NOTE_CS5, 150, false, false}, {NOTE_CS5, 300, true, false},
- {NOTE_A5, 600, true, true}, {REST, 300, false, false},
- {NOTE_CS5, 150, false, true}, {NOTE_C5, 150, false, false}, {NOTE_C5, 300, true, false},
- {NOTE_CS5, 150, false, true}, {NOTE_C5, 150, false, false}, {NOTE_C5, 300, true, false},
- {NOTE_CS5, 150, false, true}, {NOTE_C5, 150, false, false}, {NOTE_C5, 300, true, false},
- {NOTE_GS5, 600, true, true}, {REST, 300, false, false},
- // Loop 2 (Intense Drums)
- {NOTE_DS5, 150, true, true}, {NOTE_D5, 150, false, true}, {NOTE_D5, 300, true, true},
- {NOTE_DS5, 150, true, true}, {NOTE_D5, 150, false, true}, {NOTE_D5, 300, true, true},
- {NOTE_DS5, 150, true, true}, {NOTE_D5, 150, false, true}, {NOTE_D5, 300, true, true},
- {NOTE_AS5, 600, true, true}, {REST, 300, false, false},
- {NOTE_D5, 150, true, true}, {NOTE_CS5, 150, false, true}, {NOTE_CS5, 300, true, true},
- {NOTE_D5, 150, true, true}, {NOTE_CS5, 150, false, true}, {NOTE_CS5, 300, true, true},
- {NOTE_D5, 150, true, true}, {NOTE_CS5, 150, false, true}, {NOTE_CS5, 300, true, true},
- {NOTE_A5, 600, true, true}, {REST, 300, false, false},
- {NOTE_CS5, 150, true, true}, {NOTE_C5, 150, false, true}, {NOTE_C5, 300, true, true},
- {NOTE_CS5, 150, true, true}, {NOTE_C5, 150, false, true}, {NOTE_C5, 300, true, true},
- {NOTE_CS5, 150, true, true}, {NOTE_C5, 150, false, true}, {NOTE_C5, 300, true, true},
- {NOTE_GS5, 600, true, true},
- {REST, 1000, false, false}
-};
-
-// ==========================================
-// 5. HARDWARE INITIALIZATION
-// ==========================================
-led_strip_handle_t led_strip = NULL; // Global NeoPixel handle
-
-void init_hardware(void) {
- gpio_set_direction(ACTIVE_BUZZER_1_PIN, GPIO_MODE_OUTPUT); gpio_set_level(ACTIVE_BUZZER_1_PIN, 0);
- gpio_set_direction(ACTIVE_BUZZER_2_PIN, GPIO_MODE_OUTPUT); gpio_set_level(ACTIVE_BUZZER_2_PIN, 0);
- gpio_set_direction(LED_KICK_PIN, GPIO_MODE_OUTPUT); gpio_set_level(LED_KICK_PIN, 0);
- gpio_set_direction(LED_HAT_PIN, GPIO_MODE_OUTPUT); gpio_set_level(LED_HAT_PIN, 0);
-
- gpio_reset_pin(BTN_PAUSE_PIN); gpio_reset_pin(BTN_NEXT_PIN); gpio_reset_pin(ROTARY_SW_PIN);
- gpio_set_direction(BTN_PAUSE_PIN, GPIO_MODE_INPUT); gpio_set_pull_mode(BTN_PAUSE_PIN, GPIO_PULLUP_ONLY);
- gpio_set_direction(BTN_NEXT_PIN, GPIO_MODE_INPUT); gpio_set_pull_mode(BTN_NEXT_PIN, GPIO_PULLUP_ONLY);
- gpio_set_direction(ROTARY_SW_PIN, GPIO_MODE_INPUT); gpio_set_pull_mode(ROTARY_SW_PIN, GPIO_PULLUP_ONLY);
-
- ledc_timer_config_t timer_cfg = { .speed_mode = BUZZER_LEDC_MODE, .timer_num = BUZZER_LEDC_TIMER, .duty_resolution = LEDC_TIMER_13_BIT, .freq_hz = 440, .clk_cfg = LEDC_AUTO_CLK };
- ledc_timer_config(&timer_cfg);
- ledc_channel_config_t ch_cfg = { .speed_mode = BUZZER_LEDC_MODE, .channel = BUZZER_LEDC_CHANNEL, .timer_sel = BUZZER_LEDC_TIMER, .intr_type = LEDC_INTR_DISABLE, .gpio_num = PASSIVE_BUZZER_PIN, .duty = 0, .hpoint = 0 };
- ledc_channel_config(&ch_cfg);
-
- pcnt_unit_config_t unit_config = { .high_limit = 1000, .low_limit = -1000 };
- pcnt_new_unit(&unit_config, &pcnt_unit);
- pcnt_glitch_filter_config_t filter_config = { .max_glitch_ns = 1000 };
- pcnt_unit_set_glitch_filter(pcnt_unit, &filter_config);
- pcnt_chan_config_t chan_a_config = { .edge_gpio_num = ROTARY_CLK_PIN, .level_gpio_num = ROTARY_DT_PIN };
- pcnt_channel_handle_t pcnt_chan_a = NULL; pcnt_new_channel(pcnt_unit, &chan_a_config, &pcnt_chan_a);
- pcnt_chan_config_t chan_b_config = { .edge_gpio_num = ROTARY_DT_PIN, .level_gpio_num = ROTARY_CLK_PIN };
- pcnt_channel_handle_t pcnt_chan_b = NULL; pcnt_new_channel(pcnt_unit, &chan_b_config, &pcnt_chan_b);
- pcnt_channel_set_edge_action(pcnt_chan_a, PCNT_CHANNEL_EDGE_ACTION_DECREASE, PCNT_CHANNEL_EDGE_ACTION_INCREASE);
- pcnt_channel_set_level_action(pcnt_chan_a, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_INVERSE);
- pcnt_channel_set_edge_action(pcnt_chan_b, PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_DECREASE);
- pcnt_channel_set_level_action(pcnt_chan_b, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_INVERSE);
- pcnt_unit_enable(pcnt_unit); pcnt_unit_clear_count(pcnt_unit); pcnt_unit_start(pcnt_unit);
-
- gpio_set_direction(OLED_DC_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(OLED_RES_PIN, GPIO_MODE_OUTPUT);
- spi_bus_config_t buscfg = { .miso_io_num = -1, .mosi_io_num = OLED_MOSI_PIN, .sclk_io_num = OLED_CLK_PIN, .quadwp_io_num = -1, .quadhd_io_num = -1, .max_transfer_sz = 1024 };
- spi_device_interface_config_t devcfg = { .clock_speed_hz = 10 * 1000 * 1000, .mode = 0, .spics_io_num = OLED_CS_PIN, .queue_size = 7 };
- spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO); spi_bus_add_device(SPI2_HOST, &devcfg, &spi);
- gpio_set_level(OLED_RES_PIN, 0); vTaskDelay(pdMS_TO_TICKS(10)); gpio_set_level(OLED_RES_PIN, 1); vTaskDelay(pdMS_TO_TICKS(50));
- const uint8_t init_cmds[] = { 0xAE, 0xD5, 0x80, 0xA8, 0x3F, 0xD3, 0x00, 0x40, 0x8D, 0x14, 0x20, 0x02, 0xA1, 0xC8, 0xDA, 0x12, 0x81, 0xCF, 0xD9, 0xF1, 0xDB, 0x40, 0xA4, 0xA6, 0xAF };
- for(int i=0; i= 0x01 && rx[1] <= 0x03);
+}
+
+void set_nrf_channel(uint8_t channel) {
+ nrf_write_reg(0x05, channel); // Write RF_CH register (0x05)
+}
+
+void nrf_init_tx(uint8_t channel) {
+ gpio_set_level(NRF_PIN_CE, 0);
+ nrf_write_reg(0x00, 0x0E); // CONFIG: PWR_UP, EN_CRC (2-byte), PTX mode
+ nrf_write_reg(0x01, 0x00); // EN_AA: Disable auto-ack for low-latency broadcast
+ nrf_write_reg(0x02, 0x01); // EN_RXADDR: Pipe 0
+ nrf_write_reg(0x03, 0x03); // SETUP_AW: 5-byte address width
+ nrf_write_reg(0x04, 0x00); // SETUP_RETR: Retransmit disabled
+ nrf_write_reg(0x05, channel); // RF_CH: Set active 2.4 GHz channel
+ nrf_write_reg(0x06, 0x06); // RF_SETUP: 1 Mbps, 0 dBm
+ nrf_write_reg(0x07, 0x70); // STATUS: Clear IRQ flags
+}
+
+void nrf_send_packet(const rc_packet_t *pkt) {
+ uint8_t flush_cmd = 0xE1; // FLUSH_TX
+ spi_transaction_t tf = { .length = 8, .tx_buffer = &flush_cmd };
+ spi_device_polling_transmit(nrf_spi, &tf);
+
+ uint8_t tx_buf[1 + sizeof(rc_packet_t)];
+ tx_buf[0] = 0xA0; // W_TX_PAYLOAD
+ memcpy(&tx_buf[1], pkt, sizeof(rc_packet_t));
+ spi_transaction_t tp = { .length = (1 + sizeof(rc_packet_t)) * 8, .tx_buffer = tx_buf };
+ spi_device_polling_transmit(nrf_spi, &tp);
+
+ gpio_set_level(NRF_PIN_CE, 1);
+ esp_rom_delay_us(15);
+ gpio_set_level(NRF_PIN_CE, 0);
+}
+
+static void read_joystick(int *raw_x, int *raw_y) {
+ if (adc_oneshot_read(adc1_handle, JOY_ADC_CH_X, raw_x) != ESP_OK) { *raw_x = 0; }
+ if (adc_oneshot_read(adc1_handle, JOY_ADC_CH_Y, raw_y) != ESP_OK) { *raw_y = 0; }
}
// ==========================================
-// 6. CORE 0: BUTTON TASK
+// UI SCREEN RENDERING
// ==========================================
-void button_task(void *pvParameters) {
- bool pause_last = true;
- bool next_last = true;
- bool sw_last = true;
+void draw_menu(int selected_index) {
+ const char* items[] = {"DRIVE VEHICLE", "RADIO CONFIG", "CALIBRATE", "SYSTEM INFO"};
+ char buffer[32];
- while(1) {
- bool pause_btn = gpio_get_level(BTN_PAUSE_PIN);
- bool next_btn = gpio_get_level(BTN_NEXT_PIN);
- bool sw_btn = gpio_get_level(ROTARY_SW_PIN);
+ oled_draw_string(0, 20, "- MAIN MENU -");
- if(pause_btn == 0 && pause_last == 1) {
- is_paused = !is_paused;
- }
-
- if(next_btn == 0 && next_last == 1) {
- current_song_idx++;
- if (current_song_idx > 15) current_song_idx = 0; // 16 Total Songs
- trigger_song_change = true;
- is_paused = false;
- }
-
- // Toggle Knob Mode (Volume vs Speed)
- if(sw_btn == 0 && sw_last == 1) {
- encoder_mode_volume = !encoder_mode_volume;
- }
-
- pause_last = pause_btn;
- next_last = next_btn;
- sw_last = sw_btn;
- vTaskDelay(pdMS_TO_TICKS(50));
- }
-}
-
-// ==========================================
-// 7. CORE 0: OLED GRAPHICS ENGINE
-// ==========================================
-void oled_visualizer_task(void *pvParameters) {
- char ui_buf[16];
-
- while(1) {
- memset(oled_buffer, 0, 1024);
-
- if (current_song_idx == 0) draw_string(2, 2, "WHISP");
- else if (current_song_idx == 1) draw_string(2, 2, "TAKE ");
- else if (current_song_idx == 2) draw_string(2, 2, "RICK ");
- else if (current_song_idx == 3) draw_string(2, 2, "ELVIS");
- else if (current_song_idx == 4) draw_string(2, 2, "GIMME");
- else if (current_song_idx == 5) draw_string(2, 2, "ELISE");
- else if (current_song_idx == 6) draw_string(2, 2, "MOZRT");
- else if (current_song_idx == 7) draw_string(2, 2, "MARIO");
- else if (current_song_idx == 8) draw_string(2, 2, "PIRT1");
- else if (current_song_idx == 9) draw_string(2, 2, "PIRT2");
- else if (current_song_idx == 10) draw_string(2, 2, "ALLA ");
- else if (current_song_idx == 11) draw_string(2, 2, "TETRS");
- else if (current_song_idx == 12) draw_string(2, 2, "SONIC");
- else if (current_song_idx == 13) draw_string(2, 2, "CAST ");
- else if (current_song_idx == 14) draw_string(2, 2, "SEVEN");
- else if (current_song_idx == 15) draw_string(2, 2, "MEGA ");
-
- if (is_paused) draw_string(40, 2, "PAUSE");
-
- // Dynamic UI for Rotary Mode
- if (encoder_mode_volume) {
- sprintf(ui_buf, "VOL %d%%", (int)(current_volume * 100));
+ for (int i = 0; i < NUM_MENU_ITEMS; i++) {
+ if (i == selected_index) {
+ snprintf(buffer, sizeof(buffer), "> %-14s", items[i]);
} else {
- sprintf(ui_buf, "SPD %.1fx", current_speed);
+ snprintf(buffer, sizeof(buffer), " %-14s", items[i]);
}
- draw_string(80, 2, ui_buf);
-
- draw_filled_rect(0, 11, 128, 1, 1);
-
- if(current_kick) draw_filled_rect(10, 25, 20, 30, 1);
- else { draw_filled_rect(10, 45, 20, 10, 1); draw_rect(10, 25, 20, 30, 1); }
-
- if(current_hat) draw_filled_rect(98, 30, 16, 25, 1);
- else { draw_filled_rect(98, 45, 16, 10, 1); draw_rect(98, 30, 16, 25, 1); }
-
- if(current_freq > 0 && !is_paused) {
- int h = (current_freq - 200) / 12;
- if (h < 5) h = 5;
- if (h > 40) h = 40;
-
- draw_filled_rect(50, 60 - (h/2), 6, (h/2), 1);
- draw_filled_rect(60, 60 - h, 8, h, 1);
- draw_filled_rect(72, 60 - (h/1.5), 6, (h/1.5), 1);
- } else {
- draw_filled_rect(50, 58, 28, 2, 1);
- }
-
- oled_push_framebuffer();
- vTaskDelay(pdMS_TO_TICKS(33)); // ~30 FPS
+ oled_draw_string(2 + (i * 2), 5, buffer);
}
}
-// ==========================================
-// 8. CORE 1: THE MUSIC ENGINE
-// ==========================================
-void buzzer_sequence_task(void *pvParameters) {
- const SequenceStep* active_song = careless_song;
- int num_steps = sizeof(careless_song) / sizeof(SequenceStep);
+void draw_drive_screen(int raw_x, int raw_y, int channel) {
+ char buffer[32];
+ oled_draw_string(0, 10, "- DRIVE VEHICLE -");
- int last_encoder_count = 0;
- int encoder_count = 0;
+ snprintf(buffer, sizeof(buffer), "VRX: %-4d VRY: %-4d", raw_x, raw_y);
+ oled_draw_string(2, 2, buffer);
- while(1) {
- for (int i = 0; i < num_steps; i++) {
+ snprintf(buffer, sizeof(buffer), "TX CH: %03d [ACTIVE]", channel);
+ oled_draw_string(4, 2, buffer);
- while (is_paused) {
- ledc_set_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL, 0); ledc_update_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL);
- gpio_set_level(ACTIVE_BUZZER_1_PIN, 0); gpio_set_level(ACTIVE_BUZZER_2_PIN, 0);
- gpio_set_level(LED_KICK_PIN, 0); gpio_set_level(LED_HAT_PIN, 0);
- led_strip_clear(led_strip); led_strip_refresh(led_strip);
- current_freq = 0; current_kick = false; current_hat = false;
+ oled_draw_string(6, 10, "[CLICK TO BACK]");
+}
- vTaskDelay(pdMS_TO_TICKS(50));
- if (trigger_song_change) break;
- }
+void draw_calibrate_screen(int raw_x, int raw_y) {
+ char buffer[32];
+ oled_draw_string(0, 10, "- CALIBRATION -");
- if (trigger_song_change) {
- if (current_song_idx == 0) { active_song = careless_song; num_steps = sizeof(careless_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 1) { active_song = takeonme_song; num_steps = sizeof(takeonme_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 2) { active_song = rickroll_song; num_steps = sizeof(rickroll_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 3) { active_song = elvis_song; num_steps = sizeof(elvis_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 4) { active_song = abba_song; num_steps = sizeof(abba_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 5) { active_song = elise_song; num_steps = sizeof(elise_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 6) { active_song = mozart_song; num_steps = sizeof(mozart_song) / sizeof(SequenceStep); }
- else if (current_song_idx == 7) { active_song = midi_mario; num_steps = sizeof(midi_mario) / sizeof(SequenceStep); }
- else if (current_song_idx == 8) { active_song = midi_potc_2; num_steps = sizeof(midi_potc_2) / sizeof(SequenceStep); }
- else if (current_song_idx == 9) { active_song = midi_potc_3; num_steps = sizeof(midi_potc_3) / sizeof(SequenceStep); }
- else if (current_song_idx == 10){ active_song = midi_alla_turca; num_steps = sizeof(midi_alla_turca) / sizeof(SequenceStep); }
- else if (current_song_idx == 11){ active_song = midi_tetris_1; num_steps = sizeof(midi_tetris_1) / sizeof(SequenceStep); }
- else if (current_song_idx == 12){ active_song = midi_sonic; num_steps = sizeof(midi_sonic) / sizeof(SequenceStep); }
- else if (current_song_idx == 13){ active_song = midi_cast; num_steps = sizeof(midi_cast) / sizeof(SequenceStep); }
- else if (current_song_idx == 14){ active_song = midi_seven; num_steps = sizeof(midi_seven) / sizeof(SequenceStep); }
- else if (current_song_idx == 15){ active_song = midi_mega; num_steps = sizeof(midi_mega) / sizeof(SequenceStep); }
- trigger_song_change = false;
- break;
- }
+ snprintf(buffer, sizeof(buffer), "CUR: %04d / %04d", raw_x, raw_y);
+ oled_draw_string(2, 2, buffer);
- SequenceStep step = active_song[i];
+ snprintf(buffer, sizeof(buffer), "CTR: %04d / %04d", joy_center_x, joy_center_y);
+ oled_draw_string(4, 2, buffer);
- pcnt_unit_get_count(pcnt_unit, &encoder_count);
- int diff = encoder_count - last_encoder_count;
- last_encoder_count = encoder_count;
+ oled_draw_string(6, 5, "[CLICK SET CTR]");
+}
- if (encoder_mode_volume) {
- current_volume += diff * 0.05;
- if (current_volume < 0.0) current_volume = 0.0;
- if (current_volume > 1.0) current_volume = 1.0;
- } else {
- current_speed += diff * 0.05;
- if (current_speed < 0.2) current_speed = 0.2;
- if (current_speed > 3.0) current_speed = 3.0;
- }
+void draw_system_info(void) {
+ char buffer[32];
+ oled_draw_string(0, 15, "- SYSTEM INFO -");
- int adj_duration = (int)(step.duration / current_speed);
- int adj_drum_hit = (int)(45 / current_speed);
+ snprintf(buffer, sizeof(buffer), "CHIP: ESP32-S3");
+ oled_draw_string(2, 5, buffer);
- current_freq = step.frequency;
- uint32_t target_duty = (uint32_t)(BUZZER_LEDC_DUTY * current_volume);
+ snprintf(buffer, sizeof(buffer), "HEAP: %lu KB", (unsigned long)(esp_get_free_heap_size() / 1024));
+ oled_draw_string(4, 5, buffer);
- if (step.frequency > 0 && target_duty > 0) {
- ledc_set_freq(BUZZER_LEDC_MODE, BUZZER_LEDC_TIMER, step.frequency);
- ledc_set_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL, target_duty);
- } else {
- ledc_set_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL, 0);
- }
- ledc_update_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL);
+ oled_draw_string(6, 10, "[CLICK TO BACK]");
+}
- current_kick = step.kick_drum;
- current_hat = step.hi_hat;
- if (step.kick_drum) { gpio_set_level(ACTIVE_BUZZER_1_PIN, 1); gpio_set_level(LED_KICK_PIN, 1); }
- if (step.hi_hat) { gpio_set_level(ACTIVE_BUZZER_2_PIN, 1); gpio_set_level(LED_HAT_PIN, 1); }
+void draw_radio_config_screen(int channel) {
+ char buffer[32];
+ oled_draw_string(0, 5, "- RADIO CONFIG -");
- // --- NEOPIXEL RAVE FX ---
- if (step.kick_drum || step.hi_hat) {
- for (int j = 0; j < 8; j++) {
- if (step.kick_drum && step.hi_hat) {
- led_strip_set_pixel(led_strip, j, 80, 0, 80); // Purple for simultaneous hits
- } else if (step.kick_drum) {
- led_strip_set_pixel(led_strip, j, 100, 0, 0); // Red for Kick
- } else if (step.hi_hat) {
- led_strip_set_pixel(led_strip, j, 0, 80, 80); // Cyan for Hat
- }
- }
- led_strip_refresh(led_strip);
- }
-
- if (adj_duration > adj_drum_hit) {
- vTaskDelay(pdMS_TO_TICKS(adj_drum_hit));
- gpio_set_level(ACTIVE_BUZZER_1_PIN, 0); gpio_set_level(ACTIVE_BUZZER_2_PIN, 0);
- gpio_set_level(LED_KICK_PIN, 0); gpio_set_level(LED_HAT_PIN, 0);
- led_strip_clear(led_strip); led_strip_refresh(led_strip);
- current_kick = false; current_hat = false;
- vTaskDelay(pdMS_TO_TICKS(adj_duration - adj_drum_hit));
- } else {
- vTaskDelay(pdMS_TO_TICKS(adj_duration));
- gpio_set_level(ACTIVE_BUZZER_1_PIN, 0); gpio_set_level(ACTIVE_BUZZER_2_PIN, 0);
- gpio_set_level(LED_KICK_PIN, 0); gpio_set_level(LED_HAT_PIN, 0);
- led_strip_clear(led_strip); led_strip_refresh(led_strip);
- current_kick = false; current_hat = false;
- }
-
- ledc_set_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL, 0);
- ledc_update_duty(BUZZER_LEDC_MODE, BUZZER_LEDC_CHANNEL);
- current_freq = 0;
- vTaskDelay(pdMS_TO_TICKS(15));
- }
+ if (nrf_check_connection()) {
+ snprintf(buffer, sizeof(buffer), "CH: <%03d> (2.4G)", channel);
+ oled_draw_string(2, 2, buffer);
+ oled_draw_string(4, 2, "TURN DIAL TO TUNE");
+ } else {
+ oled_draw_string(2, 2, "STATUS: FAILED ");
+ oled_draw_string(4, 2, "CHECK WIRING ");
}
+
+ oled_draw_string(6, 5, "[CLICK TO SAVE]");
}
// ==========================================
-// 9. MAIN APPLICATION ENTRY
+// MAIN APPLICATION ENTRY
// ==========================================
void app_main(void) {
- printf("Desk Rave: 16-Track Symphony Edition Initializing...\n");
- init_hardware();
+ // 1. Initialize Shared SPI2_HOST Bus (FSPI)
+ spi_bus_config_t buscfg = {
+ .miso_io_num = PIN_NUM_MISO,
+ .mosi_io_num = PIN_NUM_MOSI,
+ .sclk_io_num = PIN_NUM_CLK,
+ .quadwp_io_num = -1,
+ .quadhd_io_num = -1,
+ .max_transfer_sz = 4096
+ };
+ ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO));
- xTaskCreatePinnedToCore(oled_visualizer_task, "oled_task", 4096, NULL, 4, NULL, 0);
- xTaskCreatePinnedToCore(button_task, "btn_task", 4096, NULL, 5, NULL, 0);
- xTaskCreatePinnedToCore(buzzer_sequence_task, "music_task", 4096, NULL, 5, NULL, 1);
+ // 2. Attach 1.3" SH1106 OLED Display (10 MHz SPI)
+ spi_device_interface_config_t oled_cfg = {
+ .clock_speed_hz = 10 * 1000 * 1000,
+ .mode = 0,
+ .spics_io_num = OLED_PIN_CS,
+ .queue_size = 1
+ };
+ ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &oled_cfg, &oled_spi));
+ gpio_reset_pin(OLED_PIN_DC); gpio_set_direction(OLED_PIN_DC, GPIO_MODE_OUTPUT);
+ gpio_reset_pin(OLED_PIN_RES); gpio_set_direction(OLED_PIN_RES, GPIO_MODE_OUTPUT);
+
+ oled_init();
+ oled_clear();
+
+ // 3. Attach nRF24L01+ Radio Module (1 MHz SPI)
+ gpio_reset_pin(NRF_PIN_CE);
+ gpio_set_direction(NRF_PIN_CE, GPIO_MODE_OUTPUT);
+ gpio_set_level(NRF_PIN_CE, 0);
+
+ spi_device_interface_config_t nrf_cfg = {
+ .clock_speed_hz = 1 * 1000 * 1000,
+ .mode = 0,
+ .spics_io_num = NRF_PIN_CS,
+ .queue_size = 1
+ };
+ ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &nrf_cfg, &nrf_spi));
+ nrf_init_tx((uint8_t)current_radio_channel);
+
+ // 4. Initialize One-Shot ADC1 for Hall-Effect / Analog Joystick (GPIO 4 & GPIO 5)
+ adc_oneshot_unit_init_cfg_t init_config1 = {
+ .unit_id = ADC_UNIT_1,
+ };
+ ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle));
+
+ adc_oneshot_chan_cfg_t adc_cfg = {
+ .bitwidth = ADC_BITWIDTH_DEFAULT,
+ .atten = ADC_ATTEN_DB_12,
+ };
+ ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, JOY_ADC_CH_X, &adc_cfg));
+ ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, JOY_ADC_CH_Y, &adc_cfg));
+
+ // 5. Initialize Rotary Encoder Push Switch (GPIO 17)
+ gpio_config_t sw_cfg = {
+ .pin_bit_mask = (1ULL << PIN_ENCODER_SW),
+ .mode = GPIO_MODE_INPUT,
+ .pull_up_en = GPIO_PULLUP_ENABLE,
+ .pull_down_en = GPIO_PULLDOWN_DISABLE,
+ .intr_type = GPIO_INTR_DISABLE
+ };
+ gpio_config(&sw_cfg);
+
+ // 6. Initialize PCNT Hardware Quadrature Decoder (GPIO 15 & GPIO 16)
+ pcnt_unit_handle_t pcnt_unit = NULL;
+ pcnt_unit_config_t unit_config = { .high_limit = 10000, .low_limit = -10000 };
+ ESP_ERROR_CHECK(pcnt_new_unit(&unit_config, &pcnt_unit));
+
+ pcnt_glitch_filter_config_t filter_config = { .max_glitch_ns = 1000 };
+ ESP_ERROR_CHECK(pcnt_unit_set_glitch_filter(pcnt_unit, &filter_config));
+
+ pcnt_channel_handle_t pcnt_chan_a = NULL, pcnt_chan_b = NULL;
+ pcnt_chan_config_t chan_a_config = { .edge_gpio_num = PIN_ENCODER_CLK, .level_gpio_num = PIN_ENCODER_DT };
+ ESP_ERROR_CHECK(pcnt_new_channel(pcnt_unit, &chan_a_config, &pcnt_chan_a));
+ pcnt_chan_config_t chan_b_config = { .edge_gpio_num = PIN_ENCODER_DT, .level_gpio_num = PIN_ENCODER_CLK };
+ ESP_ERROR_CHECK(pcnt_new_channel(pcnt_unit, &chan_b_config, &pcnt_chan_b));
+
+ ESP_ERROR_CHECK(pcnt_channel_set_edge_action(pcnt_chan_a, PCNT_CHANNEL_EDGE_ACTION_DECREASE, PCNT_CHANNEL_EDGE_ACTION_INCREASE));
+ ESP_ERROR_CHECK(pcnt_channel_set_level_action(pcnt_chan_a, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_INVERSE));
+ ESP_ERROR_CHECK(pcnt_channel_set_edge_action(pcnt_chan_b, PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_DECREASE));
+ ESP_ERROR_CHECK(pcnt_channel_set_level_action(pcnt_chan_b, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_INVERSE));
+
+ ESP_ERROR_CHECK(pcnt_unit_enable(pcnt_unit));
+ ESP_ERROR_CHECK(pcnt_unit_clear_count(pcnt_unit));
+ ESP_ERROR_CHECK(pcnt_unit_start(pcnt_unit));
+
+ ESP_LOGI(TAG, "MFC Multi-Tasking OS State Machine Online (ESP32-S3).");
+
+ // 7. Master UI & Telemetry Loop
+ int count = 0;
+ int last_menu_index = -1;
+ int last_sw_state = 1;
+ TickType_t last_button_press = 0;
+
+ screen_state_t current_screen = SCREEN_MAIN_MENU;
+ bool screen_needs_redraw = true;
+
+ int radio_start_count = 0;
+ int last_tuned_channel = current_radio_channel;
+
+ while (1) {
+ pcnt_unit_get_count(pcnt_unit, &count);
+ int sw_state = gpio_get_level(PIN_ENCODER_SW);
+
+ if (current_screen == SCREEN_MAIN_MENU) {
+ int raw_steps = count / 4;
+ int current_menu_index = ((raw_steps % NUM_MENU_ITEMS) + NUM_MENU_ITEMS) % NUM_MENU_ITEMS;
+
+ if (current_menu_index != last_menu_index || screen_needs_redraw) {
+ oled_clear();
+ draw_menu(current_menu_index);
+ last_menu_index = current_menu_index;
+ screen_needs_redraw = false;
+ }
+
+ // Click to Select with 300ms Debounce
+ if (sw_state == 0 && last_sw_state == 1) {
+ if ((xTaskGetTickCount() - last_button_press) > pdMS_TO_TICKS(300)) {
+ current_screen = (screen_state_t)(current_menu_index + 1);
+ screen_needs_redraw = true;
+
+ if (current_screen == SCREEN_RADIO_CONFIG) {
+ radio_start_count = count;
+ last_tuned_channel = current_radio_channel;
+ }
+
+ last_button_press = xTaskGetTickCount();
+ }
+ }
+ } else {
+ // Sub-screen handling
+ if (current_screen == SCREEN_RADIO_CONFIG) {
+ int encoder_delta = (count - radio_start_count) / 4;
+ int target_channel = current_radio_channel + encoder_delta;
+
+ if (target_channel < 0) target_channel = 0;
+ if (target_channel > 125) target_channel = 125;
+
+ if (target_channel != last_tuned_channel || screen_needs_redraw) {
+ current_radio_channel = target_channel;
+ set_nrf_channel((uint8_t)current_radio_channel);
+
+ oled_clear();
+ draw_radio_config_screen(current_radio_channel);
+ last_tuned_channel = target_channel;
+ screen_needs_redraw = false;
+ }
+ } else if (current_screen == SCREEN_DRIVE) {
+ int raw_x = 0, raw_y = 0;
+ read_joystick(&raw_x, &raw_y);
+
+ rc_packet_t pkt = {
+ .joy_x = (uint16_t)raw_x,
+ .joy_y = (uint16_t)raw_y,
+ .flags = 0x01,
+ .channel = (uint8_t)current_radio_channel
+ };
+ nrf_send_packet(&pkt);
+
+ if (screen_needs_redraw) {
+ oled_clear();
+ screen_needs_redraw = false;
+ }
+ draw_drive_screen(raw_x, raw_y, current_radio_channel);
+ } else if (current_screen == SCREEN_CALIBRATE) {
+ int raw_x = 0, raw_y = 0;
+ read_joystick(&raw_x, &raw_y);
+
+ if (screen_needs_redraw) {
+ oled_clear();
+ screen_needs_redraw = false;
+ }
+ draw_calibrate_screen(raw_x, raw_y);
+ } else if (current_screen == SCREEN_SYSTEM_INFO) {
+ if (screen_needs_redraw) {
+ oled_clear();
+ draw_system_info();
+ screen_needs_redraw = false;
+ }
+ }
+
+ // Click to return to Main Menu (and save calibration if in CALIBRATE) with 300ms Debounce
+ if (sw_state == 0 && last_sw_state == 1) {
+ if ((xTaskGetTickCount() - last_button_press) > pdMS_TO_TICKS(300)) {
+ if (current_screen == SCREEN_CALIBRATE) {
+ read_joystick(&joy_center_x, &joy_center_y);
+ }
+ current_screen = SCREEN_MAIN_MENU;
+ screen_needs_redraw = true;
+ last_button_press = xTaskGetTickCount();
+ }
+ }
+ }
+
+ last_sw_state = sw_state;
+ vTaskDelay(pdMS_TO_TICKS(30));
+ }
}
diff --git a/firmware/sdkconfig b/firmware/sdkconfig
index fc2f675..16d5187 100644
--- a/firmware/sdkconfig
+++ b/firmware/sdkconfig
@@ -2,71 +2,90 @@
# Automatically generated file. DO NOT EDIT.
# Espressif IoT Development Framework (ESP-IDF) 5.2.2 Project Configuration
#
-CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined"
-CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined"
-CONFIG_SOC_DPORT_WORKAROUND="Not determined"
-CONFIG_SOC_CAPS_ECO_VER_MAX=301
+CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
+CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
CONFIG_SOC_ADC_SUPPORTED=y
-CONFIG_SOC_DAC_SUPPORTED=y
CONFIG_SOC_UART_SUPPORTED=y
-CONFIG_SOC_MCPWM_SUPPORTED=y
-CONFIG_SOC_GPTIMER_SUPPORTED=y
-CONFIG_SOC_SDMMC_HOST_SUPPORTED=y
-CONFIG_SOC_BT_SUPPORTED=y
CONFIG_SOC_PCNT_SUPPORTED=y
CONFIG_SOC_WIFI_SUPPORTED=y
-CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y
CONFIG_SOC_TWAI_SUPPORTED=y
-CONFIG_SOC_EFUSE_SUPPORTED=y
-CONFIG_SOC_EMAC_SUPPORTED=y
+CONFIG_SOC_GDMA_SUPPORTED=y
+CONFIG_SOC_AHB_GDMA_SUPPORTED=y
+CONFIG_SOC_GPTIMER_SUPPORTED=y
+CONFIG_SOC_LCDCAM_SUPPORTED=y
+CONFIG_SOC_MCPWM_SUPPORTED=y
+CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y
+CONFIG_SOC_CACHE_SUPPORT_WRAP=y
CONFIG_SOC_ULP_SUPPORTED=y
+CONFIG_SOC_ULP_FSM_SUPPORTED=y
+CONFIG_SOC_RISCV_COPROC_SUPPORTED=y
+CONFIG_SOC_BT_SUPPORTED=y
+CONFIG_SOC_USB_OTG_SUPPORTED=y
+CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y
CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y
+CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y
+CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y
+CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y
+CONFIG_SOC_EFUSE_SUPPORTED=y
+CONFIG_SOC_SDMMC_HOST_SUPPORTED=y
CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y
CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y
CONFIG_SOC_RTC_MEM_SUPPORTED=y
+CONFIG_SOC_PSRAM_DMA_CAPABLE=y
+CONFIG_SOC_XT_WDT_SUPPORTED=y
CONFIG_SOC_I2S_SUPPORTED=y
CONFIG_SOC_RMT_SUPPORTED=y
CONFIG_SOC_SDM_SUPPORTED=y
CONFIG_SOC_GPSPI_SUPPORTED=y
CONFIG_SOC_LEDC_SUPPORTED=y
CONFIG_SOC_I2C_SUPPORTED=y
+CONFIG_SOC_SYSTIMER_SUPPORTED=y
CONFIG_SOC_SUPPORT_COEXISTENCE=y
+CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y
CONFIG_SOC_AES_SUPPORTED=y
CONFIG_SOC_MPI_SUPPORTED=y
CONFIG_SOC_SHA_SUPPORTED=y
+CONFIG_SOC_HMAC_SUPPORTED=y
+CONFIG_SOC_DIG_SIGN_SUPPORTED=y
CONFIG_SOC_FLASH_ENC_SUPPORTED=y
CONFIG_SOC_SECURE_BOOT_SUPPORTED=y
+CONFIG_SOC_MEMPROT_SUPPORTED=y
CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y
CONFIG_SOC_BOD_SUPPORTED=y
-CONFIG_SOC_ULP_FSM_SUPPORTED=y
CONFIG_SOC_CLK_TREE_SUPPORTED=y
CONFIG_SOC_MPU_SUPPORTED=y
CONFIG_SOC_WDT_SUPPORTED=y
CONFIG_SOC_SPI_FLASH_SUPPORTED=y
-CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5
-CONFIG_SOC_XTAL_SUPPORT_26M=y
CONFIG_SOC_XTAL_SUPPORT_40M=y
-CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y
+CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y
CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y
CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y
+CONFIG_SOC_ADC_ARBITER_SUPPORTED=y
+CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y
+CONFIG_SOC_ADC_MONITOR_SUPPORTED=y
CONFIG_SOC_ADC_DMA_SUPPORTED=y
CONFIG_SOC_ADC_PERIPH_NUM=2
CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10
CONFIG_SOC_ADC_ATTEN_NUM=4
CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2
-CONFIG_SOC_ADC_PATT_LEN_MAX=16
-CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9
+CONFIG_SOC_ADC_PATT_LEN_MAX=24
+CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12
CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12
-CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2
+CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4
CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4
-CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0
-CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2
-CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20
-CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9
+CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2
+CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2
+CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333
+CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611
+CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12
CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12
+CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y
+CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y
CONFIG_SOC_ADC_SHARED_POWER=y
-CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y
-CONFIG_SOC_IDCACHE_PER_CORE=y
+CONFIG_SOC_APB_BACKUP_DMA=y
+CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y
+CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y
+CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y
CONFIG_SOC_CPU_CORES_NUM=2
CONFIG_SOC_CPU_INTR_NUM=32
CONFIG_SOC_CPU_HAS_FPU=y
@@ -74,46 +93,54 @@ CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y
CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64
-CONFIG_SOC_DAC_CHAN_NUM=2
-CONFIG_SOC_DAC_RESOLUTION=8
-CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y
+CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096
+CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16
+CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100
+CONFIG_SOC_AHB_GDMA_VERSION=1
+CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1
+CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5
+CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5
+CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y
CONFIG_SOC_GPIO_PORT=1
-CONFIG_SOC_GPIO_PIN_COUNT=40
-CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF
-CONFIG_SOC_GPIO_IN_RANGE_MAX=39
-CONFIG_SOC_GPIO_OUT_RANGE_MAX=33
-CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA
+CONFIG_SOC_GPIO_PIN_COUNT=49
+CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y
+CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y
+CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y
+CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y
+CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF
+CONFIG_SOC_GPIO_IN_RANGE_MAX=48
+CONFIG_SOC_GPIO_OUT_RANGE_MAX=48
+CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000
CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y
+CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8
+CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8
+CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y
CONFIG_SOC_I2C_NUM=2
CONFIG_SOC_I2C_FIFO_LEN=32
-CONFIG_SOC_I2C_CMD_REG_NUM=16
+CONFIG_SOC_I2C_CMD_REG_NUM=8
CONFIG_SOC_I2C_SUPPORT_SLAVE=y
-CONFIG_SOC_I2C_SUPPORT_APB=y
-CONFIG_SOC_I2C_STOP_INDEPENDENT=y
+CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y
+CONFIG_SOC_I2C_SUPPORT_XTAL=y
+CONFIG_SOC_I2C_SUPPORT_RTC=y
+CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y
+CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y
+CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y
CONFIG_SOC_I2S_NUM=2
-CONFIG_SOC_I2S_HW_VERSION_1=y
-CONFIG_SOC_I2S_SUPPORTS_APLL=y
+CONFIG_SOC_I2S_HW_VERSION_2=y
+CONFIG_SOC_I2S_SUPPORTS_XTAL=y
CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y
+CONFIG_SOC_I2S_SUPPORTS_PCM=y
CONFIG_SOC_I2S_SUPPORTS_PDM=y
CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y
-CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1
+CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2
CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y
-CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1
-CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y
-CONFIG_SOC_I2S_SUPPORTS_ADC=y
-CONFIG_SOC_I2S_SUPPORTS_DAC=y
-CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y
-CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y
-CONFIG_SOC_I2S_LCD_I80_VARIANT=y
-CONFIG_SOC_LCD_I80_SUPPORTED=y
-CONFIG_SOC_LCD_I80_BUSES=2
-CONFIG_SOC_LCD_I80_BUS_WIDTH=24
-CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y
+CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4
+CONFIG_SOC_I2S_SUPPORTS_TDM=y
CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y
-CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y
-CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y
+CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y
CONFIG_SOC_LEDC_CHANNEL_NUM=8
-CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20
+CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14
+CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y
CONFIG_SOC_MCPWM_GROUPS=2
CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3
CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3
@@ -124,103 +151,191 @@ CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3
CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y
CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3
CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3
-CONFIG_SOC_MMU_PERIPH_NUM=2
-CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3
-CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
-CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
+CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y
+CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1
+CONFIG_SOC_MMU_PERIPH_NUM=1
CONFIG_SOC_PCNT_GROUPS=1
-CONFIG_SOC_PCNT_UNITS_PER_GROUP=8
+CONFIG_SOC_PCNT_UNITS_PER_GROUP=4
CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2
CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2
CONFIG_SOC_RMT_GROUPS=1
-CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8
-CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8
+CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4
+CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4
CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8
-CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64
-CONFIG_SOC_RMT_SUPPORT_REF_TICK=y
+CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48
+CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y
+CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y
+CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y
+CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y
+CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y
+CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y
+CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y
+CONFIG_SOC_RMT_SUPPORT_XTAL=y
+CONFIG_SOC_RMT_SUPPORT_RC_FAST=y
CONFIG_SOC_RMT_SUPPORT_APB=y
-CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y
-CONFIG_SOC_RTCIO_PIN_COUNT=18
+CONFIG_SOC_RMT_SUPPORT_DMA=y
+CONFIG_SOC_LCD_I80_SUPPORTED=y
+CONFIG_SOC_LCD_RGB_SUPPORTED=y
+CONFIG_SOC_LCD_I80_BUSES=1
+CONFIG_SOC_LCD_RGB_PANELS=1
+CONFIG_SOC_LCD_I80_BUS_WIDTH=16
+CONFIG_SOC_LCD_RGB_DATA_WIDTH=16
+CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y
+CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128
+CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549
+CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128
+CONFIG_SOC_RTCIO_PIN_COUNT=22
CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y
CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y
-CONFIG_SOC_SDM_GROUPS=1
+CONFIG_SOC_SDM_GROUPS=y
CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
-CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y
-CONFIG_SOC_SPI_AS_CS_SUPPORTED=y
CONFIG_SOC_SPI_PERIPH_NUM=3
-CONFIG_SOC_SPI_DMA_CHAN_NUM=2
-CONFIG_SOC_SPI_MAX_CS_NUM=3
-CONFIG_SOC_SPI_SUPPORT_CLK_APB=y
+CONFIG_SOC_SPI_MAX_CS_NUM=6
CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64
-CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192
+CONFIG_SOC_SPI_SUPPORT_DDRCLK=y
+CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y
+CONFIG_SOC_SPI_SUPPORT_CD_SIG=y
+CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y
+CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y
+CONFIG_SOC_SPI_SUPPORT_CLK_APB=y
+CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y
+CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y
+CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y
+CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16
+CONFIG_SOC_SPI_SUPPORT_OCT=y
+CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y
CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y
CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y
-CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y
CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y
+CONFIG_SOC_SPIRAM_SUPPORTED=y
+CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y
+CONFIG_SOC_SYSTIMER_COUNTER_NUM=2
+CONFIG_SOC_SYSTIMER_ALARM_NUM=3
+CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32
+CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20
+CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y
+CONFIG_SOC_SYSTIMER_INT_LEVEL=y
+CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y
CONFIG_SOC_TIMER_GROUPS=2
CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2
-CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64
-CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
+CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54
+CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y
CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y
-CONFIG_SOC_TOUCH_VERSION_1=y
-CONFIG_SOC_TOUCH_SENSOR_NUM=10
+CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
+CONFIG_SOC_TOUCH_VERSION_2=y
+CONFIG_SOC_TOUCH_SENSOR_NUM=15
+CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3
+CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y
+CONFIG_SOC_TOUCH_PAD_THRESHOLD_MAX=0x1FFFFF
CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF
CONFIG_SOC_TWAI_CONTROLLER_NUM=1
-CONFIG_SOC_TWAI_BRP_MIN=2
CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y
-CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y
+CONFIG_SOC_TWAI_BRP_MIN=2
+CONFIG_SOC_TWAI_BRP_MAX=16384
+CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y
CONFIG_SOC_UART_NUM=3
CONFIG_SOC_UART_HP_NUM=3
-CONFIG_SOC_UART_SUPPORT_APB_CLK=y
-CONFIG_SOC_UART_SUPPORT_REF_TICK=y
CONFIG_SOC_UART_FIFO_LEN=128
CONFIG_SOC_UART_BITRATE_MAX=5000000
-CONFIG_SOC_SPIRAM_SUPPORTED=y
-CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y
-CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y
-CONFIG_SOC_SHA_ENDIANNESS_BE=y
+CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y
+CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y
+CONFIG_SOC_UART_SUPPORT_APB_CLK=y
+CONFIG_SOC_UART_SUPPORT_RTC_CLK=y
+CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y
+CONFIG_SOC_USB_OTG_PERIPH_NUM=1
+CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
+CONFIG_SOC_SHA_SUPPORT_DMA=y
+CONFIG_SOC_SHA_SUPPORT_RESUME=y
+CONFIG_SOC_SHA_GDMA=y
CONFIG_SOC_SHA_SUPPORT_SHA1=y
+CONFIG_SOC_SHA_SUPPORT_SHA224=y
CONFIG_SOC_SHA_SUPPORT_SHA256=y
CONFIG_SOC_SHA_SUPPORT_SHA384=y
CONFIG_SOC_SHA_SUPPORT_SHA512=y
+CONFIG_SOC_SHA_SUPPORT_SHA512_224=y
+CONFIG_SOC_SHA_SUPPORT_SHA512_256=y
+CONFIG_SOC_SHA_SUPPORT_SHA512_T=y
CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4
-CONFIG_SOC_MPI_OPERATIONS_NUM=y
+CONFIG_SOC_MPI_OPERATIONS_NUM=3
CONFIG_SOC_RSA_MAX_BIT_LEN=4096
+CONFIG_SOC_AES_SUPPORT_DMA=y
+CONFIG_SOC_AES_GDMA=y
CONFIG_SOC_AES_SUPPORT_AES_128=y
-CONFIG_SOC_AES_SUPPORT_AES_192=y
CONFIG_SOC_AES_SUPPORT_AES_256=y
-CONFIG_SOC_SECURE_BOOT_V1=y
-CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y
-CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32
-CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21
CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y
CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y
CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y
+CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y
+CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y
CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y
+CONFIG_SOC_PM_SUPPORT_CPU_PD=y
+CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y
CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y
-CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y
-CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y
CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y
CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y
+CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y
CONFIG_SOC_PM_SUPPORT_MODEM_PD=y
CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y
-CONFIG_SOC_CLK_APLL_SUPPORTED=y
+CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y
+CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y
+CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y
CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y
CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y
CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y
-CONFIG_SOC_SDMMC_USE_IOMUX=y
+CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y
+CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y
+CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y
+CONFIG_SOC_EFUSE_DIS_USB_JTAG=y
+CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y
+CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y
+CONFIG_SOC_EFUSE_DIS_ICACHE=y
+CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y
+CONFIG_SOC_SECURE_BOOT_V2_RSA=y
+CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3
+CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y
+CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y
+CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64
+CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y
+CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y
+CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y
+CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y
+CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16
+CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256
+CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21
+CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192
+CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y
+CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y
+CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y
+CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y
+CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y
+CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y
+CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y
+CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y
+CONFIG_SOC_COEX_HW_PTI=y
+CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y
+CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y
CONFIG_SOC_SDMMC_NUM_SLOTS=2
+CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y
+CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4
+CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y
+CONFIG_SOC_WIFI_HW_TSF=y
+CONFIG_SOC_WIFI_FTM_SUPPORT=y
+CONFIG_SOC_WIFI_GCMP_SUPPORT=y
CONFIG_SOC_WIFI_WAPI_SUPPORT=y
CONFIG_SOC_WIFI_CSI_SUPPORT=y
CONFIG_SOC_WIFI_MESH_SUPPORT=y
CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y
-CONFIG_SOC_WIFI_NAN_SUPPORT=y
+CONFIG_SOC_WIFI_PHY_NEEDS_USB_WORKAROUND=y
CONFIG_SOC_BLE_SUPPORTED=y
CONFIG_SOC_BLE_MESH_SUPPORTED=y
-CONFIG_SOC_BT_CLASSIC_SUPPORTED=y
+CONFIG_SOC_BLE_50_SUPPORTED=y
+CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y
CONFIG_SOC_BLUFI_SUPPORTED=y
CONFIG_SOC_ULP_HAS_ADC=y
CONFIG_SOC_PHY_COMBO_MODULE=y
@@ -228,10 +343,10 @@ CONFIG_IDF_CMAKE=y
CONFIG_IDF_TOOLCHAIN="gcc"
CONFIG_IDF_TARGET_ARCH_XTENSA=y
CONFIG_IDF_TARGET_ARCH="xtensa"
-CONFIG_IDF_TARGET="esp32"
+CONFIG_IDF_TARGET="esp32s3"
CONFIG_IDF_INIT_VERSION="5.2.2"
-CONFIG_IDF_TARGET_ESP32=y
-CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
+CONFIG_IDF_TARGET_ESP32S3=y
+CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009
#
# Build type
@@ -243,8 +358,6 @@ CONFIG_APP_BUILD_BOOTLOADER=y
CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
# CONFIG_APP_REPRODUCIBLE_BUILD is not set
# CONFIG_APP_NO_BLOBS is not set
-# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set
# end of Build type
#
@@ -258,7 +371,7 @@ CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y
CONFIG_BOOTLOADER_PROJECT_VER=1
# end of Bootloader manager
-CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000
+CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
@@ -278,7 +391,6 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
# end of Serial Flash Configurations
-# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
# CONFIG_BOOTLOADER_FACTORY_RESET is not set
# CONFIG_BOOTLOADER_APP_TEST is not set
@@ -297,10 +409,12 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
#
# Security features
#
-CONFIG_SECURE_BOOT_V1_SUPPORTED=y
+CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y
+CONFIG_SECURE_BOOT_V2_PREFERRED=y
# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
# CONFIG_SECURE_BOOT is not set
# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
+CONFIG_SECURE_ROM_DL_MODE_ENABLED=y
# end of Security features
#
@@ -317,27 +431,53 @@ CONFIG_ESP_ROM_HAS_CRC_LE=y
CONFIG_ESP_ROM_HAS_CRC_BE=y
CONFIG_ESP_ROM_HAS_MZ_CRC32=y
CONFIG_ESP_ROM_HAS_JPEG_DECODE=y
-CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y
+CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y
+CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y
+CONFIG_ESP_ROM_USB_OTG_NUM=3
+CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4
+CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y
+CONFIG_ESP_ROM_HAS_ENCRYPTED_WRITES_USING_LEGACY_DRV=y
+CONFIG_ESP_ROM_GET_CLK_FREQ=y
+CONFIG_ESP_ROM_HAS_HAL_WDT=y
CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y
+CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y
+CONFIG_ESP_ROM_HAS_SPI_FLASH=y
+CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y
CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y
+CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y
+CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y
+CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y
+CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y
+CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y
CONFIG_ESP_ROM_HAS_SW_FLOAT=y
-CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1
+
+#
+# Boot ROM Behavior
+#
+CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y
+# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set
+# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set
+# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set
+# end of Boot ROM Behavior
#
# Serial flasher config
#
# CONFIG_ESPTOOLPY_NO_STUB is not set
+# CONFIG_ESPTOOLPY_OCT_FLASH is not set
+CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=y
# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
CONFIG_ESPTOOLPY_FLASHMODE_DIO=y
# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y
CONFIG_ESPTOOLPY_FLASHMODE="dio"
-# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
-# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set
+# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set
+CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
+# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set
# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ="40m"
+CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT=y
+CONFIG_ESPTOOLPY_FLASHFREQ="80m"
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
@@ -409,6 +549,7 @@ CONFIG_COMPILER_RT_LIB_NAME="gcc"
CONFIG_APPTRACE_DEST_NONE=y
# CONFIG_APPTRACE_DEST_UART1 is not set
# CONFIG_APPTRACE_DEST_UART2 is not set
+# CONFIG_APPTRACE_DEST_USB_CDC is not set
CONFIG_APPTRACE_DEST_UART_NONE=y
CONFIG_APPTRACE_UART_TASK_PRIO=1
CONFIG_APPTRACE_LOCK_ENABLE=y
@@ -428,15 +569,11 @@ CONFIG_BT_ALARM_MAX_NUM=50
#
# Legacy ADC Configuration
#
-CONFIG_ADC_DISABLE_DAC=y
# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
#
# Legacy ADC Calibration Configuration
#
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
-CONFIG_ADC_CAL_LUT_ENABLE=y
# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set
# end of Legacy ADC Calibration Configuration
# end of Legacy ADC Configuration
@@ -454,13 +591,16 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
# TWAI Configuration
#
# CONFIG_TWAI_ISR_IN_IRAM is not set
-CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y
-CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y
-CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y
-CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y
CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# end of TWAI Configuration
+#
+# Temperature sensor Configuration
+#
+# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
+# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set
+# end of Temperature sensor Configuration
+
#
# UART Configuration
#
@@ -470,7 +610,6 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
#
# GPIO Configuration
#
-# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set
# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set
# end of GPIO Configuration
@@ -528,14 +667,9 @@ CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
# end of I2S Configuration
#
-# DAC Configuration
+# USB Serial/JTAG Configuration
#
-# CONFIG_DAC_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_DAC_ISR_IRAM_SAFE is not set
-# CONFIG_DAC_SUPPRESS_DEPRECATE_WARN is not set
-# CONFIG_DAC_ENABLE_DEBUG_LOG is not set
-CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y
-# end of DAC Configuration
+# end of USB Serial/JTAG Configuration
#
# LEDC Configuration
@@ -556,17 +690,14 @@ CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y
#
# CONFIG_EFUSE_CUSTOM_TABLE is not set
# CONFIG_EFUSE_VIRTUAL is not set
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set
-CONFIG_EFUSE_MAX_BLK_LEN=192
+CONFIG_EFUSE_MAX_BLK_LEN=256
# end of eFuse Bit Manager
#
# ESP-TLS
#
CONFIG_ESP_TLS_USING_MBEDTLS=y
-# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
+CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y
# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set
# CONFIG_ESP_TLS_SERVER is not set
# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
@@ -578,21 +709,13 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
#
# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set
# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set
-
-#
-# ADC Calibration Configurations
-#
-CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y
-CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y
-CONFIG_ADC_CALI_LUT_ENABLE=y
-# end of ADC Calibration Configurations
-
-CONFIG_ADC_DISABLE_DAC_OUTPUT=y
+# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set
# end of ADC and ADC Calibration
#
# Wireless Coexistence
#
+# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set
# end of Wireless Coexistence
#
@@ -605,15 +728,6 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
# Ethernet
#
CONFIG_ETH_ENABLED=y
-CONFIG_ETH_USE_ESP32_EMAC=y
-CONFIG_ETH_PHY_INTERFACE_RMII=y
-CONFIG_ETH_RMII_CLK_INPUT=y
-# CONFIG_ETH_RMII_CLK_OUTPUT is not set
-CONFIG_ETH_RMII_CLK_IN_GPIO=0
-CONFIG_ETH_DMA_BUFFER_SIZE=512
-CONFIG_ETH_DMA_RX_BUFFER_NUM=10
-CONFIG_ETH_DMA_TX_BUFFER_NUM=10
-# CONFIG_ETH_IRAM_OPTIMIZATION is not set
CONFIG_ETH_USE_SPI_ETHERNET=y
# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
@@ -679,21 +793,17 @@ CONFIG_HTTPD_PURGE_BUF_LEN=32
#
# Chip revision
#
-CONFIG_ESP32_REV_MIN_0=y
-# CONFIG_ESP32_REV_MIN_1 is not set
-# CONFIG_ESP32_REV_MIN_1_1 is not set
-# CONFIG_ESP32_REV_MIN_2 is not set
-# CONFIG_ESP32_REV_MIN_3 is not set
-# CONFIG_ESP32_REV_MIN_3_1 is not set
-CONFIG_ESP32_REV_MIN=0
-CONFIG_ESP32_REV_MIN_FULL=0
+CONFIG_ESP32S3_REV_MIN_0=y
+# CONFIG_ESP32S3_REV_MIN_1 is not set
+# CONFIG_ESP32S3_REV_MIN_2 is not set
+CONFIG_ESP32S3_REV_MIN_FULL=0
CONFIG_ESP_REV_MIN_FULL=0
#
-# Maximum Supported ESP32 Revision (Rev v3.99)
+# Maximum Supported ESP32-S3 Revision (Rev v0.99)
#
-CONFIG_ESP32_REV_MAX_FULL=399
-CONFIG_ESP_REV_MAX_FULL=399
+CONFIG_ESP32S3_REV_MAX_FULL=99
+CONFIG_ESP_REV_MAX_FULL=99
# end of Chip revision
#
@@ -704,10 +814,9 @@ CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
-# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set
+# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set
+CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y
+CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4
# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set
# end of MAC Config
@@ -716,9 +825,9 @@ CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
#
# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set
CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y
-# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set
+CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y
CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
-# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y
CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000
# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set
# CONFIG_ESP_SLEEP_DEBUG is not set
@@ -741,12 +850,18 @@ CONFIG_RTC_CLK_CAL_CYCLES=1024
CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
# end of Peripheral Control
+#
+# GDMA Configuration
+#
+# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set
+# CONFIG_GDMA_ISR_IRAM_SAFE is not set
+# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set
+# end of GDMA Configuration
+
#
# Main XTAL Config
#
-# CONFIG_XTAL_FREQ_26 is not set
CONFIG_XTAL_FREQ_40=y
-# CONFIG_XTAL_FREQ_AUTO is not set
CONFIG_XTAL_FREQ=40
# end of Main XTAL Config
# end of Hardware Settings
@@ -764,6 +879,8 @@ CONFIG_XTAL_FREQ=40
#
CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32
# CONFIG_LCD_ENABLE_DEBUG_LOG is not set
+# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set
+# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set
# end of LCD Peripheral Configuration
# end of LCD and Touch Panel
@@ -792,6 +909,8 @@ CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
CONFIG_ESP_PHY_MAX_TX_POWER=20
# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set
+CONFIG_ESP_PHY_ENABLE_USB=y
+# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set
CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
# CONFIG_ESP_PHY_RF_CAL_NONE is not set
# CONFIG_ESP_PHY_RF_CAL_FULL is not set
@@ -803,6 +922,8 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0
# Power Management
#
# CONFIG_PM_ENABLE is not set
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
+CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y
# end of Power Management
#
@@ -826,22 +947,42 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160
#
-# Memory
+# Cache config
#
-# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set
+CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y
+# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set
+CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000
+# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set
+CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y
+CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8
+# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set
+CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y
+CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32
+# CONFIG_ESP32S3_DATA_CACHE_16KB is not set
+CONFIG_ESP32S3_DATA_CACHE_32KB=y
+# CONFIG_ESP32S3_DATA_CACHE_64KB is not set
+CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000
+# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set
+CONFIG_ESP32S3_DATA_CACHE_8WAYS=y
+CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8
+# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set
+CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y
+# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set
+CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32
+# end of Cache config
#
-# Non-backward compatible options
+# Memory
#
-# CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM is not set
-# end of Non-backward compatible options
+# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set
+# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set
# end of Memory
#
# Trace memory
#
-# CONFIG_ESP32_TRAX is not set
-CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0
+# CONFIG_ESP32S3_TRAX is not set
+CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0
# end of Trace memory
# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
@@ -849,10 +990,14 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
+CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y
+CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y
#
# Memory protection
#
+CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y
+CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y
# end of Memory protection
CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
@@ -864,8 +1009,13 @@ CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
CONFIG_ESP_CONSOLE_UART_DEFAULT=y
+# CONFIG_ESP_CONSOLE_USB_CDC is not set
+# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
# CONFIG_ESP_CONSOLE_NONE is not set
+# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set
+CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y
CONFIG_ESP_CONSOLE_UART=y
CONFIG_ESP_CONSOLE_UART_NUM=0
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
@@ -881,32 +1031,30 @@ CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
CONFIG_ESP_DEBUG_OCDAWARE=y
-# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set
CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y
#
# Brownout Detector
#
CONFIG_ESP_BROWNOUT_DET=y
-CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
+CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_ESP_BROWNOUT_DET_LVL=0
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set
+CONFIG_ESP_BROWNOUT_DET_LVL=7
# end of Brownout Detector
-# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set
CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y
# end of ESP System Settings
#
# IPC (Inter-Processor Call)
#
-CONFIG_ESP_IPC_TASK_STACK_SIZE=1024
+CONFIG_ESP_IPC_TASK_STACK_SIZE=1280
CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
CONFIG_ESP_IPC_ISR_ENABLE=y
# end of IPC (Inter-Processor Call)
@@ -925,7 +1073,7 @@ CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y
CONFIG_ESP_TIMER_ISR_AFFINITY=0x1
CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y
# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set
-CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
+CONFIG_ESP_TIMER_IMPL_SYSTIMER=y
# end of High resolution timer (esp_timer)
#
@@ -960,15 +1108,17 @@ CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
+# CONFIG_ESP_WIFI_FTM_ENABLE is not set
CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y
+# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set
# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set
CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
-# CONFIG_ESP_WIFI_NAN_ENABLE is not set
CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y
CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
# CONFIG_ESP_WIFI_WAPI_PSK is not set
+# CONFIG_ESP_WIFI_SUITE_B_192 is not set
# CONFIG_ESP_WIFI_11KV_SUPPORT is not set
# CONFIG_ESP_WIFI_MBO_SUPPORT is not set
# CONFIG_ESP_WIFI_DPP_SUPPORT is not set
@@ -1077,11 +1227,10 @@ CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
CONFIG_FREERTOS_ISR_STACKSIZE=1536
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
-# CONFIG_FREERTOS_FPU_IN_ISR is not set
-CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y
-CONFIG_FREERTOS_CORETIMER_0=y
-# CONFIG_FREERTOS_CORETIMER_1 is not set
-CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y
+CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y
+CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y
+# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set
+CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y
# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
# end of Port
@@ -1102,6 +1251,7 @@ CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y
# CONFIG_HAL_ASSERTION_SILENT is not set
# CONFIG_HAL_ASSERTION_ENABLE is not set
CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
+CONFIG_HAL_WDT_USE_ROM_IMPL=y
CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y
CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y
# end of Hardware Abstraction Layer (HAL) and Low Level (LL)
@@ -1349,9 +1499,13 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200
# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
CONFIG_MBEDTLS_CMAC_C=y
CONFIG_MBEDTLS_HARDWARE_AES=y
+CONFIG_MBEDTLS_AES_USE_INTERRUPT=y
+CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0
# CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER is not set
CONFIG_MBEDTLS_HARDWARE_MPI=y
# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
+CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y
+CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0
CONFIG_MBEDTLS_HARDWARE_SHA=y
CONFIG_MBEDTLS_ROM_MD5=y
# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
@@ -1474,6 +1628,7 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y
#
# NVS
#
+# CONFIG_NVS_ENCRYPTION is not set
# CONFIG_NVS_ASSERT_ERROR_CHECK is not set
# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set
# end of NVS
@@ -1552,6 +1707,14 @@ CONFIG_SPI_FLASH_BROWNOUT_RESET=y
#
# Features here require specific hardware (READ DOCS FIRST!)
#
+# CONFIG_SPI_FLASH_HPM_ENA is not set
+CONFIG_SPI_FLASH_HPM_AUTO=y
+# CONFIG_SPI_FLASH_HPM_DIS is not set
+CONFIG_SPI_FLASH_HPM_ON=y
+CONFIG_SPI_FLASH_HPM_DC_AUTO=y
+# CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set
+CONFIG_SPI_FLASH_SUSPEND_QVL_SUPPORTED=y
+# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set
# end of Optional and Experimental Features (READ DOCS FIRST)
# end of Main Flash configuration
@@ -1561,10 +1724,10 @@ CONFIG_SPI_FLASH_BROWNOUT_RESET=y
# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
+# CONFIG_SPI_FLASH_ROM_IMPL is not set
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
-# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
@@ -1582,12 +1745,15 @@ CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y
CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y
CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y
CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y
+CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORTED=y
+CONFIG_SPI_FLASH_VENDOR_TH_SUPPORTED=y
CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
-# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
-# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
+CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y
+CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y
+CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y
# end of Auto-detect flash chips
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
@@ -1660,6 +1826,27 @@ CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
# end of Unity unit testing library
+#
+# USB-OTG
+#
+CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256
+CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y
+# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set
+# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set
+
+#
+# Root Hub configuration
+#
+CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250
+CONFIG_USB_HOST_RESET_HOLD_MS=30
+CONFIG_USB_HOST_RESET_RECOVERY_MS=30
+CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10
+# end of Root Hub configuration
+
+CONFIG_USB_OTG_SUPPORTED=y
+# CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK is not set
+# end of USB-OTG
+
#
# Virtual file system
#
@@ -1702,9 +1889,6 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
# Deprecated options for backward compatibility
# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
# CONFIG_NO_BLOBS is not set
-# CONFIG_ESP32_NO_BLOBS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
@@ -1737,50 +1921,36 @@ CONFIG_STACK_CHECK_NONE=y
# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
CONFIG_ESP32_APPTRACE_DEST_NONE=y
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
-CONFIG_ADC2_DISABLE_DAC=y
# CONFIG_MCPWM_ISR_IN_IRAM is not set
+# CONFIG_EXTERNAL_COEX_ENABLE is not set
+# CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set
# CONFIG_EVENT_LOOP_PROFILING is not set
CONFIG_POST_EVENTS_FROM_ISR=y
CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
CONFIG_GDBSTUB_SUPPORT_TASKS=y
CONFIG_GDBSTUB_MAX_TASKS=32
# CONFIG_OTA_ALLOW_HTTP is not set
-# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
-CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
-CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
# CONFIG_ESP_SYSTEM_PD_FLASH is not set
-CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000
+CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000
CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000
-CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y
-CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
-# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
-CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024
-# CONFIG_ESP32_XTAL_FREQ_26 is not set
-CONFIG_ESP32_XTAL_FREQ_40=y
-# CONFIG_ESP32_XTAL_FREQ_AUTO is not set
-CONFIG_ESP32_XTAL_FREQ=40
+CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y
+# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set
+# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set
+# CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set
+CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024
CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
CONFIG_ESP32_PHY_MAX_TX_POWER=20
# CONFIG_REDUCE_PHY_TX_POWER is not set
# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set
-# CONFIG_SPIRAM_SUPPORT is not set
-# CONFIG_ESP32_SPIRAM_SUPPORT is not set
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
-CONFIG_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ESP32_PANIC_PRINT_HALT is not set
-CONFIG_ESP32_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP32_PANIC_GDBSTUB is not set
+CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y
+CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y
+# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set
+# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set
+CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y
+# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set
+CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
CONFIG_MAIN_TASK_STACK_SIZE=3584
@@ -1801,29 +1971,27 @@ CONFIG_TASK_WDT_TIMEOUT_S=5
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
-CONFIG_ESP32_DEBUG_OCDAWARE=y
+CONFIG_ESP32S3_DEBUG_OCDAWARE=y
CONFIG_BROWNOUT_DET=y
-CONFIG_ESP32_BROWNOUT_DET=y
-CONFIG_BROWNOUT_DET_LVL_SEL_0=y
-CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set
+CONFIG_ESP32S3_BROWNOUT_DET=y
+CONFIG_ESP32S3_BROWNOUT_DET=y
+CONFIG_BROWNOUT_DET_LVL_SEL_7=y
+CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_BROWNOUT_DET_LVL=0
-# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
-CONFIG_IPC_TASK_STACK_SIZE=1024
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
+# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set
+CONFIG_BROWNOUT_DET_LVL=7
+CONFIG_ESP32S3_BROWNOUT_DET_LVL=7
+CONFIG_IPC_TASK_STACK_SIZE=1280
CONFIG_TIMER_TASK_STACK_SIZE=3584
CONFIG_ESP32_WIFI_ENABLED=y
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
@@ -1851,6 +2019,7 @@ CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y
CONFIG_WPA_MBEDTLS_CRYPTO=y
CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
# CONFIG_WPA_WAPI_PSK is not set
+# CONFIG_WPA_SUITE_B_192 is not set
# CONFIG_WPA_11KV_SUPPORT is not set
# CONFIG_WPA_MBO_SUPPORT is not set
# CONFIG_WPA_DPP_SUPPORT is not set
@@ -1889,12 +2058,12 @@ CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
# CONFIG_PPP_SUPPORT is not set
-CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y
-CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y
-# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set
+CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER=y
+CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y
+# CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set
+# CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER is not set
+# CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set
+# CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set
CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
CONFIG_ESP32_PTHREAD_STACK_MIN=768
@@ -1906,7 +2075,6 @@ CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
-# CONFIG_ESP32_ULP_COPROC_ENABLED is not set
CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
CONFIG_SUPPORT_TERMIOS=y
CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1