From 556cc8ace0633ddb6313f2c5dcaba44e29a0a87a Mon Sep 17 00:00:00 2001 From: CalisJI Date: Tue, 20 Aug 2024 16:26:40 +0700 Subject: [PATCH] update --- src/gif_frames.h | 449 ++++++----------------------------------------- src/main.cpp | 303 +++++++++++++++++++++++--------- 2 files changed, 271 insertions(+), 481 deletions(-) diff --git a/src/gif_frames.h b/src/gif_frames.h index 3f8d716..b087962 100644 --- a/src/gif_frames.h +++ b/src/gif_frames.h @@ -5,76 +5,24 @@ const uint16_t gif_frame_0[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5B0C, 0x5AEB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31C7, -0x738E, 0x6B6D, 0x31A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x4A8A, 0x73CF, 0x73AE, 0x4A49, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x5AEC, 0x73AE, 0x73AE, 0x5ACB, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0x5AEC, 0x632D, 0x632D, -0x5AEC, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4229, 0x6B4D, -0x530E, 0x530E, 0x6B4D, 0x4229, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x3A08, 0x4249, 0x52AB, 0x6B6D, 0x5B0C, -0x5AEC, 0x4B71, 0x5D9A, 0x5D9A, 0x4B71, 0x5AEC, 0x5B0C, 0x6B6D, -0x52AB, 0x4249, 0x3A08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x5B0C, 0x6B6E, 0x632D, 0x738E, -0x73AE, 0x5B0C, 0x52ED, 0x4CFA, 0x8F5F, 0x8F5F, 0x4CFA, 0x52ED, -0x5B0C, 0x73AE, 0x738E, 0x632D, 0x6B6E, 0x5B0C, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, 0x73AE, 0x634D, -0x6B4D, 0x73AE, 0x73AE, 0x52AB, 0x4350, 0x4DFE, 0x565F, 0x565F, -0x4DFE, 0x4350, 0x52AB, 0x73AE, 0x73AE, 0x6B4D, 0x634D, 0x73AE, -0x5ACB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A6A, 0x5AEC, -0x6B4D, 0x5B0C, 0x632D, 0x6B6E, 0x6B4D, 0x4A6A, 0x2AF2, 0x4DDE, -0x563F, 0x563F, 0x4DDE, 0x2AF2, 0x4A6A, 0x6B4D, 0x6B6E, 0x632D, -0x5B0C, 0x6B4D, 0x5AEC, 0x4A6A, 0x0000, 0x0000, 0x0000, 0x4249, -0x5AEC, 0x5ACC, 0x5AEC, 0x52AB, 0x52AB, 0x5AEC, 0x52CC, 0x424A, -0x2290, 0x1BD8, 0x2C5A, 0x2C5A, 0x1BD8, 0x2290, 0x424A, 0x52CC, -0x5AEC, 0x52AB, 0x52AB, 0x5ACC, 0x5ACC, 0x5AEC, 0x4249, 0x0000, -0x0000, 0x31A7, 0x39E8, 0x39C8, 0x39C8, 0x31C8, 0x31C8, 0x39C8, -0x31C8, 0x3187, 0x2A6E, 0x0B77, 0x0B77, 0x0B77, 0x0B77, 0x2A6E, -0x3187, 0x31C8, 0x39C8, 0x31C8, 0x31C8, 0x39C8, 0x39C8, 0x39E8, -0x31A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x3A2A, 0x2AAF, 0x1B12, 0x1B12, -0x2AAF, 0x3A2A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2966, 0x4A6B, -0x4A8B, 0x4A8B, 0x4A6B, 0x2966, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x2146, 0x3A0A, 0x3A2B, 0x3A2B, 0x3A0A, 0x2146, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x29C9, 0x3A0A, 0x31E9, 0x31E9, 0x3A0A, 0x29C9, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x222C, 0x432F, 0x432F, -0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2CDB, -0x973E, 0x973E, 0x2CDB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x2CDB, 0x76DF, 0x76DF, 0x2CDB, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0BF9, 0x4DFE, 0x4DFE, 0x0BF9, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, 0x1C7A, 0x1C7A, -0x0398, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x03B8, 0x03B8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CD6, +0x8CD6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xADB8, 0x19AE, +0x19AE, 0xADB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xCE38, 0xBDF6, 0x7453, 0x11F1, 0x3AF5, +0x3AF5, 0x11F1, 0x7453, 0xBDF6, 0xCE38, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x4393, 0x12F8, 0x09D4, 0x008B, 0x1256, +0x1256, 0x008B, 0x09D4, 0x12F8, 0x4393, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x01F6, 0x1A75, 0x4B12, 0x52F0, 0x098F, +0x098F, 0x52F0, 0x4B12, 0x1A75, 0x01F6, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xBCF1, 0xEE56, 0xEE57, 0x0000, 0x63B3, +0x63B3, 0x0000, 0xEE57, 0xEE56, 0xBCF1, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -85,7 +33,6 @@ const uint16_t gif_frame_0[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, }; const uint16_t gif_frame_1[] = { @@ -93,82 +40,27 @@ const uint16_t gif_frame_1[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x4A49, 0x4228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x18E3, 0x52AA, 0x4A69, 0x18E3, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x2965, 0x52AA, 0x528A, 0x2945, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31A6, 0x528A, 0x4A69, -0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x39E7, -0x39E7, 0x39E7, 0x39E7, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0841, 0x0020, -0x2124, 0x4A49, 0x39C7, 0x39C7, 0x4A49, 0x2124, 0x0020, 0x0841, -0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x2945, 0x39C7, -0x52AA, 0x39E7, 0x39C7, 0x5AEB, 0x738E, 0x738E, 0x5AEB, 0x39C7, -0x39E7, 0x52AA, 0x39C7, 0x2945, 0x2104, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0x4A49, 0x4228, -0x4208, 0x528A, 0x528A, 0x3186, 0x39E7, 0x6B6D, 0x73AE, 0x73AE, -0x6B6D, 0x39E7, 0x3186, 0x528A, 0x528A, 0x4208, 0x4A49, 0x4A49, -0x18E3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x4208, -0x528A, 0x39E7, 0x4A49, 0x528A, 0x4A69, 0x2945, 0x5AEB, 0x6B6D, -0x738E, 0x738E, 0x6B6D, 0x5AEB, 0x2945, 0x4A69, 0x528A, 0x4A49, -0x39E7, 0x528A, 0x4208, 0x0841, 0x0000, 0x0000, 0x0000, 0x0841, -0x2965, 0x39C7, 0x4228, 0x31A6, 0x4228, 0x4A49, 0x4228, 0x2124, -0x5ACB, 0x6B6D, 0x738E, 0x738E, 0x6B6D, 0x5ACB, 0x2124, 0x4228, -0x4A49, 0x4228, 0x31A6, 0x4228, 0x39C7, 0x2965, 0x0841, 0x0000, -0x0020, 0x2945, 0x31A6, 0x3186, 0x3186, 0x2965, 0x3186, 0x31A6, -0x3186, 0x2104, 0x52AA, 0x630C, 0x6B4D, 0x6B4D, 0x630C, 0x52AA, -0x2104, 0x3186, 0x31A6, 0x3186, 0x2965, 0x3186, 0x3186, 0x31A6, -0x2945, 0x0020, 0x0000, 0x1082, 0x10A2, 0x10A2, 0x10A2, 0x1082, -0x1082, 0x10A2, 0x1082, 0x0861, 0x18E3, 0x5AEB, 0x5AEB, 0x5AEB, -0x5AEB, 0x18E3, 0x0861, 0x1082, 0x10A2, 0x1082, 0x1082, 0x10A2, -0x10A2, 0x10A2, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0x5ACB, -0x5ACB, 0x5ACB, 0x5ACB, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0861, 0x2945, 0x2124, 0x2124, 0x2945, 0x0861, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x18C3, 0x2124, 0x2124, 0x18C3, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x10A2, 0x10A2, 0x10A2, -0x10A2, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0861, -0x18C3, 0x18C3, 0x0861, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x5ACB, 0x632C, 0x632C, 0x5ACB, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x6B4D, 0x738E, 0x738E, 0x6B4D, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x630C, 0x6B6D, 0x6B6D, -0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x630C, -0x6B4D, 0x6B4D, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x632C, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x632C, 0x632C, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CD6, +0x8CD6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xADB8, 0x19AE, +0x19AE, 0xADB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xCE38, 0xBDF6, 0x7453, 0x11F1, 0x3AF5, +0x3AF5, 0x11F1, 0x7453, 0xBDF6, 0xCE38, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x4393, 0x12F8, 0x09D4, 0x008B, 0x1256, +0x1256, 0x008B, 0x09D4, 0x12F8, 0x4393, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0217, 0x1A75, 0x4B12, 0x52F0, 0x098F, +0x098F, 0x52F0, 0x4B12, 0x1A75, 0x0217, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xBCB1, 0xEE36, 0xEE16, 0x0000, 0x63B3, +0x63B3, 0x0000, 0xEE16, 0xEE36, 0xBCB1, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -176,7 +68,6 @@ const uint16_t gif_frame_1[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; const uint16_t gif_frame_2[] = { @@ -184,82 +75,27 @@ const uint16_t gif_frame_2[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A6A, 0x4A69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x6B6E, 0x6B4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x4229, 0x73CF, 0x738E, 0x4208, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x52EB, 0x73CF, 0x73AE, 0x52AA, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5AEC, 0x738E, 0x738E, -0x5AEB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0x630C, -0x630C, 0x630C, 0x630C, 0x39C7, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2145, 0x39C7, 0x2986, -0x4A6A, 0x6B6E, 0x4B2F, 0x4B2F, 0x6B6E, 0x4A6A, 0x2986, 0x39C7, -0x2145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A6A, 0x528B, 0x5B0C, -0x73AF, 0x632D, 0x5B0C, 0x43B3, 0x6E5D, 0x6E5D, 0x43B3, 0x5B0C, -0x632D, 0x73AF, 0x5B0C, 0x528B, 0x4A6A, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A49, 0x6B6D, 0x6B4D, -0x632D, 0x73AE, 0x73AE, 0x5AEC, 0x530E, 0x4D5B, 0x873F, 0x873F, -0x4D5B, 0x530E, 0x5AEC, 0x73AE, 0x73AE, 0x632D, 0x6B6D, 0x6B6D, -0x4A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31C7, 0x632D, -0x73AE, 0x632D, 0x6B6D, 0x73AE, 0x738E, 0x528B, 0x4372, 0x4E1F, -0x563F, 0x563F, 0x4E1F, 0x4372, 0x528B, 0x738E, 0x73AE, 0x6B6D, -0x632D, 0x73AE, 0x632D, 0x31C7, 0x0000, 0x0000, 0x0000, 0x31A7, -0x52AB, 0x5B0C, 0x6B4D, 0x5AEC, 0x634D, 0x6B6E, 0x634D, 0x4A6A, -0x2B33, 0x4DDF, 0x565F, 0x565F, 0x4DDF, 0x2B33, 0x4A6A, 0x634D, -0x6B6E, 0x634D, 0x5AEC, 0x6B4D, 0x5B0C, 0x52AB, 0x31A7, 0x0000, -0x2125, 0x4A8B, 0x5AEC, 0x5AEC, 0x5AEC, 0x52AB, 0x52CC, 0x5AEC, -0x52CC, 0x424A, 0x1A91, 0x23F9, 0x349B, 0x349B, 0x23F9, 0x1A91, -0x424A, 0x52CC, 0x5AEC, 0x52CC, 0x52AB, 0x5AEC, 0x5AEC, 0x5AEC, -0x4A8B, 0x2125, 0x1905, 0x39E8, 0x3A09, 0x3A09, 0x3A09, 0x39E8, -0x39E8, 0x3A09, 0x39E8, 0x31C8, 0x228F, 0x0B97, 0x0B77, 0x0B77, -0x0B97, 0x228F, 0x31C8, 0x39E8, 0x3A09, 0x39E8, 0x39E8, 0x3A09, -0x3A09, 0x3A09, 0x39E8, 0x1905, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E4, 0x3A2B, 0x1AD1, -0x1355, 0x1355, 0x1AD1, 0x3A2B, 0x18E4, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x31C8, 0x4A8B, 0x426B, 0x426B, 0x4A8B, 0x31C8, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x2126, 0x3A2B, 0x424B, 0x424B, 0x3A2B, 0x2126, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x31EA, 0x3A0A, 0x31EA, 0x31EA, -0x3A0A, 0x31EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2989, 0x320B, -0x320A, 0x320A, 0x320B, 0x2989, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x3C76, 0x7DD8, 0x7DD8, 0x3C76, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x03D9, 0x55FE, 0x9F9F, 0x9F9F, 0x55FE, 0x03D9, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x03B8, 0x353D, 0x5E5F, 0x5E5F, -0x353D, 0x03B8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x143A, -0x4DDE, 0x4DFE, 0x143A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0398, 0x0BF9, 0x0BF9, 0x0398, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0398, 0x0398, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CD6, +0x8CD6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xADB8, 0x19AE, +0x19AE, 0xADB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xCE38, 0xBDF6, 0x7453, 0x11F1, 0x3AF5, +0x3AF5, 0x11F1, 0x7453, 0xBDF6, 0xCE38, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x4393, 0x12F8, 0x09D4, 0x008B, 0x1256, +0x1256, 0x008B, 0x09D4, 0x12F8, 0x4393, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0217, 0x1A75, 0x4B12, 0x52F0, 0x098F, +0x098F, 0x52F0, 0x4B12, 0x1A75, 0x0217, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0xBC70, 0xEE57, 0xEE57, 0x0000, 0x63B3, +0x63B3, 0x0000, 0xEE57, 0xEE57, 0xBC70, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -267,191 +103,8 @@ const uint16_t gif_frame_2[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; -const uint16_t gif_frame_3[] = { -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4249, 0x4249, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x6B6D, 0x6B4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x3A08, 0x73AE, 0x738E, 0x39E7, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x52AB, 0x73CF, 0x73AE, 0x4A8A, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5B0C, 0x73AE, 0x73AE, -0x5AEB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0x5AEC, -0x632D, 0x632D, 0x5AEC, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x4229, 0x6B6D, 0x5B0D, 0x5B0D, 0x6B6D, 0x4229, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0x4229, -0x5B0C, 0x4A8A, 0x5ACB, 0x534F, 0x4C76, 0x4C76, 0x534F, 0x5ACB, -0x4A8A, 0x5B0C, 0x4229, 0x39C7, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A8A, 0x632D, -0x630C, 0x6B8E, 0x73CF, 0x632D, 0x5B0D, 0x4477, 0x977F, 0x977F, -0x4477, 0x5B0D, 0x632D, 0x73CF, 0x6B8E, 0x630C, 0x632D, 0x4A8A, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, -0x73CF, 0x632D, 0x634D, 0x73AE, 0x73AE, 0x52CB, 0x4B2F, 0x4DBD, -0x6EBF, 0x6EBF, 0x4DBD, 0x4B2F, 0x52CB, 0x73AE, 0x73AE, 0x632D, -0x632D, 0x73CF, 0x5ACB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x4208, 0x634D, 0x73AE, 0x632D, 0x6B6E, 0x73AE, 0x738E, 0x4A8B, -0x3B73, 0x563F, 0x563F, 0x563F, 0x563F, 0x3B73, 0x4A8B, 0x738E, -0x73AE, 0x6B6E, 0x632D, 0x73AE, 0x634D, 0x4208, 0x0000, 0x0000, -0x0000, 0x39E8, 0x52CB, 0x5AEC, 0x632D, 0x5AEC, 0x632D, 0x6B4D, -0x630D, 0x424A, 0x22F2, 0x459E, 0x563F, 0x563F, 0x459E, 0x22F2, -0x424A, 0x630D, 0x6B4D, 0x632D, 0x5AEC, 0x632D, 0x5AEC, 0x52CB, -0x39E8, 0x0000, 0x2145, 0x52AB, 0x5AEC, 0x5ACC, 0x52CC, 0x4A8B, -0x52CC, 0x5AEC, 0x52AB, 0x422A, 0x1A91, 0x1B98, 0x23F9, 0x23F9, -0x1B98, 0x1A91, 0x422A, 0x52AB, 0x5AEC, 0x52CC, 0x4A8B, 0x52CC, -0x5ACC, 0x5AEC, 0x52AB, 0x2145, 0x1904, 0x31C8, 0x39C8, 0x39C8, -0x31C8, 0x31A7, 0x31C8, 0x39C8, 0x31A7, 0x31A7, 0x228F, 0x0B77, -0x0B77, 0x0B77, 0x0B77, 0x228F, 0x31A7, 0x31A7, 0x39C8, 0x31C8, -0x31A7, 0x31C8, 0x39C8, 0x39C8, 0x31C8, 0x1904, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E4, -0x3A2B, 0x22B1, 0x1334, 0x1334, 0x22B1, 0x3A2B, 0x18E4, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x31C8, 0x4A8B, 0x4A6B, 0x4A6B, 0x4A8B, 0x31C8, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x2125, 0x3A2B, 0x426B, 0x426B, -0x3A2B, 0x2125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31A8, 0x31E9, -0x320A, 0x320A, 0x31E9, 0x31A8, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x29A9, 0x31EA, 0x31EA, 0x31EA, 0x31EA, 0x29A9, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x1AB0, 0x5433, 0x5433, 0x1AB0, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x353C, 0x9F9F, 0x9F9F, -0x353C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, 0x2CFC, -0x6E9F, 0x6E9F, 0x2CFC, 0x0398, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x1419, 0x4DFF, 0x4DFF, 0x1419, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0398, 0x24BB, 0x24BB, 0x0398, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, 0x0398, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0398, 0x0398, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -}; - -const uint16_t gif_frame_4[] = { -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4229, 0x228F, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x6B4D, 0x632D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x3A2B, 0x73AE, 0x6B6D, 0x31C8, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x52AB, 0x73CF, 0x73AE, 0x4A8B, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5B0C, 0x73AE, 0x73AE, -0x52CB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39E7, 0x5AEC, -0x630D, 0x630D, 0x5AEC, 0x39E7, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x4229, 0x6B4D, 0x5B0D, 0x5B0D, 0x6B4D, 0x4229, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x29A9, 0x3A2B, 0x4A8A, -0x632D, 0x5ACB, 0x5AEC, 0x0398, 0x459E, 0x459E, 0x0398, 0x5AEC, -0x5ACB, 0x632D, 0x4A8A, 0x3A2B, 0x29A9, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, 0x632D, -0x630D, 0x738E, 0x73AE, 0x5B0C, 0x5B0D, 0x4DBD, 0x0000, 0x0000, -0x4DBD, 0x5B0D, 0x5B0C, 0x73AE, 0x738E, 0x630D, 0x632D, 0x5ACB, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5AEC, -0x73CF, 0x630D, 0x632D, 0x73AE, 0x6B6D, 0x52AB, 0x0398, 0x563F, -0x9F9F, 0x9F9F, 0x563F, 0x0398, 0x52AB, 0x738E, 0x73AE, 0x632D, -0x630D, 0x73CF, 0x5AEC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x4249, 0x632D, 0x6B6D, 0x4B2F, 0x6B4D, 0x73AE, 0x6B6D, 0x426B, -0x22F2, 0x6EBF, 0x977F, 0x977F, 0x6EBF, 0x22F2, 0x426B, 0x6B6D, -0x73AE, 0x6B4D, 0x4B2F, 0x6B6D, 0x632D, 0x4249, 0x0000, 0x0000, -0x0000, 0x228F, 0x5ACB, 0x5ACB, 0x5B0C, 0x52CB, 0x5AEC, 0x534F, -0x5ACB, 0x4249, 0x22B1, 0x353C, 0x563F, 0x563F, 0x353C, 0x22B1, -0x4249, 0x5ACB, 0x534F, 0x5AEC, 0x5ACB, 0x5B0C, 0x5ACB, 0x5ACB, -0x228F, 0x0000, 0x3186, 0x4A8A, 0x4A8B, 0x4A8B, 0x4A8B, 0x426B, -0x4A8A, 0x4A8B, 0x4A8A, 0x39E8, 0x1AB0, 0x1334, 0x0B77, 0x0B77, -0x1334, 0x1AB0, 0x39E8, 0x4A8A, 0x4A8B, 0x4A8A, 0x426B, 0x4A8B, -0x4A8B, 0x4A8B, 0x4A8A, 0x3186, 0x1904, 0x1904, 0x3186, 0x2145, -0x2145, 0x1904, 0x2145, 0x3186, 0x18E4, 0x31A7, 0x31EA, 0x3B73, -0x23F9, 0x23F9, 0x3B73, 0x31EA, 0x31A7, 0x18E4, 0x3186, 0x2145, -0x1904, 0x2145, 0x2145, 0x2145, 0x1904, 0x1904, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E4, -0x31E9, 0x320A, 0x1A91, 0x1A91, 0x320A, 0x31E9, 0x18E4, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x39C7, 0x426B, 0x4A8A, 0x4A8A, 0x426B, 0x39C7, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x31A7, 0x31C8, 0x31EA, 0x31EA, -0x31C8, 0x31A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31A8, 0x31C8, -0x31C8, 0x31C8, 0x31C8, 0x31A8, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x29A9, 0x39C8, 0x3A08, 0x3A08, 0x39C8, 0x29A9, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0B77, 0x4DFF, 0x4DFF, 0x0B77, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1419, 0x0000, 0x0000, -0x1419, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, 0x4C76, -0x6E9F, 0x6E9F, 0x4C76, 0x0398, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x1B98, 0x2CFC, 0x24BB, 0x1B98, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0398, 0x4477, 0x5433, 0x0398, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1B98, 0x1B98, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0398, 0x0398, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -}; - -const int num_frames = 5; -const int frame_width = 26; -const int frame_height = 27; +const int num_frames = 3; +const int frame_width = 16; +const int frame_height = 16; diff --git a/src/main.cpp b/src/main.cpp index d75dd12..b04b51b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #pragma region Matrix Config #define R1_PIN 4 #define G1_PIN 5 @@ -29,7 +30,6 @@ #define PANE_HEIGHT PANEL_HEIGHT #define NUM_PIXELS PANE_WIDTH *PANE_HEIGHT - #define COLOR_GREEN 0x07E0 #define COLOR_RED 0xF800 #define COLOR_BLUE 0x001F @@ -58,27 +58,29 @@ const int floatSize = sizeof(float); const int SCREEN_WIDTH = 128; const int SCREEN_HEIGHT = 128; const int PLAYER_WIDTH = 16; -const int PLAYER_HEIGHT = 8; -const int ENEMY_WIDTH = 16; +const int PLAYER_HEIGHT = 16; +const int ENEMY_WIDTH = 8; const int ENEMY_HEIGHT = 8; const int BULLET_WIDTH = 2; const int BULLET_HEIGHT = 4; const int NUM_ENEMIES = 10; - - -struct Player { - int x, y; - bool alive; +const int MAX_BULLETS = 10; // Số lượng viên đạn tối đa +struct Player +{ + int x, y; + bool alive; }; -struct Enemy { - int x, y; - bool alive; +struct Enemy +{ + int x, y; + bool alive; }; -struct Bullet { - int x, y; - bool active; +struct Bullet +{ + int x, y; + bool active; }; uint32_t rgb565_to_rgb888(uint16_t rgb565) @@ -96,9 +98,9 @@ uint32_t rgb565_to_rgb888(uint16_t rgb565) // Ghép các giá trị RGB888 thành một giá trị 32 bit return (r << 16) | (g << 8) | b; } -Player player ; +Player player; std::vector enemies(NUM_ENEMIES); -Bullet bullet = {0, 0, false}; +Bullet bullets[MAX_BULLETS]; void Initialize_State() { player = {SCREEN_WIDTH / 2 - PLAYER_WIDTH / 2, SCREEN_HEIGHT - PLAYER_HEIGHT - 10, true}; @@ -106,81 +108,204 @@ void Initialize_State() { enemies[i] = {i * (SCREEN_WIDTH / NUM_ENEMIES), 0, true}; } + for (int i = 0; i < MAX_BULLETS; ++i) + { + bullets[i] = {0, 0, false}; + } +} +void fireBullet() +{ + for (int i = 0; i < MAX_BULLETS; ++i) + { + if (!bullets[i].active) + { + bullets[i].x = player.x + PLAYER_WIDTH / 2 - BULLET_WIDTH / 2; + bullets[i].y = player.y - BULLET_HEIGHT; + bullets[i].active = true; + break; // Chỉ bắn một viên đạn tại một thời điểm + } + } +} +int X_player = 0; +void updatePlayer(int x) +{ + // Example: Move player left or right based on input + player.x = x; } -void updatePlayer(int x) { - // Example: Move player left or right based on input - player.x = x; -} -void updateEnemies() { - for (auto& enemy : enemies) { - if (enemy.alive) { - enemy.y += 1; // Move downwards - if (enemy.y > SCREEN_HEIGHT) { - enemy.y = 0; // Reset position if off screen - } - } - } -} -void updateBullet() { - if (bullet.active) { - bullet.y -= 4; // Move upwards - if (bullet.y < 0) { - bullet.active = false; // Deactivate if off screen - } +unsigned long last_enemies_update = millis(); +int enemies_update_rate = 500; +void updateEnemies() +{ + unsigned long now = millis(); + if (now - last_enemies_update < enemies_update_rate) + return; + last_enemies_update = now; + for (auto &enemy : enemies) + { + if (enemy.alive) + { + enemy.y += 1; // Move downwards + if (enemy.y > SCREEN_HEIGHT) + { + enemy.y = 0; // Reset position if off screen + } } + } } -void checkCollisions() { - // Check collision between bullet and enemies - for (auto& enemy : enemies) { - if (enemy.alive && bullet.active && - bullet.x < enemy.x + ENEMY_WIDTH && - bullet.x + BULLET_WIDTH > enemy.x && - bullet.y < enemy.y + ENEMY_HEIGHT && - bullet.y + BULLET_HEIGHT > enemy.y) { - enemy.alive = false; - bullet.active = false; - } - } - - // Check collision between enemies and player - for (auto& enemy : enemies) { - if (enemy.alive && - player.x < enemy.x + ENEMY_WIDTH && - player.x + PLAYER_WIDTH > enemy.x && - player.y < enemy.y + ENEMY_HEIGHT && - player.y + PLAYER_HEIGHT > enemy.y) { - player.alive = false; // Player is hit - } +unsigned long last_bullets_update = millis(); +int bullets_update_speed = 10; +void updateBullets() +{ + unsigned long now = millis(); + if (now - last_bullets_update < bullets_update_speed) + return; + last_bullets_update = now; + for (int i = 0; i < MAX_BULLETS; ++i) + { + if (bullets[i].active) + { + bullets[i].y -= 4; // Di chuyển lên trên + if (bullets[i].y < 0) + { + bullets[i].active = false; // Vô hiệu hóa nếu ra ngoài màn hình + } } + } } -void render() { - dma_display->clearScreen(); - if (player.alive) { - dma_display->drawRect(player.x, player.y, PLAYER_WIDTH, PLAYER_HEIGHT, COLOR_GREEN); - } - - for (const auto& enemy : enemies) { - if (enemy.alive) { - dma_display->drawRect(enemy.x, enemy.y, ENEMY_WIDTH, ENEMY_HEIGHT, COLOR_RED); +unsigned long last_game_over_time = millis(); +int restart_time = 2000; +void checkCollisions() +{ + // Check collision between bullet and enemies + for (int i = 0; i < MAX_BULLETS; ++i) + { + if (bullets[i].active) + { + for (auto &enemy : enemies) + { + if (enemy.alive && + bullets[i].x < enemy.x + ENEMY_WIDTH && + bullets[i].x + BULLET_WIDTH > enemy.x && + bullets[i].y < enemy.y + ENEMY_HEIGHT && + bullets[i].y + BULLET_HEIGHT > enemy.y) + { + enemy.alive = false; + bullets[i].active = false; + break; } + } } + } - if (bullet.active) { - dma_display->drawRect(bullet.x, bullet.y, BULLET_WIDTH, BULLET_HEIGHT, COLOR_WHITE); + // Check collision between enemies and player + for (auto &enemy : enemies) + { + if (enemy.alive && + player.x < enemy.x + ENEMY_WIDTH && + player.x + PLAYER_WIDTH > enemy.x && + player.y < enemy.y + ENEMY_HEIGHT && + player.y + PLAYER_HEIGHT > enemy.y) + { + player.alive = false; // Player is hit + last_game_over_time = millis(); } + } +} +unsigned long last_render_time = millis(); +int render_rate = 20; // Frame rate in frames per second + + +void render() +{ + unsigned long now = millis(); + if (now - last_render_time < 1000 / render_rate) + return; + last_render_time = now; + dma_display->clearScreen(); + if (player.alive) + { + int x = player.x; + int y = player.y; + if (y > 64) + { + y = y - 64; + x = x + 128; + } + dma_display->drawRect(x, y, PLAYER_WIDTH, PLAYER_HEIGHT, COLOR_GREEN); + } + for (auto &enemy : enemies) + { + if (enemy.alive) + { + int x = enemy.x; + int y = enemy.y; + if (y > 64) + { + y = y - 64; + x = x + 128; + } + dma_display->drawRect(x, y, ENEMY_WIDTH, ENEMY_HEIGHT, COLOR_RED); + } + } + for (int i = 0; i < MAX_BULLETS; ++i) + { + if (bullets[i].active) + { + int x = bullets[i].x; + int y = bullets[i].y; + if (y > 64) + { + y = y - 64; + x = x + 128; + } + dma_display->drawRect(x, y, BULLET_WIDTH, BULLET_HEIGHT, COLOR_WHITE); + } + } } unsigned long period_time = millis(); -bool set_FPS(int rate){ +bool set_FPS(int rate) +{ unsigned long now = millis(); - int elapsed = 1000/rate; - if(now - period_time >=elapsed){ + int elapsed = 1000 / rate; + if (now - period_time >= elapsed) + { period_time = now; return true; } - else return false; + else + return false; +} +const char *text = "Game Over"; +bool game_over = false; + +void Game_Over() +{ + if(!game_over){ + game_over = true; + last_game_over_time = millis(); + } + // Font metrics + int textWidth = 0; + int textHeight = 0; + int cursorX = 0; + int cursorY = 0; + + // Calculate text dimensions (approximated for example) + textWidth = strlen(text) * 11; // Assuming each character is approximately 6 pixels wide + textHeight = 8; // Assuming font height is 8 pixels + + // Compute the center position + cursorX = (128 - textWidth) / 2; + cursorY = (64 + textHeight) / 2; + + // Set the cursor position + dma_display->setCursor(cursorX, cursorY); + + // Print text on the matrix + dma_display->print(text); } void setup() { @@ -189,12 +314,15 @@ void setup() dma_display->begin(); // setup the LED matrix dma_display->setBrightness8(200); // 0-255 dma_display->clearScreen(); + dma_display->setTextColor(dma_display->color333(7, 7, 7)); //) + dma_display->setTextSize(1); + dma_display->setFont(&FreeMono9pt7b); + Initialize_State(); } + void loop() { - // server.handleClient(); - #pragma region Serial processing while (Serial.available() > 0) { @@ -221,8 +349,6 @@ void loop() int expectedSize = numRows * numCols * floatSize; if (bufferIndex >= (2 * sizeof(int) + expectedSize)) { - //dma_display->clearScreen(); - for (int row = 0; row < numRows; ++row) { for (int col = 0; col < numCols; ++col) @@ -238,18 +364,29 @@ void loop() if (player.alive) { int x = (int)data[0][0]; + int f = (int)data[0][2]; updatePlayer(x); - updateEnemies(); - updateBullet(); - checkCollisions(); - render(); + if (f == 1) + fireBullet(); + } + else + { + //Game_Over(); } } - // Reset chỉ số chỉ mục sau khi xử lý } bufferIndex = 0; } + if(!player.alive) Game_Over(); + unsigned long now = millis(); + if(now-last_game_over_time >= restart_time && !player.alive){ + Initialize_State(); + } + //if(game_over) return; + updateEnemies(); + updateBullets(); + checkCollisions(); + render(); #pragma endregion - }