Drawing images with transparency in L8 setups

What do you want to achieve?

Drawing a PNG with transparency in it overtop another PNG that I drew.

What have you tried so far?

My display (256 x 64, 4bpp) is set to LV_COLOR_FORMAT_L8. I use a 8-bit 16 KB array for its buffer (256x64x8bpp/8) for its buffer, and then when I flush the display, I copy/translate it over to a parallel 8 KB array (256x64x4bpp/8) and send that to my actual OLED.

I have a single screen created, on that screen I can successfully draw a background image and have it show up on the OLED. The image is created using the python converter, with a format of --cf L8. This image was 256x64 and came from a PNG file that had no transparency (i.e. fills the entire OLED).

Now I want to put a smaller 20x20 PNG that does have transparency in certain areas over the original image. If I:

  • convert that new PNG with --cf L8, then when I draw it over the background image, no transparency is used (the transparent sections in the smaller PNG show up as black over top)
  • convert that new PNG with --cf AL88, then when I draw it over the background image, nothing appears over top

Code to reproduce

Code snippet:

    _LVGL_oDisplay = lv_display_create(CI_LVGL_CANVASWIDTH, CI_LVGL_CANVASHEIGHT);
    lv_display_set_buffers(
        _LVGL_oDisplay,
        _LVGL_axDisplayBuffer,
        NULL,
        CI_LVGL_CANVASBYTESIZE_8BPP,
        LV_DISPLAY_RENDER_MODE_DIRECT
    );
    lv_display_set_color_format(_LVGL_oDisplay, LV_COLOR_FORMAT_L8);

    _SCRN_oScreen = lv_obj_create(NULL);
    lv_obj_set_style_bg_color(_SCRN_oScreen , lv_color_black(), LV_PART_MAIN);
    lv_obj_set_scrollbar_mode(_SCRN_oScreen , LV_SCROLLBAR_MODE_OFF);

    _SCRN_oBackground = lv_image_create(_SCRN_oScreen);
    lv_image_set_src(_SCRN_oBackground, &imgLogo);
    lv_obj_set_align(_SCRN_oBackground, LV_ALIGN_CENTER);

    _SCRN_oIcon = lv_image_create(_SCRN_oScreen);
    lv_image_set_src(_SCRN_oIcon, &imgTransparencyTest);
    lv_obj_set_align(_SCRN_oIcon, LV_ALIGN_CENTER);

Small 20x20 image C code from convertor at L8:


#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_LVGL_H_INCLUDE_SYSTEM)
#include <lvgl.h>
#elif defined(LV_BUILD_TEST)
#include "../lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif

#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif

#ifndef LV_ATTRIBUTE_IMGTRANSPARENCYTEST
#define LV_ATTRIBUTE_IMGTRANSPARENCYTEST
#endif

static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMGTRANSPARENCYTEST
uint8_t imgTransparencyTest_map[] = {

    //data here, 1600 B (40x40x1B)

};

const lv_image_dsc_t imgTransparencyTest = {
  .header = {
    .magic = LV_IMAGE_HEADER_MAGIC,
    .cf = LV_COLOR_FORMAT_L8,
    .flags = 0,
    .w = 40,
    .h = 40,
    .stride = 40,
    .reserved_2 = 0,
  },
  .data_size = sizeof(imgTransparencyTest_map),
  .data = imgTransparencyTest_map,
  .reserved = NULL,
};

Small 20x20 image C code, for convertor at AL88:


#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_LVGL_H_INCLUDE_SYSTEM)
#include <lvgl.h>
#elif defined(LV_BUILD_TEST)
#include "../lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif

#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif

#ifndef LV_ATTRIBUTE_IMGTRANSPARENCYTEST
#define LV_ATTRIBUTE_IMGTRANSPARENCYTEST
#endif

static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMGTRANSPARENCYTEST
uint8_t imgTransparencyTest_map[] = {

    //data here, 3200 B (40 x 40 x 2B)

};

const lv_image_dsc_t imgTransparencyTest = {
  .header = {
    .magic = LV_IMAGE_HEADER_MAGIC,
    .cf = LV_COLOR_FORMAT_AL88,
    .flags = 0,
    .w = 40,
    .h = 40,
    .stride = 80,
    .reserved_2 = 0,
  },
  .data_size = sizeof(imgTransparencyTest_map),
  .data = imgTransparencyTest_map,
  .reserved = NULL,
};

