Mirai's Miscellaneous Misadventures
M49 / engines / wasm.c
#include <stdlib.h>
#include <mimimi-chapters.h>
unsigned char mimimi_wasm_sync(void);
void mimimi_wasm_stamp(void *data, int x0, int y0, void *texture);
void *mimimi_wasm_texture(void *data, struct mimimi_image *image);
void mimimi_wasm_invalidate(void *data, void *texture);
int mimimi_wasm(void (*start)(void *chapter, struct mimimi_engine *engine), void (*tick)(void *chapter, unsigned char left, unsigned char right), unsigned long int chapter_size)
{
unsigned char keys;
void *chapter;
struct mimimi_engine engine;
engine.stamp = &mimimi_wasm_stamp;
engine.texture = &mimimi_wasm_texture;
engine.invalidate = &mimimi_wasm_invalidate;
engine.size.width = 512;
engine.size.height = 256;
chapter = malloc(chapter_size);
if (chapter == NULL) return 1;
(*start)(chapter, &engine);
for (;;)
{
keys = mimimi_wasm_sync();
(*tick)(chapter, keys / 2, keys % 2);
}
}