├── Stereo_Input_Wiring.jpg ├── Wiring Diagram-ESP32a.JPG ├── ILI9341 Version ├── README.md ├── Licence.txt ├── ESP32_Spectrum_Display_V2.ino ├── ESP32_Stereo_Spectrum_Display_02.ino └── font.h /Stereo_Input_Wiring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/G6EJD/ESP32-8-Octave-Audio-Spectrum-Display/HEAD/Stereo_Input_Wiring.jpg -------------------------------------------------------------------------------- /Wiring Diagram-ESP32a.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/G6EJD/ESP32-8-Octave-Audio-Spectrum-Display/HEAD/Wiring Diagram-ESP32a.JPG -------------------------------------------------------------------------------- /ILI9341 Version: -------------------------------------------------------------------------------- 1 | If you want to use the software on an ILI9341, then tobozo has created an excelllent version see here: 2 | 3 | ttps://github.com/tobozo/ESP32-8-Octave-Audio-Spectrum-Display/tree/wrover-kit 4 | 5 | It also includes the ability to change your microphone response by for example, increasing gain at higher frequencies to compensate for 6 | a fall-off in sensitivity. 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP32-8-Octave-Audio-Spectrum-Display 2 | Using an ESP32 and OLED display together with an FFT to display audio as 8-octaves in the frequency domain. 3 | 4 | An improved version solely for the ESP32 with its significantly faster ADC to enable an increase in the resolution of the frequency domain by a factor of 4, whilst also giving an improved dynamic range. Code improvements have also been made to speed up the processing together with a shorter code length. 5 | 6 | You must place the font.h file in the same location as the sketch. The Font file is needed to provide a font that can display enough characters across the screen to enable each band to be clearly denoted. The bands are: 7 | 8 | 125Hz 9 | 250Hz 10 | 500Hz 11 | 1KHz 12 | 2Khz 13 | 4KHz 14 | 8Khz 15 | 16kHz 16 | 17 | Please note, if you use a microphone - speaker test environment it is highly likely (unless of very high bandwidth and quality) that both the microphone and speakers used have insufficient quality to ensure you are getting a flat frequency response for the Fast Fourier Transform to convert and display. The only way to ensure you see the correct result is to feed approximately 50mV to 100mV pk-pk of audio directly into the ADC port with no DC offset. This is not a fault with the software or display or FFT - it’s the laws of physics! 18 | 19 | TFT Version by Tobozo: 20 | https://github.com/tobozo/ESP32-Audio-Spectrum-Waveform-Display/tree/wrover-kit 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Licence.txt: -------------------------------------------------------------------------------- 1 | This software, the ideas and concepts is Copyright (c) David Bird 2014 and beyond. 2 | 3 | All rights to this software are reserved. 4 | 5 | It is prohibited to redistribute or reproduce of any part or all of the software contents in any form other than the following: 6 | 7 | 1. You may print or download to a local hard disk extracts for your personal and non-commercial use only. 8 | 9 | 2. You may copy the content to individual third parties for their personal use, but only if you acknowledge the author David Bird as the source of the material. 10 | 11 | 3. You may not, except with my express written permission, distribute or commercially exploit the content. 12 | 13 | 4. You may not transmit it or store it in any other website or other form of electronic retrieval system for commercial purposes. 14 | 15 | 5. You MUST include all of this copyright and permission notice ('as annotated') and this shall be included in all copies or substantial portions of the software and where the software use is visible to an end-user. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS" FOR PRIVATE USE ONLY, IT IS NOT FOR COMMERCIAL USE IN WHOLE OR PART OR CONCEPT. 18 | 19 | FOR PERSONAL USE IT IS SUPPLIED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | 21 | IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /ESP32_Spectrum_Display_V2.ino: -------------------------------------------------------------------------------- 1 | /* ESP32 Audio Spectrum Analyser on an SSD1306/SH1106 Display, 8-bands 125, 250, 500, 1k, 2k, 4k, 8k, 16k 2 | * Improved noise performance and speed and resolution. 3 | *#################################################################################################################################### 4 | This software, the ideas and concepts is Copyright (c) David Bird 2018. All rights to this software are reserved. 5 | 6 | Any redistribution or reproduction of any part or all of the contents in any form is prohibited other than the following: 7 | 1. You may print or download to a local hard disk extracts for your personal and non-commercial use only. 8 | 2. You may copy the content to individual third parties for their personal use, but only if you acknowledge the author David Bird as the source of the material. 9 | 3. You may not, except with my express written permission, distribute or commercially exploit the content. 10 | 4. You may not transmit it or store it in any other website or other form of electronic retrieval system for commercial purposes. 11 | 12 | The above copyright ('as annotated') notice and this permission notice shall be included in all copies or substantial portions of the Software and where the 13 | software use is visible to an end-user. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS" FOR PRIVATE USE ONLY, IT IS NOT FOR COMMERCIAL USE IN WHOLE OR PART OR CONCEPT. FOR PERSONAL USE IT IS SUPPLIED WITHOUT WARRANTY 16 | OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | See more at http://www.dsbird.org.uk 20 | 21 | */ 22 | 23 | #include 24 | #include "arduinoFFT.h" // Standard Arduino FFT library https://github.com/kosme/arduinoFFT 25 | ///////////////////////////////////////////////////////////////////////// 26 | // Comment out the display your NOT using e.g. if you have a 1.3" display comment out the SSD1306 library and object 27 | #include "SH1106.h" // https://github.com/squix78/esp8266-oled-ssd1306 28 | SH1106 display(0x3c, 17,16); // 1.3" OLED display object definition (address, SDA, SCL) Connect OLED SDA , SCL pins to ESP SDA, SCL pins 29 | 30 | //#include "SSD1306.h" // https://github.com/squix78/esp8266-oled-ssd1306 31 | //SSD1306 display(0x3c, 16,17); // 0.96" OLED display object definition (address, SDA, SCL) Connect OLED SDA , SCL pins to ESP SDA, SCL pins 32 | ///////////////////////////////////////////////////////////////////////// 33 | #include "font.h" // The font.h file must be in the same folder as this sketch 34 | ///////////////////////////////////////////////////////////////////////// 35 | #define SAMPLES 1024 // Must be a power of 2 36 | #define SAMPLING_FREQUENCY 40000 // Hz, must be 40000 or less due to ADC conversion time. Determines maximum frequency that can be analysed by the FFT Fmax=sampleF/2. 37 | #define amplitude 150 // Depending on your audio source level, you may need to increase this value 38 | unsigned int sampling_period_us; 39 | unsigned long microseconds; 40 | byte peak[] = {0,0,0,0,0,0,0,0}; 41 | double vReal[SAMPLES]; 42 | double vImag[SAMPLES]; 43 | unsigned long newTime, oldTime; 44 | int dominant_value; 45 | 46 | ArduinoFFT FFT = ArduinoFFT(vReal, vImag, SAMPLES, SAMPLING_FREQUENCY); 47 | ///////////////////////////////////////////////////////////////////////// 48 | void setup() { 49 | Serial.begin(115200); 50 | Wire.begin(17,16); // SDA, SCL 51 | display.init(); 52 | display.setFont(Dialog_plain_8); 53 | //display.setFont(ArialMT_Plain_10); 54 | display.flipScreenVertically(); // Adjust to suit or remove 55 | sampling_period_us = round(1000000 * (1.0 / SAMPLING_FREQUENCY)); 56 | } 57 | 58 | void loop() { 59 | display.clear(); 60 | display.drawString(0,0,"125 250 500 1K 2K 4K 8K 16K"); 61 | for (int i = 0; i < SAMPLES; i++) { 62 | newTime = micros(); 63 | vReal[i] = analogRead(A0); // Using Arduino ADC nomenclature. A conversion takes about 1uS on an ESP32 64 | //vReal[i] = analogRead(VP); // Using logical name fo ADC port 65 | //vReal[i] = analogRead(36); // Using pin number for ADC port 66 | vImag[i] = 0; 67 | while ((micros() - newTime) < sampling_period_us) { /* do nothing to wait */ } 68 | } 69 | FFT.windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); 70 | FFT.compute(vReal, vImag, SAMPLES, FFT_FORWARD); 71 | FFT.complexToMagnitude(vReal, vImag, SAMPLES); 72 | for (int i = 2; i < (SAMPLES/2); i++){ // Don't use sample 0 and only the first SAMPLES/2 are usable. 73 | // Each array element represents a frequency and its value, is the amplitude. Note the frequencies are not discrete. 74 | if (vReal[i] > 1500) { // Add a crude noise filter, 10 x amplitude or more 75 | if (i<=2 ) displayBand(0,(int)vReal[i]); // 125Hz 76 | if (i >2 && i<=4 ) displayBand(1,(int)vReal[i]); // 250Hz 77 | if (i >4 && i<=7 ) displayBand(2,(int)vReal[i]); // 500Hz 78 | if (i >7 && i<=15 ) displayBand(3,(int)vReal[i]); // 1000Hz 79 | if (i >15 && i<=40 ) displayBand(4,(int)vReal[i]); // 2000Hz 80 | if (i >40 && i<=70 ) displayBand(5,(int)vReal[i]); // 4000Hz 81 | if (i >70 && i<=288 ) displayBand(6,(int)vReal[i]); // 8000Hz 82 | if (i >288 ) displayBand(7,(int)vReal[i]); // 16000Hz 83 | //Serial.println(i); 84 | } 85 | for (byte band = 0; band <= 7; band++) display.drawHorizontalLine(1+16*band,64-peak[band],14); 86 | } 87 | if (millis()%4 == 0) {for (byte band = 0; band <= 7; band++) {if (peak[band] > 0) peak[band] -= 1;}} // Decay the peak 88 | display.display(); 89 | } 90 | 91 | void displayBand(int band, int dsize){ 92 | int dmax = 50; 93 | dsize /= amplitude; 94 | if (dsize > dmax) dsize = dmax; 95 | for (int s = 0; s <= dsize; s=s+2){display.drawHorizontalLine(1+16*band,64-s, 14);} 96 | if (dsize > peak[band]) {peak[band] = dsize;} 97 | } 98 | -------------------------------------------------------------------------------- /ESP32_Stereo_Spectrum_Display_02.ino: -------------------------------------------------------------------------------- 1 | /* ESP32 Stereo Audio Spectrum Analyser on an SSD1306/SH1106 Display, 8-bands 125, 250, 500, 1k, 2k, 4k, 8k, 16k 2 | Version 2.0 3 | * 4 | This software, the ideas and concepts is Copyright (c) David Bird 2025. All rights to this software are reserved. 5 | 6 | Any redistribution or reproduction of any part or all of the contents in any form is prohibited other than the following: 7 | 1. You may print or download to a local hard disk extracts for your personal and non-commercial use only. 8 | 2. You may copy the content to individual third parties for their personal use, but only if you acknowledge the author David Bird as the source of the material. 9 | 3. You may not, except with my express written permission, distribute or commercially exploit the content. 10 | 4. You may not transmit it or store it in any other website or other form of electronic retrieval system for commercial purposes. 11 | 12 | The above copyright ('as annotated') notice and this permission notice shall be included in all copies or substantial portions of the Software and where the 13 | software use is visible to an end-user. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS" FOR PRIVATE USE ONLY, IT IS NOT FOR COMMERCIAL USE IN WHOLE OR PART OR CONCEPT. FOR PERSONAL USE IT IS SUPPLIED WITHOUT WARRANTY 16 | OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | See more at http://www.dsbird.org.uk 20 | */ 21 | 22 | #include 23 | #include "arduinoFFT.h" // Standard Arduino FFT library https://github.com/kosme/arduinoFFT 24 | ///////////////////////////////////////////////////////////////////////// 25 | // Comment out the display your NOT using e.g. if you have a 1.3" display comment out the SSD1306 library and object 26 | #include "SH1106.h" // https://github.com/squix78/esp8266-oled-ssd1306 27 | SH1106 display(0x3c, 17,16); // 1.3" OLED display object definition (address, SDA, SCL) Connect OLED SDA , SCL pins to ESP SDA, SCL pins 28 | 29 | //#include "SSD1306.h" // https://github.com/squix78/esp8266-oled-ssd1306 30 | //SSD1306 display(0x3c, 16,17); // 0.96" OLED display object definition (address, SDA, SCL) Connect OLED SDA , SCL pins to ESP SDA, SCL pins 31 | ///////////////////////////////////////////////////////////////////////// 32 | //#include "font.h" // The font.h file must be in the same folder as this sketch 33 | ///////////////////////////////////////////////////////////////////////// 34 | #define SAMPLES 1024 // Must be a power of 2 35 | #define SAMPLING_FREQUENCY 40000 // Hz, must be 40000 or less due to ADC conversion time. Determines maximum frequency that can be analysed by the FFT Fmax=sampleF/2. 36 | #define amplitude 150 // Depending on your audio source level, you may need to increase this value 37 | #define Left true 38 | #define Right false 39 | 40 | unsigned long newTime, oldTime; 41 | unsigned int sampling_period_us; 42 | unsigned long microseconds; 43 | byte peakL[] = {0,0,0,0,0,0,0,0}; 44 | byte peakR[] = {0,0,0,0,0,0,0,0}; 45 | 46 | double vRealL[SAMPLES]; 47 | double vImagL[SAMPLES]; 48 | 49 | double vRealR[SAMPLES]; 50 | double vImagR[SAMPLES]; 51 | 52 | ArduinoFFT FFTL = ArduinoFFT(vRealL, vImagL, SAMPLES, SAMPLING_FREQUENCY); 53 | ArduinoFFT FFTR = ArduinoFFT(vRealR, vImagR, SAMPLES, SAMPLING_FREQUENCY); 54 | 55 | ///////////////////////////////////////////////////////////////////////// 56 | void setup() { 57 | Serial.begin(115200); 58 | Wire.begin(17,16); // SDA, SCL 59 | display.init(); 60 | // display.setFont(Dialog_plain_8); 61 | //display.setFont(ArialMT_Plain_10); 62 | display.flipScreenVertically(); // Adjust to suit or remove 63 | sampling_period_us = round(1000000 * (1.0 / SAMPLING_FREQUENCY)); 64 | } 65 | 66 | void loop() { 67 | display.clear(); 68 | display.drawString(0,0,"125 250 500 1K 2K 4K 8K 16K"); 69 | for (int i = 0; i < SAMPLES; i++) { 70 | newTime = micros(); 71 | //VP input = Left, VN = Right 72 | vRealL[i] = analogRead(36); // Using Arduino ADC nomenclature. A conversion takes about 1uS on an ESP32 73 | vImagL[i] = 0; 74 | vRealR[i] = analogRead(39); // Using Arduino ADC nomenclature. A conversion takes about 1uS on an ESP32 75 | vImagR[i] = 0; 76 | while ((micros() - newTime) < sampling_period_us) { /* do nothing to wait */ } 77 | } 78 | FFTL.windowing(vRealL, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); 79 | FFTL.compute(vRealL, vImagL, SAMPLES, FFT_FORWARD); 80 | FFTL.complexToMagnitude(vRealL, vImagL, SAMPLES); 81 | 82 | FFTR.windowing(vRealR, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); 83 | FFTR.compute(vRealR, vImagR, SAMPLES, FFT_FORWARD); 84 | FFTR.complexToMagnitude(vRealR, vImagR, SAMPLES); 85 | 86 | for (int i = 2; i < (SAMPLES/2); i++){ // Don't use sample 0 and only the first SAMPLES/2 are usable. 87 | // Each array element represents a frequency and its value, is the amplitude. Note the frequencies are not discrete. 88 | if (vRealL[i] > 1500 || vRealR[i] > 1500) { // Add a crude noise filter, 10 x amplitude or more 89 | if (i<=2 ) { 90 | displayBand(Left,0,(int)vRealL[i]); // 125Hz 91 | displayBand(Right,0,(int)vRealR[i]); // 125Hz 92 | } 93 | if (i >2 && i<=4 ) { 94 | displayBand(Left,1,(int)vRealL[i]); // 250Hz 95 | displayBand(Right,1,(int)vRealR[i]); // 250Hz 96 | } 97 | if (i >4 && i<=7 ) { 98 | displayBand(Left,2,(int)vRealL[i]); // 500Hz 99 | displayBand(Right,2,(int)vRealR[i]); // 500Hz 100 | } 101 | if (i >7 && i<=15 ) { 102 | displayBand(Left,3,(int)vRealL[i]); // 1000Hz 103 | displayBand(Right,3,(int)vRealR[i]); // 1000Hz 104 | } 105 | if (i >15 && i<=40 ) { 106 | displayBand(Left,4,(int)vRealL[i]); // 2000Hz 107 | displayBand(Right,4,(int)vRealR[i]); // 2000Hz 108 | } 109 | if (i >40 && i<=70 ) { 110 | displayBand(Left,5,(int)vRealL[i]); // 4000Hz 111 | displayBand(Right,5,(int)vRealR[i]); // 4000Hz 112 | } 113 | if (i >70 && i<=288 ) { 114 | displayBand(Left,6,(int)vRealL[i]); // 8000Hz 115 | displayBand(Right,6,(int)vRealL[i]); // 8000Hz 116 | } 117 | if (i >288 ) { 118 | displayBand(Left,7,(int)vRealL[i]); // 16000Hz 119 | displayBand(Right,7,(int)vRealL[i]); // 16000Hz 120 | } 121 | //Serial.println(i); 122 | } 123 | for (byte band = 0; band <= 7; band++) display.drawHorizontalLine(1+16*band,64-peakL[band],14); // Only the Left check for peaks 124 | } 125 | if (millis()%4 == 0) { 126 | for (byte band = 0; band <= 7; band++) { 127 | if (peakL[band] > 0 || peakR[band] > 0) { 128 | peakL[band] -= 1; // Decay the peaks 129 | peakR[band] -= 1; // Decay the peaks 130 | } 131 | } 132 | } 133 | display.display(); 134 | } 135 | 136 | void displayBand(bool channel, int band, int dsize){ 137 | int dmax = 50; 138 | // For now, display spectrum for Left then Right in quick succession 139 | dsize /= amplitude; 140 | if (dsize > dmax) dsize = dmax; 141 | for (int s = 0; s <= dsize; s=s+2){display.drawHorizontalLine(1+16*band,64-s, 14);} 142 | if (dsize >peakL[band]) {peakL[band] = dsize;} 143 | if (dsize >peakR[band]) {peakR[band] = dsize;} 144 | if (channel == Left) Serial.println("Left LEDs"); // turn on left lights at column = band and heigth = dsize 145 | if (channel == Right) Serial.println("Right LEDs"); // turn on right lights at column = band and heigth = dsize 146 | } 147 | -------------------------------------------------------------------------------- /font.h: -------------------------------------------------------------------------------- 1 | // Created by http://oleddisplay.squix.ch/ Consider a donation 2 | // In case of problems make sure that you are using the font file with the correct version! 3 | const uint8_t Dialog_plain_8[] PROGMEM = { 4 | 0x08, // Width: 8 5 | 0x0A, // Height: 10 6 | 0x20, // First Char: 32 7 | 0xE0, // Numbers of Chars: 224 8 | 9 | // Jump Table: 10 | 0xFF, 0xFF, 0x00, 0x03, // 32:65535 11 | 0x00, 0x00, 0x03, 0x03, // 33:0 12 | 0x00, 0x03, 0x07, 0x04, // 34:3 13 | 0x00, 0x0A, 0x0B, 0x07, // 35:10 14 | 0x00, 0x15, 0x09, 0x05, // 36:21 15 | 0x00, 0x1E, 0x0F, 0x08, // 37:30 16 | 0x00, 0x2D, 0x0B, 0x06, // 38:45 17 | 0x00, 0x38, 0x03, 0x02, // 39:56 18 | 0x00, 0x3B, 0x05, 0x03, // 40:59 19 | 0x00, 0x40, 0x05, 0x03, // 41:64 20 | 0x00, 0x45, 0x07, 0x04, // 42:69 21 | 0x00, 0x4C, 0x0B, 0x07, // 43:76 22 | 0x00, 0x57, 0x04, 0x03, // 44:87 23 | 0x00, 0x5B, 0x05, 0x03, // 45:91 24 | 0x00, 0x60, 0x03, 0x03, // 46:96 25 | 0x00, 0x63, 0x05, 0x03, // 47:99 26 | 0x00, 0x68, 0x09, 0x05, // 48:104 27 | 0x00, 0x71, 0x07, 0x05, // 49:113 28 | 0x00, 0x78, 0x09, 0x05, // 50:120 29 | 0x00, 0x81, 0x09, 0x05, // 51:129 30 | 0x00, 0x8A, 0x09, 0x05, // 52:138 31 | 0x00, 0x93, 0x09, 0x05, // 53:147 32 | 0x00, 0x9C, 0x09, 0x05, // 54:156 33 | 0x00, 0xA5, 0x09, 0x05, // 55:165 34 | 0x00, 0xAE, 0x09, 0x05, // 56:174 35 | 0x00, 0xB7, 0x09, 0x05, // 57:183 36 | 0x00, 0xC0, 0x03, 0x03, // 58:192 37 | 0x00, 0xC3, 0x04, 0x03, // 59:195 38 | 0x00, 0xC7, 0x0B, 0x07, // 60:199 39 | 0x00, 0xD2, 0x0B, 0x07, // 61:210 40 | 0x00, 0xDD, 0x0B, 0x07, // 62:221 41 | 0x00, 0xE8, 0x07, 0x04, // 63:232 42 | 0x00, 0xEF, 0x0F, 0x08, // 64:239 43 | 0x00, 0xFE, 0x09, 0x05, // 65:254 44 | 0x01, 0x07, 0x09, 0x05, // 66:263 45 | 0x01, 0x10, 0x0B, 0x06, // 67:272 46 | 0x01, 0x1B, 0x0B, 0x06, // 68:283 47 | 0x01, 0x26, 0x09, 0x05, // 69:294 48 | 0x01, 0x2F, 0x07, 0x05, // 70:303 49 | 0x01, 0x36, 0x0B, 0x06, // 71:310 50 | 0x01, 0x41, 0x09, 0x06, // 72:321 51 | 0x01, 0x4A, 0x03, 0x02, // 73:330 52 | 0x01, 0x4D, 0x04, 0x02, // 74:333 53 | 0x01, 0x51, 0x09, 0x05, // 75:337 54 | 0x01, 0x5A, 0x07, 0x04, // 76:346 55 | 0x01, 0x61, 0x0B, 0x07, // 77:353 56 | 0x01, 0x6C, 0x09, 0x06, // 78:364 57 | 0x01, 0x75, 0x0B, 0x06, // 79:373 58 | 0x01, 0x80, 0x09, 0x05, // 80:384 59 | 0x01, 0x89, 0x0B, 0x06, // 81:393 60 | 0x01, 0x94, 0x0B, 0x06, // 82:404 61 | 0x01, 0x9F, 0x09, 0x05, // 83:415 62 | 0x01, 0xA8, 0x09, 0x05, // 84:424 63 | 0x01, 0xB1, 0x09, 0x06, // 85:433 64 | 0x01, 0xBA, 0x09, 0x05, // 86:442 65 | 0x01, 0xC3, 0x0D, 0x08, // 87:451 66 | 0x01, 0xD0, 0x09, 0x05, // 88:464 67 | 0x01, 0xD9, 0x09, 0x05, // 89:473 68 | 0x01, 0xE2, 0x09, 0x05, // 90:482 69 | 0x01, 0xEB, 0x06, 0x03, // 91:491 70 | 0x01, 0xF1, 0x06, 0x03, // 92:497 71 | 0x01, 0xF7, 0x06, 0x03, // 93:503 72 | 0x01, 0xFD, 0x09, 0x07, // 94:509 73 | 0x02, 0x06, 0x08, 0x04, // 95:518 74 | 0x02, 0x0E, 0x03, 0x04, // 96:526 75 | 0x02, 0x11, 0x09, 0x05, // 97:529 76 | 0x02, 0x1A, 0x09, 0x05, // 98:538 77 | 0x02, 0x23, 0x07, 0x04, // 99:547 78 | 0x02, 0x2A, 0x09, 0x05, // 100:554 79 | 0x02, 0x33, 0x09, 0x05, // 101:563 80 | 0x02, 0x3C, 0x05, 0x03, // 102:572 81 | 0x02, 0x41, 0x0A, 0x05, // 103:577 82 | 0x02, 0x4B, 0x09, 0x05, // 104:587 83 | 0x02, 0x54, 0x03, 0x02, // 105:596 84 | 0x02, 0x57, 0x04, 0x02, // 106:599 85 | 0x02, 0x5B, 0x07, 0x05, // 107:603 86 | 0x02, 0x62, 0x03, 0x02, // 108:610 87 | 0x02, 0x65, 0x0F, 0x08, // 109:613 88 | 0x02, 0x74, 0x09, 0x05, // 110:628 89 | 0x02, 0x7D, 0x09, 0x05, // 111:637 90 | 0x02, 0x86, 0x09, 0x05, // 112:646 91 | 0x02, 0x8F, 0x0A, 0x05, // 113:655 92 | 0x02, 0x99, 0x05, 0x03, // 114:665 93 | 0x02, 0x9E, 0x07, 0x04, // 115:670 94 | 0x02, 0xA5, 0x05, 0x03, // 116:677 95 | 0x02, 0xAA, 0x09, 0x05, // 117:682 96 | 0x02, 0xB3, 0x07, 0x05, // 118:691 97 | 0x02, 0xBA, 0x0B, 0x07, // 119:698 98 | 0x02, 0xC5, 0x07, 0x05, // 120:709 99 | 0x02, 0xCC, 0x09, 0x05, // 121:716 100 | 0x02, 0xD5, 0x07, 0x04, // 122:725 101 | 0x02, 0xDC, 0x08, 0x05, // 123:732 102 | 0x02, 0xE4, 0x04, 0x03, // 124:740 103 | 0x02, 0xE8, 0x07, 0x05, // 125:744 104 | 0x02, 0xEF, 0x0B, 0x07, // 126:751 105 | 0x02, 0xFA, 0x08, 0x05, // 127:762 106 | 0x03, 0x02, 0x08, 0x05, // 128:770 107 | 0x03, 0x0A, 0x08, 0x05, // 129:778 108 | 0x03, 0x12, 0x08, 0x05, // 130:786 109 | 0x03, 0x1A, 0x08, 0x05, // 131:794 110 | 0x03, 0x22, 0x08, 0x05, // 132:802 111 | 0x03, 0x2A, 0x08, 0x05, // 133:810 112 | 0x03, 0x32, 0x08, 0x05, // 134:818 113 | 0x03, 0x3A, 0x08, 0x05, // 135:826 114 | 0x03, 0x42, 0x08, 0x05, // 136:834 115 | 0x03, 0x4A, 0x08, 0x05, // 137:842 116 | 0x03, 0x52, 0x08, 0x05, // 138:850 117 | 0x03, 0x5A, 0x08, 0x05, // 139:858 118 | 0x03, 0x62, 0x08, 0x05, // 140:866 119 | 0x03, 0x6A, 0x08, 0x05, // 141:874 120 | 0x03, 0x72, 0x08, 0x05, // 142:882 121 | 0x03, 0x7A, 0x08, 0x05, // 143:890 122 | 0x03, 0x82, 0x08, 0x05, // 144:898 123 | 0x03, 0x8A, 0x08, 0x05, // 145:906 124 | 0x03, 0x92, 0x08, 0x05, // 146:914 125 | 0x03, 0x9A, 0x08, 0x05, // 147:922 126 | 0x03, 0xA2, 0x08, 0x05, // 148:930 127 | 0x03, 0xAA, 0x08, 0x05, // 149:938 128 | 0x03, 0xB2, 0x08, 0x05, // 150:946 129 | 0x03, 0xBA, 0x08, 0x05, // 151:954 130 | 0x03, 0xC2, 0x08, 0x05, // 152:962 131 | 0x03, 0xCA, 0x08, 0x05, // 153:970 132 | 0x03, 0xD2, 0x08, 0x05, // 154:978 133 | 0x03, 0xDA, 0x08, 0x05, // 155:986 134 | 0x03, 0xE2, 0x08, 0x05, // 156:994 135 | 0x03, 0xEA, 0x08, 0x05, // 157:1002 136 | 0x03, 0xF2, 0x08, 0x05, // 158:1010 137 | 0x03, 0xFA, 0x08, 0x05, // 159:1018 138 | 0xFF, 0xFF, 0x00, 0x03, // 160:65535 139 | 0x04, 0x02, 0x04, 0x03, // 161:1026 140 | 0x04, 0x06, 0x07, 0x05, // 162:1030 141 | 0x04, 0x0D, 0x07, 0x05, // 163:1037 142 | 0x04, 0x14, 0x09, 0x05, // 164:1044 143 | 0x04, 0x1D, 0x09, 0x05, // 165:1053 144 | 0x04, 0x26, 0x04, 0x03, // 166:1062 145 | 0x04, 0x2A, 0x08, 0x04, // 167:1066 146 | 0x04, 0x32, 0x07, 0x04, // 168:1074 147 | 0x04, 0x39, 0x0D, 0x08, // 169:1081 148 | 0x04, 0x46, 0x07, 0x04, // 170:1094 149 | 0x04, 0x4D, 0x09, 0x05, // 171:1101 150 | 0x04, 0x56, 0x0B, 0x07, // 172:1110 151 | 0x04, 0x61, 0x05, 0x03, // 173:1121 152 | 0x04, 0x66, 0x0D, 0x08, // 174:1126 153 | 0x04, 0x73, 0x05, 0x04, // 175:1139 154 | 0x04, 0x78, 0x05, 0x04, // 176:1144 155 | 0x04, 0x7D, 0x0B, 0x07, // 177:1149 156 | 0x04, 0x88, 0x05, 0x03, // 178:1160 157 | 0x04, 0x8D, 0x05, 0x03, // 179:1165 158 | 0x04, 0x92, 0x03, 0x04, // 180:1170 159 | 0x04, 0x95, 0x09, 0x05, // 181:1173 160 | 0x04, 0x9E, 0x0A, 0x05, // 182:1182 161 | 0x04, 0xA8, 0x03, 0x03, // 183:1192 162 | 0x04, 0xAB, 0x06, 0x04, // 184:1195 163 | 0x04, 0xB1, 0x05, 0x03, // 185:1201 164 | 0x04, 0xB6, 0x07, 0x04, // 186:1206 165 | 0x04, 0xBD, 0x09, 0x05, // 187:1213 166 | 0x04, 0xC6, 0x0F, 0x08, // 188:1222 167 | 0x04, 0xD5, 0x0F, 0x08, // 189:1237 168 | 0x04, 0xE4, 0x0F, 0x08, // 190:1252 169 | 0x04, 0xF3, 0x08, 0x04, // 191:1267 170 | 0x04, 0xFB, 0x09, 0x05, // 192:1275 171 | 0x05, 0x04, 0x09, 0x05, // 193:1284 172 | 0x05, 0x0D, 0x09, 0x05, // 194:1293 173 | 0x05, 0x16, 0x09, 0x05, // 195:1302 174 | 0x05, 0x1F, 0x09, 0x05, // 196:1311 175 | 0x05, 0x28, 0x09, 0x05, // 197:1320 176 | 0x05, 0x31, 0x0D, 0x08, // 198:1329 177 | 0x05, 0x3E, 0x0B, 0x06, // 199:1342 178 | 0x05, 0x49, 0x09, 0x05, // 200:1353 179 | 0x05, 0x52, 0x09, 0x05, // 201:1362 180 | 0x05, 0x5B, 0x09, 0x05, // 202:1371 181 | 0x05, 0x64, 0x09, 0x05, // 203:1380 182 | 0x05, 0x6D, 0x03, 0x02, // 204:1389 183 | 0x05, 0x70, 0x03, 0x02, // 205:1392 184 | 0x05, 0x73, 0x03, 0x02, // 206:1395 185 | 0x05, 0x76, 0x03, 0x02, // 207:1398 186 | 0x05, 0x79, 0x0B, 0x06, // 208:1401 187 | 0x05, 0x84, 0x09, 0x06, // 209:1412 188 | 0x05, 0x8D, 0x0B, 0x06, // 210:1421 189 | 0x05, 0x98, 0x0B, 0x06, // 211:1432 190 | 0x05, 0xA3, 0x0B, 0x06, // 212:1443 191 | 0x05, 0xAE, 0x0B, 0x06, // 213:1454 192 | 0x05, 0xB9, 0x0B, 0x06, // 214:1465 193 | 0x05, 0xC4, 0x0B, 0x07, // 215:1476 194 | 0x05, 0xCF, 0x0B, 0x06, // 216:1487 195 | 0x05, 0xDA, 0x09, 0x06, // 217:1498 196 | 0x05, 0xE3, 0x09, 0x06, // 218:1507 197 | 0x05, 0xEC, 0x09, 0x06, // 219:1516 198 | 0x05, 0xF5, 0x09, 0x06, // 220:1525 199 | 0x05, 0xFE, 0x09, 0x05, // 221:1534 200 | 0x06, 0x07, 0x09, 0x05, // 222:1543 201 | 0x06, 0x10, 0x09, 0x05, // 223:1552 202 | 0x06, 0x19, 0x09, 0x05, // 224:1561 203 | 0x06, 0x22, 0x09, 0x05, // 225:1570 204 | 0x06, 0x2B, 0x09, 0x05, // 226:1579 205 | 0x06, 0x34, 0x09, 0x05, // 227:1588 206 | 0x06, 0x3D, 0x09, 0x05, // 228:1597 207 | 0x06, 0x46, 0x09, 0x05, // 229:1606 208 | 0x06, 0x4F, 0x0F, 0x08, // 230:1615 209 | 0x06, 0x5E, 0x08, 0x04, // 231:1630 210 | 0x06, 0x66, 0x09, 0x05, // 232:1638 211 | 0x06, 0x6F, 0x09, 0x05, // 233:1647 212 | 0x06, 0x78, 0x09, 0x05, // 234:1656 213 | 0x06, 0x81, 0x09, 0x05, // 235:1665 214 | 0x06, 0x8A, 0x03, 0x02, // 236:1674 215 | 0x06, 0x8D, 0x03, 0x02, // 237:1677 216 | 0x06, 0x90, 0x03, 0x02, // 238:1680 217 | 0x06, 0x93, 0x03, 0x02, // 239:1683 218 | 0x06, 0x96, 0x09, 0x05, // 240:1686 219 | 0x06, 0x9F, 0x09, 0x05, // 241:1695 220 | 0x06, 0xA8, 0x09, 0x05, // 242:1704 221 | 0x06, 0xB1, 0x09, 0x05, // 243:1713 222 | 0x06, 0xBA, 0x09, 0x05, // 244:1722 223 | 0x06, 0xC3, 0x09, 0x05, // 245:1731 224 | 0x06, 0xCC, 0x09, 0x05, // 246:1740 225 | 0x06, 0xD5, 0x0B, 0x07, // 247:1749 226 | 0x06, 0xE0, 0x09, 0x05, // 248:1760 227 | 0x06, 0xE9, 0x09, 0x05, // 249:1769 228 | 0x06, 0xF2, 0x09, 0x05, // 250:1778 229 | 0x06, 0xFB, 0x09, 0x05, // 251:1787 230 | 0x07, 0x04, 0x09, 0x05, // 252:1796 231 | 0x07, 0x0D, 0x09, 0x05, // 253:1805 232 | 0x07, 0x16, 0x09, 0x05, // 254:1814 233 | 0x07, 0x1F, 0x09, 0x05, // 255:1823 234 | 235 | // Font Data: 236 | 0x00,0x00,0xBC, // 33 237 | 0x00,0x00,0x0C,0x00,0x00,0x00,0x0C, // 34 238 | 0x00,0x00,0xA8,0x00,0x7C,0x00,0xEA,0x00,0x3E,0x00,0x28, // 35 239 | 0x00,0x00,0x98,0x00,0xA8,0x00,0xFC,0x01,0xA8, // 36 240 | 0x00,0x00,0x1C,0x00,0x14,0x00,0xDC,0x00,0x30,0x00,0xEC,0x00,0xA0,0x00,0xE0, // 37 241 | 0x00,0x00,0x60,0x00,0xBC,0x00,0xF4,0x00,0xC4,0x00,0xA0, // 38 242 | 0x00,0x00,0x0C, // 39 243 | 0x00,0x00,0x7C,0x00,0x82, // 40 244 | 0x00,0x00,0x82,0x00,0x7C, // 41 245 | 0x24,0x00,0x18,0x00,0x3C,0x00,0x18, // 42 246 | 0x00,0x00,0x20,0x00,0x20,0x00,0xF8,0x00,0x20,0x00,0x20, // 43 247 | 0x00,0x00,0x80,0x01, // 44 248 | 0x00,0x00,0x20,0x00,0x20, // 45 249 | 0x00,0x00,0x80, // 46 250 | 0x80,0x01,0x70,0x00,0x0C, // 47 251 | 0x00,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x78, // 48 252 | 0x00,0x00,0x84,0x00,0xFC,0x00,0x80, // 49 253 | 0x00,0x00,0x84,0x00,0xC4,0x00,0xA4,0x00,0x98, // 50 254 | 0x00,0x00,0x84,0x00,0xA4,0x00,0xA4,0x00,0xD8, // 51 255 | 0x00,0x00,0x60,0x00,0x58,0x00,0xFC,0x00,0x40, // 52 256 | 0x00,0x00,0x9C,0x00,0x94,0x00,0x94,0x00,0x64, // 53 257 | 0x00,0x00,0x78,0x00,0xAC,0x00,0xA4,0x00,0xE4, // 54 258 | 0x00,0x00,0x04,0x00,0x84,0x00,0x74,0x00,0x0C, // 55 259 | 0x00,0x00,0xD8,0x00,0xA4,0x00,0xA4,0x00,0xD8, // 56 260 | 0x00,0x00,0x9C,0x00,0x94,0x00,0xD4,0x00,0x78, // 57 261 | 0x00,0x00,0x90, // 58 262 | 0x00,0x00,0x90,0x01, // 59 263 | 0x00,0x00,0x20,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x48, // 60 264 | 0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50, // 61 265 | 0x00,0x00,0x48,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x20, // 62 266 | 0x00,0x00,0x04,0x00,0xB4,0x00,0x0C, // 63 267 | 0x00,0x00,0x70,0x00,0x88,0x00,0x74,0x01,0x54,0x01,0x74,0x01,0x4C,0x00,0x38, // 64 268 | 0x80,0x00,0x70,0x00,0x4C,0x00,0x70,0x00,0x80, // 65 269 | 0x00,0x00,0xFC,0x00,0xA4,0x00,0xA4,0x00,0xDC, // 66 270 | 0x00,0x00,0x78,0x00,0xCC,0x00,0x84,0x00,0x84,0x00,0x88, // 67 271 | 0x00,0x00,0xFC,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x78, // 68 272 | 0x00,0x00,0xFC,0x00,0xA4,0x00,0xA4,0x00,0xA4, // 69 273 | 0x00,0x00,0xFC,0x00,0x24,0x00,0x24, // 70 274 | 0x00,0x00,0x78,0x00,0x8C,0x00,0x84,0x00,0x94,0x00,0x78, // 71 275 | 0x00,0x00,0xFC,0x00,0x20,0x00,0x20,0x00,0xFC, // 72 276 | 0x00,0x00,0xFC, // 73 277 | 0x00,0x02,0xFC,0x03, // 74 278 | 0x00,0x00,0xFC,0x00,0x30,0x00,0x68,0x00,0xC4, // 75 279 | 0x00,0x00,0xFC,0x00,0x80,0x00,0x80, // 76 280 | 0x00,0x00,0xFC,0x00,0x1C,0x00,0x70,0x00,0x1C,0x00,0xFC, // 77 281 | 0x00,0x00,0xFC,0x00,0x18,0x00,0x60,0x00,0xFC, // 78 282 | 0x00,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x78, // 79 283 | 0x00,0x00,0xFC,0x00,0x14,0x00,0x14,0x00,0x1C, // 80 284 | 0x00,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x84,0x01,0x78, // 81 285 | 0x00,0x00,0xFC,0x00,0x14,0x00,0x34,0x00,0x6C,0x00,0x80, // 82 286 | 0x00,0x00,0x98,0x00,0x94,0x00,0xB4,0x00,0xE4, // 83 287 | 0x04,0x00,0x04,0x00,0xFC,0x00,0x04,0x00,0x04, // 84 288 | 0x00,0x00,0x7C,0x00,0x80,0x00,0x80,0x00,0x7C, // 85 289 | 0x04,0x00,0x38,0x00,0xC0,0x00,0x38,0x00,0x04, // 86 290 | 0x0C,0x00,0xF0,0x00,0x78,0x00,0x04,0x00,0x78,0x00,0xF0,0x00,0x0C, // 87 291 | 0x84,0x00,0x4C,0x00,0x30,0x00,0x4C,0x00,0x84, // 88 292 | 0x04,0x00,0x0C,0x00,0xF0,0x00,0x0C,0x00,0x04, // 89 293 | 0x00,0x00,0x84,0x00,0xE4,0x00,0xB4,0x00,0x8C, // 90 294 | 0x00,0x00,0xFC,0x01,0x04,0x01, // 91 295 | 0x0C,0x00,0x70,0x00,0x80,0x01, // 92 296 | 0x00,0x00,0x04,0x01,0xFC,0x01, // 93 297 | 0x00,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x08, // 94 298 | 0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, // 95 299 | 0x00,0x00,0x04, // 96 300 | 0x00,0x00,0xE0,0x00,0xB0,0x00,0xB0,0x00,0xF0, // 97 301 | 0x00,0x00,0xFE,0x00,0x90,0x00,0x90,0x00,0x60, // 98 302 | 0x00,0x00,0x60,0x00,0x90,0x00,0x90, // 99 303 | 0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0xFE, // 100 304 | 0x00,0x00,0x60,0x00,0xB0,0x00,0xB0,0x00,0xB0, // 101 305 | 0x10,0x00,0xFE,0x00,0x12, // 102 306 | 0x00,0x00,0x60,0x00,0x90,0x02,0x90,0x02,0xF0,0x01, // 103 307 | 0x00,0x00,0xFE,0x00,0x10,0x00,0x10,0x00,0xF0, // 104 308 | 0x00,0x00,0xF4, // 105 309 | 0x00,0x02,0xF4,0x03, // 106 310 | 0x00,0x00,0xFE,0x00,0x60,0x00,0x90, // 107 311 | 0x00,0x00,0xFE, // 108 312 | 0x00,0x00,0xF0,0x00,0x10,0x00,0x10,0x00,0xF0,0x00,0x10,0x00,0x10,0x00,0xF0, // 109 313 | 0x00,0x00,0xF0,0x00,0x10,0x00,0x10,0x00,0xF0, // 110 314 | 0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60, // 111 315 | 0x00,0x00,0xF0,0x03,0x90,0x00,0x90,0x00,0x60, // 112 316 | 0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0xF0,0x03, // 113 317 | 0x00,0x00,0xF0,0x00,0x10, // 114 318 | 0x00,0x00,0xB0,0x00,0xB0,0x00,0xD0, // 115 319 | 0x10,0x00,0xF8,0x00,0x90, // 116 320 | 0x00,0x00,0xF0,0x00,0x80,0x00,0x80,0x00,0xF0, // 117 321 | 0x10,0x00,0xE0,0x00,0xE0,0x00,0x10, // 118 322 | 0x30,0x00,0xC0,0x00,0x30,0x00,0x30,0x00,0xC0,0x00,0x30, // 119 323 | 0x90,0x00,0xF0,0x00,0xF0,0x00,0x90, // 120 324 | 0x00,0x00,0x10,0x02,0xE0,0x03,0x60,0x00,0x10, // 121 325 | 0x00,0x00,0x90,0x00,0xD0,0x00,0xF0, // 122 326 | 0x00,0x00,0x20,0x00,0xDC,0x01,0x04,0x01, // 123 327 | 0x00,0x00,0xFC,0x03, // 124 328 | 0x00,0x00,0x04,0x01,0xDC,0x01,0x20, // 125 329 | 0x00,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x40, // 126 330 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 127 331 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 128 332 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 129 333 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 130 334 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 131 335 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 132 336 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 133 337 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 134 338 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 135 339 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 136 340 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 137 341 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 138 342 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 139 343 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 140 344 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 141 345 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 142 346 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 143 347 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 144 348 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 145 349 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 146 350 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 147 351 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 148 352 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 149 353 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 150 354 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 151 355 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 152 356 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 153 357 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 154 358 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 155 359 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 156 360 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 157 361 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 158 362 | 0xFC,0x01,0x04,0x01,0x04,0x01,0xFC,0x01, // 159 363 | 0x00,0x00,0xD0,0x03, // 161 364 | 0x00,0x00,0xF0,0x00,0xF8,0x01,0x90, // 162 365 | 0xA0,0x00,0xFC,0x00,0xA4,0x00,0xA4, // 163 366 | 0x88,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x88, // 164 367 | 0x54,0x00,0x58,0x00,0xE0,0x00,0x58,0x00,0x54, // 165 368 | 0x00,0x00,0xDC,0x01, // 166 369 | 0x00,0x00,0x3C,0x01,0x54,0x01,0xE4,0x01, // 167 370 | 0x00,0x00,0x04,0x00,0x00,0x00,0x04, // 168 371 | 0x00,0x00,0x78,0x00,0xCC,0x00,0xB4,0x00,0xB4,0x00,0xCC,0x00,0x78, // 169 372 | 0x00,0x00,0x58,0x00,0x5C,0x00,0x5C, // 170 373 | 0x00,0x00,0x60,0x00,0xF0,0x00,0x60,0x00,0xF0, // 171 374 | 0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60, // 172 375 | 0x00,0x00,0x20,0x00,0x20, // 173 376 | 0x00,0x00,0x78,0x00,0xCC,0x00,0xB4,0x00,0xB4,0x00,0xCC,0x00,0x78, // 174 377 | 0x00,0x00,0x04,0x00,0x04, // 175 378 | 0x00,0x00,0x0C,0x00,0x0C, // 176 379 | 0x00,0x00,0x90,0x00,0x90,0x00,0xFC,0x00,0x90,0x00,0x90, // 177 380 | 0x00,0x00,0x14,0x00,0x1C, // 178 381 | 0x00,0x00,0x1C,0x00,0x14, // 179 382 | 0x00,0x00,0x04, // 180 383 | 0x00,0x00,0xF0,0x03,0x80,0x00,0x80,0x00,0xF0, // 181 384 | 0x00,0x00,0x3C,0x00,0xFC,0x01,0x04,0x00,0xFC,0x01, // 182 385 | 0x00,0x00,0x20, // 183 386 | 0x00,0x00,0x00,0x02,0x00,0x03, // 184 387 | 0x00,0x00,0x14,0x00,0x1C, // 185 388 | 0x00,0x00,0x5C,0x00,0x54,0x00,0x5C, // 186 389 | 0x00,0x00,0xF0,0x00,0x60,0x00,0xF0,0x00,0x60, // 187 390 | 0x00,0x00,0x14,0x00,0x9C,0x00,0x70,0x00,0x18,0x00,0x04,0x00,0xC0,0x00,0xE0, // 188 391 | 0x00,0x00,0x14,0x00,0x9C,0x00,0x70,0x00,0x18,0x00,0x04,0x00,0xA0,0x00,0xE0, // 189 392 | 0x00,0x00,0x1C,0x00,0x94,0x00,0x60,0x00,0x18,0x00,0x04,0x00,0xC0,0x00,0xE0, // 190 393 | 0x00,0x00,0x00,0x03,0xD0,0x02,0x00,0x02, // 191 394 | 0x80,0x00,0x70,0x00,0x4E,0x00,0x72,0x00,0x80, // 192 395 | 0x80,0x00,0x70,0x00,0x4E,0x00,0x72,0x00,0x80, // 193 396 | 0x80,0x00,0x70,0x00,0x4C,0x00,0x70,0x00,0x80, // 194 397 | 0x80,0x00,0x72,0x00,0x4E,0x00,0x72,0x00,0x80, // 195 398 | 0x80,0x00,0x72,0x00,0x4C,0x00,0x72,0x00,0x80, // 196 399 | 0x80,0x00,0x60,0x00,0x5F,0x00,0x60,0x00,0x80, // 197 400 | 0x80,0x00,0x70,0x00,0x4C,0x00,0xFC,0x00,0xA4,0x00,0xA4,0x00,0xA4, // 198 401 | 0x00,0x00,0x78,0x00,0xCC,0x02,0x84,0x03,0x84,0x00,0x88, // 199 402 | 0x00,0x00,0xFC,0x00,0xA6,0x00,0xA6,0x00,0xA4, // 200 403 | 0x00,0x00,0xFC,0x00,0xA6,0x00,0xA6,0x00,0xA4, // 201 404 | 0x00,0x00,0xFC,0x00,0xA6,0x00,0xA6,0x00,0xA4, // 202 405 | 0x00,0x00,0xFC,0x00,0xA6,0x00,0xA4,0x00,0xA6, // 203 406 | 0x02,0x00,0xFE, // 204 407 | 0x02,0x00,0xFE, // 205 408 | 0x02,0x00,0xFE, // 206 409 | 0x02,0x00,0xFC, // 207 410 | 0x20,0x00,0xFC,0x00,0xA4,0x00,0x84,0x00,0xCC,0x00,0x78, // 208 411 | 0x00,0x00,0xFC,0x00,0x1A,0x00,0x62,0x00,0xFC, // 209 412 | 0x00,0x00,0x78,0x00,0x86,0x00,0x86,0x00,0x84,0x00,0x78, // 210 413 | 0x00,0x00,0x78,0x00,0x86,0x00,0x86,0x00,0x84,0x00,0x78, // 211 414 | 0x00,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x78, // 212 415 | 0x00,0x00,0x78,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0x78, // 213 416 | 0x00,0x00,0x78,0x00,0x86,0x00,0x84,0x00,0x86,0x00,0x78, // 214 417 | 0x00,0x00,0x88,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x88, // 215 418 | 0x00,0x00,0xB8,0x00,0xE4,0x00,0x94,0x00,0x8C,0x00,0x74, // 216 419 | 0x00,0x00,0x7C,0x00,0x82,0x00,0x82,0x00,0x7C, // 217 420 | 0x00,0x00,0x7C,0x00,0x82,0x00,0x82,0x00,0x7C, // 218 421 | 0x00,0x00,0x7C,0x00,0x82,0x00,0x82,0x00,0x7C, // 219 422 | 0x00,0x00,0x7E,0x00,0x80,0x00,0x80,0x00,0x7E, // 220 423 | 0x04,0x00,0x0E,0x00,0xF2,0x00,0x0C,0x00,0x04, // 221 424 | 0x00,0x00,0xFC,0x00,0x28,0x00,0x28,0x00,0x38, // 222 425 | 0x00,0x00,0xFC,0x00,0x02,0x00,0x9A,0x00,0xE4, // 223 426 | 0x00,0x00,0xE4,0x00,0xB0,0x00,0xB0,0x00,0xF0, // 224 427 | 0x00,0x00,0xE4,0x00,0xB0,0x00,0xB0,0x00,0xF0, // 225 428 | 0x00,0x00,0xE0,0x00,0xB4,0x00,0xB4,0x00,0xF0, // 226 429 | 0x00,0x00,0xE0,0x00,0xBC,0x00,0xBC,0x00,0xF0, // 227 430 | 0x00,0x00,0xE0,0x00,0xB4,0x00,0xB4,0x00,0xF0, // 228 431 | 0x00,0x00,0xE0,0x00,0xB6,0x00,0xB6,0x00,0xF0, // 229 432 | 0x00,0x00,0xE0,0x00,0xB0,0x00,0xB0,0x00,0x60,0x00,0xB0,0x00,0xB0,0x00,0xB0, // 230 433 | 0x00,0x00,0x60,0x00,0x90,0x02,0x90,0x03, // 231 434 | 0x00,0x00,0x60,0x00,0xB4,0x00,0xB0,0x00,0xB0, // 232 435 | 0x00,0x00,0x60,0x00,0xB4,0x00,0xB0,0x00,0xB0, // 233 436 | 0x00,0x00,0x60,0x00,0xB4,0x00,0xB4,0x00,0xB0, // 234 437 | 0x00,0x00,0x60,0x00,0xB4,0x00,0xB0,0x00,0xB4, // 235 438 | 0x04,0x00,0xF0, // 236 439 | 0x04,0x00,0xF0, // 237 440 | 0x04,0x00,0xF4, // 238 441 | 0x04,0x00,0xF0, // 239 442 | 0x00,0x00,0x60,0x00,0x94,0x00,0x9C,0x00,0x70, // 240 443 | 0x00,0x00,0xFC,0x00,0x1C,0x00,0x1C,0x00,0xF0, // 241 444 | 0x00,0x00,0x64,0x00,0x90,0x00,0x90,0x00,0x60, // 242 445 | 0x00,0x00,0x64,0x00,0x90,0x00,0x90,0x00,0x60, // 243 446 | 0x00,0x00,0x60,0x00,0x94,0x00,0x94,0x00,0x60, // 244 447 | 0x00,0x00,0x60,0x00,0x9C,0x00,0x9C,0x00,0x60, // 245 448 | 0x00,0x00,0x64,0x00,0x90,0x00,0x90,0x00,0x64, // 246 449 | 0x00,0x00,0x20,0x00,0x20,0x00,0xA8,0x00,0x20,0x00,0x20, // 247 450 | 0x00,0x00,0xF0,0x00,0xD0,0x00,0xB0,0x00,0xF0, // 248 451 | 0x00,0x00,0xF4,0x00,0x80,0x00,0x80,0x00,0xF0, // 249 452 | 0x00,0x00,0xF4,0x00,0x80,0x00,0x80,0x00,0xF0, // 250 453 | 0x00,0x00,0xF0,0x00,0x84,0x00,0x84,0x00,0xF0, // 251 454 | 0x00,0x00,0xF0,0x00,0x84,0x00,0x84,0x00,0xF0, // 252 455 | 0x00,0x00,0x14,0x02,0xE0,0x03,0x60,0x00,0x10, // 253 456 | 0x00,0x00,0xFE,0x03,0x90,0x00,0x90,0x00,0x60, // 254 457 | 0x00,0x00,0x14,0x02,0xE0,0x03,0x64,0x00,0x10 // 255 458 | }; 459 | --------------------------------------------------------------------------------