Screenshot and/or video

Using the L8 converted image:

Using the AL88 converted image:

Environment

  • MCU/MPU/Board: custom hardware platform (STM32H7 based)
  • LVGL version: 9.5.0

I’m reading something about having to use a canvas object, but that would mean I’d need yet another buffer in memory, right?

Anyway to do this without a canvas?

Im not expert for 9.5, but simply your display isnt L8 then system require more special tweaks for G4 displays… Check primary your conversion

Thanks for the reply.

I checked the display buffer (the L8) one before the conversion, and the transparency is not working there either. So I don’t think it’s my L8->4bpp transform.

I’ve dumped out the contents of the _LVGL_axDisplayBuffer (the 8bpp buffer associated with the LVGL display):

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                112333211 5EEEA 1112232111 BFED3 112322111 7EEE9 11222321111DEEC 1112322111 9EEE6 112322211 4EEEB 1112332111 BEED4 112332211 7EEE9 1122232111 CEEC 1112322111 9EEE7 112233211 4DEEB 1112332111 BEEE4 112332211 6EEE9 112223211 5EE              |
|               11 9EEE7 111222211 4DEEB 1112222111 BEEE4 112222211 6EEE9 1112222111 CEED11112222211 8EEE7 111222211 3DEEB 1112222111 AEEE5 112222211 6EEE9 1112222111 CEED21112222211 8EEE7 111222211 3DEEB 1112222111 AEEE5 112222211 5EEEA 11122              |
|               11 AFFF7 111   111 4FFFC 1111   111 CFFF4 111   111 7FFFA 111    11  DFFE  111   111 9FFF8 111   111 3EFFC 1111   111 BFFF5 111   111 6FFFA 111    111 DFFE1 111   111 9FFF8 111   111 3EFFD  111   111 BFFF5 111   111 6FFFB 111                |
|                AEEFFFDEB 4DEEA 5DEFFFEDD4 BEED3 BDEFFFDE9 7DDE8 7EEFFFEDC11CEEB 2CDFFFFDE7 9EDD6 9EEFFFEEB 4DDEA 5DDFFFEDD4 AEED4 BEEFFFDE9 6DDE8 7DEFFFEDC1 CEEC 2CDFFFFDD7 8EDD6 9EEFFFEEB 4DEEA 4DDFFFEDD5 AEDD4 BEEFFFDE9 6DDE9 7DDFFFEDB 4DD              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFF4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFD                                         FFFFFFFE2 EFFE 1EFFFFFFF8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFF4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFD          BDEEEEEEEEEEEEEEEEEEDB         FFFFFFFE2 EFFE 1EFFFFFFF8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                AEEFFFEEB 5DEEA 5DEFFFFDD4 BEED3 BEEFFFEE9 7DEE8 8EEFFFFEC11CEEC 2CEFFFFEE7 9EDD6 9EEFFFEEB       8EFFFFFFFFFFFFFFFFFFFFFFFFE8      DEFFFFEC2 CEEC 1CEFFFFEE7 8EDD6 9EEFFFEEB 4DEEA 4DEFFFFED5 AEED4 BEEFFFEE9 6DDE9 7DEFFFEEB 4DE              |
|               21 9FFF7 111   111 3FFFC  111   111 BFFF5 111   111 6FFFA 111    11  DFFE1 111   111 9FFF8 11     CFFFFFEEEEEEEEEEEEEEEEEEFFFFFC      6FFFB 111    11  DFFE2 111   111 8FFF8 111   111 2EFFD  111   111 BFFF6 111   111 5FFFB 121                |
|               11 9FFE7 111111111 4EFFB 1111111111 BFFE4 111111111 6EFF9 1111111111 CFFD11111111111 9FFF7 11    EFFFB                      BFFFE     6EFFA 1111111111 CFFD21111111111 8FFF8 11111111113DFFC 1111111111 AFFE5 111111111 6EFFA 11111              |
|                112333211 5DEEA 1123333111 BEED3 113333211 7EEE8 11233321111CEEC 1113333111 9EEE6 112333211    CFFF                          FFFC   123332111 CEEC11113333111 9EEE7 112333211 4DEEB 1113333111 AEED4 112433211 6EEE9 112333211 4DE              |
|                12    111 5FFFB  11    11  CFFF3 11    11  7FFF9 121    11  EFFD  11    11  AFFF6 111   121   8FFF                            FFF8  21    21  DFFD  11    11  9FFF7 111   121 3FFFC  11    11  CFFF4 12    12  6FFFA  11    21 4FF              |
|               D7 8DDD6 9DDFFFEDB 4CDDA 4DDEFFFDD5 ADDC4 ADDFFFED9 6DDD9 7DDFFFFDC2 BDDB11CDEFFFDD7 8DDD7 8D  EFF                              FFE   5DDD9 6DDFFFFDC3 BDDC2 CDEFFFDD8 7DDD7 8DDFFFEDB 3CDDB 3CDEFFFDD6 9DDD5 ADDFFFEDA 5DDD9 6DDFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AF  FFB                        8D    CFF   6FFFA 7FFFFFFFF3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AF BFF                         FFD    FFB  7FFFB 7FFFFFFFF3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               E7 9EEE7 9EEFFFFEB 4DEEB 5DEFFFFEE5 AEED4 BEFFFFEEA 6EEE9 7EEFFFFED2 CEEC11CEFFFFEE8 8EEE7 9E DFF            AEFFFFEA     AF8    FFD  6EEE9 7EEFFFFED3 CEED2 CEFFFFEE8 8EEE7 9EEFFFFEC 3DEEB 4DEFFFFEE6 AEED5 BEEFFFEEA 5DEEA 6EEFF              |
|                212222111 6FFFB 2112121112 DFFE31112222112 9FFF9 21122221113EFFD 2111221112 BFFF7 211122112  EFE          AFFFFFFFFFFA          EFE 1122211112EFFD 1112212112 AFFF7 111222112 5FFFC 2212222112 CFFF41112212112 8FFFA 21212211115FF              |
|                111   111 5FFFB 111    111 CFFF4 11    111 8FFF9 111   12111EFFD 111    111 AFFF7 111   121  EFE         DFFFFDBBDFFFFD         EFE 11   1111 DFFE 111    111 9FFF7 111   121 4FFFC 111    111 CFFF5 11    111 7FFFA 111   111 5FF              |
|               11 8EED6 1138896 114DEEA 1117998211 AEED4 114888511 6DEE9 1117897111 CEEC111 5888411 8EDE7 11 EFE        DFFF9      9FFFD        EFE  6DEE9 1117997111 BEEC211 5888411 8EED7 1128897 113DEEB 11 6988311 AEED5 1148895 1 5DEE9 11388              |
|               2  9FFF7  21    21 3FFFC  12    12  CFFF4  2     2  6FFFA  11    21  DFFE  12     2  9FFF7  2 EFE       AFFF          FFF9       EFE  6FFFA  11    11  DFFE   2     2  9FFF8  21    21 1EFFD  12    12  BFFF5  2     21 5FFFB  21                |
|                7ADFFFCA8 39AA7 4ABFFFEA93 8AA92 8ADFFFBA6 5AAA6 5ABFFFDA9119AA8129AEFFFAA5 6AAA4 7ACFFFCA8  EFE       FFF            FFF       EFE ABFFFDA9119AA9119AEFFFBA5 6AAA5 7ACFFFCA8 39AA8 39AFFFEAA4 7AA93 8ADFFFBA7 4AAA6 5ABFFFDA8 39A              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFF4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFD  EFE      AFF9            9FF9      EFE FFFFFFFE2 EFFE 1EFFFFFFF8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFE4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFC  EFE      EFF              FFE      EFE FFFFFFFE1 DFFD 1EFFFFFFF8 AFFF7 AFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 CFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFE4 DFFFFFFFA 8FFF9 9FFFFFFFE11EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFC  EFE      FFD              DFF      EFE FFFFFFFE2 DFFD 1EFFFFFFF8 9FFF7 AFFFFFFFD 4EFFC 5FFFFFFFF6 BFFF5 CFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                57BFFFA76 27775 378FFFD772167772167CFFF875 47774 479FFFC761167761267DFFE774 57773 57AFFFA76  EFE      FFB              BFF      EFE 79FFFC761167761167DFFE774 47773 57AFFFA761277751277EFFD773 57772 67CFFF975 37775 479FFFC76 277              |
|               2  AFFF7  21    21 3FFFC  12    11  CFFF4  2     21 7FFFA  11    11  DFFE  12     2  9FFF8  1 EFE      FFB              BFF      EFE  6FFFA  11    11  DFFE  12     2  9FFF8  21    21 2EFFD  12    12  BFFF5  2     21 6FFFB  21                |
|               11 699941114ABB8 1139997 11 8BBA311 7999311 5BAB6 1149996 2119BB911118998111 7BBA511 59995111 EFE      FFD              DFF      EFE 149996 1119BB911118998211 6BBA5 1 599951113ABB8 2128997 11 8BBA311 6999311 5ABB7 1149996 113AB              |
|                12     2  4FFFB  21    21  CFFF2 12    12  7FFF9  2     21  EFFD  11    11  AFFF7  2     2   EFE      EFF              FFD      EFE 2     21  EFFE  12    11  AFFF7  2     2  3FFFC  11    21  CFFF4 12    12  6FFFA  21    21 4FF              |
|               95 69994 69AFFFC98 39997 399DFFF993 79993 79AFFFB96 49996 599EFFE982189981189CFFFA95 59995 69 EFE      AFF9            AFF9      EFE  49996 499EFFE992189982189BFFFA95 59995 699FFFD98 28997 399DFFFA94 69993 79AFFFC97 49996 49AFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 CFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AF EFE       FFF            FFF       EFE  6FFFA 7FFFFFFFF3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 CFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AF EFE       AFFF          FFF9       EFE  6FFFA 7FFFFFFFE3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               F8 AFFF7 AFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 CFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AF EFE        DFFF9      AFFFD        EFE  6FFFA 7FFFFFFFE3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               84 58884 58AFFFC76 27886 378EFFE873 68872 67BFFFB75 38885 488FFFD772178871177CFFF984 58884 58 EFE         DFFFFDBBDFFFFD         EFE  38885 488FFFE872178872177CFFF985 48884 589FFFC771278861277DFFF884 58883 68AFFFB76 37885 488FF              |
|                12     2  4FFFB  11    21  CFFF3 12    12  7FFF9  2     21  EFFD  12    11  AFFF7 12     2   EFE          9FFFFFFFFFF9          EFE 2     21  EFFE  12    11  AFFF7 12     2  3FFFC  11    21  CFFF4 12    12  6FFFA  21    21 4FF              |
|                1 6AAA5 114CDD9 1139AA8 11 ADDC311 7AA9311 6DDD8 114AAA6 111BDDB 1118AA9111 8DDD6 1 6AAA5 11 DFF            9EFFFFD9            FFD 14AAA7 111BDDB11118AA9211 8DDD6 1 6AAA5 113CDDA 1129AA8 11 9DDC411 7AAA411 6CDD8 114AAA7 114CD              |
|               21 AFFF7 121    21 4FFFC  12    111 CFFF4 11     21 7FFFA  11    11  DFFE  12    121 9FFF8 11 BFF                                FFB  6FFFA  11    11  DFFE1 12     21 9FFF8 111    21 2EFFD  12    111 BFFF5 121    21 6FFFB 121                |
|               144BFFF9441255541247FFFD452145542144CFFF7531255531348FFFB441145541245EFFE653135552134AFFF9441  FFB                              CFF  48FFFB441145541144DFFE653135553134AFFFA441255541246EFFD452145552144CFFF7431255531348FFFB441255              |
|                BFFFFFFFB 5EFFB 6EFFFFFFE4 CFFE4 CFFFFFFFA 7FFF9 8FFFFFFFD11DFFD 2DFFFFFFF7 9FFF7 AFFFFFFFC   EFF                              FFE  FFFFFFFD2 DFFD 1DFFFFFFF8 9FFF7 AFFFFFFFC 4EFFB 5EFFFFFFE5 BFFE5 CFFFFFFFA 7FFFA 7FFFFFFFC 5EF              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFE4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFC   8FFF                            FFF8  FFFFFFFE2 DFFE 1EFFFFFFF8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 CFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                BFFFFFFFC 5FFFB 6FFFFFFFF5 CFFF4 DFFFFFFFA 8FFF9 9FFFFFFFE 1EFFD 2EFFFFFFF8 AFFF7 BFFFFFFFD    CFFF                          FFFC   FFFFFFFE2 EFFE 1EFFFFFFF8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFC 5FF              |
|                8CDFFFDC9 4BCC8 5BCFFFECB3 9CCB3 ACEFFFCC8 6BCC7 6CCFFFEBA11ACCA 2BBEFFFCC6 7CCB5 8CDFFFDC9     EFFFC                      CFFFD    CCFFFEBB21ACCA11BBEFFFCC6 7CCB6 8CDFFFDCA 3BCC9 4BCFFFECB4 9CCB4 9BDFFFCC8 5BCC7 6BCFFFDC9 4BC              |
|               2  9FFF7  21    21 3FFFC  12    11  CFFF4  2     2  6FFFA  11    11  DFFE  12     2  9FFF7  2     CFFFFFEEEEEEEEEEEEEEEEEEFFFFFC      6FFFA  11    11  DFFE   2     2  9FFF8  21    21 1EFFD  12    12  BFFF5  2     21 5FFFB  21                |
|               11 8DDD6 11255641114CDDA 1114665211 ADDC41213566311 6DDD9 1115665111 BDDC11114655311 8DDD7 11      8EFFFFFFFFFFFFFFFFFFFFFFFFE8       5DDD9 1115665111 BDDC21113665311 7DDD7 11256641113CDDB 1114655211 9DDD5 113566411 5DDD9 11256              |
|                12    111 5EFFB 111    11  CFFE3 11    111 7FFF9 111    21  DFFD  11    111 AFFF7 12     21          BDEEEEEEEEEEEEEEEEEEDB         11    11  DFFD  11    111 9FFF7 12     11 4EFFC 111    11  BFFE4 11    111 6FFFA 111    11 5EF              |
|               321344421346FFFB231244431242CFFE5421344421338FFF9331244431243EFFD341144441143AFFF732134442134                                        1244431243DFFE341134441143AFFF8321244421345FFFC331244431242CFFF6421344421337FFFA331244431246FF              |
|               F8 9FEE7 AFEFFFFFC 4EFFB 5EEFFFFEE5 BFFE4 CFFFFFFFA 6EEF9 7EEFFFFED2 CFFD11DFFFFFEF8 9FFE7 9FEFFFFFC 3DFFB 4EEFFFFEE6 BFFE5 BFEFFFFFB 6EFFA 7EEFFFFEE3 CFFD2 DFFFFFFF8 8FEE8 9FEFFFFFC 3DFFC 4EFFFFFFE6 AFFE5 BFEFFFFFB 6EFFA 6EFFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AFFFFFFFD 4FFFC 5FFFFFFFF6 BFFF5 CFFFFFFFB 6FFFA 7FFFFFFFF3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               F8 AFFF7 BFFFFFFFD 4FFFC 5FFFFFFFF6 CFFF5 DFFFFFFFB 7FFFA 8FFFFFFFE2 DFFE1 EFFFFFFF9 9FFF8 AFFFFFFFD 4FFFC 5FFFFFFFF6 BFFF5 CFFFFFFFB 7FFFB 7FFFFFFFF3 DFFE2 EFFFFFFF9 9FFF8 AFFFFFFFD 3EFFD 4FFFFFFFF7 BFFF6 CFFFFFFFC 6FFFB 7FFFF              |
|               C6 7CCC6 8CDFFFECA 3BCC9 4CCFFFFCC4 9CCC4 ACDFFFDC8 5CCC8 6CCFFFECB2 ACCB11BCEFFFDC7 7CCC6 8CDFFFECA 3BCCA 4CCFFFFCC5 9CCC4 9CDFFFDC9 5CCC8 6CCFFFECB2 ACCB2 BCEFFFDC7 7CCC6 8CCFFFECA 2BCCA 3BCEFFFCC5 8CCC4 9CDFFFDC9 5CCC8 5CCFF              |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
|                                                                                                                                                                                                                                                                |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

NOTE: I’ve made all 0x00 bytes print as spaces so it’s easy to visually see