Mirai's Miscellaneous Misadventures

M15 / characters / mirai.c

// copyright 2022 zamfofex
// license: AGPLv3 or later

static struct mirai_rotating_image mirai_mirai_face =
{
	2, 5, 0,
	{
		{12, 24, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3B, 0x3B, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
		{12, 24, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3B, 0x83, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
	},
};

static struct mirai_rotating_image mirai_mirai_hair =
{
	28, 12, 0,
	{
		{4, 1, {0x11}},
		{8, 1, {0x11}},
		{10, 1, {0x11}},
		{12, 1, {0x11}},
		{14, 28, {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}},
		{14, 28, {0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x11, 0x11, 0x11, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x11, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{14, 28, {0x10, 0x11, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10}},
		{14, 28, {0x10, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10}},
		{16, 32, {0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10}},
		{16, 32, {0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{16, 32, {0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10}},
		{16, 32, {0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10}},
		{16, 32, {0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10}},
		{16, 32, {0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10}},
		{16, 32, {0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{16, 32, {0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{16, 32, {0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10}},
		{18, 36, {0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{18, 36, {0x10, 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{18, 36, {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}},
		{20, 40, {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}},
		{20, 40, {0x10, 0x10, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}},
		{20, 40, {0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00}},
	},
};

static struct mirai_rotating_image mirai_mirai_yang_dress =
{
	22, 10, 0,
	{
		{8, 1, {0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0xE7, 0xE7, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0xE7, 0xE7, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0xE7, 0xE7, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0xE7, 0xE7, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x91, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{10, 20, {0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0xE7, 0xE7, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91}},
		{10, 1, {0xE7}},
		{12, 1, {0xE7}},
		{14, 36, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0xE7}},
		{16, 38, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0xE7, 0xE7, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{18, 38, {0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42}},
		{18, 38, {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0xE7, 0xE7, 0xE7, 0xE7, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42}},
		{20, 42, {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xE7, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3B, 0x3B, 0xE7, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42}},
		{20, 42, {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xE7, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0xE7, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42}},
		{20, 42, {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xE7, 0xE7, 0xE7, 0xE7, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0xE7, 0xE7, 0xE7, 0xE7, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42}},
		{22, 42, {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x3B, 0xE7, 0xE7, 0xE7, 0x3B, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x3B, 0xE7, 0xE7, 0xE7, 0x3B, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x42, 0x42, 0x42, 0x42}},
		{22, 1, {0xE7}},
		{22, 1, {0x42}},
	},
};

static struct mirai_rotating_image mirai_mirai_yang_left_sleeve =
{
	9, 2, 0,
	{
		{2, 6, {0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE7, 0x3B, 0x3B}},
	},
};

static struct mirai_rotating_image mirai_mirai_yang_right_sleeve =
{
	9, 2, 0,
	{
		{2, 6, {0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
		{4, 8, {0x3B, 0x3B, 0xE7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B}},
	},
};

static struct mirai_model_layer mirai_mirai_yang_head = {3, {&mirai_head, &mirai_mirai_face, &mirai_mirai_hair}};
static struct mirai_model_layer mirai_mirai_yang_torso = {2, {&mirai_torso, &mirai_mirai_yang_dress}};
static struct mirai_model_layer mirai_mirai_yang_left_arm = {2, {&mirai_arm, &mirai_mirai_yang_left_sleeve}};
static struct mirai_model_layer mirai_mirai_yang_right_arm = {2, {&mirai_arm, &mirai_mirai_yang_right_sleeve}};
static struct mirai_model_layer mirai_mirai_yang_left_leg = {0};
static struct mirai_model_layer mirai_mirai_yang_right_leg = {0};
static struct mirai_model mirai_mirai_yang = {&mirai_mirai_yang_head, &mirai_mirai_yang_torso, &mirai_mirai_yang_left_arm, &mirai_mirai_yang_right_arm, &mirai_mirai_yang_left_leg, &mirai_mirai_yang_right_leg};