#include "game_types.h"

/* Sub_0800E950 @ 0x0800E950 (real 114B) -- threshold preset quads plus emitter save chain. Mirrors src/matched/Sub_0800E950.c. */
/* Word 4 above 30 inits two preset quads (flags 1/36) and pins words 2/3
   to 2/-1; otherwise a nonzero mailbox halfword pins 6/-1. Always ends in
   the F2D8 + SaveEmitters chain. (The flag-1 re-store is redundant.) */
extern void Sub_0800F2D8(int *p);
extern void Level_SaveEmitters(int *p);

void Sub_0800E950(int *p)
{
    int *base = *(int **)0x02000134;
    if (p[4] > 30) {
        int *q, *q2;
        *(int *)((char *)base + 0xA34) = 1;
        q = (int *)((char *)base + 0xA38);
        q[3] = 1;
        q[2] = 32;
        q[0] = 4096;
        q[1] = 4096;
        q2 = (int *)((char *)base + 0xA48);
        q2[3] = 36;
        q2[2] = 32;
        q2[0] = 4096;
        q2[1] = 4096;
        p[2] = 2;
    } else {
        if (*(unsigned short *)(*(int **)0x02000150 + 2) == 0)
            goto tail;
        p[2] = 6;
    }
    p[3] = -1;
tail:
    Sub_0800F2D8(p);
    Level_SaveEmitters(p);
}
