Frontend: Add a powered-off window/welcome screen

This commit is contained in:
Connor McLaughlin 2019-10-20 20:37:21 +10:00
parent 884378045d
commit 0e6d1d5629
9 changed files with 8103 additions and 479 deletions

View File

@ -49,7 +49,6 @@ bool HostInterface::InitializeSystem(const char* filename, const char* exp1_file
m_system->SetExpansionROM(exp1_filename);
// Resume execution.
m_running = true;
return true;
}

View File

@ -33,5 +33,5 @@ protected:
std::unique_ptr<AudioStream> m_audio_stream;
std::unique_ptr<System> m_system;
bool m_running = false;
bool m_running = true;
};

View File

@ -49,6 +49,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="icon.cpp" />
<ClCompile Include="sdl_audio_mixer.cpp" />
<ClCompile Include="sdl_audio_stream.cpp" />
<ClCompile Include="sdl_interface.cpp" />

View File

@ -5,6 +5,7 @@
<ClCompile Include="sdl_audio_mixer.cpp" />
<ClCompile Include="sdl_interface.cpp" />
<ClCompile Include="sdl_audio_stream.cpp" />
<ClCompile Include="icon.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="sdl_audio_mixer.h" />

7975
src/duckstation/icon.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,461 +1,9 @@
#pragma once
static constexpr int ICON_WIDTH = 64;
static constexpr int ICON_HEIGHT = 64;
static constexpr unsigned int ICON_DATA[ICON_WIDTH * ICON_HEIGHT] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C2FF, 0x0500C2FF,
0x0A00C2FF, 0x0000C0FF, 0x0000CCFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C3FF, 0x0000C8FF, 0x2300C2FF,
0x8B00C2FF, 0xAE00C2FF, 0x4600C2FF, 0x0600C1FF, 0x0000C1FF, 0x0000CEFF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C1FF, 0x0100C1FF, 0x0600C2FF, 0x0100C2FF, 0x0000C1FF,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C3FF, 0x0000C1FF, 0x1300C2FF, 0x6C00C2FF,
0xD700C2FF, 0xFE00C2FF, 0xFF00C2FF, 0xEF00C2FF, 0x9A00C2FF, 0x2D00C2FF, 0x0100C1FF, 0x0000C1FF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x0000C0FF, 0x0000C2FF, 0x0C00C2FF, 0x5C00C2FF, 0xAD00C2FF, 0x5D00C2FF,
0x0C00C2FF, 0x0000C2FF, 0x0000C0FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C2FF, 0x0800C3FF, 0x4E00C2FF, 0xBF00C2FF,
0xFA00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xE000C2FF, 0x7A00C2FF, 0x1900C2FF,
0x0000C2FF, 0x0000C2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x0000C2FF, 0x0400C3FF, 0x3E00C2FF, 0xAF00C2FF, 0xF700C2FF, 0xFF00C2FF,
0xF700C2FF, 0xB000C2FF, 0x3F00C2FF, 0x0400C3FF, 0x0000C2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C2FF, 0x0200C3FF, 0x3300C2FF, 0xA300C2FF, 0xF200C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFD00C2FF,
0xCB00C2FF, 0x5B00C2FF, 0x0C00C2FF, 0x0000C2FF, 0x0000CFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00009FF8, 0x0000FFFF, 0x2600C1FE, 0x9200C2FF, 0xEC00C1FF, 0xFF00C1FF, 0xFF00C1FF,
0xFF00C1FF, 0xFF00C1FF, 0xFF00C1FF, 0xEC00C1FF, 0x9200C1FF, 0x2600BEFF, 0x0000FFFF, 0x0000BEFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x0000C1FF, 0x0000C9FF, 0x1E00C2FF, 0x8300C2FF, 0xE500C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xF700C2FF, 0xB000C2FF, 0x3F00C2FF, 0x0400C2FF, 0x0000C2FF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x000072FC, 0x0A0065FD, 0xB30089F5, 0xFF00A8FA, 0xFF00B5FF, 0xFF00B5FF,
0xFF00B4FF, 0xFF00B4FF, 0xFF00B4FF, 0xFF00B4FF, 0xFF00B5FF, 0xFF00B5FF, 0xB000BBFF, 0x0A00CEFF, 0x0000C9FF,
0x00000000, 0x00000000, 0x0000E0FF, 0x0000C2FF, 0x0F00C2FF, 0x6300C2FF, 0xD100C2FF, 0xFE00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xEC00C2FF, 0x9100C2FF, 0x2700C2FF, 0x0100C1FF,
0x0000C2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x0D0068FF, 0xC70064F6, 0xFF006BE6, 0xFD008DF0,
0xFE00AAFD, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFE00B0FF, 0xFD00B1FF, 0xFF00B4FF, 0xC300C6FF, 0x0D00D4FF,
0x0000CEFF, 0x00000000, 0x0000C2FF, 0x0600C2FF, 0x4600C2FF, 0xB700C2FF, 0xF900C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xDB00C2FF,
0x7200C2FF, 0x1500C2FF, 0x0000C3FF, 0x0000C0FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x0D0067FF, 0xC70067FF, 0xFF0061EC,
0xFF005FDD, 0xFE0072E5, 0xFD0097F5, 0xFE00AEFE, 0xFD00B1FF, 0xFE00B1FF, 0xFF00B0FF, 0xFF00BEFF, 0xC300CEFF,
0x0D00CFFF, 0x0000D0FF, 0x0100F6FF, 0x2D00C6FF, 0x9A00C2FF, 0xEF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFB00C2FF, 0xC400C2FF, 0x5300C3FF, 0x0900C7FF, 0x0000C3FF, 0x0000FFFF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x0D0067FF, 0xC70067FF,
0xFF0066FA, 0xFF005FE2, 0xFF005DDC, 0xFE0061DE, 0xFD008FF2, 0xFE00B1FF, 0xFF00B0FF, 0xFF00B5FF, 0xFF00CAFF,
0xC300CEFF, 0x0D00CEFF, 0x00009FF7, 0x410088F7, 0xDE00AAFA, 0xFF00B9FF, 0xFF00B9FF, 0xFF00B8FF, 0xFF00B8FF,
0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF,
0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF,
0xFF00B8FF, 0xFF00B8FF, 0xFF00B8FF, 0xFF00B9FF, 0xF500B7FF, 0x8500B2FF, 0x0200ABFF, 0x0000B1FF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x0D0067FF,
0xC70067FF, 0xFF0067FF, 0xFF0063F0, 0xFF005EDD, 0xFF005CDC, 0xFE0084EE, 0xFF00B1FF, 0xFF00B0FF, 0xFF00C1FF,
0xFF00CEFF, 0xC300CEFF, 0x0C00CFFF, 0x0B00E5FF, 0x8B0081FB, 0xFF006EEC, 0xFF008DF0, 0xFF00AAFD, 0xFF00B1FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFD00ABFF, 0xFF00A5FF, 0xB400AAFF, 0x0600B9FF, 0x0000B2FF,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF,
0x0D0067FF, 0xC70067FF, 0xFF0067FF, 0xFF0066FC, 0xFF0060E4, 0xFF005DDC, 0xFE0085EE, 0xFF00B1FF, 0xFF00B7FF,
0xFF00CBFF, 0xFF00CEFF, 0xC600CEFF, 0x4D00C4FF, 0xB200C4FF, 0xF7009EFF, 0xFF0064F5, 0xFF005FDF, 0xFF0072E5,
0xFF0097F5, 0xFF00AEFE, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFE00AEFF, 0xFD00A5FF, 0xFE009EFF, 0xFF00A5FF, 0xB400B0FF, 0x0600B3FF,
0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x000067FF, 0x090067FF, 0xAA0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F3, 0xFF005DDD, 0xFE0085EE, 0xFF00B2FF,
0xFF00C3FF, 0xFF00CEFF, 0xFF00CEFF, 0xF300CAFF, 0xEF00C2FF, 0xFF00C4FF, 0xFF009FFF, 0xFF0067FE, 0xFF0061E9,
0xFF005DDC, 0xFF0062DF, 0xFF007CE9, 0xFF009FF8, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFE00AFFF, 0xFD00A8FF, 0xFE00A0FF, 0xFF009DFF, 0xFF009FFF, 0xFF00ADFF, 0xB400B0FF,
0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000069FF, 0x000064FF, 0x1A0067FF, 0x7B0067FF, 0xE00067FF, 0xFF0067FD, 0xFF005FE6, 0xFE0084EE,
0xFF00BAFF, 0xFF00CDFF, 0xFF00CDFF, 0xFF00C8FF, 0xFF00C3FF, 0xFF00C2FF, 0xFF00C4FF, 0xFF009FFF, 0xFF0067FF,
0xFF0065F8, 0xFF005FE0, 0xFF005EDD, 0xFF005DDD, 0xFF0066E0, 0xFF0085ED, 0xFF00A6FB, 0xFF00B1FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFE00B0FF, 0xFD00AAFF, 0xFE00A2FF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF00A7FF, 0xFF00B0FF,
0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x010067FF, 0x2D0067FF, 0x9A0067FF, 0xED0062F4,
0xFE0086F0, 0xFF00C6FF, 0xFF00CAFF, 0xFF00C4FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C4FF, 0xFF009FFF,
0xFF0067FF, 0xFF0067FF, 0xFF0062EC, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF005EDD, 0xFF006CE3, 0xFF0090F2,
0xFF00ABFD, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFD00ACFF, 0xFD00A4FF, 0xFF009EFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF00A0FF, 0xFF00AEFF,
0xFF00B0FF, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008CFF, 0x0A008AFF,
0x80008CFC, 0xF900A3FA, 0xFF00C5FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C4FF,
0xFF009FFF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FA, 0xFF005FE2, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD,
0xFF005FDE, 0xFF0075E6, 0xFF0099F6, 0xFF00AFFE, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFE00AEFF, 0xFD00A6FF, 0xFE009FFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF00A8FF,
0xFF00B0FF, 0xFF00B0FF, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000C2FF, 0x0000C3FF, 0x2400C2FF,
0x8C00C2FF, 0xE700C3FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C4FF, 0xFF009FFF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0063EF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF0063DF, 0xFF007EEA, 0xFF00A1F9, 0xFF00B0FF, 0xFF00B1FF, 0xFF00AFFF,
0xFF00A9FF, 0xFF00A0FF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF00A2FF,
0xFF00AFFF, 0xFF00B1FF, 0xFF00B0FF, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000D2FF, 0x0000BDFF, 0x1300C4FF, 0x6D00C3FF,
0xD700C2FF, 0xFE00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF, 0xFF00C2FF,
0xFF00C2FF, 0xFF00C4FF, 0xFF009FFF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FB, 0xFF0060E4, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF0068E1, 0xFF0089EF, 0xFF00A7FD,
0xFF00A3FF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009EFF,
0xFF00ACFF, 0xFF00ADF9, 0xFF029DE3, 0xFF00AEFD, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000086F9, 0x010038EE, 0x4900B0FC, 0xC000BFFF,
0xFB00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF, 0xFF00BFFF,
0xFF00BFFF, 0xFF00BFFF, 0xFF00C0FF, 0xFF009DFF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F2,
0xFF005EDE, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF0060DE,
0xFF008FF7, 0xFF009EFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF,
0xFF00A3FE, 0xFF0196DA, 0xFF065071, 0xFF15536F, 0xFF02ACF9, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00006BFD, 0x090063FF, 0xBA0079F3,
0xFF0096F4, 0xFF00AFFE, 0xFF00B2FF, 0xFF00B1FF, 0xFF00B1FF, 0xFF00B1FF, 0xFF00B1FF, 0xFF00B1FF, 0xFF00B1FF,
0xFF00B1FF, 0xFF00B1FF, 0xFF00B1FF, 0xFF00B3FF, 0xFF0094FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0066FD, 0xFF0060E6, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF,
0xFF00A0FF, 0xFF0282C2, 0xFF051F2C, 0xFF161111, 0xFF235166, 0xFF01ACF9, 0xB400B0FF, 0x0600B2FF, 0x0000B2FF,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090068FF,
0xBD0065FA, 0xFF0062E5, 0xFD0079E8, 0xFD009EF8, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF0093FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0064F5, 0xFF005EDF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF, 0xFF009DFF,
0xFF009DFF, 0xFF00A8FF, 0xFF026D9D, 0xFF0A090A, 0xFF292524, 0xFF255266, 0xFF01ABF8, 0xB400B1FF, 0x0600B2FF,
0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF,
0x090067FF, 0xBD0067FF, 0xFF0063F2, 0xFF005DDD, 0xFE0065E0, 0xFD0083EC, 0xFE00A5FA, 0xFF00B1FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF0093FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FE, 0xFF0061E9, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009DFF, 0xFF009EFF, 0xFF009DFC, 0xFF009AFB,
0xFF009DFF, 0xFF009FFF, 0xFF00AFFF, 0xFF026E9E, 0xFF1B1919, 0xFF2B3E48, 0xFF1479A7, 0xFF00AFFD, 0xB400B0FF,
0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0066FD, 0xFF0060E6, 0xFF005DDC, 0xFF005DDD, 0xFE006BE2, 0xFD008DF1,
0xFE00AAFD, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF0093FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0065F7, 0xFF005FE0, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009EFF, 0xFF008BE1, 0xFF095687,
0xFF097BC3, 0xFF009FFF, 0xFF00A6FF, 0xFF00B2FF, 0xFF067BB0, 0xFF175B7A, 0xFF0998D8, 0xFF00B0FE, 0xFF00B0FF,
0xB400B0FF, 0x0600B2FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0064F5, 0xFF005EDF, 0xFF005EDD, 0xFF005DDD,
0xFF005FDD, 0xFE0072E6, 0xFD0097F5, 0xFE00AEFE, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF0093FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0062EC, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF7, 0xFF009DFD, 0xFF0267A7, 0xFF052134,
0xFF1E1E1F, 0xFF1075B4, 0xFF00A2FF, 0xFF00AEFF, 0xFF00B0FF, 0xFF01A9F5, 0xFF01AEF9, 0xFF00ADFF, 0xFF00A7FF,
0xFF00B0FF, 0xB400B1FF, 0x0600B1FF, 0x0000B2FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FE, 0xFF0061E9, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFE0062DF, 0xFD007CE9, 0xFE00A0F8, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B1FF,
0xFF0093FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FA,
0xFF005FE2, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF8, 0xFF0097F4, 0xFF04263C,
0xFF100D0C, 0xFF2E2E2E, 0xFF1175B4, 0xFF00AAFF, 0xFF00B0FF, 0xFF00B1FF, 0xFF00AFFF, 0xFF009BFF, 0xFF007AFF,
0xFF0072FF, 0xFF008FFF, 0xB400A7FF, 0x0600B7FF, 0x0000AEFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0065F7,
0xFF005FE0, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFE0066E0, 0xFD0086EE, 0xFE00A7FB,
0xFF00B2FF, 0xFF0094FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0063EF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF8, 0xFF0097F3,
0xFF07283E, 0xFF24201F, 0xFF2D3A44, 0xFF0C83C7, 0xFF00B1FF, 0xFF00B0FF, 0xFF00A2FF, 0xFF0083FF, 0xFF006BFF,
0xFF0066FF, 0xFF0066FF, 0xFF0068FF, 0xE10070FF, 0x580069FF, 0x0A0066FF, 0x000066FF, 0x00006BFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0062EC, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF005EDD,
0xFE006DE3, 0xFD0091F2, 0xFE008FFD, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0066FB, 0xFF0060E4, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE, 0xFF008EF8,
0xFF0096F3, 0xFF113953, 0xFF1F5070, 0xFF0A84CF, 0xFF00A9FC, 0xFF00A9FF, 0xFF008CFF, 0xFF006FFF, 0xFF0066FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xF50067FF, 0xAB0067FF, 0x3A0067FF, 0x030066FF,
0x000066FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0066FA, 0xFF005FE2, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005DDD, 0xFF0060DE, 0xFE0069E7, 0xFF0067F7, 0xFF0068FE, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F2, 0xFF005EDE, 0xFF005EDD, 0xFF005EDD, 0xFF0060DE,
0xFF008EF7, 0xFF009BFA, 0xFF0783D1, 0xFF0298F5, 0xFF00A2FF, 0xFF0095FF, 0xFF0076FF, 0xFF0067FF, 0xFF0067FF,
0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xFF0068FF, 0xE90068FF,
0x8C0068FF, 0x24006BFF, 0x0000B3FF, 0x00007BFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0063EF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005DDD, 0xFF0060DF, 0xFE0064EB, 0xFF0068FA, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FD, 0xFF0060E6, 0xFF005EDD, 0xFF005EDD,
0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009FFF, 0xFF008FFA, 0xFF006EFB, 0xFF005FFF, 0xFF005CFF, 0xFF005DFF,
0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF, 0xFF005DFF,
0xFF005DFF, 0xFE005DFF, 0xD8005BFF, 0x5F0060FF, 0x020097FF, 0x000077FF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF,
0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FB, 0xFF0060E4, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0061E2,
0xFE0067F0, 0xFF006BFE, 0xFF0066FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F5, 0xFF005EDF,
0xFF005EDD, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF009FFF, 0xFF0072E5, 0xFF0033CE, 0xFF003EED, 0xFF0043FE,
0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF, 0xFF0043FF,
0xFF0043FF, 0xFF0043FF, 0xFE0046FF, 0xFF005DFF, 0xBC007CFF, 0x090092FF, 0x000088FF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF,
0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F2, 0xFF005EDE,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF0064E0, 0xFF0094FA, 0xFF0083FF, 0xFF006AFF, 0xFF0066FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FE,
0xFF0061E9, 0xFF005EDC, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF00A1FF, 0xFF0077E3, 0xFF002BB9, 0xFF002EBE,
0xFF0036D6, 0xFF003FF3, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF,
0xFF0041FF, 0xFE0044FF, 0xFD004FFF, 0xFE0067FF, 0xFF0084FF, 0xBD008CFF, 0x09008BFF, 0x00008BFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FD,
0xFF0060E6, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A3F9, 0xFF00AFFF, 0xFF009AFF, 0xFF007AFF, 0xFF0068FF, 0xFF0066FF,
0xFF0067FF, 0xFF0065F7, 0xFF005FE0, 0xFF0060DE, 0xFF008EF7, 0xFF009EFF, 0xFF00A9FF, 0xFF007CE4, 0xFF002BB9,
0xFF002BB9, 0xFF002CB9, 0xFF002FC3, 0xFF0039DF, 0xFF0040F9, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF, 0xFF0042FF,
0xFF0042FF, 0xFE004BFF, 0xFD005CFF, 0xFF006EFF, 0xFF0085FF, 0xFF008BFF, 0xBA008BFF, 0x09008BFF, 0x00008BFF,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0064F5, 0xFF005EDF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B1FF, 0xFF00ABFF, 0xFF0092FF,
0xFF0073FF, 0xFF0067FF, 0xFF0066FF, 0xFF0062EC, 0xFF0060DE, 0xFF008EF7, 0xFF00A1FF, 0xFF00AEFF, 0xFF00A0F7,
0xFF0065D7, 0xFF0037BF, 0xFF002AB9, 0xFF002BB9, 0xFF002CBA, 0xFE0031C8, 0xFE003BE7, 0xFF0041FC, 0xFF0042FF,
0xFE0048FF, 0xFD0058FF, 0xFE0064FF, 0xFF0070FF, 0xFF0085FF, 0xFB008BFF, 0xC2008BFF, 0x49008BFF, 0x01008CFF,
0x00008BFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FE, 0xFF0061E9, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B1FF, 0xFF00A6FF, 0xFF0089FF, 0xFF006EFF, 0xFF0065F9, 0xFF0061E3, 0xFF008EF7, 0xFF00A9FF, 0xFF00B1FF,
0xFF00BAFF, 0xFF00C4FE, 0xFF00A4ED, 0xFF005CCF, 0xFF0030BC, 0xFF002AB9, 0xFF002CB9, 0xFF002DBC, 0xFE0033D0,
0xFD004EF7, 0xFE0062FF, 0xFF0067FF, 0xFF0071FF, 0xFF0086FF, 0xD9008BFF, 0x6F008BFF, 0x14008BFF, 0x00008AFF,
0x00008EFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0065F7, 0xFF005FE0, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF00B0FF, 0xFF00A0FF, 0xFF0080FF, 0xFF0067F0, 0xFF0092F7, 0xFF00B5FF,
0xFF00C3FF, 0xFF00CCFF, 0xFF00CFFF, 0xFF00D0FF, 0xFF00C6FB, 0xFF0092E6, 0xFE004BC7, 0xFE002CBA, 0xFF002CBA,
0xFF002DBB, 0xFF0057EB, 0xFF0068FF, 0xFF0072FF, 0xEB0086FF, 0x8F008CFF, 0x25008BFF, 0x000089FF, 0x00008BFF,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0062EC, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B1FF, 0xFF00ADFF, 0xFF009EFC, 0xFF00B3FC,
0xFF00CBFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CFFF, 0xFF00D0FF, 0xE100BBF7, 0x900042C3,
0xE0002BBA, 0xFF002DBB, 0xFF0057EC, 0xF60072FF, 0xAE0085FF, 0x3D008DFF, 0x04008BFF, 0x00008BFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066F9, 0xFF005FE1,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9,
0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B2FF, 0xFF00C7FF,
0xFF00CFFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xD600CFFF,
0x1A00C7FB, 0x2D0026B7, 0x9E002EBD, 0xC3005AE9, 0x590083FF, 0x0B0094FF, 0x00008EFF, 0x000091FF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF, 0xBD0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0063EF, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0,
0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00BCFF,
0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xD600CEFF, 0x1800CDFF, 0x0000ADF2, 0x090038C6, 0x110059E1, 0x0000FFFF, 0x0000AEFF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x090067FF,
0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0066FB, 0xFF0060E4, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B3FF,
0xFF00C8FF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xD600CEFF, 0x1800CDFF, 0x0000CDFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF,
0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0063F2, 0xFF005EDE, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00BFFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xD600CEFF, 0x1800CDFF, 0x0000CDFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x000067FF, 0x090067FF, 0xBD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FD, 0xFF0060E6, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B5FF, 0xFF00CAFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xD600CEFF, 0x1900CDFF, 0x0000CDFF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000067FF, 0x080067FF, 0xB70067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0064F5, 0xFF005EDE, 0xFF005EDD,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00C1FF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xD100CEFF, 0x1600CDFF, 0x0000CDFF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x000067FF, 0x000068FF, 0x3C0067FF, 0xB30067FF, 0xF70067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FE, 0xFF0061E9,
0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B7FF, 0xFF00CCFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFB00CEFF, 0xC400CEFF, 0x5000CEFF, 0x0300CEFF, 0x0000CEFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000068FF, 0x000067FF, 0x0D0067FF, 0x5E0067FF, 0xCD0067FF,
0xFD0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0065F7, 0xFF005FE0, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF,
0xFF00B0FF, 0xFF00B1FF, 0xFF00C4FF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xDA00CEFF, 0x7100CEFF, 0x1500CEFF, 0x0000CEFF, 0x0000CEFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x000067FF,
0x1B0067FF, 0x7D0067FF, 0xE20067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0062EC, 0xFF005EDD, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF,
0xFF00B0FF, 0xFF00B0FF, 0xFF00B9FF, 0xFF00CDFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CEFF, 0xFF00CEFF, 0xEB00CEFF, 0x9100CEFF, 0x2700CEFF, 0x0100CFFF, 0x0000CFFF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000066FF, 0x020065FF, 0x2F0067FF, 0x9D0067FF, 0xF00067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066F9, 0xFF005FE1, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0, 0xFF00A2F9,
0xFF00B1FF, 0xFF00B0FF, 0xFF00B2FF, 0xFF00C6FF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF,
0xFF00CFFF, 0xF900CDFF, 0xB000CDFF, 0x3E00CEFF, 0x0400CEFF, 0x0000CEFF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x070067FF, 0x490067FF, 0xBA0067FF, 0xF90067FF,
0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0063EF, 0xFF005EDD, 0xFF005EDD, 0xFF0064E0,
0xFF00A2F9, 0xFF00B1FF, 0xFF00B0FF, 0xFF00BCFF, 0xFF00CDFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CFFF,
0xFF00CEFF, 0xFF00B0FF, 0xD1007FFF, 0x190086FF, 0x00007EFF, 0x0000CFFF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x000067FF, 0x100067FF,
0x660067FF, 0xD20067FF, 0xFE0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0066FB, 0xFF0060E3, 0xFF005EDC,
0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00B3FF, 0xFF00C8FF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00CFFF, 0xFF00D0FF,
0xFE00BDFE, 0xFF0085FF, 0xFF0050FF, 0xCA0040FF, 0x0F003FFF, 0x000040FF, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x000066FF, 0x000081FF, 0x1F0067FF, 0x850067FF, 0xE60067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0067FF, 0xFF0063F2,
0xFF005EDD, 0xFF0064E0, 0xFF00A2F9, 0xFF00B1FF, 0xFF00BEFF, 0xFF00CEFF, 0xFF00CEFF, 0xFF00D0FF, 0xFF00C4FB,
0xFD008EE3, 0xF60055EB, 0xFF0042FF, 0xFF0041FF, 0xCD0044FF, 0x150050FF, 0x00004DFF, 0x00006BFF, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x000067FF, 0x020068FF, 0x350067FF, 0xBC0161FB, 0xFF0065FD, 0xFF0068FF,
0xFF0066FD, 0xFF0060E6, 0xFF0064DF, 0xFF00A2F9, 0xFF00B6FF, 0xFF00CAFF, 0xFF00CEFF, 0xFC00CCFE, 0xFC00A2EC,
0xF9005ACD, 0xFB002FBB, 0xF30037E1, 0xFC0043FF, 0xF7004DFF, 0xF0005EFF, 0xA10067FF, 0x300067FF, 0x010068FF,
0x000068FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000542EA, 0x75043CE0, 0xFF0348EB,
0xFF015CF8, 0xFF0067FE, 0xFF0064F4, 0xFF0064E1, 0xFF00A2F9, 0xFF00C2FF, 0xFD00CEFF, 0xCE00D0FF, 0x8500A4ED,
0xEB0036BE, 0xFC002AB9, 0xF4002BB9, 0xEC013EE0, 0xF5005BFF, 0xFB0066FF, 0xFF0067FF, 0xFF0067FF, 0xE20067FF,
0x790067FE, 0x10015AF7, 0x00015EF9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00063BE6, 0x730438DE,
0xFF0539E2, 0xFF0338D6, 0xFD0046DA, 0xFD0060FA, 0xFF0067EC, 0xFF00AAF9, 0xE900CAFF, 0x8200CEFF, 0x1B00DEFF,
0x2B012CC6, 0xE9012DC0, 0xFF002CBA, 0xFE002CB9, 0xF90235C3, 0xF90352E3, 0xFD0165FB, 0xFF0068FF, 0xFE0068FF,
0xFB0162FC, 0xF0034FF0, 0x490441E6, 0x000442E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00063BE6,
0x720439DF, 0xFF0438DD, 0xFF012EC0, 0xF9002DBE, 0xF90044F4, 0xFF005AFA, 0xFF0084FC, 0x920075FF, 0x0100FFFF,
0x000F48D9, 0x36204AD1, 0xEE083ADB, 0xFF0132CF, 0xFF002DBE, 0xFF002BB9, 0xFE012DBB, 0xFB033ECC, 0xFA0358EB,
0xF60256F4, 0xF90442E7, 0xF9053AE2, 0x50053AE2, 0x00053AE2, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00053BE4, 0x700439DE, 0xFF0233CD, 0xFF002CBA, 0xF9002DBF, 0xF9003EF4, 0xFF0043FF, 0xFF0043FF, 0x89003FFF,
0x02FFFF00, 0x3FA6A59F, 0xB59E9FA1, 0xFC6A7DB6, 0xFF244ED4, 0xFF0437DA, 0xFF0130CA, 0xFF002DBC, 0xFF002BB8,
0xFD0534C3, 0xFD063BE0, 0xFF053AE2, 0xFB0438DD, 0x540336D6, 0x000336D7, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000231CA, 0x6C0233CD, 0xFF012DBE, 0xFF002CB9, 0xF9002DBF, 0xF9003EF4, 0xFF0042FF, 0xFF0041FF,
0xA81854F1, 0x90A7A69E, 0xECA6A49E, 0xFFA5A49F, 0xFFA7A59E, 0xFF9499A5, 0xFF566FBF, 0xFF1745D9, 0xFF0235D7,
0xFF002FC4, 0xFF0632C2, 0xFF0639DD, 0xFF0334D3, 0xFB022FC2, 0x550330BF, 0x00032FBF, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00002CBA, 0x62002CBB, 0xF6002CBA, 0xFA002CBA, 0xF8002DBF, 0xF9003EF4, 0xFD0246FF,
0xFA0355FD, 0xF80F69F6, 0xFE5586CE, 0xFF959EA8, 0xFFA7A59E, 0xFFA5A49F, 0xFFA6A59F, 0xFFA6A49F, 0xFF8790AA,
0xFF4262C7, 0xFF0D3EDB, 0xFF0435D3, 0xFF0331C5, 0xE4022EBC, 0x7F0832BB, 0x14113ABF, 0x000F38BE, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00002CB9, 0x64002CBA, 0xFE002CBA, 0xF9002CBA, 0xF2012EBE, 0xF5054BF0,
0xFB0361FF, 0xFE0167FF, 0xFF0067FF, 0xFF0167FE, 0xFF2274EB, 0xFF6F8FBE, 0xFFA3A3A0, 0xFFA5A49F, 0xFFA5A49F,
0xFFA7A59E, 0xFFA2A2A0, 0xFF7886B1, 0xEF2B51C9, 0xA10430BE, 0x310B35BC, 0x022B4EC3, 0x001D43C0, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00012FC4, 0x680130C6, 0xFF012DBE, 0xFF002CB9, 0xFD012CBA,
0xFD063FCB, 0xFF065BEB, 0xFF0267FD, 0xFF0068FF, 0xFF0167FE, 0xFF035EF7, 0xFF225BDD, 0xFF969AA5, 0xFFA6A59F,
0xFFA5A49F, 0xFFA5A49F, 0xF7A5A49F, 0xB0A8A69E, 0x418C92A6, 0x070533C9, 0x002046C1, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00063AE1, 0x670539DE, 0xFE0437DA, 0xFF0231C9,
0xFF002DBC, 0xFF002BB9, 0xFF0331BD, 0xFF0647D4, 0xFF065DF0, 0xFF0952EC, 0xFF063EE4, 0xFF1D49D8, 0xFF9599A6,
0xFFA6A59F, 0xFDA5A49F, 0xCAA5A49F, 0x5BA5A49F, 0x0CA5A49F, 0x00A5A49F, 0x00A5A59F, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C3EDC, 0x180C3DD9, 0x850A3DDE,
0xE6063ADF, 0xFF0436D6, 0xFF0130C4, 0xFF002CBA, 0xFF012CB8, 0xFF0738CD, 0xFF063BE2, 0xFF0339E2, 0xFF1A46D2,
0xFF9398A5, 0xE0A6A59F, 0x7BA5A49F, 0x19A5A49F, 0x00A4A6A0, 0x00A5A39F, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001842D0,
0x022348C5, 0x350E3EDA, 0xA5093CDF, 0xF30639DE, 0xFF0334D1, 0xFF012EC0, 0xFF0534CC, 0xFF0438DD, 0xFF0132CC,
0xF3123ABC, 0x9C888FA5, 0x2DACA99D, 0x01A5A49F, 0x00A5A49F, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x000D3DD8, 0x081743CF, 0x4F0C3EDB, 0xC1083CDF, 0xFB0538DC, 0xFF0434CE, 0xFC012FC1,
0xC8022EBB, 0x540A34BC, 0x075269B3, 0x003151B9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C55B2, 0x000033EF, 0x131341D4, 0x6E0B3DDE, 0xC30635CE,
0x78032FBC, 0x170A35C0, 0x000018B3, 0x004365D1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00244BC4, 0x02214AC7,
0x11123EC9, 0x03103CC9, 0x000E3AC8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000};
constexpr int WINDOW_ICON_WIDTH = 64;
constexpr int WINDOW_ICON_HEIGHT = 64;
extern unsigned int WINDOW_ICON_DATA[WINDOW_ICON_WIDTH * WINDOW_ICON_HEIGHT];
constexpr int APP_ICON_WIDTH = 260;
constexpr int APP_ICON_HEIGHT = 260;
extern unsigned int APP_ICON_DATA[APP_ICON_WIDTH * APP_ICON_HEIGHT];

