#include "game_types.h"

/* Level_SaveEmitters @ 0x0800F400 (real 106B) -- saves emitter table from ROM blob 0x080CF680. Mirrors src/matched/Level_SaveEmitters.c. */
/* Twin of Level_InitEmitters with blob 0x080CF680, zero third
   InitSubPositions arg, and draw at (118, 152). */
extern void LoadLevelData(int *buf);
extern void InitSubPositions(int *buf, int x, int y);
extern void Emitter_DrawAt(int *base, int *buf, int x, int y);
extern void UpdateSubPositions(int *buf, int mode);

void Level_SaveEmitters(int *p)
{
    int *base = *(int **)0x02000134;
    unsigned char *blob = *(unsigned char **)0x080CF680;
    int buf[7];
    (void)p;
    LoadLevelData(buf);
    buf[1] = 0x080CF680;
    buf[2] = blob[4] | (blob[5] << 8) | (blob[6] << 16) | (blob[7] << 24);
    buf[3] = blob[8] | (blob[9] << 8) | (blob[10] << 16) | (blob[11] << 24);
    InitSubPositions(buf, 0, 0);
    buf[0] = -1;
    Emitter_DrawAt(base, buf, 118, 152);
    UpdateSubPositions(buf, 2);
}
