Mirai's Miscellaneous Misadventures

M48 / include / mimimi-chapters.h

/* license: AGPLv3 or later */
/* copyright 2023 zamfofex */

#ifndef MIMIMI_CHAPTERS_H
#define MIMIMI_CHAPTERS_H

#include <mimimi.h>

struct mimimi_test_video_set
{
	struct mimimi_video videos[0x40];
	void *textures[0x100];
	struct mimimi_image images[0x100];
	unsigned char colors[0x100000];
};

struct mimimi_test_sprite
{
	struct mimimi_sprite sprite;
	struct mimimi_model *model;
	struct mimimi_appearance appearance;
	struct mimimi_test_video_set left, right;
	struct mimimi_display display;
};

struct mimimi_test
{
	struct mimimi_engine *engine;
	struct mimimi_test_sprite mango;
	struct mimimi_test_sprite pepper;
	struct mimimi_history history;
	struct mimimi_position camera;
	struct mimimi_background background;
	struct mimimi_image background_image;
	unsigned char background_colors[0x200000];
	struct mimimi_collision collision;
	struct mimimi_position *collision_positions[2];
};

void mimimi_test_tick(void *chapter, unsigned char left, unsigned char right);
void mimimi_test(void *chapter, struct mimimi_engine *engine);

struct mimimi_chapter_I
{
	struct mimimi_engine *engine;
	struct mimimi_test_sprite player;
	struct mimimi_history history;
	struct mimimi_position origin;
	struct mimimi_position camera;
	struct mimimi_clamped_camera clamped_camera;
	struct mimimi_background background;
	struct mimimi_image background_image;
	unsigned char background_colors[0x400000];
	struct mimimi_image custom_background;
	unsigned char colors[0x40000];
	struct mimimi_background foreground;
	struct mimimi_image foreground_image;
	int progression;
	int progression_counter;
	struct mimimi_toast_dialogue dialogue;
	struct mimimi_offset offset;
	struct mimimi_momentum momentum;
	struct mimimi_platform platforms[24];
	unsigned char platform_colors[1024];
	struct mimimi_image platform_image;
	struct mimimi_logo logo;
};

void mimimi_chapter_I_tick(void *chapter, unsigned char left, unsigned char right);
void mimimi_chapter_I(void *chapter, struct mimimi_engine *engine);

struct mimimi_loader_data
{
	struct mimimi_engine *engine;
	int previous_direction;
	int x;
	unsigned char colors[0x100000];
	struct mimimi_image images[0x10];
	void *textures[0x10];
	void *background;
	struct mimimi_image background_image;
};

union mimimi_loader_chapter
{
	struct mimimi_loader_data data;
	struct mimimi_test test;
	struct mimimi_chapter_I chapter_I;
};

struct mimimi_loader
{
	union mimimi_loader_chapter chapter;
	int index;
	unsigned char started;
};

void mimimi_loader_tick(void *chapter, unsigned char left, unsigned char right);
void mimimi_loader(void *chapter, struct mimimi_engine *engine);

#endif