View File

@ -60,18 +60,22 @@ static int Run(int argc, char* argv[])
}
// create system
if (!host_interface->InitializeSystem(filename, exp1_filename))
const bool boot = (filename != nullptr || exp1_filename != nullptr || !state_filename.IsEmpty());
if (boot)
{
host_interface.reset();
SDL_Quit();
return -1;
if (!host_interface->InitializeSystem(filename, exp1_filename))
{
host_interface.reset();
SDL_Quit();
return -1;
}
host_interface->ConnectDevices();
if (!state_filename.IsEmpty())
host_interface->LoadState(state_filename);
}
host_interface->ConnectDevices();
if (!state_filename.IsEmpty())
host_interface->LoadState(state_filename);
// run
host_interface->Run();

View File

@ -53,9 +53,10 @@ bool SDLInterface::CreateSDLWindow()
}
// Set window icon.
SDL_Surface* icon_surface = SDL_CreateRGBSurfaceFrom(
const_cast<unsigned int*>(ICON_DATA), ICON_WIDTH, ICON_HEIGHT, 32, ICON_WIDTH * sizeof(u32), UINT32_C(0x000000FF),
UINT32_C(0x0000FF00), UINT32_C(0x00FF0000), UINT32_C(0xFF000000));
SDL_Surface* icon_surface =
SDL_CreateRGBSurfaceFrom(const_cast<unsigned int*>(WINDOW_ICON_DATA), WINDOW_ICON_WIDTH, WINDOW_ICON_HEIGHT, 32,
WINDOW_ICON_WIDTH * sizeof(u32), UINT32_C(0x000000FF), UINT32_C(0x0000FF00),
UINT32_C(0x00FF0000), UINT32_C(0xFF000000));
if (icon_surface)
{
SDL_SetWindowIcon(m_window, icon_surface);
@ -171,6 +172,10 @@ void main()
m_display_program.Uniform1i(1, 0);
glGenVertexArrays(1, &m_display_vao);
m_app_icon_texture =
std::make_unique<GL::Texture>(APP_ICON_WIDTH, APP_ICON_HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, APP_ICON_DATA, true);
return true;
}
@ -422,7 +427,8 @@ void SDLInterface::Render()
{
DrawImGui();
m_system->GetGPU()->ResetGraphicsAPIState();
if (m_system)
m_system->GetGPU()->ResetGraphicsAPIState();
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
@ -440,7 +446,8 @@ void SDLInterface::Render()
ImGui::NewFrame();
GL::Program::ResetLastProgram();
m_system->GetGPU()->RestoreGraphicsAPIState();
if (m_system)
m_system->GetGPU()->RestoreGraphicsAPIState();
}
static std::tuple<int, int, int, int> CalculateDrawRect(int window_width, int window_height, float display_ratio)
@ -495,7 +502,10 @@ void SDLInterface::DrawImGui()
{
DrawMainMenuBar();
m_system->DrawDebugWindows();
if (m_system)
m_system->DrawDebugWindows();
else
DrawPoweredOffWindow();
DrawOSDMessages();
@ -579,7 +589,7 @@ void SDLInterface::DrawMainMenuBar()
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Debug"))
if (m_system && ImGui::BeginMenu("Debug"))
{
m_system->DrawDebugMenus();
ImGui::EndMenu();
@ -604,6 +614,71 @@ void SDLInterface::DrawMainMenuBar()
ImGui::EndMainMenuBar();
}
void SDLInterface::DrawPoweredOffWindow()
{
constexpr int WINDOW_WIDTH = 400;
constexpr int WINDOW_HEIGHT = 650;
constexpr int BUTTON_WIDTH = 200;
constexpr int BUTTON_HEIGHT = 40;
ImGui::SetNextWindowSize(ImVec2(WINDOW_WIDTH, WINDOW_HEIGHT));
ImGui::SetNextWindowPosCenter(ImGuiCond_Always);
if (!ImGui::Begin("Powered Off", nullptr,
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoBringToFrontOnFocus))
{
ImGui::End();
}
ImGui::SetCursorPosX((WINDOW_WIDTH - APP_ICON_WIDTH) / 2);
ImGui::Image(reinterpret_cast<ImTextureID>(static_cast<std::uintptr_t>(m_app_icon_texture->GetGLId())),
ImVec2(APP_ICON_WIDTH, APP_ICON_HEIGHT));
ImGui::SetCursorPosY(APP_ICON_HEIGHT + 32);
static const ImVec2 button_size(200.0f, 40.0f);
constexpr float button_left = static_cast<float>((WINDOW_WIDTH - BUTTON_WIDTH) / 2);
ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 8.0f);
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
ImGui::PushStyleColor(ImGuiCol_Button, 0xFF202020);
ImGui::PushStyleColor(ImGuiCol_ButtonActive, 0xFF808080);
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, 0xFF575757);
ImGui::SetCursorPosX(button_left);
ImGui::Button("Resume", button_size);
ImGui::NewLine();
ImGui::SetCursorPosX(button_left);
ImGui::Button("Start Disc", button_size);
ImGui::NewLine();
ImGui::SetCursorPosX(button_left);
if (ImGui::Button("Start BIOS", button_size))
DoStartBIOS();
ImGui::NewLine();
ImGui::SetCursorPosX(button_left);
ImGui::Button("Load State", button_size);
ImGui::NewLine();
ImGui::SetCursorPosX(button_left);
ImGui::Button("Settings", button_size);
ImGui::NewLine();
ImGui::SetCursorPosX(button_left);
if (ImGui::Button("Exit", button_size))
m_running = false;
ImGui::NewLine();
ImGui::PopStyleColor(3);
ImGui::PopStyleVar(2);
ImGui::End();
}
void SDLInterface::AddOSDMessage(const char* message, float duration /*= 2.0f*/)
{
OSDMessage msg;
@ -677,6 +752,19 @@ void SDLInterface::DoReset()
AddOSDMessage("System reset.");
}
void SDLInterface::DoResume() {}
void SDLInterface::DoStartDisc() {}
void SDLInterface::DoStartBIOS()
{
Assert(!m_system);
AddOSDMessage("Starting BIOS...");
InitializeSystem(nullptr, nullptr);
ConnectDevices();
}
void SDLInterface::DoLoadState(u32 index)
{
LoadState(GetSaveStateFilename(index));
@ -715,11 +803,13 @@ void SDLInterface::Run()
break;
}
m_system->RunFrame();
if (m_system)
m_system->RunFrame();
Render();
// update fps counter
if (m_system)
{
const double time = m_fps_timer.GetTimeSeconds();
if (time >= 0.25f)

View File

@ -54,6 +54,9 @@ private:
bool IsWindowFullscreen() const;
void DrawImGui();
void DoReset();
void DoResume();
void DoStartDisc();
void DoStartBIOS();
void DoLoadState(u32 index);
void DoSaveState(u32 index);
@ -62,6 +65,7 @@ private:
void Render();
void RenderDisplay();
void DrawMainMenuBar();
void DrawPoweredOffWindow();
void DrawOSDMessages();
SDL_Window* m_window = nullptr;
@ -69,6 +73,8 @@ private:
int m_window_width = 0;
int m_window_height = 0;
std::unique_ptr<GL::Texture> m_app_icon_texture = nullptr;
GL::Program m_display_program;
GLuint m_display_vao = 0;
GL::Texture* m_display_texture = nullptr;
@ -87,7 +93,7 @@ private:
float m_vps = 0.0f;
float m_fps = 0.0f;
float m_speed = 1.0f;
float m_speed = 0.0f;
u32 m_last_frame_number = 0;
u32 m_last_internal_frame_number = 0;
u32 m_last_global_tick_counter = 0;