Mirai's Miscellaneous Misadventures

M14 / assets.c

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

#define _ 0,
#define A 1,
#define B 2,
#define C 3,
#define D 4,
#define E 5,
#define F 6,

#include "font.c"
#include "level.c"

// generic images

static struct mirai_rotating_image mirai_head =
{
	12, 11,
	{
		{6, 1, {0xE6}},
		{8, 1, {0xE6}},
		{10, 1, {0xE6}},
		{12, 1, {0xE6}},
		{12, 1, {0xE6}},
		{12, 1, {0xE6}},
		{12, 1, {0xE6}},
		{12, 1, {0xE6}},
		{12, 1, {0xE6}},
		{10, 1, {0xE6}},
		{8, 1, {0xE6}},
		{6, 1, {0xE6}},
	},
};

static struct mirai_rotating_image mirai_torso =
{
	23, 23,
	{
		{6, 1, {0xE6}},
		{8, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{10, 1, {0xE6}},
		{8, 1, {0xE6}},
		{6, 1, {0xE6}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
		{0, 0, {}},
	},
};

static struct mirai_rotating_image mirai_arm =
{
	12, 2,
	{
		{2, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{4, 1, {0xE6}},
		{2, 1, {0xE6}},
	},
};

// Mirai images

static struct mirai_rotating_image mirai_mirai_face =
{
	2, 5,
	{
		{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,
	{
		{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, 22,
	{
		{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,
	{
		{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,
	{
		{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}},
	},
};

// Mirai model

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 mirai_mirai_yang = {&mirai_mirai_yang_head, &mirai_mirai_yang_torso, &mirai_mirai_yang_left_arm, &mirai_mirai_yang_right_arm};